feat(web): the home page lists repositories as cards (#56)
- commit
- e95eebda317302f13d3d13c1fc33a5477e4bfa1b
- author
- brice · · 2026-10-18 06:17 UTC
- committer
- bnema · · 2026-10-18 06:17 UTC
- parent
- 8e01339
- signature
- SSH Unverified
SHA256:VOCA5lYARHcbKDZ7GhTV45VmcjWnJ6ZQIBazj17LivAThe key is unknown
14 files · +770 -672
M internal/adapters/web/components.templ +24 -15
| @@ -32,26 +32,35 @@ templ CloneBlock(c Clone) { | |||
| 32 | 32 | </div> | |
| 33 | 33 | } | |
| 34 | 34 | ||
| 35 | - | // HomeRow is one row of the home list. Its id is the target of SSE swaps. | |
| 35 | + | // HomeRowView is the card of a repository in the home list. Its id is the | |
| 36 | + | // target of SSE swaps; the name link comes first, `enter` follows it. | |
| 36 | 37 | templ HomeRowView(r HomeRow) { | |
| 37 | - | <tr id={ r.ID } data-cursor?={ r.Cursor }> | |
| 38 | - | <td class="cur" aria-hidden="true"></td> | |
| 39 | - | <td class="c-name"> | |
| 38 | + | <li id={ r.ID } class="repo" data-cursor?={ r.Cursor }> | |
| 39 | + | <h2 class="repo-name"> | |
| 40 | 40 | <a href={ templ.SafeURL(r.Href) }>{ r.Name }</a> | |
| 41 | + | if r.Private { | |
| 42 | + | <span class="pill">private</span> | |
| 43 | + | } | |
| 41 | 44 | if r.Fresh { | |
| 42 | 45 | <span class="pill new">new push</span> | |
| 43 | 46 | } | |
| 44 | - | </td> | |
| 45 | - | <td class="c-desc dim">{ r.Desc }</td> | |
| 46 | - | <td class="c-when nowrap"> | |
| 47 | - | <time | |
| 48 | - | if r.PushedAt != "" { | |
| 49 | - | datetime={ r.PushedAt } | |
| 50 | - | } | |
| 51 | - | >{ r.Pushed }</time> | |
| 52 | - | </td> | |
| 53 | - | <td class="c-ref">{ r.Branch }</td> | |
| 54 | - | </tr> | |
| 47 | + | </h2> | |
| 48 | + | if r.Desc != "" { | |
| 49 | + | <p class="repo-desc">{ r.Desc }</p> | |
| 50 | + | } else { | |
| 51 | + | <p class="repo-desc mute">no description</p> | |
| 52 | + | } | |
| 53 | + | <p class="repo-meta"> | |
| 54 | + | if r.Branch != "" { | |
| 55 | + | <span class="repo-branch"><span class="ico i-branch" aria-hidden="true"></span>{ r.Branch }</span> | |
| 56 | + | } | |
| 57 | + | if r.PushedAt != "" { | |
| 58 | + | <span>pushed <time datetime={ r.PushedAt } title={ r.PushedAt }>{ r.Pushed }</time></span> | |
| 59 | + | } else { | |
| 60 | + | <span>never pushed</span> | |
| 61 | + | } | |
| 62 | + | </p> | |
| 63 | + | </li> | |
| 55 | 64 | } | |
| 56 | 65 | ||
| 57 | 66 | // Outline is the README outline; levels indent by 2ch, the h1 is bold. | |
| @@ -32,26 +32,35 @@ templ CloneBlock(c Clone) { | |||||
| 32 | </div> | 32 | </div> | ||
| 33 | } | 33 | } | ||
| 34 | 34 | ||||
| 35 | - | // HomeRow is one row of the home list. Its id is the target of SSE swaps. | 35 | + | // HomeRowView is the card of a repository in the home list. Its id is the |
| 36 | + | // target of SSE swaps; the name link comes first, `enter` follows it. | |||
| 36 | templ HomeRowView(r HomeRow) { | 37 | templ HomeRowView(r HomeRow) { | ||
| 37 | - | <tr id={ r.ID } data-cursor?={ r.Cursor }> | 38 | + | <li id={ r.ID } class="repo" data-cursor?={ r.Cursor }> |
| 38 | - | <td class="cur" aria-hidden="true"></td> | 39 | + | <h2 class="repo-name"> |
| 39 | - | <td class="c-name"> | |||
| 40 | <a href={ templ.SafeURL(r.Href) }>{ r.Name }</a> | 40 | <a href={ templ.SafeURL(r.Href) }>{ r.Name }</a> | ||
| 41 | + | if r.Private { | |||
| 42 | + | <span class="pill">private</span> | |||
| 43 | + | } | |||
| 41 | if r.Fresh { | 44 | if r.Fresh { | ||
| 42 | <span class="pill new">new push</span> | 45 | <span class="pill new">new push</span> | ||
| 43 | } | 46 | } | ||
| 44 | - | </td> | 47 | + | </h2> |
| 45 | - | <td class="c-desc dim">{ r.Desc }</td> | 48 | + | if r.Desc != "" { |
| 46 | - | <td class="c-when nowrap"> | 49 | + | <p class="repo-desc">{ r.Desc }</p> |
| 47 | - | <time | 50 | + | } else { |
| 48 | - | if r.PushedAt != "" { | 51 | + | <p class="repo-desc mute">no description</p> |
| 49 | - | datetime={ r.PushedAt } | 52 | + | } |
| 50 | - | } | 53 | + | <p class="repo-meta"> |
| 51 | - | >{ r.Pushed }</time> | 54 | + | if r.Branch != "" { |
| 52 | - | </td> | 55 | + | <span class="repo-branch"><span class="ico i-branch" aria-hidden="true"></span>{ r.Branch }</span> |
| 53 | - | <td class="c-ref">{ r.Branch }</td> | 56 | + | } |
| 54 | - | </tr> | 57 | + | if r.PushedAt != "" { |
| 58 | + | <span>pushed <time datetime={ r.PushedAt } title={ r.PushedAt }>{ r.Pushed }</time></span> | |||
| 59 | + | } else { | |||
| 60 | + | <span>never pushed</span> | |||
| 61 | + | } | |||
| 62 | + | </p> | |||
| 63 | + | </li> | |||
| 55 | } | 64 | } | ||
| 56 | 65 | ||||
| 57 | // Outline is the README outline; levels indent by 2ch, the h1 is bold. | 66 | // Outline is the README outline; levels indent by 2ch, the h1 is bold. | ||
M internal/adapters/web/components_templ.go +206 -160 generated file: collapsed
M internal/adapters/web/events.go +1 -1
| @@ -45,7 +45,7 @@ import ( | |||
| 45 | 45 | // | |
| 46 | 46 | // Events, each with the id of the Watch event it comes from: | |
| 47 | 47 | // | |
| 48 | - | // home-list data: <tr id="repo-<name>">…</tr>, or <tr id="repo-<name>" data-gone></tr> | |
| 48 | + | // home-list data: <li id="repo-<name>">…</li>, or <li id="repo-<name>" data-gone></li> | |
| 49 | 49 | // for a repository that is deleted or no longer visible | |
| 50 | 50 | // repo-last-push data: <dd id="last-push-<name>">…</dd> | |
| 51 | 51 | // refs-list data: <tbody id="ref-rows">…</tbody>, and again with | |
| @@ -45,7 +45,7 @@ import ( | |||||
| 45 | // | 45 | // | ||
| 46 | // Events, each with the id of the Watch event it comes from: | 46 | // Events, each with the id of the Watch event it comes from: | ||
| 47 | // | 47 | // | ||
| 48 | - | // home-list data: <tr id="repo-<name>">…</tr>, or <tr id="repo-<name>" data-gone></tr> | 48 | + | // home-list data: <li id="repo-<name>">…</li>, or <li id="repo-<name>" data-gone></li> |
| 49 | // for a repository that is deleted or no longer visible | 49 | // for a repository that is deleted or no longer visible | ||
| 50 | // repo-last-push data: <dd id="last-push-<name>">…</dd> | 50 | // repo-last-push data: <dd id="last-push-<name>">…</dd> | ||
| 51 | // refs-list data: <tbody id="ref-rows">…</tbody>, and again with | 51 | // refs-list data: <tbody id="ref-rows">…</tbody>, and again with | ||
M internal/adapters/web/fragments.go +1 -1
| @@ -116,7 +116,7 @@ func (l *liveStream) home(ctx context.Context, we ports.WatchEvent) ([]fragment, | |||
| 116 | 116 | case err != nil: | |
| 117 | 117 | return nil, err | |
| 118 | 118 | } | |
| 119 | - | row := homeRow(view, l.s.cfg.Now(), false) | |
| 119 | + | row := homeRow(view, l.s.cfg.Now(), false, SignedIn(ctx)) | |
| 120 | 120 | row.Fresh = fresh | |
| 121 | 121 | f, err := renderFragment(ctx, "home-list", HomeRowView(row)) | |
| 122 | 122 | return []fragment{f}, err | |
| @@ -116,7 +116,7 @@ func (l *liveStream) home(ctx context.Context, we ports.WatchEvent) ([]fragment, | |||||
| 116 | case err != nil: | 116 | case err != nil: | ||
| 117 | return nil, err | 117 | return nil, err | ||
| 118 | } | 118 | } | ||
| 119 | - | row := homeRow(view, l.s.cfg.Now(), false) | 119 | + | row := homeRow(view, l.s.cfg.Now(), false, SignedIn(ctx)) |
| 120 | row.Fresh = fresh | 120 | row.Fresh = fresh | ||
| 121 | f, err := renderFragment(ctx, "home-list", HomeRowView(row)) | 121 | f, err := renderFragment(ctx, "home-list", HomeRowView(row)) | ||
| 122 | return []fragment{f}, err | 122 | return []fragment{f}, err | ||
M internal/adapters/web/fragments.templ +2 -2
| @@ -21,10 +21,10 @@ templ FactValue(f Fact) { | |||
| 21 | 21 | </dd> | |
| 22 | 22 | } | |
| 23 | 23 | ||
| 24 | - | // RepoGone replaces the row of a repository that is deleted or not visible | |
| 24 | + | // RepoGone replaces the card of a repository that is deleted or not visible | |
| 25 | 25 | // any more; the page removes the element. | |
| 26 | 26 | templ RepoGone(id string) { | |
| 27 | - | <tr id={ id } data-gone hidden></tr> | |
| 27 | + | <li id={ id } data-gone hidden></li> | |
| 28 | 28 | } | |
| 29 | 29 | ||
| 30 | 30 | // RefsBody is the rows of the refs table. | |
| @@ -21,10 +21,10 @@ templ FactValue(f Fact) { | |||||
| 21 | </dd> | 21 | </dd> | ||
| 22 | } | 22 | } | ||
| 23 | 23 | ||||
| 24 | - | // RepoGone replaces the row of a repository that is deleted or not visible | 24 | + | // RepoGone replaces the card of a repository that is deleted or not visible |
| 25 | // any more; the page removes the element. | 25 | // any more; the page removes the element. | ||
| 26 | templ RepoGone(id string) { | 26 | templ RepoGone(id string) { | ||
| 27 | - | <tr id={ id } data-gone hidden></tr> | 27 | + | <li id={ id } data-gone hidden></li> |
| 28 | } | 28 | } | ||
| 29 | 29 | ||||
| 30 | // RefsBody is the rows of the refs table. | 30 | // RefsBody is the rows of the refs table. | ||
M internal/adapters/web/fragments_templ.go +3 -3 generated file: collapsed
M internal/adapters/web/home.go +29 -21
| @@ -11,6 +11,7 @@ import ( | |||
| 11 | 11 | ||
| 12 | 12 | "github.com/a-h/templ" | |
| 13 | 13 | ||
| 14 | + | "bnema.dev/ermite/internal/domain" | |
| 14 | 15 | "bnema.dev/ermite/internal/ports" | |
| 15 | 16 | ) | |
| 16 | 17 | ||
| @@ -48,14 +49,16 @@ func (s *Server) listRepos(ctx context.Context) ([]ports.RepoView, error) { | |||
| 48 | 49 | return repos, nil | |
| 49 | 50 | } | |
| 50 | 51 | ||
| 51 | - | // homeCols are the sortable columns of the home list, in order. | |
| 52 | - | var homeCols = []struct{ key, label, class string }{ | |
| 53 | - | {"name", "name", "c-name"}, | |
| 54 | - | {"desc", "description", "c-desc"}, | |
| 55 | - | {"push", "last push", "c-when"}, | |
| 56 | - | {"branch", "branch", "c-ref"}, | |
| 52 | + | // homeSorts are the orders the home list offers, in order. The query also | |
| 53 | + | // accepts "desc" and "branch", which the page does not link to. | |
| 54 | + | var homeSorts = []struct{ key, label string }{ | |
| 55 | + | {"push", "last push"}, | |
| 56 | + | {"name", "name"}, | |
| 57 | 57 | } | |
| 58 | 58 | ||
| 59 | + | // homeKeys are the keys of ?sort= that sortRepos knows. | |
| 60 | + | var homeKeys = []string{"push", "name", "desc", "branch"} | |
| 61 | + | ||
| 59 | 62 | // sortRepos orders repos by the column key; ties keep the order by name. | |
| 60 | 63 | func sortRepos(repos []ports.RepoView, key string, desc bool) { | |
| 61 | 64 | less := func(a, b ports.RepoView) bool { | |
| @@ -85,9 +88,9 @@ func (s *Server) home(ctx context.Context, r *http.Request) (templ.Component, in | |||
| 85 | 88 | return nil, 0, err | |
| 86 | 89 | } | |
| 87 | 90 | key, desc := "push", true | |
| 88 | - | for _, c := range homeCols { | |
| 89 | - | if r.URL.Query().Get("sort") == c.key { | |
| 90 | - | key, desc = c.key, c.key == "push" | |
| 91 | + | for _, k := range homeKeys { | |
| 92 | + | if r.URL.Query().Get("sort") == k { | |
| 93 | + | key, desc = k, k == "push" | |
| 91 | 94 | } | |
| 92 | 95 | } | |
| 93 | 96 | if d := r.URL.Query().Get("dir"); d == "asc" || d == "desc" { | |
| @@ -96,23 +99,26 @@ func (s *Server) home(ctx context.Context, r *http.Request) (templ.Component, in | |||
| 96 | 99 | sortRepos(repos, key, desc) | |
| 97 | 100 | ||
| 98 | 101 | now := s.cfg.Now() | |
| 102 | + | signed := SignedIn(ctx) | |
| 99 | 103 | p := HomePage{} | |
| 100 | - | for _, c := range homeCols { | |
| 101 | - | sc := SortCol{Label: c.label, Class: c.class, Dir: "none"} | |
| 104 | + | for _, c := range homeSorts { | |
| 105 | + | sl := SortLink{Label: c.label} | |
| 102 | 106 | next := "asc" | |
| 107 | + | if c.key == "push" { | |
| 108 | + | next = "desc" | |
| 109 | + | } | |
| 103 | 110 | if c.key == key { | |
| 104 | - | sc.Dir, sc.Mark = "ascending", "▲" | |
| 111 | + | sl.Mark, sl.State = "▲", "ascending, select for descending" | |
| 112 | + | next = "desc" | |
| 105 | 113 | if desc { | |
| 106 | - | sc.Dir, sc.Mark = "descending", "▼" | |
| 107 | - | } else { | |
| 108 | - | next = "desc" | |
| 114 | + | sl.Mark, sl.State, next = "▼", "descending, select for ascending", "asc" | |
| 109 | 115 | } | |
| 110 | 116 | } | |
| 111 | - | sc.Href = "/?sort=" + c.key + "&dir=" + next | |
| 112 | - | p.Cols = append(p.Cols, sc) | |
| 117 | + | sl.Href = "/?sort=" + c.key + "&dir=" + next | |
| 118 | + | p.Sorts = append(p.Sorts, sl) | |
| 113 | 119 | } | |
| 114 | 120 | for i, repo := range repos { | |
| 115 | - | p.Rows = append(p.Rows, homeRow(repo, now, i == 0)) | |
| 121 | + | p.Rows = append(p.Rows, homeRow(repo, now, i == 0, signed)) | |
| 116 | 122 | } | |
| 117 | 123 | ||
| 118 | 124 | l := s.base() | |
| @@ -122,12 +128,14 @@ func (s *Server) home(ctx context.Context, r *http.Request) (templ.Component, in | |||
| 122 | 128 | return Home(l, p), http.StatusOK, nil | |
| 123 | 129 | } | |
| 124 | 130 | ||
| 125 | - | // homeRow is the row of a repository in the home list. | |
| 126 | - | func homeRow(r ports.RepoView, now time.Time, cursor bool) HomeRow { | |
| 131 | + | // homeRow is the card of a repository in the home list. The private badge is | |
| 132 | + | // for a signed-in visitor: an anonymous one never gets a private repository. | |
| 133 | + | func homeRow(r ports.RepoView, now time.Time, cursor, signed bool) HomeRow { | |
| 127 | 134 | name := r.Name.String() | |
| 128 | 135 | row := HomeRow{ | |
| 129 | 136 | ID: "repo-" + name, Name: name, Href: repoHref(name), | |
| 130 | - | Desc: r.Description, Pushed: "never", Branch: r.DefaultBranch, Cursor: cursor, | |
| 137 | + | Desc: r.Description, Branch: r.DefaultBranch, Cursor: cursor, | |
| 138 | + | Private: signed && r.Visibility == domain.VisibilityPrivate, | |
| 131 | 139 | } | |
| 132 | 140 | if !r.PushedAt.IsZero() { | |
| 133 | 141 | row.Pushed, row.PushedAt = ago(now, r.PushedAt), rfc3339(r.PushedAt) | |
| @@ -11,6 +11,7 @@ import ( | |||||
| 11 | 11 | ||||
| 12 | "github.com/a-h/templ" | 12 | "github.com/a-h/templ" | ||
| 13 | 13 | ||||
| 14 | + | "bnema.dev/ermite/internal/domain" | |||
| 14 | "bnema.dev/ermite/internal/ports" | 15 | "bnema.dev/ermite/internal/ports" | ||
| 15 | ) | 16 | ) | ||
| 16 | 17 | ||||
| @@ -48,14 +49,16 @@ func (s *Server) listRepos(ctx context.Context) ([]ports.RepoView, error) { | |||||
| 48 | return repos, nil | 49 | return repos, nil | ||
| 49 | } | 50 | } | ||
| 50 | 51 | ||||
| 51 | - | // homeCols are the sortable columns of the home list, in order. | 52 | + | // homeSorts are the orders the home list offers, in order. The query also |
| 52 | - | var homeCols = []struct{ key, label, class string }{ | 53 | + | // accepts "desc" and "branch", which the page does not link to. |
| 53 | - | {"name", "name", "c-name"}, | 54 | + | var homeSorts = []struct{ key, label string }{ |
| 54 | - | {"desc", "description", "c-desc"}, | 55 | + | {"push", "last push"}, |
| 55 | - | {"push", "last push", "c-when"}, | 56 | + | {"name", "name"}, |
| 56 | - | {"branch", "branch", "c-ref"}, | |||
| 57 | } | 57 | } | ||
| 58 | 58 | ||||
| 59 | + | // homeKeys are the keys of ?sort= that sortRepos knows. | |||
| 60 | + | var homeKeys = []string{"push", "name", "desc", "branch"} | |||
| 61 | + | ||||
| 59 | // sortRepos orders repos by the column key; ties keep the order by name. | 62 | // sortRepos orders repos by the column key; ties keep the order by name. | ||
| 60 | func sortRepos(repos []ports.RepoView, key string, desc bool) { | 63 | func sortRepos(repos []ports.RepoView, key string, desc bool) { | ||
| 61 | less := func(a, b ports.RepoView) bool { | 64 | less := func(a, b ports.RepoView) bool { | ||
| @@ -85,9 +88,9 @@ func (s *Server) home(ctx context.Context, r *http.Request) (templ.Component, in | |||||
| 85 | return nil, 0, err | 88 | return nil, 0, err | ||
| 86 | } | 89 | } | ||
| 87 | key, desc := "push", true | 90 | key, desc := "push", true | ||
| 88 | - | for _, c := range homeCols { | 91 | + | for _, k := range homeKeys { |
| 89 | - | if r.URL.Query().Get("sort") == c.key { | 92 | + | if r.URL.Query().Get("sort") == k { |
| 90 | - | key, desc = c.key, c.key == "push" | 93 | + | key, desc = k, k == "push" |
| 91 | } | 94 | } | ||
| 92 | } | 95 | } | ||
| 93 | if d := r.URL.Query().Get("dir"); d == "asc" || d == "desc" { | 96 | if d := r.URL.Query().Get("dir"); d == "asc" || d == "desc" { | ||
| @@ -96,23 +99,26 @@ func (s *Server) home(ctx context.Context, r *http.Request) (templ.Component, in | |||||
| 96 | sortRepos(repos, key, desc) | 99 | sortRepos(repos, key, desc) | ||
| 97 | 100 | ||||
| 98 | now := s.cfg.Now() | 101 | now := s.cfg.Now() | ||
| 102 | + | signed := SignedIn(ctx) | |||
| 99 | p := HomePage{} | 103 | p := HomePage{} | ||
| 100 | - | for _, c := range homeCols { | 104 | + | for _, c := range homeSorts { |
| 101 | - | sc := SortCol{Label: c.label, Class: c.class, Dir: "none"} | 105 | + | sl := SortLink{Label: c.label} |
| 102 | next := "asc" | 106 | next := "asc" | ||
| 107 | + | if c.key == "push" { | |||
| 108 | + | next = "desc" | |||
| 109 | + | } | |||
| 103 | if c.key == key { | 110 | if c.key == key { | ||
| 104 | - | sc.Dir, sc.Mark = "ascending", "▲" | 111 | + | sl.Mark, sl.State = "▲", "ascending, select for descending" |
| 112 | + | next = "desc" | |||
| 105 | if desc { | 113 | if desc { | ||
| 106 | - | sc.Dir, sc.Mark = "descending", "▼" | 114 | + | sl.Mark, sl.State, next = "▼", "descending, select for ascending", "asc" |
| 107 | - | } else { | |||
| 108 | - | next = "desc" | |||
| 109 | } | 115 | } | ||
| 110 | } | 116 | } | ||
| 111 | - | sc.Href = "/?sort=" + c.key + "&dir=" + next | 117 | + | sl.Href = "/?sort=" + c.key + "&dir=" + next |
| 112 | - | p.Cols = append(p.Cols, sc) | 118 | + | p.Sorts = append(p.Sorts, sl) |
| 113 | } | 119 | } | ||
| 114 | for i, repo := range repos { | 120 | for i, repo := range repos { | ||
| 115 | - | p.Rows = append(p.Rows, homeRow(repo, now, i == 0)) | 121 | + | p.Rows = append(p.Rows, homeRow(repo, now, i == 0, signed)) |
| 116 | } | 122 | } | ||
| 117 | 123 | ||||
| 118 | l := s.base() | 124 | l := s.base() | ||
| @@ -122,12 +128,14 @@ func (s *Server) home(ctx context.Context, r *http.Request) (templ.Component, in | |||||
| 122 | return Home(l, p), http.StatusOK, nil | 128 | return Home(l, p), http.StatusOK, nil | ||
| 123 | } | 129 | } | ||
| 124 | 130 | ||||
| 125 | - | // homeRow is the row of a repository in the home list. | 131 | + | // homeRow is the card of a repository in the home list. The private badge is |
| 126 | - | func homeRow(r ports.RepoView, now time.Time, cursor bool) HomeRow { | 132 | + | // for a signed-in visitor: an anonymous one never gets a private repository. |
| 133 | + | func homeRow(r ports.RepoView, now time.Time, cursor, signed bool) HomeRow { | |||
| 127 | name := r.Name.String() | 134 | name := r.Name.String() | ||
| 128 | row := HomeRow{ | 135 | row := HomeRow{ | ||
| 129 | ID: "repo-" + name, Name: name, Href: repoHref(name), | 136 | ID: "repo-" + name, Name: name, Href: repoHref(name), | ||
| 130 | - | Desc: r.Description, Pushed: "never", Branch: r.DefaultBranch, Cursor: cursor, | 137 | + | Desc: r.Description, Branch: r.DefaultBranch, Cursor: cursor, |
| 138 | + | Private: signed && r.Visibility == domain.VisibilityPrivate, | |||
| 131 | } | 139 | } | ||
| 132 | if !r.PushedAt.IsZero() { | 140 | if !r.PushedAt.IsZero() { | ||
| 133 | row.Pushed, row.PushedAt = ago(now, r.PushedAt), rfc3339(r.PushedAt) | 141 | row.Pushed, row.PushedAt = ago(now, r.PushedAt), rfc3339(r.PushedAt) | ||
M internal/adapters/web/pages.templ +39 -32
| @@ -5,42 +5,49 @@ package web | |||
| 5 | 5 | // Home is the repository list. | |
| 6 | 6 | templ Home(l Layout, p HomePage) { | |
| 7 | 7 | @Shell(l, nil) { | |
| 8 | - | <div class="filter"> | |
| 9 | - | <label for="home-filter" class="sr">filter</label> | |
| 10 | - | <input | |
| 11 | - | id="home-filter" | |
| 12 | - | type="search" | |
| 13 | - | data-filter="#repo-rows > tr" | |
| 14 | - | placeholder="Filter repositories…" | |
| 15 | - | autocomplete="off" | |
| 16 | - | hx-on:input="ermite.filter(this)" | |
| 17 | - | /> | |
| 18 | - | </div> | |
| 19 | - | <table class="list home" aria-label="Repositories"> | |
| 20 | - | <thead> | |
| 21 | - | <tr> | |
| 22 | - | <th class="cur"></th> | |
| 23 | - | for _, c := range p.Cols { | |
| 24 | - | <th class={ c.Class } aria-sort={ c.Dir }> | |
| 25 | - | <a href={ templ.SafeURL(c.Href) }> | |
| 26 | - | { c.Label } | |
| 27 | - | if c.Mark != "" { | |
| 28 | - | <span aria-hidden="true">{ c.Mark }</span> | |
| 8 | + | <h1 class="sr">Repositories</h1> | |
| 9 | + | <div class="home"> | |
| 10 | + | <section class="home-repos" aria-label="Repositories"> | |
| 11 | + | <div class="home-bar"> | |
| 12 | + | <div class="filter"> | |
| 13 | + | <label for="home-filter" class="sr">filter</label> | |
| 14 | + | <input | |
| 15 | + | id="home-filter" | |
| 16 | + | type="search" | |
| 17 | + | data-filter="#repo-rows > li" | |
| 18 | + | placeholder="Filter repositories…" | |
| 19 | + | autocomplete="off" | |
| 20 | + | hx-on:input="ermite.filter(this)" | |
| 21 | + | /> | |
| 22 | + | </div> | |
| 23 | + | <nav class="sort" aria-label="Sort repositories"> | |
| 24 | + | <span class="mute">sort</span> | |
| 25 | + | for _, s := range p.Sorts { | |
| 26 | + | <a | |
| 27 | + | href={ templ.SafeURL(s.Href) } | |
| 28 | + | if s.Mark != "" { | |
| 29 | + | aria-current="true" | |
| 30 | + | } | |
| 31 | + | > | |
| 32 | + | { s.Label } | |
| 33 | + | if s.Mark != "" { | |
| 34 | + | <span aria-hidden="true">{ s.Mark }</span> | |
| 35 | + | <span class="sr">{ ", " + s.State }</span> | |
| 29 | 36 | } | |
| 30 | 37 | </a> | |
| 31 | - | </th> | |
| 38 | + | } | |
| 39 | + | </nav> | |
| 40 | + | </div> | |
| 41 | + | <ul class="repos" id="repo-rows" data-rows> | |
| 42 | + | for _, r := range p.Rows { | |
| 43 | + | @HomeRowView(r) | |
| 32 | 44 | } | |
| 33 | - | </tr> | |
| 34 | - | </thead> | |
| 35 | - | <tbody id="repo-rows" data-rows> | |
| 36 | - | for _, r := range p.Rows { | |
| 37 | - | @HomeRowView(r) | |
| 45 | + | </ul> | |
| 46 | + | if len(p.Rows) == 0 { | |
| 47 | + | <p class="lede dim">no repositories yet.</p> | |
| 38 | 48 | } | |
| 39 | - | </tbody> | |
| 40 | - | </table> | |
| 41 | - | if len(p.Rows) == 0 { | |
| 42 | - | <p class="lede dim">no repositories yet.</p> | |
| 43 | - | } | |
| 49 | + | </section> | |
| 50 | + | </div> | |
| 44 | 51 | } | |
| 45 | 52 | } | |
| 46 | 53 | ||
| @@ -5,42 +5,49 @@ package web | |||||
| 5 | // Home is the repository list. | 5 | // Home is the repository list. | ||
| 6 | templ Home(l Layout, p HomePage) { | 6 | templ Home(l Layout, p HomePage) { | ||
| 7 | @Shell(l, nil) { | 7 | @Shell(l, nil) { | ||
| 8 | - | <div class="filter"> | 8 | + | <h1 class="sr">Repositories</h1> |
| 9 | - | <label for="home-filter" class="sr">filter</label> | 9 | + | <div class="home"> |
| 10 | - | <input | 10 | + | <section class="home-repos" aria-label="Repositories"> |
| 11 | - | id="home-filter" | 11 | + | <div class="home-bar"> |
| 12 | - | type="search" | 12 | + | <div class="filter"> |
| 13 | - | data-filter="#repo-rows > tr" | 13 | + | <label for="home-filter" class="sr">filter</label> |
| 14 | - | placeholder="Filter repositories…" | 14 | + | <input |
| 15 | - | autocomplete="off" | 15 | + | id="home-filter" |
| 16 | - | hx-on:input="ermite.filter(this)" | 16 | + | type="search" |
| 17 | - | /> | 17 | + | data-filter="#repo-rows > li" |
| 18 | - | </div> | 18 | + | placeholder="Filter repositories…" |
| 19 | - | <table class="list home" aria-label="Repositories"> | 19 | + | autocomplete="off" |
| 20 | - | <thead> | 20 | + | hx-on:input="ermite.filter(this)" |
| 21 | - | <tr> | 21 | + | /> |
| 22 | - | <th class="cur"></th> | 22 | + | </div> |
| 23 | - | for _, c := range p.Cols { | 23 | + | <nav class="sort" aria-label="Sort repositories"> |
| 24 | - | <th class={ c.Class } aria-sort={ c.Dir }> | 24 | + | <span class="mute">sort</span> |
| 25 | - | <a href={ templ.SafeURL(c.Href) }> | 25 | + | for _, s := range p.Sorts { |
| 26 | - | { c.Label } | 26 | + | <a |
| 27 | - | if c.Mark != "" { | 27 | + | href={ templ.SafeURL(s.Href) } |
| 28 | - | <span aria-hidden="true">{ c.Mark }</span> | 28 | + | if s.Mark != "" { |
| 29 | + | aria-current="true" | |||
| 30 | + | } | |||
| 31 | + | > | |||
| 32 | + | { s.Label } | |||
| 33 | + | if s.Mark != "" { | |||
| 34 | + | <span aria-hidden="true">{ s.Mark }</span> | |||
| 35 | + | <span class="sr">{ ", " + s.State }</span> | |||
| 29 | } | 36 | } | ||
| 30 | </a> | 37 | </a> | ||
| 31 | - | </th> | 38 | + | } |
| 39 | + | </nav> | |||
| 40 | + | </div> | |||
| 41 | + | <ul class="repos" id="repo-rows" data-rows> | |||
| 42 | + | for _, r := range p.Rows { | |||
| 43 | + | @HomeRowView(r) | |||
| 32 | } | 44 | } | ||
| 33 | - | </tr> | 45 | + | </ul> |
| 34 | - | </thead> | 46 | + | if len(p.Rows) == 0 { |
| 35 | - | <tbody id="repo-rows" data-rows> | 47 | + | <p class="lede dim">no repositories yet.</p> |
| 36 | - | for _, r := range p.Rows { | |||
| 37 | - | @HomeRowView(r) | |||
| 38 | } | 48 | } | ||
| 39 | - | </tbody> | 49 | + | </section> |
| 40 | - | </table> | 50 | + | </div> |
| 41 | - | if len(p.Rows) == 0 { | |||
| 42 | - | <p class="lede dim">no repositories yet.</p> | |||
| 43 | - | } | |||
| 44 | } | 51 | } | ||
| 45 | } | 52 | } | ||
| 46 | 53 | ||||
M internal/adapters/web/pages_templ.go +369 -373
| @@ -44,65 +44,44 @@ func Home(l Layout, p HomePage) templ.Component { | |||
| 44 | 44 | }() | |
| 45 | 45 | } | |
| 46 | 46 | ctx = templ.InitializeContext(ctx) | |
| 47 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"filter\"><label for=\"home-filter\" class=\"sr\">filter</label> <input id=\"home-filter\" type=\"search\" data-filter=\"#repo-rows > tr\" placeholder=\"Filter repositories…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></div><table class=\"list home\" aria-label=\"Repositories\"><thead><tr><th class=\"cur\"></th>") | |
| 47 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<h1 class=\"sr\">Repositories</h1><div class=\"home\"><section class=\"home-repos\" aria-label=\"Repositories\"><div class=\"home-bar\"><div class=\"filter\"><label for=\"home-filter\" class=\"sr\">filter</label> <input id=\"home-filter\" type=\"search\" data-filter=\"#repo-rows > li\" placeholder=\"Filter repositories…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></div><nav class=\"sort\" aria-label=\"Sort repositories\"><span class=\"mute\">sort</span> ") | |
| 48 | 48 | if templ_7745c5c3_Err != nil { | |
| 49 | 49 | return templ_7745c5c3_Err | |
| 50 | 50 | } | |
| 51 | - | for _, c := range p.Cols { | |
| 52 | - | var templ_7745c5c3_Var3 = []any{c.Class} | |
| 53 | - | templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var3...) | |
| 51 | + | for _, s := range p.Sorts { | |
| 52 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<a href=\"") | |
| 54 | 53 | if templ_7745c5c3_Err != nil { | |
| 55 | 54 | return templ_7745c5c3_Err | |
| 56 | 55 | } | |
| 57 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<th class=\"") | |
| 56 | + | var templ_7745c5c3_Var3 templ.SafeURL | |
| 57 | + | templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(s.Href)) | |
| 58 | 58 | if templ_7745c5c3_Err != nil { | |
| 59 | - | return templ_7745c5c3_Err | |
| 60 | - | } | |
| 61 | - | var templ_7745c5c3_Var4 string | |
| 62 | - | templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var3).String()) | |
| 63 | - | if templ_7745c5c3_Err != nil { | |
| 64 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 1, Col: 0} | |
| 65 | - | } | |
| 66 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var4) | |
| 67 | - | if templ_7745c5c3_Err != nil { | |
| 68 | - | return templ_7745c5c3_Err | |
| 69 | - | } | |
| 70 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\" aria-sort=\"") | |
| 71 | - | if templ_7745c5c3_Err != nil { | |
| 72 | - | return templ_7745c5c3_Err | |
| 59 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 27, Col: 36} | |
| 73 | 60 | } | |
| 74 | - | var templ_7745c5c3_Var5 string | |
| 75 | - | templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Dir) | |
| 76 | - | if templ_7745c5c3_Err != nil { | |
| 77 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 24, Col: 45} | |
| 78 | - | } | |
| 79 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var5) | |
| 61 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) | |
| 80 | 62 | if templ_7745c5c3_Err != nil { | |
| 81 | 63 | return templ_7745c5c3_Err | |
| 82 | 64 | } | |
| 83 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "\"><a href=\"") | |
| 65 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\"") | |
| 84 | 66 | if templ_7745c5c3_Err != nil { | |
| 85 | 67 | return templ_7745c5c3_Err | |
| 86 | 68 | } | |
| 87 | - | var templ_7745c5c3_Var6 templ.SafeURL | |
| 88 | - | templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Href)) | |
| 89 | - | if templ_7745c5c3_Err != nil { | |
| 90 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 25, Col: 38} | |
| 91 | - | } | |
| 92 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) | |
| 93 | - | if templ_7745c5c3_Err != nil { | |
| 94 | - | return templ_7745c5c3_Err | |
| 69 | + | if s.Mark != "" { | |
| 70 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, " aria-current=\"true\"") | |
| 71 | + | if templ_7745c5c3_Err != nil { | |
| 72 | + | return templ_7745c5c3_Err | |
| 73 | + | } | |
| 95 | 74 | } | |
| 96 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "\">") | |
| 75 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, ">") | |
| 97 | 76 | if templ_7745c5c3_Err != nil { | |
| 98 | 77 | return templ_7745c5c3_Err | |
| 99 | 78 | } | |
| 100 | - | var templ_7745c5c3_Var7 string | |
| 101 | - | templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(c.Label) | |
| 79 | + | var templ_7745c5c3_Var4 string | |
| 80 | + | templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(s.Label) | |
| 102 | 81 | if templ_7745c5c3_Err != nil { | |
| 103 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 26, Col: 17} | |
| 82 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 32, Col: 17} | |
| 104 | 83 | } | |
| 105 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) | |
| 84 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) | |
| 106 | 85 | if templ_7745c5c3_Err != nil { | |
| 107 | 86 | return templ_7745c5c3_Err | |
| 108 | 87 | } | |
| @@ -110,31 +89,44 @@ func Home(l Layout, p HomePage) templ.Component { | |||
| 110 | 89 | if templ_7745c5c3_Err != nil { | |
| 111 | 90 | return templ_7745c5c3_Err | |
| 112 | 91 | } | |
| 113 | - | if c.Mark != "" { | |
| 92 | + | if s.Mark != "" { | |
| 114 | 93 | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<span aria-hidden=\"true\">") | |
| 115 | 94 | if templ_7745c5c3_Err != nil { | |
| 116 | 95 | return templ_7745c5c3_Err | |
| 117 | 96 | } | |
| 118 | - | var templ_7745c5c3_Var8 string | |
| 119 | - | templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(c.Mark) | |
| 97 | + | var templ_7745c5c3_Var5 string | |
| 98 | + | templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(s.Mark) | |
| 120 | 99 | if templ_7745c5c3_Err != nil { | |
| 121 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 28, Col: 42} | |
| 100 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 34, Col: 42} | |
| 122 | 101 | } | |
| 123 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) | |
| 102 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) | |
| 124 | 103 | if templ_7745c5c3_Err != nil { | |
| 125 | 104 | return templ_7745c5c3_Err | |
| 126 | 105 | } | |
| 127 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</span>") | |
| 106 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</span> <span class=\"sr\">") | |
| 107 | + | if templ_7745c5c3_Err != nil { | |
| 108 | + | return templ_7745c5c3_Err | |
| 109 | + | } | |
| 110 | + | var templ_7745c5c3_Var6 string | |
| 111 | + | templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(", " + s.State) | |
| 112 | + | if templ_7745c5c3_Err != nil { | |
| 113 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 35, Col: 42} | |
| 114 | + | } | |
| 115 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) | |
| 116 | + | if templ_7745c5c3_Err != nil { | |
| 117 | + | return templ_7745c5c3_Err | |
| 118 | + | } | |
| 119 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</span>") | |
| 128 | 120 | if templ_7745c5c3_Err != nil { | |
| 129 | 121 | return templ_7745c5c3_Err | |
| 130 | 122 | } | |
| 131 | 123 | } | |
| 132 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</a></th>") | |
| 124 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</a>") | |
| 133 | 125 | if templ_7745c5c3_Err != nil { | |
| 134 | 126 | return templ_7745c5c3_Err | |
| 135 | 127 | } | |
| 136 | 128 | } | |
| 137 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</tr></thead> <tbody id=\"repo-rows\" data-rows>") | |
| 129 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</nav></div><ul class=\"repos\" id=\"repo-rows\" data-rows>") | |
| 138 | 130 | if templ_7745c5c3_Err != nil { | |
| 139 | 131 | return templ_7745c5c3_Err | |
| 140 | 132 | } | |
| @@ -144,16 +136,20 @@ func Home(l Layout, p HomePage) templ.Component { | |||
| 144 | 136 | return templ_7745c5c3_Err | |
| 145 | 137 | } | |
| 146 | 138 | } | |
| 147 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</tbody></table>") | |
| 139 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</ul>") | |
| 148 | 140 | if templ_7745c5c3_Err != nil { | |
| 149 | 141 | return templ_7745c5c3_Err | |
| 150 | 142 | } | |
| 151 | 143 | if len(p.Rows) == 0 { | |
| 152 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "<p class=\"lede dim\">no repositories yet.</p>") | |
| 144 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<p class=\"lede dim\">no repositories yet.</p>") | |
| 153 | 145 | if templ_7745c5c3_Err != nil { | |
| 154 | 146 | return templ_7745c5c3_Err | |
| 155 | 147 | } | |
| 156 | 148 | } | |
| 149 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</section></div>") | |
| 150 | + | if templ_7745c5c3_Err != nil { | |
| 151 | + | return templ_7745c5c3_Err | |
| 152 | + | } | |
| 157 | 153 | return nil | |
| 158 | 154 | }) | |
| 159 | 155 | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) | |
| @@ -182,12 +178,12 @@ func Summary(l Layout, p SummaryPage) templ.Component { | |||
| 182 | 178 | }() | |
| 183 | 179 | } | |
| 184 | 180 | ctx = templ.InitializeContext(ctx) | |
| 185 | - | templ_7745c5c3_Var9 := templ.GetChildren(ctx) | |
| 186 | - | if templ_7745c5c3_Var9 == nil { | |
| 187 | - | templ_7745c5c3_Var9 = templ.NopComponent | |
| 181 | + | templ_7745c5c3_Var7 := templ.GetChildren(ctx) | |
| 182 | + | if templ_7745c5c3_Var7 == nil { | |
| 183 | + | templ_7745c5c3_Var7 = templ.NopComponent | |
| 188 | 184 | } | |
| 189 | 185 | ctx = templ.ClearChildren(ctx) | |
| 190 | - | templ_7745c5c3_Var10 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 186 | + | templ_7745c5c3_Var8 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 191 | 187 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 192 | 188 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 193 | 189 | if !templ_7745c5c3_IsBuffer { | |
| @@ -207,7 +203,7 @@ func Summary(l Layout, p SummaryPage) templ.Component { | |||
| 207 | 203 | } | |
| 208 | 204 | return nil | |
| 209 | 205 | }) | |
| 210 | - | templ_7745c5c3_Err = Shell(l, summaryRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var10), templ_7745c5c3_Buffer) | |
| 206 | + | templ_7745c5c3_Err = Shell(l, summaryRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var8), templ_7745c5c3_Buffer) | |
| 211 | 207 | if templ_7745c5c3_Err != nil { | |
| 212 | 208 | return templ_7745c5c3_Err | |
| 213 | 209 | } | |
| @@ -234,132 +230,132 @@ func latestTagFact(t LatestTag) templ.Component { | |||
| 234 | 230 | }() | |
| 235 | 231 | } | |
| 236 | 232 | ctx = templ.InitializeContext(ctx) | |
| 237 | - | templ_7745c5c3_Var11 := templ.GetChildren(ctx) | |
| 238 | - | if templ_7745c5c3_Var11 == nil { | |
| 239 | - | templ_7745c5c3_Var11 = templ.NopComponent | |
| 233 | + | templ_7745c5c3_Var9 := templ.GetChildren(ctx) | |
| 234 | + | if templ_7745c5c3_Var9 == nil { | |
| 235 | + | templ_7745c5c3_Var9 = templ.NopComponent | |
| 240 | 236 | } | |
| 241 | 237 | ctx = templ.ClearChildren(ctx) | |
| 242 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<dt>latest tag</dt><dd class=\"latest-tag\">") | |
| 238 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "<dt>latest tag</dt><dd class=\"latest-tag\">") | |
| 243 | 239 | if templ_7745c5c3_Err != nil { | |
| 244 | 240 | return templ_7745c5c3_Err | |
| 245 | 241 | } | |
| 246 | 242 | if t.Name != "" { | |
| 247 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<a class=\"tag-name\" href=\"") | |
| 243 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<a class=\"tag-name\" href=\"") | |
| 248 | 244 | if templ_7745c5c3_Err != nil { | |
| 249 | 245 | return templ_7745c5c3_Err | |
| 250 | 246 | } | |
| 251 | - | var templ_7745c5c3_Var12 templ.SafeURL | |
| 252 | - | templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.Href)) | |
| 247 | + | var templ_7745c5c3_Var10 templ.SafeURL | |
| 248 | + | templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.Href)) | |
| 253 | 249 | if templ_7745c5c3_Err != nil { | |
| 254 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 64, Col: 51} | |
| 250 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 71, Col: 51} | |
| 255 | 251 | } | |
| 256 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) | |
| 252 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) | |
| 257 | 253 | if templ_7745c5c3_Err != nil { | |
| 258 | 254 | return templ_7745c5c3_Err | |
| 259 | 255 | } | |
| 260 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" title=\"") | |
| 256 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "\" title=\"") | |
| 261 | 257 | if templ_7745c5c3_Err != nil { | |
| 262 | 258 | return templ_7745c5c3_Err | |
| 263 | 259 | } | |
| 264 | - | var templ_7745c5c3_Var13 string | |
| 265 | - | templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.Subject) | |
| 260 | + | var templ_7745c5c3_Var11 string | |
| 261 | + | templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.Subject) | |
| 266 | 262 | if templ_7745c5c3_Err != nil { | |
| 267 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 64, Col: 71} | |
| 263 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 71, Col: 71} | |
| 268 | 264 | } | |
| 269 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13) | |
| 265 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var11) | |
| 270 | 266 | if templ_7745c5c3_Err != nil { | |
| 271 | 267 | return templ_7745c5c3_Err | |
| 272 | 268 | } | |
| 273 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\"><span class=\"ico i-tag\" aria-hidden=\"true\"></span>") | |
| 269 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "\"><span class=\"ico i-tag\" aria-hidden=\"true\"></span>") | |
| 274 | 270 | if templ_7745c5c3_Err != nil { | |
| 275 | 271 | return templ_7745c5c3_Err | |
| 276 | 272 | } | |
| 277 | - | var templ_7745c5c3_Var14 string | |
| 278 | - | templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(t.Name) | |
| 273 | + | var templ_7745c5c3_Var12 string | |
| 274 | + | templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(t.Name) | |
| 279 | 275 | if templ_7745c5c3_Err != nil { | |
| 280 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 64, Col: 132} | |
| 276 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 71, Col: 132} | |
| 281 | 277 | } | |
| 282 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) | |
| 278 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) | |
| 283 | 279 | if templ_7745c5c3_Err != nil { | |
| 284 | 280 | return templ_7745c5c3_Err | |
| 285 | 281 | } | |
| 286 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "</a> ") | |
| 282 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</a> ") | |
| 287 | 283 | if templ_7745c5c3_Err != nil { | |
| 288 | 284 | return templ_7745c5c3_Err | |
| 289 | 285 | } | |
| 290 | 286 | if t.WhenAt != "" { | |
| 291 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "<time class=\"dim\" datetime=\"") | |
| 287 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<time class=\"dim\" datetime=\"") | |
| 292 | 288 | if templ_7745c5c3_Err != nil { | |
| 293 | 289 | return templ_7745c5c3_Err | |
| 294 | 290 | } | |
| 295 | - | var templ_7745c5c3_Var15 string | |
| 296 | - | templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt) | |
| 291 | + | var templ_7745c5c3_Var13 string | |
| 292 | + | templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt) | |
| 297 | 293 | if templ_7745c5c3_Err != nil { | |
| 298 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 66, Col: 41} | |
| 294 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 73, Col: 41} | |
| 299 | 295 | } | |
| 300 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var15) | |
| 296 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13) | |
| 301 | 297 | if templ_7745c5c3_Err != nil { | |
| 302 | 298 | return templ_7745c5c3_Err | |
| 303 | 299 | } | |
| 304 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "\" title=\"") | |
| 300 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "\" title=\"") | |
| 305 | 301 | if templ_7745c5c3_Err != nil { | |
| 306 | 302 | return templ_7745c5c3_Err | |
| 307 | 303 | } | |
| 308 | - | var templ_7745c5c3_Var16 string | |
| 309 | - | templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt) | |
| 304 | + | var templ_7745c5c3_Var14 string | |
| 305 | + | templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt) | |
| 310 | 306 | if templ_7745c5c3_Err != nil { | |
| 311 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 66, Col: 60} | |
| 307 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 73, Col: 60} | |
| 312 | 308 | } | |
| 313 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var16) | |
| 309 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14) | |
| 314 | 310 | if templ_7745c5c3_Err != nil { | |
| 315 | 311 | return templ_7745c5c3_Err | |
| 316 | 312 | } | |
| 317 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\">") | |
| 313 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\">") | |
| 318 | 314 | if templ_7745c5c3_Err != nil { | |
| 319 | 315 | return templ_7745c5c3_Err | |
| 320 | 316 | } | |
| 321 | - | var templ_7745c5c3_Var17 string | |
| 322 | - | templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(t.When) | |
| 317 | + | var templ_7745c5c3_Var15 string | |
| 318 | + | templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(t.When) | |
| 323 | 319 | if templ_7745c5c3_Err != nil { | |
| 324 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 66, Col: 71} | |
| 320 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 73, Col: 71} | |
| 325 | 321 | } | |
| 326 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) | |
| 322 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) | |
| 327 | 323 | if templ_7745c5c3_Err != nil { | |
| 328 | 324 | return templ_7745c5c3_Err | |
| 329 | 325 | } | |
| 330 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</time> ") | |
| 326 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</time> ") | |
| 331 | 327 | if templ_7745c5c3_Err != nil { | |
| 332 | 328 | return templ_7745c5c3_Err | |
| 333 | 329 | } | |
| 334 | 330 | } | |
| 335 | 331 | } | |
| 336 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<a class=\"all-tags\" href=\"") | |
| 332 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<a class=\"all-tags\" href=\"") | |
| 337 | 333 | if templ_7745c5c3_Err != nil { | |
| 338 | 334 | return templ_7745c5c3_Err | |
| 339 | 335 | } | |
| 340 | - | var templ_7745c5c3_Var18 templ.SafeURL | |
| 341 | - | templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.RefsHref)) | |
| 336 | + | var templ_7745c5c3_Var16 templ.SafeURL | |
| 337 | + | templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.RefsHref)) | |
| 342 | 338 | if templ_7745c5c3_Err != nil { | |
| 343 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 69, Col: 54} | |
| 339 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 76, Col: 54} | |
| 344 | 340 | } | |
| 345 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) | |
| 341 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) | |
| 346 | 342 | if templ_7745c5c3_Err != nil { | |
| 347 | 343 | return templ_7745c5c3_Err | |
| 348 | 344 | } | |
| 349 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\">") | |
| 345 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "\">") | |
| 350 | 346 | if templ_7745c5c3_Err != nil { | |
| 351 | 347 | return templ_7745c5c3_Err | |
| 352 | 348 | } | |
| 353 | - | var templ_7745c5c3_Var19 string | |
| 354 | - | templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(plural(t.Count, "tag", "tags")) | |
| 349 | + | var templ_7745c5c3_Var17 string | |
| 350 | + | templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(plural(t.Count, "tag", "tags")) | |
| 355 | 351 | if templ_7745c5c3_Err != nil { | |
| 356 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 69, Col: 89} | |
| 352 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 76, Col: 89} | |
| 357 | 353 | } | |
| 358 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) | |
| 354 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) | |
| 359 | 355 | if templ_7745c5c3_Err != nil { | |
| 360 | 356 | return templ_7745c5c3_Err | |
| 361 | 357 | } | |
| 362 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</a></dd>") | |
| 358 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</a></dd>") | |
| 363 | 359 | if templ_7745c5c3_Err != nil { | |
| 364 | 360 | return templ_7745c5c3_Err | |
| 365 | 361 | } | |
| @@ -383,12 +379,12 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 383 | 379 | }() | |
| 384 | 380 | } | |
| 385 | 381 | ctx = templ.InitializeContext(ctx) | |
| 386 | - | templ_7745c5c3_Var20 := templ.GetChildren(ctx) | |
| 387 | - | if templ_7745c5c3_Var20 == nil { | |
| 388 | - | templ_7745c5c3_Var20 = templ.NopComponent | |
| 382 | + | templ_7745c5c3_Var18 := templ.GetChildren(ctx) | |
| 383 | + | if templ_7745c5c3_Var18 == nil { | |
| 384 | + | templ_7745c5c3_Var18 = templ.NopComponent | |
| 389 | 385 | } | |
| 390 | 386 | ctx = templ.ClearChildren(ctx) | |
| 391 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>") | |
| 387 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>") | |
| 392 | 388 | if templ_7745c5c3_Err != nil { | |
| 393 | 389 | return templ_7745c5c3_Err | |
| 394 | 390 | } | |
| @@ -396,25 +392,25 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 396 | 392 | if templ_7745c5c3_Err != nil { | |
| 397 | 393 | return templ_7745c5c3_Err | |
| 398 | 394 | } | |
| 399 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">") | |
| 395 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">") | |
| 400 | 396 | if templ_7745c5c3_Err != nil { | |
| 401 | 397 | return templ_7745c5c3_Err | |
| 402 | 398 | } | |
| 403 | 399 | for _, f := range p.Facts { | |
| 404 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<dt>") | |
| 400 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "<dt>") | |
| 405 | 401 | if templ_7745c5c3_Err != nil { | |
| 406 | 402 | return templ_7745c5c3_Err | |
| 407 | 403 | } | |
| 408 | - | var templ_7745c5c3_Var21 string | |
| 409 | - | templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key) | |
| 404 | + | var templ_7745c5c3_Var19 string | |
| 405 | + | templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key) | |
| 410 | 406 | if templ_7745c5c3_Err != nil { | |
| 411 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 80, Col: 15} | |
| 407 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 87, Col: 15} | |
| 412 | 408 | } | |
| 413 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21)) | |
| 409 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) | |
| 414 | 410 | if templ_7745c5c3_Err != nil { | |
| 415 | 411 | return templ_7745c5c3_Err | |
| 416 | 412 | } | |
| 417 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</dt>") | |
| 413 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</dt>") | |
| 418 | 414 | if templ_7745c5c3_Err != nil { | |
| 419 | 415 | return templ_7745c5c3_Err | |
| 420 | 416 | } | |
| @@ -429,25 +425,25 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 429 | 425 | return templ_7745c5c3_Err | |
| 430 | 426 | } | |
| 431 | 427 | } | |
| 432 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "</dl></section>") | |
| 428 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</dl></section>") | |
| 433 | 429 | if templ_7745c5c3_Err != nil { | |
| 434 | 430 | return templ_7745c5c3_Err | |
| 435 | 431 | } | |
| 436 | 432 | if len(p.Recent) > 0 { | |
| 437 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"") | |
| 433 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"") | |
| 438 | 434 | if templ_7745c5c3_Err != nil { | |
| 439 | 435 | return templ_7745c5c3_Err | |
| 440 | 436 | } | |
| 441 | - | var templ_7745c5c3_Var22 templ.SafeURL | |
| 442 | - | templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref)) | |
| 437 | + | var templ_7745c5c3_Var20 templ.SafeURL | |
| 438 | + | templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref)) | |
| 443 | 439 | if templ_7745c5c3_Err != nil { | |
| 444 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 89, Col: 105} | |
| 440 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 96, Col: 105} | |
| 445 | 441 | } | |
| 446 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22)) | |
| 442 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20)) | |
| 447 | 443 | if templ_7745c5c3_Err != nil { | |
| 448 | 444 | return templ_7745c5c3_Err | |
| 449 | 445 | } | |
| 450 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "\">View all</a></h2>") | |
| 446 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "\">View all</a></h2>") | |
| 451 | 447 | if templ_7745c5c3_Err != nil { | |
| 452 | 448 | return templ_7745c5c3_Err | |
| 453 | 449 | } | |
| @@ -455,7 +451,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 455 | 451 | if templ_7745c5c3_Err != nil { | |
| 456 | 452 | return templ_7745c5c3_Err | |
| 457 | 453 | } | |
| 458 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</section>") | |
| 454 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</section>") | |
| 459 | 455 | if templ_7745c5c3_Err != nil { | |
| 460 | 456 | return templ_7745c5c3_Err | |
| 461 | 457 | } | |
| @@ -467,7 +463,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 467 | 463 | } | |
| 468 | 464 | } | |
| 469 | 465 | if len(p.Outline) > 0 && p.Readme != nil { | |
| 470 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>") | |
| 466 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>") | |
| 471 | 467 | if templ_7745c5c3_Err != nil { | |
| 472 | 468 | return templ_7745c5c3_Err | |
| 473 | 469 | } | |
| @@ -475,7 +471,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 475 | 471 | if templ_7745c5c3_Err != nil { | |
| 476 | 472 | return templ_7745c5c3_Err | |
| 477 | 473 | } | |
| 478 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</section>") | |
| 474 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</section>") | |
| 479 | 475 | if templ_7745c5c3_Err != nil { | |
| 480 | 476 | return templ_7745c5c3_Err | |
| 481 | 477 | } | |
| @@ -501,12 +497,12 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||
| 501 | 497 | }() | |
| 502 | 498 | } | |
| 503 | 499 | ctx = templ.InitializeContext(ctx) | |
| 504 | - | templ_7745c5c3_Var23 := templ.GetChildren(ctx) | |
| 505 | - | if templ_7745c5c3_Var23 == nil { | |
| 506 | - | templ_7745c5c3_Var23 = templ.NopComponent | |
| 500 | + | templ_7745c5c3_Var21 := templ.GetChildren(ctx) | |
| 501 | + | if templ_7745c5c3_Var21 == nil { | |
| 502 | + | templ_7745c5c3_Var21 = templ.NopComponent | |
| 507 | 503 | } | |
| 508 | 504 | ctx = templ.ClearChildren(ctx) | |
| 509 | - | templ_7745c5c3_Var24 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 505 | + | templ_7745c5c3_Var22 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 510 | 506 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 511 | 507 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 512 | 508 | if !templ_7745c5c3_IsBuffer { | |
| @@ -518,7 +514,7 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||
| 518 | 514 | }() | |
| 519 | 515 | } | |
| 520 | 516 | ctx = templ.InitializeContext(ctx) | |
| 521 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter=\"#ref-rows > tr\" placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></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>") | |
| 517 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter=\"#ref-rows > tr\" placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></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>") | |
| 522 | 518 | if templ_7745c5c3_Err != nil { | |
| 523 | 519 | return templ_7745c5c3_Err | |
| 524 | 520 | } | |
| @@ -526,32 +522,32 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||
| 526 | 522 | if templ_7745c5c3_Err != nil { | |
| 527 | 523 | return templ_7745c5c3_Err | |
| 528 | 524 | } | |
| 529 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</table>") | |
| 525 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</table>") | |
| 530 | 526 | if templ_7745c5c3_Err != nil { | |
| 531 | 527 | return templ_7745c5c3_Err | |
| 532 | 528 | } | |
| 533 | 529 | if p.Note != "" { | |
| 534 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<p class=\"note\">") | |
| 530 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<p class=\"note\">") | |
| 535 | 531 | if templ_7745c5c3_Err != nil { | |
| 536 | 532 | return templ_7745c5c3_Err | |
| 537 | 533 | } | |
| 538 | - | var templ_7745c5c3_Var25 string | |
| 539 | - | templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note) | |
| 534 | + | var templ_7745c5c3_Var23 string | |
| 535 | + | templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note) | |
| 540 | 536 | if templ_7745c5c3_Err != nil { | |
| 541 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 27} | |
| 537 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 129, Col: 27} | |
| 542 | 538 | } | |
| 543 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) | |
| 539 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) | |
| 544 | 540 | if templ_7745c5c3_Err != nil { | |
| 545 | 541 | return templ_7745c5c3_Err | |
| 546 | 542 | } | |
| 547 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</p>") | |
| 543 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</p>") | |
| 548 | 544 | if templ_7745c5c3_Err != nil { | |
| 549 | 545 | return templ_7745c5c3_Err | |
| 550 | 546 | } | |
| 551 | 547 | } | |
| 552 | 548 | return nil | |
| 553 | 549 | }) | |
| 554 | - | templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var24), templ_7745c5c3_Buffer) | |
| 550 | + | templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var22), templ_7745c5c3_Buffer) | |
| 555 | 551 | if templ_7745c5c3_Err != nil { | |
| 556 | 552 | return templ_7745c5c3_Err | |
| 557 | 553 | } | |
| @@ -575,112 +571,112 @@ func refRow(kind string, r RefRow) templ.Component { | |||
| 575 | 571 | }() | |
| 576 | 572 | } | |
| 577 | 573 | ctx = templ.InitializeContext(ctx) | |
| 578 | - | templ_7745c5c3_Var26 := templ.GetChildren(ctx) | |
| 579 | - | if templ_7745c5c3_Var26 == nil { | |
| 580 | - | templ_7745c5c3_Var26 = templ.NopComponent | |
| 574 | + | templ_7745c5c3_Var24 := templ.GetChildren(ctx) | |
| 575 | + | if templ_7745c5c3_Var24 == nil { | |
| 576 | + | templ_7745c5c3_Var24 = templ.NopComponent | |
| 581 | 577 | } | |
| 582 | 578 | ctx = templ.ClearChildren(ctx) | |
| 583 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<tr") | |
| 579 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<tr") | |
| 584 | 580 | if templ_7745c5c3_Err != nil { | |
| 585 | 581 | return templ_7745c5c3_Err | |
| 586 | 582 | } | |
| 587 | 583 | if r.Cursor { | |
| 588 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, " data-cursor") | |
| 584 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, " data-cursor") | |
| 589 | 585 | if templ_7745c5c3_Err != nil { | |
| 590 | 586 | return templ_7745c5c3_Err | |
| 591 | 587 | } | |
| 592 | 588 | } | |
| 593 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">") | |
| 589 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">") | |
| 594 | 590 | if templ_7745c5c3_Err != nil { | |
| 595 | 591 | return templ_7745c5c3_Err | |
| 596 | 592 | } | |
| 597 | - | var templ_7745c5c3_Var27 string | |
| 598 | - | templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(kind) | |
| 593 | + | var templ_7745c5c3_Var25 string | |
| 594 | + | templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(kind) | |
| 599 | 595 | if templ_7745c5c3_Err != nil { | |
| 600 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 130, Col: 32} | |
| 596 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 137, Col: 32} | |
| 601 | 597 | } | |
| 602 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) | |
| 598 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) | |
| 603 | 599 | if templ_7745c5c3_Err != nil { | |
| 604 | 600 | return templ_7745c5c3_Err | |
| 605 | 601 | } | |
| 606 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</td><td class=\"c-name\"><a href=\"") | |
| 602 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</td><td class=\"c-name\"><a href=\"") | |
| 607 | 603 | if templ_7745c5c3_Err != nil { | |
| 608 | 604 | return templ_7745c5c3_Err | |
| 609 | 605 | } | |
| 610 | - | var templ_7745c5c3_Var28 templ.SafeURL | |
| 611 | - | templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href)) | |
| 606 | + | var templ_7745c5c3_Var26 templ.SafeURL | |
| 607 | + | templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href)) | |
| 612 | 608 | if templ_7745c5c3_Err != nil { | |
| 613 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 132, Col: 34} | |
| 609 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 34} | |
| 614 | 610 | } | |
| 615 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28)) | |
| 611 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) | |
| 616 | 612 | if templ_7745c5c3_Err != nil { | |
| 617 | 613 | return templ_7745c5c3_Err | |
| 618 | 614 | } | |
| 619 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\">") | |
| 615 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\">") | |
| 620 | 616 | if templ_7745c5c3_Err != nil { | |
| 621 | 617 | return templ_7745c5c3_Err | |
| 622 | 618 | } | |
| 623 | - | var templ_7745c5c3_Var29 string | |
| 624 | - | templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | |
| 619 | + | var templ_7745c5c3_Var27 string | |
| 620 | + | templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | |
| 625 | 621 | if templ_7745c5c3_Err != nil { | |
| 626 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 132, Col: 45} | |
| 622 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 45} | |
| 627 | 623 | } | |
| 628 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29)) | |
| 624 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) | |
| 629 | 625 | if templ_7745c5c3_Err != nil { | |
| 630 | 626 | return templ_7745c5c3_Err | |
| 631 | 627 | } | |
| 632 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</a> ") | |
| 628 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</a> ") | |
| 633 | 629 | if templ_7745c5c3_Err != nil { | |
| 634 | 630 | return templ_7745c5c3_Err | |
| 635 | 631 | } | |
| 636 | 632 | if r.Default { | |
| 637 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<span class=\"pill\">default</span>") | |
| 633 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<span class=\"pill\">default</span>") | |
| 638 | 634 | if templ_7745c5c3_Err != nil { | |
| 639 | 635 | return templ_7745c5c3_Err | |
| 640 | 636 | } | |
| 641 | 637 | } | |
| 642 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</td><td class=\"c-sha\">") | |
| 638 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</td><td class=\"c-sha\">") | |
| 643 | 639 | if templ_7745c5c3_Err != nil { | |
| 644 | 640 | return templ_7745c5c3_Err | |
| 645 | 641 | } | |
| 646 | 642 | if r.CHref != "" { | |
| 647 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<a href=\"") | |
| 643 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<a href=\"") | |
| 648 | 644 | if templ_7745c5c3_Err != nil { | |
| 649 | 645 | return templ_7745c5c3_Err | |
| 650 | 646 | } | |
| 651 | - | var templ_7745c5c3_Var30 templ.SafeURL | |
| 652 | - | templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref)) | |
| 647 | + | var templ_7745c5c3_Var28 templ.SafeURL | |
| 648 | + | templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref)) | |
| 653 | 649 | if templ_7745c5c3_Err != nil { | |
| 654 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 36} | |
| 650 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 146, Col: 36} | |
| 655 | 651 | } | |
| 656 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) | |
| 652 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28)) | |
| 657 | 653 | if templ_7745c5c3_Err != nil { | |
| 658 | 654 | return templ_7745c5c3_Err | |
| 659 | 655 | } | |
| 660 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "\">") | |
| 656 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "\">") | |
| 661 | 657 | if templ_7745c5c3_Err != nil { | |
| 662 | 658 | return templ_7745c5c3_Err | |
| 663 | 659 | } | |
| 664 | - | var templ_7745c5c3_Var31 string | |
| 665 | - | templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | |
| 660 | + | var templ_7745c5c3_Var29 string | |
| 661 | + | templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | |
| 666 | 662 | if templ_7745c5c3_Err != nil { | |
| 667 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 48} | |
| 663 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 146, Col: 48} | |
| 668 | 664 | } | |
| 669 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) | |
| 665 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29)) | |
| 670 | 666 | if templ_7745c5c3_Err != nil { | |
| 671 | 667 | return templ_7745c5c3_Err | |
| 672 | 668 | } | |
| 673 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</a>") | |
| 669 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "</a>") | |
| 674 | 670 | if templ_7745c5c3_Err != nil { | |
| 675 | 671 | return templ_7745c5c3_Err | |
| 676 | 672 | } | |
| 677 | 673 | } else { | |
| 678 | - | var templ_7745c5c3_Var32 string | |
| 679 | - | templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | |
| 674 | + | var templ_7745c5c3_Var30 string | |
| 675 | + | templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | |
| 680 | 676 | if templ_7745c5c3_Err != nil { | |
| 681 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 141, Col: 13} | |
| 677 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 148, Col: 13} | |
| 682 | 678 | } | |
| 683 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) | |
| 679 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) | |
| 684 | 680 | if templ_7745c5c3_Err != nil { | |
| 685 | 681 | return templ_7745c5c3_Err | |
| 686 | 682 | } | |
| @@ -689,69 +685,69 @@ func refRow(kind string, r RefRow) templ.Component { | |||
| 689 | 685 | if templ_7745c5c3_Err != nil { | |
| 690 | 686 | return templ_7745c5c3_Err | |
| 691 | 687 | } | |
| 692 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</td><td class=\"c-sub\">") | |
| 688 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</td><td class=\"c-sub\">") | |
| 693 | 689 | if templ_7745c5c3_Err != nil { | |
| 694 | 690 | return templ_7745c5c3_Err | |
| 695 | 691 | } | |
| 696 | - | var templ_7745c5c3_Var33 string | |
| 697 | - | templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject) | |
| 692 | + | var templ_7745c5c3_Var31 string | |
| 693 | + | templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject) | |
| 698 | 694 | if templ_7745c5c3_Err != nil { | |
| 699 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 145, Col: 31} | |
| 695 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 152, Col: 31} | |
| 700 | 696 | } | |
| 701 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) | |
| 697 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) | |
| 702 | 698 | if templ_7745c5c3_Err != nil { | |
| 703 | 699 | return templ_7745c5c3_Err | |
| 704 | 700 | } | |
| 705 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "</td><td class=\"c-when dim\">") | |
| 701 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</td><td class=\"c-when dim\">") | |
| 706 | 702 | if templ_7745c5c3_Err != nil { | |
| 707 | 703 | return templ_7745c5c3_Err | |
| 708 | 704 | } | |
| 709 | 705 | if r.WhenAt != "" { | |
| 710 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "<time datetime=\"") | |
| 706 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "<time datetime=\"") | |
| 711 | 707 | if templ_7745c5c3_Err != nil { | |
| 712 | 708 | return templ_7745c5c3_Err | |
| 713 | 709 | } | |
| 714 | - | var templ_7745c5c3_Var34 string | |
| 715 | - | templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | |
| 710 | + | var templ_7745c5c3_Var32 string | |
| 711 | + | templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | |
| 716 | 712 | if templ_7745c5c3_Err != nil { | |
| 717 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 148, Col: 29} | |
| 713 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 155, Col: 29} | |
| 718 | 714 | } | |
| 719 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var34) | |
| 715 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var32) | |
| 720 | 716 | if templ_7745c5c3_Err != nil { | |
| 721 | 717 | return templ_7745c5c3_Err | |
| 722 | 718 | } | |
| 723 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "\" title=\"") | |
| 719 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\" title=\"") | |
| 724 | 720 | if templ_7745c5c3_Err != nil { | |
| 725 | 721 | return templ_7745c5c3_Err | |
| 726 | 722 | } | |
| 727 | - | var templ_7745c5c3_Var35 string | |
| 728 | - | templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | |
| 723 | + | var templ_7745c5c3_Var33 string | |
| 724 | + | templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | |
| 729 | 725 | if templ_7745c5c3_Err != nil { | |
| 730 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 148, Col: 48} | |
| 726 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 155, Col: 48} | |
| 731 | 727 | } | |
| 732 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var35) | |
| 728 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var33) | |
| 733 | 729 | if templ_7745c5c3_Err != nil { | |
| 734 | 730 | return templ_7745c5c3_Err | |
| 735 | 731 | } | |
| 736 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "\">") | |
| 732 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "\">") | |
| 737 | 733 | if templ_7745c5c3_Err != nil { | |
| 738 | 734 | return templ_7745c5c3_Err | |
| 739 | 735 | } | |
| 740 | - | var templ_7745c5c3_Var36 string | |
| 741 | - | templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(r.When) | |
| 736 | + | var templ_7745c5c3_Var34 string | |
| 737 | + | templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.When) | |
| 742 | 738 | if templ_7745c5c3_Err != nil { | |
| 743 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 148, Col: 59} | |
| 739 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 155, Col: 59} | |
| 744 | 740 | } | |
| 745 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36)) | |
| 741 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) | |
| 746 | 742 | if templ_7745c5c3_Err != nil { | |
| 747 | 743 | return templ_7745c5c3_Err | |
| 748 | 744 | } | |
| 749 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "</time>") | |
| 745 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</time>") | |
| 750 | 746 | if templ_7745c5c3_Err != nil { | |
| 751 | 747 | return templ_7745c5c3_Err | |
| 752 | 748 | } | |
| 753 | 749 | } | |
| 754 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</td></tr>") | |
| 750 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</td></tr>") | |
| 755 | 751 | if templ_7745c5c3_Err != nil { | |
| 756 | 752 | return templ_7745c5c3_Err | |
| 757 | 753 | } | |
| @@ -775,12 +771,12 @@ func refsRail(p RefsPage) templ.Component { | |||
| 775 | 771 | }() | |
| 776 | 772 | } | |
| 777 | 773 | ctx = templ.InitializeContext(ctx) | |
| 778 | - | templ_7745c5c3_Var37 := templ.GetChildren(ctx) | |
| 779 | - | if templ_7745c5c3_Var37 == nil { | |
| 780 | - | templ_7745c5c3_Var37 = templ.NopComponent | |
| 774 | + | templ_7745c5c3_Var35 := templ.GetChildren(ctx) | |
| 775 | + | if templ_7745c5c3_Var35 == nil { | |
| 776 | + | templ_7745c5c3_Var35 = templ.NopComponent | |
| 781 | 777 | } | |
| 782 | 778 | ctx = templ.ClearChildren(ctx) | |
| 783 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>") | |
| 779 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>") | |
| 784 | 780 | if templ_7745c5c3_Err != nil { | |
| 785 | 781 | return templ_7745c5c3_Err | |
| 786 | 782 | } | |
| @@ -788,7 +784,7 @@ func refsRail(p RefsPage) templ.Component { | |||
| 788 | 784 | if templ_7745c5c3_Err != nil { | |
| 789 | 785 | return templ_7745c5c3_Err | |
| 790 | 786 | } | |
| 791 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</section>") | |
| 787 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</section>") | |
| 792 | 788 | if templ_7745c5c3_Err != nil { | |
| 793 | 789 | return templ_7745c5c3_Err | |
| 794 | 790 | } | |
| @@ -813,12 +809,12 @@ func State(l Layout, p StatePage) templ.Component { | |||
| 813 | 809 | }() | |
| 814 | 810 | } | |
| 815 | 811 | ctx = templ.InitializeContext(ctx) | |
| 816 | - | templ_7745c5c3_Var38 := templ.GetChildren(ctx) | |
| 817 | - | if templ_7745c5c3_Var38 == nil { | |
| 818 | - | templ_7745c5c3_Var38 = templ.NopComponent | |
| 812 | + | templ_7745c5c3_Var36 := templ.GetChildren(ctx) | |
| 813 | + | if templ_7745c5c3_Var36 == nil { | |
| 814 | + | templ_7745c5c3_Var36 = templ.NopComponent | |
| 819 | 815 | } | |
| 820 | 816 | ctx = templ.ClearChildren(ctx) | |
| 821 | - | templ_7745c5c3_Var39 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 817 | + | templ_7745c5c3_Var37 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 822 | 818 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 823 | 819 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 824 | 820 | if !templ_7745c5c3_IsBuffer { | |
| @@ -830,51 +826,51 @@ func State(l Layout, p StatePage) templ.Component { | |||
| 830 | 826 | }() | |
| 831 | 827 | } | |
| 832 | 828 | ctx = templ.InitializeContext(ctx) | |
| 833 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">") | |
| 829 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">") | |
| 834 | 830 | if templ_7745c5c3_Err != nil { | |
| 835 | 831 | return templ_7745c5c3_Err | |
| 836 | 832 | } | |
| 837 | - | var templ_7745c5c3_Var40 string | |
| 838 | - | templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code) | |
| 833 | + | var templ_7745c5c3_Var38 string | |
| 834 | + | templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code) | |
| 839 | 835 | if templ_7745c5c3_Err != nil { | |
| 840 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 165, Col: 30} | |
| 836 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 172, Col: 30} | |
| 841 | 837 | } | |
| 842 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40)) | |
| 838 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38)) | |
| 843 | 839 | if templ_7745c5c3_Err != nil { | |
| 844 | 840 | return templ_7745c5c3_Err | |
| 845 | 841 | } | |
| 846 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</p><h1 id=\"state-title\">") | |
| 842 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</p><h1 id=\"state-title\">") | |
| 847 | 843 | if templ_7745c5c3_Err != nil { | |
| 848 | 844 | return templ_7745c5c3_Err | |
| 849 | 845 | } | |
| 850 | - | var templ_7745c5c3_Var41 string | |
| 851 | - | templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 846 | + | var templ_7745c5c3_Var39 string | |
| 847 | + | templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 852 | 848 | if templ_7745c5c3_Err != nil { | |
| 853 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 166, Col: 33} | |
| 849 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 173, Col: 33} | |
| 854 | 850 | } | |
| 855 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41)) | |
| 851 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39)) | |
| 856 | 852 | if templ_7745c5c3_Err != nil { | |
| 857 | 853 | return templ_7745c5c3_Err | |
| 858 | 854 | } | |
| 859 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</h1>") | |
| 855 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</h1>") | |
| 860 | 856 | if templ_7745c5c3_Err != nil { | |
| 861 | 857 | return templ_7745c5c3_Err | |
| 862 | 858 | } | |
| 863 | 859 | for _, line := range p.Lines { | |
| 864 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "<p class=\"dim\">") | |
| 860 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<p class=\"dim\">") | |
| 865 | 861 | if templ_7745c5c3_Err != nil { | |
| 866 | 862 | return templ_7745c5c3_Err | |
| 867 | 863 | } | |
| 868 | - | var templ_7745c5c3_Var42 string | |
| 869 | - | templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 864 | + | var templ_7745c5c3_Var40 string | |
| 865 | + | templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 870 | 866 | if templ_7745c5c3_Err != nil { | |
| 871 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 168, Col: 25} | |
| 867 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 175, Col: 25} | |
| 872 | 868 | } | |
| 873 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42)) | |
| 869 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40)) | |
| 874 | 870 | if templ_7745c5c3_Err != nil { | |
| 875 | 871 | return templ_7745c5c3_Err | |
| 876 | 872 | } | |
| 877 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</p>") | |
| 873 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "</p>") | |
| 878 | 874 | if templ_7745c5c3_Err != nil { | |
| 879 | 875 | return templ_7745c5c3_Err | |
| 880 | 876 | } | |
| @@ -885,49 +881,49 @@ func State(l Layout, p StatePage) templ.Component { | |||
| 885 | 881 | return templ_7745c5c3_Err | |
| 886 | 882 | } | |
| 887 | 883 | } | |
| 888 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<p class=\"state-back\">") | |
| 884 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "<p class=\"state-back\">") | |
| 889 | 885 | if templ_7745c5c3_Err != nil { | |
| 890 | 886 | return templ_7745c5c3_Err | |
| 891 | 887 | } | |
| 892 | 888 | for _, b := range p.Back { | |
| 893 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<a href=\"") | |
| 889 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "<a href=\"") | |
| 894 | 890 | if templ_7745c5c3_Err != nil { | |
| 895 | 891 | return templ_7745c5c3_Err | |
| 896 | 892 | } | |
| 897 | - | var templ_7745c5c3_Var43 templ.SafeURL | |
| 898 | - | templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href)) | |
| 893 | + | var templ_7745c5c3_Var41 templ.SafeURL | |
| 894 | + | templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href)) | |
| 899 | 895 | if templ_7745c5c3_Err != nil { | |
| 900 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 175, Col: 36} | |
| 896 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 182, Col: 36} | |
| 901 | 897 | } | |
| 902 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43)) | |
| 898 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41)) | |
| 903 | 899 | if templ_7745c5c3_Err != nil { | |
| 904 | 900 | return templ_7745c5c3_Err | |
| 905 | 901 | } | |
| 906 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\">") | |
| 902 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "\">") | |
| 907 | 903 | if templ_7745c5c3_Err != nil { | |
| 908 | 904 | return templ_7745c5c3_Err | |
| 909 | 905 | } | |
| 910 | - | var templ_7745c5c3_Var44 string | |
| 911 | - | templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label) | |
| 906 | + | var templ_7745c5c3_Var42 string | |
| 907 | + | templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label) | |
| 912 | 908 | if templ_7745c5c3_Err != nil { | |
| 913 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 175, Col: 48} | |
| 909 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 182, Col: 48} | |
| 914 | 910 | } | |
| 915 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44)) | |
| 911 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42)) | |
| 916 | 912 | if templ_7745c5c3_Err != nil { | |
| 917 | 913 | return templ_7745c5c3_Err | |
| 918 | 914 | } | |
| 919 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</a>") | |
| 915 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</a>") | |
| 920 | 916 | if templ_7745c5c3_Err != nil { | |
| 921 | 917 | return templ_7745c5c3_Err | |
| 922 | 918 | } | |
| 923 | 919 | } | |
| 924 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</p></section>") | |
| 920 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</p></section>") | |
| 925 | 921 | if templ_7745c5c3_Err != nil { | |
| 926 | 922 | return templ_7745c5c3_Err | |
| 927 | 923 | } | |
| 928 | 924 | return nil | |
| 929 | 925 | }) | |
| 930 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var39), templ_7745c5c3_Buffer) | |
| 926 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var37), templ_7745c5c3_Buffer) | |
| 931 | 927 | if templ_7745c5c3_Err != nil { | |
| 932 | 928 | return templ_7745c5c3_Err | |
| 933 | 929 | } | |
| @@ -956,12 +952,12 @@ func Login(l Layout, p LoginPage) templ.Component { | |||
| 956 | 952 | }() | |
| 957 | 953 | } | |
| 958 | 954 | ctx = templ.InitializeContext(ctx) | |
| 959 | - | templ_7745c5c3_Var45 := templ.GetChildren(ctx) | |
| 960 | - | if templ_7745c5c3_Var45 == nil { | |
| 961 | - | templ_7745c5c3_Var45 = templ.NopComponent | |
| 955 | + | templ_7745c5c3_Var43 := templ.GetChildren(ctx) | |
| 956 | + | if templ_7745c5c3_Var43 == nil { | |
| 957 | + | templ_7745c5c3_Var43 = templ.NopComponent | |
| 962 | 958 | } | |
| 963 | 959 | ctx = templ.ClearChildren(ctx) | |
| 964 | - | templ_7745c5c3_Var46 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 960 | + | templ_7745c5c3_Var44 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 965 | 961 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 966 | 962 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 967 | 963 | if !templ_7745c5c3_IsBuffer { | |
| @@ -973,75 +969,75 @@ func Login(l Layout, p LoginPage) templ.Component { | |||
| 973 | 969 | }() | |
| 974 | 970 | } | |
| 975 | 971 | ctx = templ.InitializeContext(ctx) | |
| 976 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | |
| 972 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | |
| 977 | 973 | if templ_7745c5c3_Err != nil { | |
| 978 | 974 | return templ_7745c5c3_Err | |
| 979 | 975 | } | |
| 980 | - | var templ_7745c5c3_Var47 string | |
| 981 | - | templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 976 | + | var templ_7745c5c3_Var45 string | |
| 977 | + | templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 982 | 978 | if templ_7745c5c3_Err != nil { | |
| 983 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 190, Col: 33} | |
| 979 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 197, Col: 33} | |
| 984 | 980 | } | |
| 985 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) | |
| 981 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45)) | |
| 986 | 982 | if templ_7745c5c3_Err != nil { | |
| 987 | 983 | return templ_7745c5c3_Err | |
| 988 | 984 | } | |
| 989 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</h1>") | |
| 985 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</h1>") | |
| 990 | 986 | if templ_7745c5c3_Err != nil { | |
| 991 | 987 | return templ_7745c5c3_Err | |
| 992 | 988 | } | |
| 993 | 989 | for _, line := range p.Lines { | |
| 994 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<p class=\"dim\">") | |
| 990 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<p class=\"dim\">") | |
| 995 | 991 | if templ_7745c5c3_Err != nil { | |
| 996 | 992 | return templ_7745c5c3_Err | |
| 997 | 993 | } | |
| 998 | - | var templ_7745c5c3_Var48 string | |
| 999 | - | templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 994 | + | var templ_7745c5c3_Var46 string | |
| 995 | + | templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 1000 | 996 | if templ_7745c5c3_Err != nil { | |
| 1001 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 192, Col: 25} | |
| 997 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 199, Col: 25} | |
| 1002 | 998 | } | |
| 1003 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48)) | |
| 999 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46)) | |
| 1004 | 1000 | if templ_7745c5c3_Err != nil { | |
| 1005 | 1001 | return templ_7745c5c3_Err | |
| 1006 | 1002 | } | |
| 1007 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</p>") | |
| 1003 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</p>") | |
| 1008 | 1004 | if templ_7745c5c3_Err != nil { | |
| 1009 | 1005 | return templ_7745c5c3_Err | |
| 1010 | 1006 | } | |
| 1011 | 1007 | } | |
| 1012 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<form class=\"state-act\" method=\"post\" action=\"") | |
| 1008 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "<form class=\"state-act\" method=\"post\" action=\"") | |
| 1013 | 1009 | if templ_7745c5c3_Err != nil { | |
| 1014 | 1010 | return templ_7745c5c3_Err | |
| 1015 | 1011 | } | |
| 1016 | - | var templ_7745c5c3_Var49 templ.SafeURL | |
| 1017 | - | templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action)) | |
| 1012 | + | var templ_7745c5c3_Var47 templ.SafeURL | |
| 1013 | + | templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action)) | |
| 1018 | 1014 | if templ_7745c5c3_Err != nil { | |
| 1019 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 194, Col: 73} | |
| 1015 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 201, Col: 73} | |
| 1020 | 1016 | } | |
| 1021 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49)) | |
| 1017 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) | |
| 1022 | 1018 | if templ_7745c5c3_Err != nil { | |
| 1023 | 1019 | return templ_7745c5c3_Err | |
| 1024 | 1020 | } | |
| 1025 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">") | |
| 1021 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">") | |
| 1026 | 1022 | if templ_7745c5c3_Err != nil { | |
| 1027 | 1023 | return templ_7745c5c3_Err | |
| 1028 | 1024 | } | |
| 1029 | - | var templ_7745c5c3_Var50 string | |
| 1030 | - | templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | |
| 1025 | + | var templ_7745c5c3_Var48 string | |
| 1026 | + | templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | |
| 1031 | 1027 | if templ_7745c5c3_Err != nil { | |
| 1032 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 195, Col: 56} | |
| 1028 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 202, Col: 56} | |
| 1033 | 1029 | } | |
| 1034 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var50)) | |
| 1030 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48)) | |
| 1035 | 1031 | if templ_7745c5c3_Err != nil { | |
| 1036 | 1032 | return templ_7745c5c3_Err | |
| 1037 | 1033 | } | |
| 1038 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | |
| 1034 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | |
| 1039 | 1035 | if templ_7745c5c3_Err != nil { | |
| 1040 | 1036 | return templ_7745c5c3_Err | |
| 1041 | 1037 | } | |
| 1042 | 1038 | return nil | |
| 1043 | 1039 | }) | |
| 1044 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var46), templ_7745c5c3_Buffer) | |
| 1040 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var44), templ_7745c5c3_Buffer) | |
| 1045 | 1041 | if templ_7745c5c3_Err != nil { | |
| 1046 | 1042 | return templ_7745c5c3_Err | |
| 1047 | 1043 | } | |
| @@ -1067,12 +1063,12 @@ func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component { | |||
| 1067 | 1063 | }() | |
| 1068 | 1064 | } | |
| 1069 | 1065 | ctx = templ.InitializeContext(ctx) | |
| 1070 | - | templ_7745c5c3_Var51 := templ.GetChildren(ctx) | |
| 1071 | - | if templ_7745c5c3_Var51 == nil { | |
| 1072 | - | templ_7745c5c3_Var51 = templ.NopComponent | |
| 1066 | + | templ_7745c5c3_Var49 := templ.GetChildren(ctx) | |
| 1067 | + | if templ_7745c5c3_Var49 == nil { | |
| 1068 | + | templ_7745c5c3_Var49 = templ.NopComponent | |
| 1073 | 1069 | } | |
| 1074 | 1070 | ctx = templ.ClearChildren(ctx) | |
| 1075 | - | templ_7745c5c3_Var52 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1071 | + | templ_7745c5c3_Var50 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1076 | 1072 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 1077 | 1073 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 1078 | 1074 | if !templ_7745c5c3_IsBuffer { | |
| @@ -1084,88 +1080,88 @@ func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component { | |||
| 1084 | 1080 | }() | |
| 1085 | 1081 | } | |
| 1086 | 1082 | ctx = templ.InitializeContext(ctx) | |
| 1087 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | |
| 1083 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | |
| 1088 | 1084 | if templ_7745c5c3_Err != nil { | |
| 1089 | 1085 | return templ_7745c5c3_Err | |
| 1090 | 1086 | } | |
| 1091 | - | var templ_7745c5c3_Var53 string | |
| 1092 | - | templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 1087 | + | var templ_7745c5c3_Var51 string | |
| 1088 | + | templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 1093 | 1089 | if templ_7745c5c3_Err != nil { | |
| 1094 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 207, Col: 33} | |
| 1090 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 214, Col: 33} | |
| 1095 | 1091 | } | |
| 1096 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53)) | |
| 1092 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51)) | |
| 1097 | 1093 | if templ_7745c5c3_Err != nil { | |
| 1098 | 1094 | return templ_7745c5c3_Err | |
| 1099 | 1095 | } | |
| 1100 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"") | |
| 1096 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"") | |
| 1101 | 1097 | if templ_7745c5c3_Err != nil { | |
| 1102 | 1098 | return templ_7745c5c3_Err | |
| 1103 | 1099 | } | |
| 1104 | - | var templ_7745c5c3_Var54 string | |
| 1105 | - | templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | |
| 1100 | + | var templ_7745c5c3_Var52 string | |
| 1101 | + | templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | |
| 1106 | 1102 | if templ_7745c5c3_Err != nil { | |
| 1107 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 209, Col: 87} | |
| 1103 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 216, Col: 87} | |
| 1108 | 1104 | } | |
| 1109 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var54) | |
| 1105 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var52) | |
| 1110 | 1106 | if templ_7745c5c3_Err != nil { | |
| 1111 | 1107 | return templ_7745c5c3_Err | |
| 1112 | 1108 | } | |
| 1113 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "\" data-finish=\"") | |
| 1109 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "\" data-finish=\"") | |
| 1114 | 1110 | if templ_7745c5c3_Err != nil { | |
| 1115 | 1111 | return templ_7745c5c3_Err | |
| 1116 | 1112 | } | |
| 1117 | - | var templ_7745c5c3_Var55 string | |
| 1118 | - | templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | |
| 1113 | + | var templ_7745c5c3_Var53 string | |
| 1114 | + | templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | |
| 1119 | 1115 | if templ_7745c5c3_Err != nil { | |
| 1120 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 209, Col: 112} | |
| 1116 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 216, Col: 112} | |
| 1121 | 1117 | } | |
| 1122 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var55) | |
| 1118 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var53) | |
| 1123 | 1119 | if templ_7745c5c3_Err != nil { | |
| 1124 | 1120 | return templ_7745c5c3_Err | |
| 1125 | 1121 | } | |
| 1126 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "\">") | |
| 1122 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "\">") | |
| 1127 | 1123 | if templ_7745c5c3_Err != nil { | |
| 1128 | 1124 | return templ_7745c5c3_Err | |
| 1129 | 1125 | } | |
| 1130 | - | var templ_7745c5c3_Var56 string | |
| 1131 | - | templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | |
| 1126 | + | var templ_7745c5c3_Var54 string | |
| 1127 | + | templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | |
| 1132 | 1128 | if templ_7745c5c3_Err != nil { | |
| 1133 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 209, Col: 125} | |
| 1129 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 216, Col: 125} | |
| 1134 | 1130 | } | |
| 1135 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56)) | |
| 1131 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54)) | |
| 1136 | 1132 | if templ_7745c5c3_Err != nil { | |
| 1137 | 1133 | return templ_7745c5c3_Err | |
| 1138 | 1134 | } | |
| 1139 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | |
| 1135 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | |
| 1140 | 1136 | if templ_7745c5c3_Err != nil { | |
| 1141 | 1137 | return templ_7745c5c3_Err | |
| 1142 | 1138 | } | |
| 1143 | 1139 | for _, line := range p.Lines { | |
| 1144 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "<p class=\"dim\">") | |
| 1140 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<p class=\"dim\">") | |
| 1145 | 1141 | if templ_7745c5c3_Err != nil { | |
| 1146 | 1142 | return templ_7745c5c3_Err | |
| 1147 | 1143 | } | |
| 1148 | - | var templ_7745c5c3_Var57 string | |
| 1149 | - | templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 1144 | + | var templ_7745c5c3_Var55 string | |
| 1145 | + | templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 1150 | 1146 | if templ_7745c5c3_Err != nil { | |
| 1151 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 213, Col: 25} | |
| 1147 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 220, Col: 25} | |
| 1152 | 1148 | } | |
| 1153 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var57)) | |
| 1149 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55)) | |
| 1154 | 1150 | if templ_7745c5c3_Err != nil { | |
| 1155 | 1151 | return templ_7745c5c3_Err | |
| 1156 | 1152 | } | |
| 1157 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</p>") | |
| 1153 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</p>") | |
| 1158 | 1154 | if templ_7745c5c3_Err != nil { | |
| 1159 | 1155 | return templ_7745c5c3_Err | |
| 1160 | 1156 | } | |
| 1161 | 1157 | } | |
| 1162 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | |
| 1158 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | |
| 1163 | 1159 | if templ_7745c5c3_Err != nil { | |
| 1164 | 1160 | return templ_7745c5c3_Err | |
| 1165 | 1161 | } | |
| 1166 | 1162 | return nil | |
| 1167 | 1163 | }) | |
| 1168 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var52), templ_7745c5c3_Buffer) | |
| 1164 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var50), templ_7745c5c3_Buffer) | |
| 1169 | 1165 | if templ_7745c5c3_Err != nil { | |
| 1170 | 1166 | return templ_7745c5c3_Err | |
| 1171 | 1167 | } | |
| @@ -1190,12 +1186,12 @@ func Passkeys(l Layout, p PasskeysPage) templ.Component { | |||
| 1190 | 1186 | }() | |
| 1191 | 1187 | } | |
| 1192 | 1188 | ctx = templ.InitializeContext(ctx) | |
| 1193 | - | templ_7745c5c3_Var58 := templ.GetChildren(ctx) | |
| 1194 | - | if templ_7745c5c3_Var58 == nil { | |
| 1195 | - | templ_7745c5c3_Var58 = templ.NopComponent | |
| 1189 | + | templ_7745c5c3_Var56 := templ.GetChildren(ctx) | |
| 1190 | + | if templ_7745c5c3_Var56 == nil { | |
| 1191 | + | templ_7745c5c3_Var56 = templ.NopComponent | |
| 1196 | 1192 | } | |
| 1197 | 1193 | ctx = templ.ClearChildren(ctx) | |
| 1198 | - | templ_7745c5c3_Var59 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1194 | + | templ_7745c5c3_Var57 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1199 | 1195 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 1200 | 1196 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 1201 | 1197 | if !templ_7745c5c3_IsBuffer { | |
| @@ -1207,231 +1203,231 @@ func Passkeys(l Layout, p PasskeysPage) templ.Component { | |||
| 1207 | 1203 | }() | |
| 1208 | 1204 | } | |
| 1209 | 1205 | ctx = templ.InitializeContext(ctx) | |
| 1210 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">") | |
| 1206 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">") | |
| 1211 | 1207 | if templ_7745c5c3_Err != nil { | |
| 1212 | 1208 | return templ_7745c5c3_Err | |
| 1213 | 1209 | } | |
| 1214 | - | var templ_7745c5c3_Var60 string | |
| 1215 | - | templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows))) | |
| 1210 | + | var templ_7745c5c3_Var58 string | |
| 1211 | + | templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows))) | |
| 1216 | 1212 | if templ_7745c5c3_Err != nil { | |
| 1217 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 223, Col: 81} | |
| 1213 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 230, Col: 81} | |
| 1218 | 1214 | } | |
| 1219 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var60)) | |
| 1215 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var58)) | |
| 1220 | 1216 | if templ_7745c5c3_Err != nil { | |
| 1221 | 1217 | return templ_7745c5c3_Err | |
| 1222 | 1218 | } | |
| 1223 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "</span></h2><p class=\"dim\">A passkey signs you in from this device or your phone, without a terminal. Removing one signs every browser out.</p>") | |
| 1219 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</span></h2><p class=\"dim\">A passkey signs you in from this device or your phone, without a terminal. Removing one signs every browser out.</p>") | |
| 1224 | 1220 | if templ_7745c5c3_Err != nil { | |
| 1225 | 1221 | return templ_7745c5c3_Err | |
| 1226 | 1222 | } | |
| 1227 | 1223 | if len(p.Rows) > 0 { | |
| 1228 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><th class=\"cur\"></th><th class=\"c-name\">Name</th><th class=\"c-when\">Created</th><th class=\"c-when\">Last used</th><th class=\"c-sync\">Synced</th><th class=\"c-act\"><span class=\"sr\">Remove</span></th></tr></thead> <tbody>") | |
| 1224 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><th class=\"cur\"></th><th class=\"c-name\">Name</th><th class=\"c-when\">Created</th><th class=\"c-when\">Last used</th><th class=\"c-sync\">Synced</th><th class=\"c-act\"><span class=\"sr\">Remove</span></th></tr></thead> <tbody>") | |
| 1229 | 1225 | if templ_7745c5c3_Err != nil { | |
| 1230 | 1226 | return templ_7745c5c3_Err | |
| 1231 | 1227 | } | |
| 1232 | 1228 | for _, r := range p.Rows { | |
| 1233 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<tr><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-name\">") | |
| 1229 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<tr><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-name\">") | |
| 1234 | 1230 | if templ_7745c5c3_Err != nil { | |
| 1235 | 1231 | return templ_7745c5c3_Err | |
| 1236 | 1232 | } | |
| 1237 | - | var templ_7745c5c3_Var61 string | |
| 1238 | - | templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | |
| 1233 | + | var templ_7745c5c3_Var59 string | |
| 1234 | + | templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | |
| 1239 | 1235 | if templ_7745c5c3_Err != nil { | |
| 1240 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 241, Col: 34} | |
| 1236 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 248, Col: 34} | |
| 1241 | 1237 | } | |
| 1242 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61)) | |
| 1238 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59)) | |
| 1243 | 1239 | if templ_7745c5c3_Err != nil { | |
| 1244 | 1240 | return templ_7745c5c3_Err | |
| 1245 | 1241 | } | |
| 1246 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</td><td class=\"c-when nowrap\"><time") | |
| 1242 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "</td><td class=\"c-when nowrap\"><time") | |
| 1247 | 1243 | if templ_7745c5c3_Err != nil { | |
| 1248 | 1244 | return templ_7745c5c3_Err | |
| 1249 | 1245 | } | |
| 1250 | 1246 | if r.CreatedAt != "" { | |
| 1251 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, " datetime=\"") | |
| 1247 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, " datetime=\"") | |
| 1252 | 1248 | if templ_7745c5c3_Err != nil { | |
| 1253 | 1249 | return templ_7745c5c3_Err | |
| 1254 | 1250 | } | |
| 1255 | - | var templ_7745c5c3_Var62 string | |
| 1256 | - | templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt) | |
| 1251 | + | var templ_7745c5c3_Var60 string | |
| 1252 | + | templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt) | |
| 1257 | 1253 | if templ_7745c5c3_Err != nil { | |
| 1258 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 245, Col: 32} | |
| 1254 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 32} | |
| 1259 | 1255 | } | |
| 1260 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var62) | |
| 1256 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60) | |
| 1261 | 1257 | if templ_7745c5c3_Err != nil { | |
| 1262 | 1258 | return templ_7745c5c3_Err | |
| 1263 | 1259 | } | |
| 1264 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "\"") | |
| 1260 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "\"") | |
| 1265 | 1261 | if templ_7745c5c3_Err != nil { | |
| 1266 | 1262 | return templ_7745c5c3_Err | |
| 1267 | 1263 | } | |
| 1268 | 1264 | } | |
| 1269 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, ">") | |
| 1265 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, ">") | |
| 1270 | 1266 | if templ_7745c5c3_Err != nil { | |
| 1271 | 1267 | return templ_7745c5c3_Err | |
| 1272 | 1268 | } | |
| 1273 | - | var templ_7745c5c3_Var63 string | |
| 1274 | - | templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created) | |
| 1269 | + | var templ_7745c5c3_Var61 string | |
| 1270 | + | templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created) | |
| 1275 | 1271 | if templ_7745c5c3_Err != nil { | |
| 1276 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 247, Col: 20} | |
| 1272 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 254, Col: 20} | |
| 1277 | 1273 | } | |
| 1278 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63)) | |
| 1274 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61)) | |
| 1279 | 1275 | if templ_7745c5c3_Err != nil { | |
| 1280 | 1276 | return templ_7745c5c3_Err | |
| 1281 | 1277 | } | |
| 1282 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</time></td><td class=\"c-when nowrap\"><time") | |
| 1278 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</time></td><td class=\"c-when nowrap\"><time") | |
| 1283 | 1279 | if templ_7745c5c3_Err != nil { | |
| 1284 | 1280 | return templ_7745c5c3_Err | |
| 1285 | 1281 | } | |
| 1286 | 1282 | if r.LastUsedAt != "" { | |
| 1287 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, " datetime=\"") | |
| 1283 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, " datetime=\"") | |
| 1288 | 1284 | if templ_7745c5c3_Err != nil { | |
| 1289 | 1285 | return templ_7745c5c3_Err | |
| 1290 | 1286 | } | |
| 1291 | - | var templ_7745c5c3_Var64 string | |
| 1292 | - | templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt) | |
| 1287 | + | var templ_7745c5c3_Var62 string | |
| 1288 | + | templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt) | |
| 1293 | 1289 | if templ_7745c5c3_Err != nil { | |
| 1294 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 33} | |
| 1290 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 259, Col: 33} | |
| 1295 | 1291 | } | |
| 1296 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var64) | |
| 1292 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var62) | |
| 1297 | 1293 | if templ_7745c5c3_Err != nil { | |
| 1298 | 1294 | return templ_7745c5c3_Err | |
| 1299 | 1295 | } | |
| 1300 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "\"") | |
| 1296 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "\"") | |
| 1301 | 1297 | if templ_7745c5c3_Err != nil { | |
| 1302 | 1298 | return templ_7745c5c3_Err | |
| 1303 | 1299 | } | |
| 1304 | 1300 | } | |
| 1305 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, ">") | |
| 1301 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, ">") | |
| 1306 | 1302 | if templ_7745c5c3_Err != nil { | |
| 1307 | 1303 | return templ_7745c5c3_Err | |
| 1308 | 1304 | } | |
| 1309 | - | var templ_7745c5c3_Var65 string | |
| 1310 | - | templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed) | |
| 1305 | + | var templ_7745c5c3_Var63 string | |
| 1306 | + | templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed) | |
| 1311 | 1307 | if templ_7745c5c3_Err != nil { | |
| 1312 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 254, Col: 21} | |
| 1308 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 261, Col: 21} | |
| 1313 | 1309 | } | |
| 1314 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65)) | |
| 1310 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63)) | |
| 1315 | 1311 | if templ_7745c5c3_Err != nil { | |
| 1316 | 1312 | return templ_7745c5c3_Err | |
| 1317 | 1313 | } | |
| 1318 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</time></td><td class=\"c-sync\">") | |
| 1314 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</time></td><td class=\"c-sync\">") | |
| 1319 | 1315 | if templ_7745c5c3_Err != nil { | |
| 1320 | 1316 | return templ_7745c5c3_Err | |
| 1321 | 1317 | } | |
| 1322 | 1318 | if r.Synced { | |
| 1323 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "yes") | |
| 1319 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "yes") | |
| 1324 | 1320 | if templ_7745c5c3_Err != nil { | |
| 1325 | 1321 | return templ_7745c5c3_Err | |
| 1326 | 1322 | } | |
| 1327 | 1323 | } else { | |
| 1328 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "no") | |
| 1324 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "no") | |
| 1329 | 1325 | if templ_7745c5c3_Err != nil { | |
| 1330 | 1326 | return templ_7745c5c3_Err | |
| 1331 | 1327 | } | |
| 1332 | 1328 | } | |
| 1333 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "</td><td class=\"c-act\"><form method=\"post\" action=\"") | |
| 1329 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "</td><td class=\"c-act\"><form method=\"post\" action=\"") | |
| 1334 | 1330 | if templ_7745c5c3_Err != nil { | |
| 1335 | 1331 | return templ_7745c5c3_Err | |
| 1336 | 1332 | } | |
| 1337 | - | var templ_7745c5c3_Var66 templ.SafeURL | |
| 1338 | - | templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove)) | |
| 1333 | + | var templ_7745c5c3_Var64 templ.SafeURL | |
| 1334 | + | templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove)) | |
| 1339 | 1335 | if templ_7745c5c3_Err != nil { | |
| 1340 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 264, Col: 60} | |
| 1336 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 271, Col: 60} | |
| 1341 | 1337 | } | |
| 1342 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66)) | |
| 1338 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64)) | |
| 1343 | 1339 | if templ_7745c5c3_Err != nil { | |
| 1344 | 1340 | return templ_7745c5c3_Err | |
| 1345 | 1341 | } | |
| 1346 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"") | |
| 1342 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"") | |
| 1347 | 1343 | if templ_7745c5c3_Err != nil { | |
| 1348 | 1344 | return templ_7745c5c3_Err | |
| 1349 | 1345 | } | |
| 1350 | - | var templ_7745c5c3_Var67 string | |
| 1351 | - | templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name) | |
| 1346 | + | var templ_7745c5c3_Var65 string | |
| 1347 | + | templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name) | |
| 1352 | 1348 | if templ_7745c5c3_Err != nil { | |
| 1353 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 265, Col: 89} | |
| 1349 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 272, Col: 89} | |
| 1354 | 1350 | } | |
| 1355 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var67) | |
| 1351 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var65) | |
| 1356 | 1352 | if templ_7745c5c3_Err != nil { | |
| 1357 | 1353 | return templ_7745c5c3_Err | |
| 1358 | 1354 | } | |
| 1359 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "\">Remove</button></form></td></tr>") | |
| 1355 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "\">Remove</button></form></td></tr>") | |
| 1360 | 1356 | if templ_7745c5c3_Err != nil { | |
| 1361 | 1357 | return templ_7745c5c3_Err | |
| 1362 | 1358 | } | |
| 1363 | 1359 | } | |
| 1364 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</tbody></table>") | |
| 1360 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</tbody></table>") | |
| 1365 | 1361 | if templ_7745c5c3_Err != nil { | |
| 1366 | 1362 | return templ_7745c5c3_Err | |
| 1367 | 1363 | } | |
| 1368 | 1364 | } else { | |
| 1369 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<p class=\"lede dim\">no passkeys yet.</p>") | |
| 1365 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "<p class=\"lede dim\">no passkeys yet.</p>") | |
| 1370 | 1366 | if templ_7745c5c3_Err != nil { | |
| 1371 | 1367 | return templ_7745c5c3_Err | |
| 1372 | 1368 | } | |
| 1373 | 1369 | } | |
| 1374 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, " ") | |
| 1370 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, " ") | |
| 1375 | 1371 | if templ_7745c5c3_Err != nil { | |
| 1376 | 1372 | return templ_7745c5c3_Err | |
| 1377 | 1373 | } | |
| 1378 | 1374 | if p.Full { | |
| 1379 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "<p class=\"dim\">") | |
| 1375 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "<p class=\"dim\">") | |
| 1380 | 1376 | if templ_7745c5c3_Err != nil { | |
| 1381 | 1377 | return templ_7745c5c3_Err | |
| 1382 | 1378 | } | |
| 1383 | - | var templ_7745c5c3_Var68 string | |
| 1384 | - | templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max)) | |
| 1379 | + | var templ_7745c5c3_Var66 string | |
| 1380 | + | templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max)) | |
| 1385 | 1381 | if templ_7745c5c3_Err != nil { | |
| 1386 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 276, Col: 31} | |
| 1382 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 283, Col: 31} | |
| 1387 | 1383 | } | |
| 1388 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68)) | |
| 1384 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66)) | |
| 1389 | 1385 | if templ_7745c5c3_Err != nil { | |
| 1390 | 1386 | return templ_7745c5c3_Err | |
| 1391 | 1387 | } | |
| 1392 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, " passkeys are registered, the most there can be. Remove one to add another.</p>") | |
| 1388 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, " passkeys are registered, the most there can be. Remove one to add another.</p>") | |
| 1393 | 1389 | if templ_7745c5c3_Err != nil { | |
| 1394 | 1390 | return templ_7745c5c3_Err | |
| 1395 | 1391 | } | |
| 1396 | 1392 | } else { | |
| 1397 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "<form class=\"passkey-add\" data-js data-passkey-form><label for=\"passkey-name\" class=\"sr\">Name of the new passkey</label> <input id=\"passkey-name\" type=\"text\" placeholder=\"Name, for example Pixel 9\" autocomplete=\"off\" data-passkey-name> <button type=\"submit\" class=\"btn primary\" data-passkey=\"register\" data-begin=\"") | |
| 1393 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<form class=\"passkey-add\" data-js data-passkey-form><label for=\"passkey-name\" class=\"sr\">Name of the new passkey</label> <input id=\"passkey-name\" type=\"text\" placeholder=\"Name, for example Pixel 9\" autocomplete=\"off\" data-passkey-name> <button type=\"submit\" class=\"btn primary\" data-passkey=\"register\" data-begin=\"") | |
| 1398 | 1394 | if templ_7745c5c3_Err != nil { | |
| 1399 | 1395 | return templ_7745c5c3_Err | |
| 1400 | 1396 | } | |
| 1401 | - | var templ_7745c5c3_Var69 string | |
| 1402 | - | templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | |
| 1397 | + | var templ_7745c5c3_Var67 string | |
| 1398 | + | templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | |
| 1403 | 1399 | if templ_7745c5c3_Err != nil { | |
| 1404 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 281, Col: 90} | |
| 1400 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 288, Col: 90} | |
| 1405 | 1401 | } | |
| 1406 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69) | |
| 1402 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var67) | |
| 1407 | 1403 | if templ_7745c5c3_Err != nil { | |
| 1408 | 1404 | return templ_7745c5c3_Err | |
| 1409 | 1405 | } | |
| 1410 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "\" data-finish=\"") | |
| 1406 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "\" data-finish=\"") | |
| 1411 | 1407 | if templ_7745c5c3_Err != nil { | |
| 1412 | 1408 | return templ_7745c5c3_Err | |
| 1413 | 1409 | } | |
| 1414 | - | var templ_7745c5c3_Var70 string | |
| 1415 | - | templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | |
| 1410 | + | var templ_7745c5c3_Var68 string | |
| 1411 | + | templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | |
| 1416 | 1412 | if templ_7745c5c3_Err != nil { | |
| 1417 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 281, Col: 115} | |
| 1413 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 288, Col: 115} | |
| 1418 | 1414 | } | |
| 1419 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var70) | |
| 1415 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var68) | |
| 1420 | 1416 | if templ_7745c5c3_Err != nil { | |
| 1421 | 1417 | return templ_7745c5c3_Err | |
| 1422 | 1418 | } | |
| 1423 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "\">Add a passkey</button></form>") | |
| 1419 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "\">Add a passkey</button></form>") | |
| 1424 | 1420 | if templ_7745c5c3_Err != nil { | |
| 1425 | 1421 | return templ_7745c5c3_Err | |
| 1426 | 1422 | } | |
| 1427 | 1423 | } | |
| 1428 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | |
| 1424 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | |
| 1429 | 1425 | if templ_7745c5c3_Err != nil { | |
| 1430 | 1426 | return templ_7745c5c3_Err | |
| 1431 | 1427 | } | |
| 1432 | 1428 | return nil | |
| 1433 | 1429 | }) | |
| 1434 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var59), templ_7745c5c3_Buffer) | |
| 1430 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var57), templ_7745c5c3_Buffer) | |
| 1435 | 1431 | if templ_7745c5c3_Err != nil { | |
| 1436 | 1432 | return templ_7745c5c3_Err | |
| 1437 | 1433 | } | |
| @@ -44,65 +44,44 @@ func Home(l Layout, p HomePage) templ.Component { | |||||
| 44 | }() | 44 | }() | ||
| 45 | } | 45 | } | ||
| 46 | ctx = templ.InitializeContext(ctx) | 46 | ctx = templ.InitializeContext(ctx) | ||
| 47 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"filter\"><label for=\"home-filter\" class=\"sr\">filter</label> <input id=\"home-filter\" type=\"search\" data-filter=\"#repo-rows > tr\" placeholder=\"Filter repositories…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></div><table class=\"list home\" aria-label=\"Repositories\"><thead><tr><th class=\"cur\"></th>") | 47 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<h1 class=\"sr\">Repositories</h1><div class=\"home\"><section class=\"home-repos\" aria-label=\"Repositories\"><div class=\"home-bar\"><div class=\"filter\"><label for=\"home-filter\" class=\"sr\">filter</label> <input id=\"home-filter\" type=\"search\" data-filter=\"#repo-rows > li\" placeholder=\"Filter repositories…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></div><nav class=\"sort\" aria-label=\"Sort repositories\"><span class=\"mute\">sort</span> ") |
| 48 | if templ_7745c5c3_Err != nil { | 48 | if templ_7745c5c3_Err != nil { | ||
| 49 | return templ_7745c5c3_Err | 49 | return templ_7745c5c3_Err | ||
| 50 | } | 50 | } | ||
| 51 | - | for _, c := range p.Cols { | 51 | + | for _, s := range p.Sorts { |
| 52 | - | var templ_7745c5c3_Var3 = []any{c.Class} | 52 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<a href=\"") |
| 53 | - | templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var3...) | |||
| 54 | if templ_7745c5c3_Err != nil { | 53 | if templ_7745c5c3_Err != nil { | ||
| 55 | return templ_7745c5c3_Err | 54 | return templ_7745c5c3_Err | ||
| 56 | } | 55 | } | ||
| 57 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<th class=\"") | 56 | + | var templ_7745c5c3_Var3 templ.SafeURL |
| 57 | + | templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(s.Href)) | |||
| 58 | if templ_7745c5c3_Err != nil { | 58 | if templ_7745c5c3_Err != nil { | ||
| 59 | - | return templ_7745c5c3_Err | 59 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 27, Col: 36} |
| 60 | - | } | |||
| 61 | - | var templ_7745c5c3_Var4 string | |||
| 62 | - | templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var3).String()) | |||
| 63 | - | if templ_7745c5c3_Err != nil { | |||
| 64 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 1, Col: 0} | |||
| 65 | - | } | |||
| 66 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var4) | |||
| 67 | - | if templ_7745c5c3_Err != nil { | |||
| 68 | - | return templ_7745c5c3_Err | |||
| 69 | - | } | |||
| 70 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\" aria-sort=\"") | |||
| 71 | - | if templ_7745c5c3_Err != nil { | |||
| 72 | - | return templ_7745c5c3_Err | |||
| 73 | } | 60 | } | ||
| 74 | - | var templ_7745c5c3_Var5 string | 61 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) |
| 75 | - | templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.ResolveAttributeValue(c.Dir) | |||
| 76 | - | if templ_7745c5c3_Err != nil { | |||
| 77 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 24, Col: 45} | |||
| 78 | - | } | |||
| 79 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var5) | |||
| 80 | if templ_7745c5c3_Err != nil { | 62 | if templ_7745c5c3_Err != nil { | ||
| 81 | return templ_7745c5c3_Err | 63 | return templ_7745c5c3_Err | ||
| 82 | } | 64 | } | ||
| 83 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "\"><a href=\"") | 65 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\"") |
| 84 | if templ_7745c5c3_Err != nil { | 66 | if templ_7745c5c3_Err != nil { | ||
| 85 | return templ_7745c5c3_Err | 67 | return templ_7745c5c3_Err | ||
| 86 | } | 68 | } | ||
| 87 | - | var templ_7745c5c3_Var6 templ.SafeURL | 69 | + | if s.Mark != "" { |
| 88 | - | templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(c.Href)) | 70 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, " aria-current=\"true\"") |
| 89 | - | if templ_7745c5c3_Err != nil { | 71 | + | if templ_7745c5c3_Err != nil { |
| 90 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 25, Col: 38} | 72 | + | return templ_7745c5c3_Err |
| 91 | - | } | 73 | + | } |
| 92 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) | |||
| 93 | - | if templ_7745c5c3_Err != nil { | |||
| 94 | - | return templ_7745c5c3_Err | |||
| 95 | } | 74 | } | ||
| 96 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "\">") | 75 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, ">") |
| 97 | if templ_7745c5c3_Err != nil { | 76 | if templ_7745c5c3_Err != nil { | ||
| 98 | return templ_7745c5c3_Err | 77 | return templ_7745c5c3_Err | ||
| 99 | } | 78 | } | ||
| 100 | - | var templ_7745c5c3_Var7 string | 79 | + | var templ_7745c5c3_Var4 string |
| 101 | - | templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(c.Label) | 80 | + | templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(s.Label) |
| 102 | if templ_7745c5c3_Err != nil { | 81 | if templ_7745c5c3_Err != nil { | ||
| 103 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 26, Col: 17} | 82 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 32, Col: 17} |
| 104 | } | 83 | } | ||
| 105 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) | 84 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) |
| 106 | if templ_7745c5c3_Err != nil { | 85 | if templ_7745c5c3_Err != nil { | ||
| 107 | return templ_7745c5c3_Err | 86 | return templ_7745c5c3_Err | ||
| 108 | } | 87 | } | ||
| @@ -110,31 +89,44 @@ func Home(l Layout, p HomePage) templ.Component { | |||||
| 110 | if templ_7745c5c3_Err != nil { | 89 | if templ_7745c5c3_Err != nil { | ||
| 111 | return templ_7745c5c3_Err | 90 | return templ_7745c5c3_Err | ||
| 112 | } | 91 | } | ||
| 113 | - | if c.Mark != "" { | 92 | + | if s.Mark != "" { |
| 114 | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<span aria-hidden=\"true\">") | 93 | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<span aria-hidden=\"true\">") | ||
| 115 | if templ_7745c5c3_Err != nil { | 94 | if templ_7745c5c3_Err != nil { | ||
| 116 | return templ_7745c5c3_Err | 95 | return templ_7745c5c3_Err | ||
| 117 | } | 96 | } | ||
| 118 | - | var templ_7745c5c3_Var8 string | 97 | + | var templ_7745c5c3_Var5 string |
| 119 | - | templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(c.Mark) | 98 | + | templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(s.Mark) |
| 120 | if templ_7745c5c3_Err != nil { | 99 | if templ_7745c5c3_Err != nil { | ||
| 121 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 28, Col: 42} | 100 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 34, Col: 42} |
| 122 | } | 101 | } | ||
| 123 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) | 102 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) |
| 124 | if templ_7745c5c3_Err != nil { | 103 | if templ_7745c5c3_Err != nil { | ||
| 125 | return templ_7745c5c3_Err | 104 | return templ_7745c5c3_Err | ||
| 126 | } | 105 | } | ||
| 127 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</span>") | 106 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</span> <span class=\"sr\">") |
| 107 | + | if templ_7745c5c3_Err != nil { | |||
| 108 | + | return templ_7745c5c3_Err | |||
| 109 | + | } | |||
| 110 | + | var templ_7745c5c3_Var6 string | |||
| 111 | + | templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(", " + s.State) | |||
| 112 | + | if templ_7745c5c3_Err != nil { | |||
| 113 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 35, Col: 42} | |||
| 114 | + | } | |||
| 115 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) | |||
| 116 | + | if templ_7745c5c3_Err != nil { | |||
| 117 | + | return templ_7745c5c3_Err | |||
| 118 | + | } | |||
| 119 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</span>") | |||
| 128 | if templ_7745c5c3_Err != nil { | 120 | if templ_7745c5c3_Err != nil { | ||
| 129 | return templ_7745c5c3_Err | 121 | return templ_7745c5c3_Err | ||
| 130 | } | 122 | } | ||
| 131 | } | 123 | } | ||
| 132 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</a></th>") | 124 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</a>") |
| 133 | if templ_7745c5c3_Err != nil { | 125 | if templ_7745c5c3_Err != nil { | ||
| 134 | return templ_7745c5c3_Err | 126 | return templ_7745c5c3_Err | ||
| 135 | } | 127 | } | ||
| 136 | } | 128 | } | ||
| 137 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</tr></thead> <tbody id=\"repo-rows\" data-rows>") | 129 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</nav></div><ul class=\"repos\" id=\"repo-rows\" data-rows>") |
| 138 | if templ_7745c5c3_Err != nil { | 130 | if templ_7745c5c3_Err != nil { | ||
| 139 | return templ_7745c5c3_Err | 131 | return templ_7745c5c3_Err | ||
| 140 | } | 132 | } | ||
| @@ -144,16 +136,20 @@ func Home(l Layout, p HomePage) templ.Component { | |||||
| 144 | return templ_7745c5c3_Err | 136 | return templ_7745c5c3_Err | ||
| 145 | } | 137 | } | ||
| 146 | } | 138 | } | ||
| 147 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "</tbody></table>") | 139 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</ul>") |
| 148 | if templ_7745c5c3_Err != nil { | 140 | if templ_7745c5c3_Err != nil { | ||
| 149 | return templ_7745c5c3_Err | 141 | return templ_7745c5c3_Err | ||
| 150 | } | 142 | } | ||
| 151 | if len(p.Rows) == 0 { | 143 | if len(p.Rows) == 0 { | ||
| 152 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "<p class=\"lede dim\">no repositories yet.</p>") | 144 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<p class=\"lede dim\">no repositories yet.</p>") |
| 153 | if templ_7745c5c3_Err != nil { | 145 | if templ_7745c5c3_Err != nil { | ||
| 154 | return templ_7745c5c3_Err | 146 | return templ_7745c5c3_Err | ||
| 155 | } | 147 | } | ||
| 156 | } | 148 | } | ||
| 149 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</section></div>") | |||
| 150 | + | if templ_7745c5c3_Err != nil { | |||
| 151 | + | return templ_7745c5c3_Err | |||
| 152 | + | } | |||
| 157 | return nil | 153 | return nil | ||
| 158 | }) | 154 | }) | ||
| 159 | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) | 155 | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer) | ||
| @@ -182,12 +178,12 @@ func Summary(l Layout, p SummaryPage) templ.Component { | |||||
| 182 | }() | 178 | }() | ||
| 183 | } | 179 | } | ||
| 184 | ctx = templ.InitializeContext(ctx) | 180 | ctx = templ.InitializeContext(ctx) | ||
| 185 | - | templ_7745c5c3_Var9 := templ.GetChildren(ctx) | 181 | + | templ_7745c5c3_Var7 := templ.GetChildren(ctx) |
| 186 | - | if templ_7745c5c3_Var9 == nil { | 182 | + | if templ_7745c5c3_Var7 == nil { |
| 187 | - | templ_7745c5c3_Var9 = templ.NopComponent | 183 | + | templ_7745c5c3_Var7 = templ.NopComponent |
| 188 | } | 184 | } | ||
| 189 | ctx = templ.ClearChildren(ctx) | 185 | ctx = templ.ClearChildren(ctx) | ||
| 190 | - | templ_7745c5c3_Var10 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 186 | + | templ_7745c5c3_Var8 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 191 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 187 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 192 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 188 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 193 | if !templ_7745c5c3_IsBuffer { | 189 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -207,7 +203,7 @@ func Summary(l Layout, p SummaryPage) templ.Component { | |||||
| 207 | } | 203 | } | ||
| 208 | return nil | 204 | return nil | ||
| 209 | }) | 205 | }) | ||
| 210 | - | templ_7745c5c3_Err = Shell(l, summaryRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var10), templ_7745c5c3_Buffer) | 206 | + | templ_7745c5c3_Err = Shell(l, summaryRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var8), templ_7745c5c3_Buffer) |
| 211 | if templ_7745c5c3_Err != nil { | 207 | if templ_7745c5c3_Err != nil { | ||
| 212 | return templ_7745c5c3_Err | 208 | return templ_7745c5c3_Err | ||
| 213 | } | 209 | } | ||
| @@ -234,132 +230,132 @@ func latestTagFact(t LatestTag) templ.Component { | |||||
| 234 | }() | 230 | }() | ||
| 235 | } | 231 | } | ||
| 236 | ctx = templ.InitializeContext(ctx) | 232 | ctx = templ.InitializeContext(ctx) | ||
| 237 | - | templ_7745c5c3_Var11 := templ.GetChildren(ctx) | 233 | + | templ_7745c5c3_Var9 := templ.GetChildren(ctx) |
| 238 | - | if templ_7745c5c3_Var11 == nil { | 234 | + | if templ_7745c5c3_Var9 == nil { |
| 239 | - | templ_7745c5c3_Var11 = templ.NopComponent | 235 | + | templ_7745c5c3_Var9 = templ.NopComponent |
| 240 | } | 236 | } | ||
| 241 | ctx = templ.ClearChildren(ctx) | 237 | ctx = templ.ClearChildren(ctx) | ||
| 242 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<dt>latest tag</dt><dd class=\"latest-tag\">") | 238 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "<dt>latest tag</dt><dd class=\"latest-tag\">") |
| 243 | if templ_7745c5c3_Err != nil { | 239 | if templ_7745c5c3_Err != nil { | ||
| 244 | return templ_7745c5c3_Err | 240 | return templ_7745c5c3_Err | ||
| 245 | } | 241 | } | ||
| 246 | if t.Name != "" { | 242 | if t.Name != "" { | ||
| 247 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<a class=\"tag-name\" href=\"") | 243 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<a class=\"tag-name\" href=\"") |
| 248 | if templ_7745c5c3_Err != nil { | 244 | if templ_7745c5c3_Err != nil { | ||
| 249 | return templ_7745c5c3_Err | 245 | return templ_7745c5c3_Err | ||
| 250 | } | 246 | } | ||
| 251 | - | var templ_7745c5c3_Var12 templ.SafeURL | 247 | + | var templ_7745c5c3_Var10 templ.SafeURL |
| 252 | - | templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.Href)) | 248 | + | templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.Href)) |
| 253 | if templ_7745c5c3_Err != nil { | 249 | if templ_7745c5c3_Err != nil { | ||
| 254 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 64, Col: 51} | 250 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 71, Col: 51} |
| 255 | } | 251 | } | ||
| 256 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) | 252 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) |
| 257 | if templ_7745c5c3_Err != nil { | 253 | if templ_7745c5c3_Err != nil { | ||
| 258 | return templ_7745c5c3_Err | 254 | return templ_7745c5c3_Err | ||
| 259 | } | 255 | } | ||
| 260 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" title=\"") | 256 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "\" title=\"") |
| 261 | if templ_7745c5c3_Err != nil { | 257 | if templ_7745c5c3_Err != nil { | ||
| 262 | return templ_7745c5c3_Err | 258 | return templ_7745c5c3_Err | ||
| 263 | } | 259 | } | ||
| 264 | - | var templ_7745c5c3_Var13 string | 260 | + | var templ_7745c5c3_Var11 string |
| 265 | - | templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.Subject) | 261 | + | templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.Subject) |
| 266 | if templ_7745c5c3_Err != nil { | 262 | if templ_7745c5c3_Err != nil { | ||
| 267 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 64, Col: 71} | 263 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 71, Col: 71} |
| 268 | } | 264 | } | ||
| 269 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13) | 265 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var11) |
| 270 | if templ_7745c5c3_Err != nil { | 266 | if templ_7745c5c3_Err != nil { | ||
| 271 | return templ_7745c5c3_Err | 267 | return templ_7745c5c3_Err | ||
| 272 | } | 268 | } | ||
| 273 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\"><span class=\"ico i-tag\" aria-hidden=\"true\"></span>") | 269 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "\"><span class=\"ico i-tag\" aria-hidden=\"true\"></span>") |
| 274 | if templ_7745c5c3_Err != nil { | 270 | if templ_7745c5c3_Err != nil { | ||
| 275 | return templ_7745c5c3_Err | 271 | return templ_7745c5c3_Err | ||
| 276 | } | 272 | } | ||
| 277 | - | var templ_7745c5c3_Var14 string | 273 | + | var templ_7745c5c3_Var12 string |
| 278 | - | templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(t.Name) | 274 | + | templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(t.Name) |
| 279 | if templ_7745c5c3_Err != nil { | 275 | if templ_7745c5c3_Err != nil { | ||
| 280 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 64, Col: 132} | 276 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 71, Col: 132} |
| 281 | } | 277 | } | ||
| 282 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14)) | 278 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) |
| 283 | if templ_7745c5c3_Err != nil { | 279 | if templ_7745c5c3_Err != nil { | ||
| 284 | return templ_7745c5c3_Err | 280 | return templ_7745c5c3_Err | ||
| 285 | } | 281 | } | ||
| 286 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "</a> ") | 282 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</a> ") |
| 287 | if templ_7745c5c3_Err != nil { | 283 | if templ_7745c5c3_Err != nil { | ||
| 288 | return templ_7745c5c3_Err | 284 | return templ_7745c5c3_Err | ||
| 289 | } | 285 | } | ||
| 290 | if t.WhenAt != "" { | 286 | if t.WhenAt != "" { | ||
| 291 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "<time class=\"dim\" datetime=\"") | 287 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<time class=\"dim\" datetime=\"") |
| 292 | if templ_7745c5c3_Err != nil { | 288 | if templ_7745c5c3_Err != nil { | ||
| 293 | return templ_7745c5c3_Err | 289 | return templ_7745c5c3_Err | ||
| 294 | } | 290 | } | ||
| 295 | - | var templ_7745c5c3_Var15 string | 291 | + | var templ_7745c5c3_Var13 string |
| 296 | - | templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt) | 292 | + | templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt) |
| 297 | if templ_7745c5c3_Err != nil { | 293 | if templ_7745c5c3_Err != nil { | ||
| 298 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 66, Col: 41} | 294 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 73, Col: 41} |
| 299 | } | 295 | } | ||
| 300 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var15) | 296 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13) |
| 301 | if templ_7745c5c3_Err != nil { | 297 | if templ_7745c5c3_Err != nil { | ||
| 302 | return templ_7745c5c3_Err | 298 | return templ_7745c5c3_Err | ||
| 303 | } | 299 | } | ||
| 304 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "\" title=\"") | 300 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "\" title=\"") |
| 305 | if templ_7745c5c3_Err != nil { | 301 | if templ_7745c5c3_Err != nil { | ||
| 306 | return templ_7745c5c3_Err | 302 | return templ_7745c5c3_Err | ||
| 307 | } | 303 | } | ||
| 308 | - | var templ_7745c5c3_Var16 string | 304 | + | var templ_7745c5c3_Var14 string |
| 309 | - | templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt) | 305 | + | templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.ResolveAttributeValue(t.WhenAt) |
| 310 | if templ_7745c5c3_Err != nil { | 306 | if templ_7745c5c3_Err != nil { | ||
| 311 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 66, Col: 60} | 307 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 73, Col: 60} |
| 312 | } | 308 | } | ||
| 313 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var16) | 309 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14) |
| 314 | if templ_7745c5c3_Err != nil { | 310 | if templ_7745c5c3_Err != nil { | ||
| 315 | return templ_7745c5c3_Err | 311 | return templ_7745c5c3_Err | ||
| 316 | } | 312 | } | ||
| 317 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "\">") | 313 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\">") |
| 318 | if templ_7745c5c3_Err != nil { | 314 | if templ_7745c5c3_Err != nil { | ||
| 319 | return templ_7745c5c3_Err | 315 | return templ_7745c5c3_Err | ||
| 320 | } | 316 | } | ||
| 321 | - | var templ_7745c5c3_Var17 string | 317 | + | var templ_7745c5c3_Var15 string |
| 322 | - | templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(t.When) | 318 | + | templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(t.When) |
| 323 | if templ_7745c5c3_Err != nil { | 319 | if templ_7745c5c3_Err != nil { | ||
| 324 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 66, Col: 71} | 320 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 73, Col: 71} |
| 325 | } | 321 | } | ||
| 326 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) | 322 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15)) |
| 327 | if templ_7745c5c3_Err != nil { | 323 | if templ_7745c5c3_Err != nil { | ||
| 328 | return templ_7745c5c3_Err | 324 | return templ_7745c5c3_Err | ||
| 329 | } | 325 | } | ||
| 330 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</time> ") | 326 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</time> ") |
| 331 | if templ_7745c5c3_Err != nil { | 327 | if templ_7745c5c3_Err != nil { | ||
| 332 | return templ_7745c5c3_Err | 328 | return templ_7745c5c3_Err | ||
| 333 | } | 329 | } | ||
| 334 | } | 330 | } | ||
| 335 | } | 331 | } | ||
| 336 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<a class=\"all-tags\" href=\"") | 332 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<a class=\"all-tags\" href=\"") |
| 337 | if templ_7745c5c3_Err != nil { | 333 | if templ_7745c5c3_Err != nil { | ||
| 338 | return templ_7745c5c3_Err | 334 | return templ_7745c5c3_Err | ||
| 339 | } | 335 | } | ||
| 340 | - | var templ_7745c5c3_Var18 templ.SafeURL | 336 | + | var templ_7745c5c3_Var16 templ.SafeURL |
| 341 | - | templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.RefsHref)) | 337 | + | templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(t.RefsHref)) |
| 342 | if templ_7745c5c3_Err != nil { | 338 | if templ_7745c5c3_Err != nil { | ||
| 343 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 69, Col: 54} | 339 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 76, Col: 54} |
| 344 | } | 340 | } | ||
| 345 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18)) | 341 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16)) |
| 346 | if templ_7745c5c3_Err != nil { | 342 | if templ_7745c5c3_Err != nil { | ||
| 347 | return templ_7745c5c3_Err | 343 | return templ_7745c5c3_Err | ||
| 348 | } | 344 | } | ||
| 349 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\">") | 345 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "\">") |
| 350 | if templ_7745c5c3_Err != nil { | 346 | if templ_7745c5c3_Err != nil { | ||
| 351 | return templ_7745c5c3_Err | 347 | return templ_7745c5c3_Err | ||
| 352 | } | 348 | } | ||
| 353 | - | var templ_7745c5c3_Var19 string | 349 | + | var templ_7745c5c3_Var17 string |
| 354 | - | templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(plural(t.Count, "tag", "tags")) | 350 | + | templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(plural(t.Count, "tag", "tags")) |
| 355 | if templ_7745c5c3_Err != nil { | 351 | if templ_7745c5c3_Err != nil { | ||
| 356 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 69, Col: 89} | 352 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 76, Col: 89} |
| 357 | } | 353 | } | ||
| 358 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) | 354 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17)) |
| 359 | if templ_7745c5c3_Err != nil { | 355 | if templ_7745c5c3_Err != nil { | ||
| 360 | return templ_7745c5c3_Err | 356 | return templ_7745c5c3_Err | ||
| 361 | } | 357 | } | ||
| 362 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</a></dd>") | 358 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</a></dd>") |
| 363 | if templ_7745c5c3_Err != nil { | 359 | if templ_7745c5c3_Err != nil { | ||
| 364 | return templ_7745c5c3_Err | 360 | return templ_7745c5c3_Err | ||
| 365 | } | 361 | } | ||
| @@ -383,12 +379,12 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 383 | }() | 379 | }() | ||
| 384 | } | 380 | } | ||
| 385 | ctx = templ.InitializeContext(ctx) | 381 | ctx = templ.InitializeContext(ctx) | ||
| 386 | - | templ_7745c5c3_Var20 := templ.GetChildren(ctx) | 382 | + | templ_7745c5c3_Var18 := templ.GetChildren(ctx) |
| 387 | - | if templ_7745c5c3_Var20 == nil { | 383 | + | if templ_7745c5c3_Var18 == nil { |
| 388 | - | templ_7745c5c3_Var20 = templ.NopComponent | 384 | + | templ_7745c5c3_Var18 = templ.NopComponent |
| 389 | } | 385 | } | ||
| 390 | ctx = templ.ClearChildren(ctx) | 386 | ctx = templ.ClearChildren(ctx) | ||
| 391 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>") | 387 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>") |
| 392 | if templ_7745c5c3_Err != nil { | 388 | if templ_7745c5c3_Err != nil { | ||
| 393 | return templ_7745c5c3_Err | 389 | return templ_7745c5c3_Err | ||
| 394 | } | 390 | } | ||
| @@ -396,25 +392,25 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 396 | if templ_7745c5c3_Err != nil { | 392 | if templ_7745c5c3_Err != nil { | ||
| 397 | return templ_7745c5c3_Err | 393 | return templ_7745c5c3_Err | ||
| 398 | } | 394 | } | ||
| 399 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">") | 395 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">") |
| 400 | if templ_7745c5c3_Err != nil { | 396 | if templ_7745c5c3_Err != nil { | ||
| 401 | return templ_7745c5c3_Err | 397 | return templ_7745c5c3_Err | ||
| 402 | } | 398 | } | ||
| 403 | for _, f := range p.Facts { | 399 | for _, f := range p.Facts { | ||
| 404 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<dt>") | 400 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "<dt>") |
| 405 | if templ_7745c5c3_Err != nil { | 401 | if templ_7745c5c3_Err != nil { | ||
| 406 | return templ_7745c5c3_Err | 402 | return templ_7745c5c3_Err | ||
| 407 | } | 403 | } | ||
| 408 | - | var templ_7745c5c3_Var21 string | 404 | + | var templ_7745c5c3_Var19 string |
| 409 | - | templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key) | 405 | + | templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key) |
| 410 | if templ_7745c5c3_Err != nil { | 406 | if templ_7745c5c3_Err != nil { | ||
| 411 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 80, Col: 15} | 407 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 87, Col: 15} |
| 412 | } | 408 | } | ||
| 413 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21)) | 409 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19)) |
| 414 | if templ_7745c5c3_Err != nil { | 410 | if templ_7745c5c3_Err != nil { | ||
| 415 | return templ_7745c5c3_Err | 411 | return templ_7745c5c3_Err | ||
| 416 | } | 412 | } | ||
| 417 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</dt>") | 413 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</dt>") |
| 418 | if templ_7745c5c3_Err != nil { | 414 | if templ_7745c5c3_Err != nil { | ||
| 419 | return templ_7745c5c3_Err | 415 | return templ_7745c5c3_Err | ||
| 420 | } | 416 | } | ||
| @@ -429,25 +425,25 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 429 | return templ_7745c5c3_Err | 425 | return templ_7745c5c3_Err | ||
| 430 | } | 426 | } | ||
| 431 | } | 427 | } | ||
| 432 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "</dl></section>") | 428 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</dl></section>") |
| 433 | if templ_7745c5c3_Err != nil { | 429 | if templ_7745c5c3_Err != nil { | ||
| 434 | return templ_7745c5c3_Err | 430 | return templ_7745c5c3_Err | ||
| 435 | } | 431 | } | ||
| 436 | if len(p.Recent) > 0 { | 432 | if len(p.Recent) > 0 { | ||
| 437 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"") | 433 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"") |
| 438 | if templ_7745c5c3_Err != nil { | 434 | if templ_7745c5c3_Err != nil { | ||
| 439 | return templ_7745c5c3_Err | 435 | return templ_7745c5c3_Err | ||
| 440 | } | 436 | } | ||
| 441 | - | var templ_7745c5c3_Var22 templ.SafeURL | 437 | + | var templ_7745c5c3_Var20 templ.SafeURL |
| 442 | - | templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref)) | 438 | + | templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref)) |
| 443 | if templ_7745c5c3_Err != nil { | 439 | if templ_7745c5c3_Err != nil { | ||
| 444 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 89, Col: 105} | 440 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 96, Col: 105} |
| 445 | } | 441 | } | ||
| 446 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22)) | 442 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20)) |
| 447 | if templ_7745c5c3_Err != nil { | 443 | if templ_7745c5c3_Err != nil { | ||
| 448 | return templ_7745c5c3_Err | 444 | return templ_7745c5c3_Err | ||
| 449 | } | 445 | } | ||
| 450 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "\">View all</a></h2>") | 446 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "\">View all</a></h2>") |
| 451 | if templ_7745c5c3_Err != nil { | 447 | if templ_7745c5c3_Err != nil { | ||
| 452 | return templ_7745c5c3_Err | 448 | return templ_7745c5c3_Err | ||
| 453 | } | 449 | } | ||
| @@ -455,7 +451,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 455 | if templ_7745c5c3_Err != nil { | 451 | if templ_7745c5c3_Err != nil { | ||
| 456 | return templ_7745c5c3_Err | 452 | return templ_7745c5c3_Err | ||
| 457 | } | 453 | } | ||
| 458 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</section>") | 454 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</section>") |
| 459 | if templ_7745c5c3_Err != nil { | 455 | if templ_7745c5c3_Err != nil { | ||
| 460 | return templ_7745c5c3_Err | 456 | return templ_7745c5c3_Err | ||
| 461 | } | 457 | } | ||
| @@ -467,7 +463,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 467 | } | 463 | } | ||
| 468 | } | 464 | } | ||
| 469 | if len(p.Outline) > 0 && p.Readme != nil { | 465 | if len(p.Outline) > 0 && p.Readme != nil { | ||
| 470 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>") | 466 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>") |
| 471 | if templ_7745c5c3_Err != nil { | 467 | if templ_7745c5c3_Err != nil { | ||
| 472 | return templ_7745c5c3_Err | 468 | return templ_7745c5c3_Err | ||
| 473 | } | 469 | } | ||
| @@ -475,7 +471,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 475 | if templ_7745c5c3_Err != nil { | 471 | if templ_7745c5c3_Err != nil { | ||
| 476 | return templ_7745c5c3_Err | 472 | return templ_7745c5c3_Err | ||
| 477 | } | 473 | } | ||
| 478 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</section>") | 474 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</section>") |
| 479 | if templ_7745c5c3_Err != nil { | 475 | if templ_7745c5c3_Err != nil { | ||
| 480 | return templ_7745c5c3_Err | 476 | return templ_7745c5c3_Err | ||
| 481 | } | 477 | } | ||
| @@ -501,12 +497,12 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||||
| 501 | }() | 497 | }() | ||
| 502 | } | 498 | } | ||
| 503 | ctx = templ.InitializeContext(ctx) | 499 | ctx = templ.InitializeContext(ctx) | ||
| 504 | - | templ_7745c5c3_Var23 := templ.GetChildren(ctx) | 500 | + | templ_7745c5c3_Var21 := templ.GetChildren(ctx) |
| 505 | - | if templ_7745c5c3_Var23 == nil { | 501 | + | if templ_7745c5c3_Var21 == nil { |
| 506 | - | templ_7745c5c3_Var23 = templ.NopComponent | 502 | + | templ_7745c5c3_Var21 = templ.NopComponent |
| 507 | } | 503 | } | ||
| 508 | ctx = templ.ClearChildren(ctx) | 504 | ctx = templ.ClearChildren(ctx) | ||
| 509 | - | templ_7745c5c3_Var24 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 505 | + | templ_7745c5c3_Var22 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 510 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 506 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 511 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 507 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 512 | if !templ_7745c5c3_IsBuffer { | 508 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -518,7 +514,7 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||||
| 518 | }() | 514 | }() | ||
| 519 | } | 515 | } | ||
| 520 | ctx = templ.InitializeContext(ctx) | 516 | ctx = templ.InitializeContext(ctx) | ||
| 521 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter=\"#ref-rows > tr\" placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></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>") | 517 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<div class=\"filter\"><label for=\"ref-filter\" class=\"sr\">filter</label> <input id=\"ref-filter\" type=\"search\" data-filter=\"#ref-rows > tr\" placeholder=\"Filter branches and tags…\" autocomplete=\"off\" hx-on:input=\"ermite.filter(this)\"></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>") |
| 522 | if templ_7745c5c3_Err != nil { | 518 | if templ_7745c5c3_Err != nil { | ||
| 523 | return templ_7745c5c3_Err | 519 | return templ_7745c5c3_Err | ||
| 524 | } | 520 | } | ||
| @@ -526,32 +522,32 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||||
| 526 | if templ_7745c5c3_Err != nil { | 522 | if templ_7745c5c3_Err != nil { | ||
| 527 | return templ_7745c5c3_Err | 523 | return templ_7745c5c3_Err | ||
| 528 | } | 524 | } | ||
| 529 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</table>") | 525 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</table>") |
| 530 | if templ_7745c5c3_Err != nil { | 526 | if templ_7745c5c3_Err != nil { | ||
| 531 | return templ_7745c5c3_Err | 527 | return templ_7745c5c3_Err | ||
| 532 | } | 528 | } | ||
| 533 | if p.Note != "" { | 529 | if p.Note != "" { | ||
| 534 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<p class=\"note\">") | 530 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<p class=\"note\">") |
| 535 | if templ_7745c5c3_Err != nil { | 531 | if templ_7745c5c3_Err != nil { | ||
| 536 | return templ_7745c5c3_Err | 532 | return templ_7745c5c3_Err | ||
| 537 | } | 533 | } | ||
| 538 | - | var templ_7745c5c3_Var25 string | 534 | + | var templ_7745c5c3_Var23 string |
| 539 | - | templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note) | 535 | + | templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note) |
| 540 | if templ_7745c5c3_Err != nil { | 536 | if templ_7745c5c3_Err != nil { | ||
| 541 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 122, Col: 27} | 537 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 129, Col: 27} |
| 542 | } | 538 | } | ||
| 543 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) | 539 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) |
| 544 | if templ_7745c5c3_Err != nil { | 540 | if templ_7745c5c3_Err != nil { | ||
| 545 | return templ_7745c5c3_Err | 541 | return templ_7745c5c3_Err | ||
| 546 | } | 542 | } | ||
| 547 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</p>") | 543 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</p>") |
| 548 | if templ_7745c5c3_Err != nil { | 544 | if templ_7745c5c3_Err != nil { | ||
| 549 | return templ_7745c5c3_Err | 545 | return templ_7745c5c3_Err | ||
| 550 | } | 546 | } | ||
| 551 | } | 547 | } | ||
| 552 | return nil | 548 | return nil | ||
| 553 | }) | 549 | }) | ||
| 554 | - | templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var24), templ_7745c5c3_Buffer) | 550 | + | templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var22), templ_7745c5c3_Buffer) |
| 555 | if templ_7745c5c3_Err != nil { | 551 | if templ_7745c5c3_Err != nil { | ||
| 556 | return templ_7745c5c3_Err | 552 | return templ_7745c5c3_Err | ||
| 557 | } | 553 | } | ||
| @@ -575,112 +571,112 @@ func refRow(kind string, r RefRow) templ.Component { | |||||
| 575 | }() | 571 | }() | ||
| 576 | } | 572 | } | ||
| 577 | ctx = templ.InitializeContext(ctx) | 573 | ctx = templ.InitializeContext(ctx) | ||
| 578 | - | templ_7745c5c3_Var26 := templ.GetChildren(ctx) | 574 | + | templ_7745c5c3_Var24 := templ.GetChildren(ctx) |
| 579 | - | if templ_7745c5c3_Var26 == nil { | 575 | + | if templ_7745c5c3_Var24 == nil { |
| 580 | - | templ_7745c5c3_Var26 = templ.NopComponent | 576 | + | templ_7745c5c3_Var24 = templ.NopComponent |
| 581 | } | 577 | } | ||
| 582 | ctx = templ.ClearChildren(ctx) | 578 | ctx = templ.ClearChildren(ctx) | ||
| 583 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<tr") | 579 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<tr") |
| 584 | if templ_7745c5c3_Err != nil { | 580 | if templ_7745c5c3_Err != nil { | ||
| 585 | return templ_7745c5c3_Err | 581 | return templ_7745c5c3_Err | ||
| 586 | } | 582 | } | ||
| 587 | if r.Cursor { | 583 | if r.Cursor { | ||
| 588 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, " data-cursor") | 584 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, " data-cursor") |
| 589 | if templ_7745c5c3_Err != nil { | 585 | if templ_7745c5c3_Err != nil { | ||
| 590 | return templ_7745c5c3_Err | 586 | return templ_7745c5c3_Err | ||
| 591 | } | 587 | } | ||
| 592 | } | 588 | } | ||
| 593 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">") | 589 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind mute\">") |
| 594 | if templ_7745c5c3_Err != nil { | 590 | if templ_7745c5c3_Err != nil { | ||
| 595 | return templ_7745c5c3_Err | 591 | return templ_7745c5c3_Err | ||
| 596 | } | 592 | } | ||
| 597 | - | var templ_7745c5c3_Var27 string | 593 | + | var templ_7745c5c3_Var25 string |
| 598 | - | templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(kind) | 594 | + | templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(kind) |
| 599 | if templ_7745c5c3_Err != nil { | 595 | if templ_7745c5c3_Err != nil { | ||
| 600 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 130, Col: 32} | 596 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 137, Col: 32} |
| 601 | } | 597 | } | ||
| 602 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) | 598 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) |
| 603 | if templ_7745c5c3_Err != nil { | 599 | if templ_7745c5c3_Err != nil { | ||
| 604 | return templ_7745c5c3_Err | 600 | return templ_7745c5c3_Err | ||
| 605 | } | 601 | } | ||
| 606 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</td><td class=\"c-name\"><a href=\"") | 602 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</td><td class=\"c-name\"><a href=\"") |
| 607 | if templ_7745c5c3_Err != nil { | 603 | if templ_7745c5c3_Err != nil { | ||
| 608 | return templ_7745c5c3_Err | 604 | return templ_7745c5c3_Err | ||
| 609 | } | 605 | } | ||
| 610 | - | var templ_7745c5c3_Var28 templ.SafeURL | 606 | + | var templ_7745c5c3_Var26 templ.SafeURL |
| 611 | - | templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href)) | 607 | + | templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href)) |
| 612 | if templ_7745c5c3_Err != nil { | 608 | if templ_7745c5c3_Err != nil { | ||
| 613 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 132, Col: 34} | 609 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 34} |
| 614 | } | 610 | } | ||
| 615 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28)) | 611 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) |
| 616 | if templ_7745c5c3_Err != nil { | 612 | if templ_7745c5c3_Err != nil { | ||
| 617 | return templ_7745c5c3_Err | 613 | return templ_7745c5c3_Err | ||
| 618 | } | 614 | } | ||
| 619 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\">") | 615 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "\">") |
| 620 | if templ_7745c5c3_Err != nil { | 616 | if templ_7745c5c3_Err != nil { | ||
| 621 | return templ_7745c5c3_Err | 617 | return templ_7745c5c3_Err | ||
| 622 | } | 618 | } | ||
| 623 | - | var templ_7745c5c3_Var29 string | 619 | + | var templ_7745c5c3_Var27 string |
| 624 | - | templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | 620 | + | templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) |
| 625 | if templ_7745c5c3_Err != nil { | 621 | if templ_7745c5c3_Err != nil { | ||
| 626 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 132, Col: 45} | 622 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 45} |
| 627 | } | 623 | } | ||
| 628 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29)) | 624 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) |
| 629 | if templ_7745c5c3_Err != nil { | 625 | if templ_7745c5c3_Err != nil { | ||
| 630 | return templ_7745c5c3_Err | 626 | return templ_7745c5c3_Err | ||
| 631 | } | 627 | } | ||
| 632 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</a> ") | 628 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</a> ") |
| 633 | if templ_7745c5c3_Err != nil { | 629 | if templ_7745c5c3_Err != nil { | ||
| 634 | return templ_7745c5c3_Err | 630 | return templ_7745c5c3_Err | ||
| 635 | } | 631 | } | ||
| 636 | if r.Default { | 632 | if r.Default { | ||
| 637 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<span class=\"pill\">default</span>") | 633 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<span class=\"pill\">default</span>") |
| 638 | if templ_7745c5c3_Err != nil { | 634 | if templ_7745c5c3_Err != nil { | ||
| 639 | return templ_7745c5c3_Err | 635 | return templ_7745c5c3_Err | ||
| 640 | } | 636 | } | ||
| 641 | } | 637 | } | ||
| 642 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</td><td class=\"c-sha\">") | 638 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</td><td class=\"c-sha\">") |
| 643 | if templ_7745c5c3_Err != nil { | 639 | if templ_7745c5c3_Err != nil { | ||
| 644 | return templ_7745c5c3_Err | 640 | return templ_7745c5c3_Err | ||
| 645 | } | 641 | } | ||
| 646 | if r.CHref != "" { | 642 | if r.CHref != "" { | ||
| 647 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<a href=\"") | 643 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<a href=\"") |
| 648 | if templ_7745c5c3_Err != nil { | 644 | if templ_7745c5c3_Err != nil { | ||
| 649 | return templ_7745c5c3_Err | 645 | return templ_7745c5c3_Err | ||
| 650 | } | 646 | } | ||
| 651 | - | var templ_7745c5c3_Var30 templ.SafeURL | 647 | + | var templ_7745c5c3_Var28 templ.SafeURL |
| 652 | - | templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref)) | 648 | + | templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref)) |
| 653 | if templ_7745c5c3_Err != nil { | 649 | if templ_7745c5c3_Err != nil { | ||
| 654 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 36} | 650 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 146, Col: 36} |
| 655 | } | 651 | } | ||
| 656 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) | 652 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28)) |
| 657 | if templ_7745c5c3_Err != nil { | 653 | if templ_7745c5c3_Err != nil { | ||
| 658 | return templ_7745c5c3_Err | 654 | return templ_7745c5c3_Err | ||
| 659 | } | 655 | } | ||
| 660 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "\">") | 656 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "\">") |
| 661 | if templ_7745c5c3_Err != nil { | 657 | if templ_7745c5c3_Err != nil { | ||
| 662 | return templ_7745c5c3_Err | 658 | return templ_7745c5c3_Err | ||
| 663 | } | 659 | } | ||
| 664 | - | var templ_7745c5c3_Var31 string | 660 | + | var templ_7745c5c3_Var29 string |
| 665 | - | templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | 661 | + | templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) |
| 666 | if templ_7745c5c3_Err != nil { | 662 | if templ_7745c5c3_Err != nil { | ||
| 667 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 139, Col: 48} | 663 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 146, Col: 48} |
| 668 | } | 664 | } | ||
| 669 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) | 665 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29)) |
| 670 | if templ_7745c5c3_Err != nil { | 666 | if templ_7745c5c3_Err != nil { | ||
| 671 | return templ_7745c5c3_Err | 667 | return templ_7745c5c3_Err | ||
| 672 | } | 668 | } | ||
| 673 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "</a>") | 669 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "</a>") |
| 674 | if templ_7745c5c3_Err != nil { | 670 | if templ_7745c5c3_Err != nil { | ||
| 675 | return templ_7745c5c3_Err | 671 | return templ_7745c5c3_Err | ||
| 676 | } | 672 | } | ||
| 677 | } else { | 673 | } else { | ||
| 678 | - | var templ_7745c5c3_Var32 string | 674 | + | var templ_7745c5c3_Var30 string |
| 679 | - | templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | 675 | + | templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) |
| 680 | if templ_7745c5c3_Err != nil { | 676 | if templ_7745c5c3_Err != nil { | ||
| 681 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 141, Col: 13} | 677 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 148, Col: 13} |
| 682 | } | 678 | } | ||
| 683 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) | 679 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) |
| 684 | if templ_7745c5c3_Err != nil { | 680 | if templ_7745c5c3_Err != nil { | ||
| 685 | return templ_7745c5c3_Err | 681 | return templ_7745c5c3_Err | ||
| 686 | } | 682 | } | ||
| @@ -689,69 +685,69 @@ func refRow(kind string, r RefRow) templ.Component { | |||||
| 689 | if templ_7745c5c3_Err != nil { | 685 | if templ_7745c5c3_Err != nil { | ||
| 690 | return templ_7745c5c3_Err | 686 | return templ_7745c5c3_Err | ||
| 691 | } | 687 | } | ||
| 692 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</td><td class=\"c-sub\">") | 688 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</td><td class=\"c-sub\">") |
| 693 | if templ_7745c5c3_Err != nil { | 689 | if templ_7745c5c3_Err != nil { | ||
| 694 | return templ_7745c5c3_Err | 690 | return templ_7745c5c3_Err | ||
| 695 | } | 691 | } | ||
| 696 | - | var templ_7745c5c3_Var33 string | 692 | + | var templ_7745c5c3_Var31 string |
| 697 | - | templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject) | 693 | + | templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject) |
| 698 | if templ_7745c5c3_Err != nil { | 694 | if templ_7745c5c3_Err != nil { | ||
| 699 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 145, Col: 31} | 695 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 152, Col: 31} |
| 700 | } | 696 | } | ||
| 701 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) | 697 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) |
| 702 | if templ_7745c5c3_Err != nil { | 698 | if templ_7745c5c3_Err != nil { | ||
| 703 | return templ_7745c5c3_Err | 699 | return templ_7745c5c3_Err | ||
| 704 | } | 700 | } | ||
| 705 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "</td><td class=\"c-when dim\">") | 701 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</td><td class=\"c-when dim\">") |
| 706 | if templ_7745c5c3_Err != nil { | 702 | if templ_7745c5c3_Err != nil { | ||
| 707 | return templ_7745c5c3_Err | 703 | return templ_7745c5c3_Err | ||
| 708 | } | 704 | } | ||
| 709 | if r.WhenAt != "" { | 705 | if r.WhenAt != "" { | ||
| 710 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "<time datetime=\"") | 706 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "<time datetime=\"") |
| 711 | if templ_7745c5c3_Err != nil { | 707 | if templ_7745c5c3_Err != nil { | ||
| 712 | return templ_7745c5c3_Err | 708 | return templ_7745c5c3_Err | ||
| 713 | } | 709 | } | ||
| 714 | - | var templ_7745c5c3_Var34 string | 710 | + | var templ_7745c5c3_Var32 string |
| 715 | - | templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | 711 | + | templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) |
| 716 | if templ_7745c5c3_Err != nil { | 712 | if templ_7745c5c3_Err != nil { | ||
| 717 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 148, Col: 29} | 713 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 155, Col: 29} |
| 718 | } | 714 | } | ||
| 719 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var34) | 715 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var32) |
| 720 | if templ_7745c5c3_Err != nil { | 716 | if templ_7745c5c3_Err != nil { | ||
| 721 | return templ_7745c5c3_Err | 717 | return templ_7745c5c3_Err | ||
| 722 | } | 718 | } | ||
| 723 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "\" title=\"") | 719 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\" title=\"") |
| 724 | if templ_7745c5c3_Err != nil { | 720 | if templ_7745c5c3_Err != nil { | ||
| 725 | return templ_7745c5c3_Err | 721 | return templ_7745c5c3_Err | ||
| 726 | } | 722 | } | ||
| 727 | - | var templ_7745c5c3_Var35 string | 723 | + | var templ_7745c5c3_Var33 string |
| 728 | - | templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | 724 | + | templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) |
| 729 | if templ_7745c5c3_Err != nil { | 725 | if templ_7745c5c3_Err != nil { | ||
| 730 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 148, Col: 48} | 726 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 155, Col: 48} |
| 731 | } | 727 | } | ||
| 732 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var35) | 728 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var33) |
| 733 | if templ_7745c5c3_Err != nil { | 729 | if templ_7745c5c3_Err != nil { | ||
| 734 | return templ_7745c5c3_Err | 730 | return templ_7745c5c3_Err | ||
| 735 | } | 731 | } | ||
| 736 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "\">") | 732 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "\">") |
| 737 | if templ_7745c5c3_Err != nil { | 733 | if templ_7745c5c3_Err != nil { | ||
| 738 | return templ_7745c5c3_Err | 734 | return templ_7745c5c3_Err | ||
| 739 | } | 735 | } | ||
| 740 | - | var templ_7745c5c3_Var36 string | 736 | + | var templ_7745c5c3_Var34 string |
| 741 | - | templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(r.When) | 737 | + | templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.When) |
| 742 | if templ_7745c5c3_Err != nil { | 738 | if templ_7745c5c3_Err != nil { | ||
| 743 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 148, Col: 59} | 739 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 155, Col: 59} |
| 744 | } | 740 | } | ||
| 745 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36)) | 741 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) |
| 746 | if templ_7745c5c3_Err != nil { | 742 | if templ_7745c5c3_Err != nil { | ||
| 747 | return templ_7745c5c3_Err | 743 | return templ_7745c5c3_Err | ||
| 748 | } | 744 | } | ||
| 749 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "</time>") | 745 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</time>") |
| 750 | if templ_7745c5c3_Err != nil { | 746 | if templ_7745c5c3_Err != nil { | ||
| 751 | return templ_7745c5c3_Err | 747 | return templ_7745c5c3_Err | ||
| 752 | } | 748 | } | ||
| 753 | } | 749 | } | ||
| 754 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</td></tr>") | 750 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</td></tr>") |
| 755 | if templ_7745c5c3_Err != nil { | 751 | if templ_7745c5c3_Err != nil { | ||
| 756 | return templ_7745c5c3_Err | 752 | return templ_7745c5c3_Err | ||
| 757 | } | 753 | } | ||
| @@ -775,12 +771,12 @@ func refsRail(p RefsPage) templ.Component { | |||||
| 775 | }() | 771 | }() | ||
| 776 | } | 772 | } | ||
| 777 | ctx = templ.InitializeContext(ctx) | 773 | ctx = templ.InitializeContext(ctx) | ||
| 778 | - | templ_7745c5c3_Var37 := templ.GetChildren(ctx) | 774 | + | templ_7745c5c3_Var35 := templ.GetChildren(ctx) |
| 779 | - | if templ_7745c5c3_Var37 == nil { | 775 | + | if templ_7745c5c3_Var35 == nil { |
| 780 | - | templ_7745c5c3_Var37 = templ.NopComponent | 776 | + | templ_7745c5c3_Var35 = templ.NopComponent |
| 781 | } | 777 | } | ||
| 782 | ctx = templ.ClearChildren(ctx) | 778 | ctx = templ.ClearChildren(ctx) | ||
| 783 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>") | 779 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>") |
| 784 | if templ_7745c5c3_Err != nil { | 780 | if templ_7745c5c3_Err != nil { | ||
| 785 | return templ_7745c5c3_Err | 781 | return templ_7745c5c3_Err | ||
| 786 | } | 782 | } | ||
| @@ -788,7 +784,7 @@ func refsRail(p RefsPage) templ.Component { | |||||
| 788 | if templ_7745c5c3_Err != nil { | 784 | if templ_7745c5c3_Err != nil { | ||
| 789 | return templ_7745c5c3_Err | 785 | return templ_7745c5c3_Err | ||
| 790 | } | 786 | } | ||
| 791 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</section>") | 787 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</section>") |
| 792 | if templ_7745c5c3_Err != nil { | 788 | if templ_7745c5c3_Err != nil { | ||
| 793 | return templ_7745c5c3_Err | 789 | return templ_7745c5c3_Err | ||
| 794 | } | 790 | } | ||
| @@ -813,12 +809,12 @@ func State(l Layout, p StatePage) templ.Component { | |||||
| 813 | }() | 809 | }() | ||
| 814 | } | 810 | } | ||
| 815 | ctx = templ.InitializeContext(ctx) | 811 | ctx = templ.InitializeContext(ctx) | ||
| 816 | - | templ_7745c5c3_Var38 := templ.GetChildren(ctx) | 812 | + | templ_7745c5c3_Var36 := templ.GetChildren(ctx) |
| 817 | - | if templ_7745c5c3_Var38 == nil { | 813 | + | if templ_7745c5c3_Var36 == nil { |
| 818 | - | templ_7745c5c3_Var38 = templ.NopComponent | 814 | + | templ_7745c5c3_Var36 = templ.NopComponent |
| 819 | } | 815 | } | ||
| 820 | ctx = templ.ClearChildren(ctx) | 816 | ctx = templ.ClearChildren(ctx) | ||
| 821 | - | templ_7745c5c3_Var39 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 817 | + | templ_7745c5c3_Var37 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 822 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 818 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 823 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 819 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 824 | if !templ_7745c5c3_IsBuffer { | 820 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -830,51 +826,51 @@ func State(l Layout, p StatePage) templ.Component { | |||||
| 830 | }() | 826 | }() | ||
| 831 | } | 827 | } | ||
| 832 | ctx = templ.InitializeContext(ctx) | 828 | ctx = templ.InitializeContext(ctx) | ||
| 833 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">") | 829 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">") |
| 834 | if templ_7745c5c3_Err != nil { | 830 | if templ_7745c5c3_Err != nil { | ||
| 835 | return templ_7745c5c3_Err | 831 | return templ_7745c5c3_Err | ||
| 836 | } | 832 | } | ||
| 837 | - | var templ_7745c5c3_Var40 string | 833 | + | var templ_7745c5c3_Var38 string |
| 838 | - | templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code) | 834 | + | templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code) |
| 839 | if templ_7745c5c3_Err != nil { | 835 | if templ_7745c5c3_Err != nil { | ||
| 840 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 165, Col: 30} | 836 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 172, Col: 30} |
| 841 | } | 837 | } | ||
| 842 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40)) | 838 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38)) |
| 843 | if templ_7745c5c3_Err != nil { | 839 | if templ_7745c5c3_Err != nil { | ||
| 844 | return templ_7745c5c3_Err | 840 | return templ_7745c5c3_Err | ||
| 845 | } | 841 | } | ||
| 846 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</p><h1 id=\"state-title\">") | 842 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</p><h1 id=\"state-title\">") |
| 847 | if templ_7745c5c3_Err != nil { | 843 | if templ_7745c5c3_Err != nil { | ||
| 848 | return templ_7745c5c3_Err | 844 | return templ_7745c5c3_Err | ||
| 849 | } | 845 | } | ||
| 850 | - | var templ_7745c5c3_Var41 string | 846 | + | var templ_7745c5c3_Var39 string |
| 851 | - | templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | 847 | + | templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) |
| 852 | if templ_7745c5c3_Err != nil { | 848 | if templ_7745c5c3_Err != nil { | ||
| 853 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 166, Col: 33} | 849 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 173, Col: 33} |
| 854 | } | 850 | } | ||
| 855 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41)) | 851 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39)) |
| 856 | if templ_7745c5c3_Err != nil { | 852 | if templ_7745c5c3_Err != nil { | ||
| 857 | return templ_7745c5c3_Err | 853 | return templ_7745c5c3_Err | ||
| 858 | } | 854 | } | ||
| 859 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</h1>") | 855 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</h1>") |
| 860 | if templ_7745c5c3_Err != nil { | 856 | if templ_7745c5c3_Err != nil { | ||
| 861 | return templ_7745c5c3_Err | 857 | return templ_7745c5c3_Err | ||
| 862 | } | 858 | } | ||
| 863 | for _, line := range p.Lines { | 859 | for _, line := range p.Lines { | ||
| 864 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "<p class=\"dim\">") | 860 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<p class=\"dim\">") |
| 865 | if templ_7745c5c3_Err != nil { | 861 | if templ_7745c5c3_Err != nil { | ||
| 866 | return templ_7745c5c3_Err | 862 | return templ_7745c5c3_Err | ||
| 867 | } | 863 | } | ||
| 868 | - | var templ_7745c5c3_Var42 string | 864 | + | var templ_7745c5c3_Var40 string |
| 869 | - | templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(line) | 865 | + | templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(line) |
| 870 | if templ_7745c5c3_Err != nil { | 866 | if templ_7745c5c3_Err != nil { | ||
| 871 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 168, Col: 25} | 867 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 175, Col: 25} |
| 872 | } | 868 | } | ||
| 873 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42)) | 869 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40)) |
| 874 | if templ_7745c5c3_Err != nil { | 870 | if templ_7745c5c3_Err != nil { | ||
| 875 | return templ_7745c5c3_Err | 871 | return templ_7745c5c3_Err | ||
| 876 | } | 872 | } | ||
| 877 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</p>") | 873 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "</p>") |
| 878 | if templ_7745c5c3_Err != nil { | 874 | if templ_7745c5c3_Err != nil { | ||
| 879 | return templ_7745c5c3_Err | 875 | return templ_7745c5c3_Err | ||
| 880 | } | 876 | } | ||
| @@ -885,49 +881,49 @@ func State(l Layout, p StatePage) templ.Component { | |||||
| 885 | return templ_7745c5c3_Err | 881 | return templ_7745c5c3_Err | ||
| 886 | } | 882 | } | ||
| 887 | } | 883 | } | ||
| 888 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<p class=\"state-back\">") | 884 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "<p class=\"state-back\">") |
| 889 | if templ_7745c5c3_Err != nil { | 885 | if templ_7745c5c3_Err != nil { | ||
| 890 | return templ_7745c5c3_Err | 886 | return templ_7745c5c3_Err | ||
| 891 | } | 887 | } | ||
| 892 | for _, b := range p.Back { | 888 | for _, b := range p.Back { | ||
| 893 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<a href=\"") | 889 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "<a href=\"") |
| 894 | if templ_7745c5c3_Err != nil { | 890 | if templ_7745c5c3_Err != nil { | ||
| 895 | return templ_7745c5c3_Err | 891 | return templ_7745c5c3_Err | ||
| 896 | } | 892 | } | ||
| 897 | - | var templ_7745c5c3_Var43 templ.SafeURL | 893 | + | var templ_7745c5c3_Var41 templ.SafeURL |
| 898 | - | templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href)) | 894 | + | templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href)) |
| 899 | if templ_7745c5c3_Err != nil { | 895 | if templ_7745c5c3_Err != nil { | ||
| 900 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 175, Col: 36} | 896 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 182, Col: 36} |
| 901 | } | 897 | } | ||
| 902 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43)) | 898 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41)) |
| 903 | if templ_7745c5c3_Err != nil { | 899 | if templ_7745c5c3_Err != nil { | ||
| 904 | return templ_7745c5c3_Err | 900 | return templ_7745c5c3_Err | ||
| 905 | } | 901 | } | ||
| 906 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\">") | 902 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "\">") |
| 907 | if templ_7745c5c3_Err != nil { | 903 | if templ_7745c5c3_Err != nil { | ||
| 908 | return templ_7745c5c3_Err | 904 | return templ_7745c5c3_Err | ||
| 909 | } | 905 | } | ||
| 910 | - | var templ_7745c5c3_Var44 string | 906 | + | var templ_7745c5c3_Var42 string |
| 911 | - | templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label) | 907 | + | templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label) |
| 912 | if templ_7745c5c3_Err != nil { | 908 | if templ_7745c5c3_Err != nil { | ||
| 913 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 175, Col: 48} | 909 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 182, Col: 48} |
| 914 | } | 910 | } | ||
| 915 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44)) | 911 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42)) |
| 916 | if templ_7745c5c3_Err != nil { | 912 | if templ_7745c5c3_Err != nil { | ||
| 917 | return templ_7745c5c3_Err | 913 | return templ_7745c5c3_Err | ||
| 918 | } | 914 | } | ||
| 919 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</a>") | 915 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</a>") |
| 920 | if templ_7745c5c3_Err != nil { | 916 | if templ_7745c5c3_Err != nil { | ||
| 921 | return templ_7745c5c3_Err | 917 | return templ_7745c5c3_Err | ||
| 922 | } | 918 | } | ||
| 923 | } | 919 | } | ||
| 924 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</p></section>") | 920 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</p></section>") |
| 925 | if templ_7745c5c3_Err != nil { | 921 | if templ_7745c5c3_Err != nil { | ||
| 926 | return templ_7745c5c3_Err | 922 | return templ_7745c5c3_Err | ||
| 927 | } | 923 | } | ||
| 928 | return nil | 924 | return nil | ||
| 929 | }) | 925 | }) | ||
| 930 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var39), templ_7745c5c3_Buffer) | 926 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var37), templ_7745c5c3_Buffer) |
| 931 | if templ_7745c5c3_Err != nil { | 927 | if templ_7745c5c3_Err != nil { | ||
| 932 | return templ_7745c5c3_Err | 928 | return templ_7745c5c3_Err | ||
| 933 | } | 929 | } | ||
| @@ -956,12 +952,12 @@ func Login(l Layout, p LoginPage) templ.Component { | |||||
| 956 | }() | 952 | }() | ||
| 957 | } | 953 | } | ||
| 958 | ctx = templ.InitializeContext(ctx) | 954 | ctx = templ.InitializeContext(ctx) | ||
| 959 | - | templ_7745c5c3_Var45 := templ.GetChildren(ctx) | 955 | + | templ_7745c5c3_Var43 := templ.GetChildren(ctx) |
| 960 | - | if templ_7745c5c3_Var45 == nil { | 956 | + | if templ_7745c5c3_Var43 == nil { |
| 961 | - | templ_7745c5c3_Var45 = templ.NopComponent | 957 | + | templ_7745c5c3_Var43 = templ.NopComponent |
| 962 | } | 958 | } | ||
| 963 | ctx = templ.ClearChildren(ctx) | 959 | ctx = templ.ClearChildren(ctx) | ||
| 964 | - | templ_7745c5c3_Var46 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 960 | + | templ_7745c5c3_Var44 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 965 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 961 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 966 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 962 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 967 | if !templ_7745c5c3_IsBuffer { | 963 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -973,75 +969,75 @@ func Login(l Layout, p LoginPage) templ.Component { | |||||
| 973 | }() | 969 | }() | ||
| 974 | } | 970 | } | ||
| 975 | ctx = templ.InitializeContext(ctx) | 971 | ctx = templ.InitializeContext(ctx) | ||
| 976 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | 972 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") |
| 977 | if templ_7745c5c3_Err != nil { | 973 | if templ_7745c5c3_Err != nil { | ||
| 978 | return templ_7745c5c3_Err | 974 | return templ_7745c5c3_Err | ||
| 979 | } | 975 | } | ||
| 980 | - | var templ_7745c5c3_Var47 string | 976 | + | var templ_7745c5c3_Var45 string |
| 981 | - | templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | 977 | + | templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) |
| 982 | if templ_7745c5c3_Err != nil { | 978 | if templ_7745c5c3_Err != nil { | ||
| 983 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 190, Col: 33} | 979 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 197, Col: 33} |
| 984 | } | 980 | } | ||
| 985 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) | 981 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45)) |
| 986 | if templ_7745c5c3_Err != nil { | 982 | if templ_7745c5c3_Err != nil { | ||
| 987 | return templ_7745c5c3_Err | 983 | return templ_7745c5c3_Err | ||
| 988 | } | 984 | } | ||
| 989 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</h1>") | 985 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</h1>") |
| 990 | if templ_7745c5c3_Err != nil { | 986 | if templ_7745c5c3_Err != nil { | ||
| 991 | return templ_7745c5c3_Err | 987 | return templ_7745c5c3_Err | ||
| 992 | } | 988 | } | ||
| 993 | for _, line := range p.Lines { | 989 | for _, line := range p.Lines { | ||
| 994 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<p class=\"dim\">") | 990 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<p class=\"dim\">") |
| 995 | if templ_7745c5c3_Err != nil { | 991 | if templ_7745c5c3_Err != nil { | ||
| 996 | return templ_7745c5c3_Err | 992 | return templ_7745c5c3_Err | ||
| 997 | } | 993 | } | ||
| 998 | - | var templ_7745c5c3_Var48 string | 994 | + | var templ_7745c5c3_Var46 string |
| 999 | - | templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(line) | 995 | + | templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(line) |
| 1000 | if templ_7745c5c3_Err != nil { | 996 | if templ_7745c5c3_Err != nil { | ||
| 1001 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 192, Col: 25} | 997 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 199, Col: 25} |
| 1002 | } | 998 | } | ||
| 1003 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48)) | 999 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46)) |
| 1004 | if templ_7745c5c3_Err != nil { | 1000 | if templ_7745c5c3_Err != nil { | ||
| 1005 | return templ_7745c5c3_Err | 1001 | return templ_7745c5c3_Err | ||
| 1006 | } | 1002 | } | ||
| 1007 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</p>") | 1003 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</p>") |
| 1008 | if templ_7745c5c3_Err != nil { | 1004 | if templ_7745c5c3_Err != nil { | ||
| 1009 | return templ_7745c5c3_Err | 1005 | return templ_7745c5c3_Err | ||
| 1010 | } | 1006 | } | ||
| 1011 | } | 1007 | } | ||
| 1012 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<form class=\"state-act\" method=\"post\" action=\"") | 1008 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "<form class=\"state-act\" method=\"post\" action=\"") |
| 1013 | if templ_7745c5c3_Err != nil { | 1009 | if templ_7745c5c3_Err != nil { | ||
| 1014 | return templ_7745c5c3_Err | 1010 | return templ_7745c5c3_Err | ||
| 1015 | } | 1011 | } | ||
| 1016 | - | var templ_7745c5c3_Var49 templ.SafeURL | 1012 | + | var templ_7745c5c3_Var47 templ.SafeURL |
| 1017 | - | templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action)) | 1013 | + | templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action)) |
| 1018 | if templ_7745c5c3_Err != nil { | 1014 | if templ_7745c5c3_Err != nil { | ||
| 1019 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 194, Col: 73} | 1015 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 201, Col: 73} |
| 1020 | } | 1016 | } | ||
| 1021 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49)) | 1017 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) |
| 1022 | if templ_7745c5c3_Err != nil { | 1018 | if templ_7745c5c3_Err != nil { | ||
| 1023 | return templ_7745c5c3_Err | 1019 | return templ_7745c5c3_Err | ||
| 1024 | } | 1020 | } | ||
| 1025 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">") | 1021 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">") |
| 1026 | if templ_7745c5c3_Err != nil { | 1022 | if templ_7745c5c3_Err != nil { | ||
| 1027 | return templ_7745c5c3_Err | 1023 | return templ_7745c5c3_Err | ||
| 1028 | } | 1024 | } | ||
| 1029 | - | var templ_7745c5c3_Var50 string | 1025 | + | var templ_7745c5c3_Var48 string |
| 1030 | - | templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | 1026 | + | templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) |
| 1031 | if templ_7745c5c3_Err != nil { | 1027 | if templ_7745c5c3_Err != nil { | ||
| 1032 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 195, Col: 56} | 1028 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 202, Col: 56} |
| 1033 | } | 1029 | } | ||
| 1034 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var50)) | 1030 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48)) |
| 1035 | if templ_7745c5c3_Err != nil { | 1031 | if templ_7745c5c3_Err != nil { | ||
| 1036 | return templ_7745c5c3_Err | 1032 | return templ_7745c5c3_Err | ||
| 1037 | } | 1033 | } | ||
| 1038 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | 1034 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") |
| 1039 | if templ_7745c5c3_Err != nil { | 1035 | if templ_7745c5c3_Err != nil { | ||
| 1040 | return templ_7745c5c3_Err | 1036 | return templ_7745c5c3_Err | ||
| 1041 | } | 1037 | } | ||
| 1042 | return nil | 1038 | return nil | ||
| 1043 | }) | 1039 | }) | ||
| 1044 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var46), templ_7745c5c3_Buffer) | 1040 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var44), templ_7745c5c3_Buffer) |
| 1045 | if templ_7745c5c3_Err != nil { | 1041 | if templ_7745c5c3_Err != nil { | ||
| 1046 | return templ_7745c5c3_Err | 1042 | return templ_7745c5c3_Err | ||
| 1047 | } | 1043 | } | ||
| @@ -1067,12 +1063,12 @@ func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component { | |||||
| 1067 | }() | 1063 | }() | ||
| 1068 | } | 1064 | } | ||
| 1069 | ctx = templ.InitializeContext(ctx) | 1065 | ctx = templ.InitializeContext(ctx) | ||
| 1070 | - | templ_7745c5c3_Var51 := templ.GetChildren(ctx) | 1066 | + | templ_7745c5c3_Var49 := templ.GetChildren(ctx) |
| 1071 | - | if templ_7745c5c3_Var51 == nil { | 1067 | + | if templ_7745c5c3_Var49 == nil { |
| 1072 | - | templ_7745c5c3_Var51 = templ.NopComponent | 1068 | + | templ_7745c5c3_Var49 = templ.NopComponent |
| 1073 | } | 1069 | } | ||
| 1074 | ctx = templ.ClearChildren(ctx) | 1070 | ctx = templ.ClearChildren(ctx) | ||
| 1075 | - | templ_7745c5c3_Var52 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 1071 | + | templ_7745c5c3_Var50 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 1076 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 1072 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 1077 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 1073 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 1078 | if !templ_7745c5c3_IsBuffer { | 1074 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -1084,88 +1080,88 @@ func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component { | |||||
| 1084 | }() | 1080 | }() | ||
| 1085 | } | 1081 | } | ||
| 1086 | ctx = templ.InitializeContext(ctx) | 1082 | ctx = templ.InitializeContext(ctx) | ||
| 1087 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | 1083 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") |
| 1088 | if templ_7745c5c3_Err != nil { | 1084 | if templ_7745c5c3_Err != nil { | ||
| 1089 | return templ_7745c5c3_Err | 1085 | return templ_7745c5c3_Err | ||
| 1090 | } | 1086 | } | ||
| 1091 | - | var templ_7745c5c3_Var53 string | 1087 | + | var templ_7745c5c3_Var51 string |
| 1092 | - | templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | 1088 | + | templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) |
| 1093 | if templ_7745c5c3_Err != nil { | 1089 | if templ_7745c5c3_Err != nil { | ||
| 1094 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 207, Col: 33} | 1090 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 214, Col: 33} |
| 1095 | } | 1091 | } | ||
| 1096 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53)) | 1092 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51)) |
| 1097 | if templ_7745c5c3_Err != nil { | 1093 | if templ_7745c5c3_Err != nil { | ||
| 1098 | return templ_7745c5c3_Err | 1094 | return templ_7745c5c3_Err | ||
| 1099 | } | 1095 | } | ||
| 1100 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"") | 1096 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"") |
| 1101 | if templ_7745c5c3_Err != nil { | 1097 | if templ_7745c5c3_Err != nil { | ||
| 1102 | return templ_7745c5c3_Err | 1098 | return templ_7745c5c3_Err | ||
| 1103 | } | 1099 | } | ||
| 1104 | - | var templ_7745c5c3_Var54 string | 1100 | + | var templ_7745c5c3_Var52 string |
| 1105 | - | templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | 1101 | + | templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) |
| 1106 | if templ_7745c5c3_Err != nil { | 1102 | if templ_7745c5c3_Err != nil { | ||
| 1107 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 209, Col: 87} | 1103 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 216, Col: 87} |
| 1108 | } | 1104 | } | ||
| 1109 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var54) | 1105 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var52) |
| 1110 | if templ_7745c5c3_Err != nil { | 1106 | if templ_7745c5c3_Err != nil { | ||
| 1111 | return templ_7745c5c3_Err | 1107 | return templ_7745c5c3_Err | ||
| 1112 | } | 1108 | } | ||
| 1113 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "\" data-finish=\"") | 1109 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "\" data-finish=\"") |
| 1114 | if templ_7745c5c3_Err != nil { | 1110 | if templ_7745c5c3_Err != nil { | ||
| 1115 | return templ_7745c5c3_Err | 1111 | return templ_7745c5c3_Err | ||
| 1116 | } | 1112 | } | ||
| 1117 | - | var templ_7745c5c3_Var55 string | 1113 | + | var templ_7745c5c3_Var53 string |
| 1118 | - | templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | 1114 | + | templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) |
| 1119 | if templ_7745c5c3_Err != nil { | 1115 | if templ_7745c5c3_Err != nil { | ||
| 1120 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 209, Col: 112} | 1116 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 216, Col: 112} |
| 1121 | } | 1117 | } | ||
| 1122 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var55) | 1118 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var53) |
| 1123 | if templ_7745c5c3_Err != nil { | 1119 | if templ_7745c5c3_Err != nil { | ||
| 1124 | return templ_7745c5c3_Err | 1120 | return templ_7745c5c3_Err | ||
| 1125 | } | 1121 | } | ||
| 1126 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "\">") | 1122 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "\">") |
| 1127 | if templ_7745c5c3_Err != nil { | 1123 | if templ_7745c5c3_Err != nil { | ||
| 1128 | return templ_7745c5c3_Err | 1124 | return templ_7745c5c3_Err | ||
| 1129 | } | 1125 | } | ||
| 1130 | - | var templ_7745c5c3_Var56 string | 1126 | + | var templ_7745c5c3_Var54 string |
| 1131 | - | templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | 1127 | + | templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) |
| 1132 | if templ_7745c5c3_Err != nil { | 1128 | if templ_7745c5c3_Err != nil { | ||
| 1133 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 209, Col: 125} | 1129 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 216, Col: 125} |
| 1134 | } | 1130 | } | ||
| 1135 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56)) | 1131 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54)) |
| 1136 | if templ_7745c5c3_Err != nil { | 1132 | if templ_7745c5c3_Err != nil { | ||
| 1137 | return templ_7745c5c3_Err | 1133 | return templ_7745c5c3_Err | ||
| 1138 | } | 1134 | } | ||
| 1139 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | 1135 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") |
| 1140 | if templ_7745c5c3_Err != nil { | 1136 | if templ_7745c5c3_Err != nil { | ||
| 1141 | return templ_7745c5c3_Err | 1137 | return templ_7745c5c3_Err | ||
| 1142 | } | 1138 | } | ||
| 1143 | for _, line := range p.Lines { | 1139 | for _, line := range p.Lines { | ||
| 1144 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "<p class=\"dim\">") | 1140 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<p class=\"dim\">") |
| 1145 | if templ_7745c5c3_Err != nil { | 1141 | if templ_7745c5c3_Err != nil { | ||
| 1146 | return templ_7745c5c3_Err | 1142 | return templ_7745c5c3_Err | ||
| 1147 | } | 1143 | } | ||
| 1148 | - | var templ_7745c5c3_Var57 string | 1144 | + | var templ_7745c5c3_Var55 string |
| 1149 | - | templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.JoinStringErrs(line) | 1145 | + | templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(line) |
| 1150 | if templ_7745c5c3_Err != nil { | 1146 | if templ_7745c5c3_Err != nil { | ||
| 1151 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 213, Col: 25} | 1147 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 220, Col: 25} |
| 1152 | } | 1148 | } | ||
| 1153 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var57)) | 1149 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55)) |
| 1154 | if templ_7745c5c3_Err != nil { | 1150 | if templ_7745c5c3_Err != nil { | ||
| 1155 | return templ_7745c5c3_Err | 1151 | return templ_7745c5c3_Err | ||
| 1156 | } | 1152 | } | ||
| 1157 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</p>") | 1153 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</p>") |
| 1158 | if templ_7745c5c3_Err != nil { | 1154 | if templ_7745c5c3_Err != nil { | ||
| 1159 | return templ_7745c5c3_Err | 1155 | return templ_7745c5c3_Err | ||
| 1160 | } | 1156 | } | ||
| 1161 | } | 1157 | } | ||
| 1162 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | 1158 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") |
| 1163 | if templ_7745c5c3_Err != nil { | 1159 | if templ_7745c5c3_Err != nil { | ||
| 1164 | return templ_7745c5c3_Err | 1160 | return templ_7745c5c3_Err | ||
| 1165 | } | 1161 | } | ||
| 1166 | return nil | 1162 | return nil | ||
| 1167 | }) | 1163 | }) | ||
| 1168 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var52), templ_7745c5c3_Buffer) | 1164 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var50), templ_7745c5c3_Buffer) |
| 1169 | if templ_7745c5c3_Err != nil { | 1165 | if templ_7745c5c3_Err != nil { | ||
| 1170 | return templ_7745c5c3_Err | 1166 | return templ_7745c5c3_Err | ||
| 1171 | } | 1167 | } | ||
| @@ -1190,12 +1186,12 @@ func Passkeys(l Layout, p PasskeysPage) templ.Component { | |||||
| 1190 | }() | 1186 | }() | ||
| 1191 | } | 1187 | } | ||
| 1192 | ctx = templ.InitializeContext(ctx) | 1188 | ctx = templ.InitializeContext(ctx) | ||
| 1193 | - | templ_7745c5c3_Var58 := templ.GetChildren(ctx) | 1189 | + | templ_7745c5c3_Var56 := templ.GetChildren(ctx) |
| 1194 | - | if templ_7745c5c3_Var58 == nil { | 1190 | + | if templ_7745c5c3_Var56 == nil { |
| 1195 | - | templ_7745c5c3_Var58 = templ.NopComponent | 1191 | + | templ_7745c5c3_Var56 = templ.NopComponent |
| 1196 | } | 1192 | } | ||
| 1197 | ctx = templ.ClearChildren(ctx) | 1193 | ctx = templ.ClearChildren(ctx) | ||
| 1198 | - | templ_7745c5c3_Var59 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 1194 | + | templ_7745c5c3_Var57 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 1199 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 1195 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 1200 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 1196 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 1201 | if !templ_7745c5c3_IsBuffer { | 1197 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -1207,231 +1203,231 @@ func Passkeys(l Layout, p PasskeysPage) templ.Component { | |||||
| 1207 | }() | 1203 | }() | ||
| 1208 | } | 1204 | } | ||
| 1209 | ctx = templ.InitializeContext(ctx) | 1205 | ctx = templ.InitializeContext(ctx) | ||
| 1210 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">") | 1206 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">") |
| 1211 | if templ_7745c5c3_Err != nil { | 1207 | if templ_7745c5c3_Err != nil { | ||
| 1212 | return templ_7745c5c3_Err | 1208 | return templ_7745c5c3_Err | ||
| 1213 | } | 1209 | } | ||
| 1214 | - | var templ_7745c5c3_Var60 string | 1210 | + | var templ_7745c5c3_Var58 string |
| 1215 | - | templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows))) | 1211 | + | templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows))) |
| 1216 | if templ_7745c5c3_Err != nil { | 1212 | if templ_7745c5c3_Err != nil { | ||
| 1217 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 223, Col: 81} | 1213 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 230, Col: 81} |
| 1218 | } | 1214 | } | ||
| 1219 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var60)) | 1215 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var58)) |
| 1220 | if templ_7745c5c3_Err != nil { | 1216 | if templ_7745c5c3_Err != nil { | ||
| 1221 | return templ_7745c5c3_Err | 1217 | return templ_7745c5c3_Err | ||
| 1222 | } | 1218 | } | ||
| 1223 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "</span></h2><p class=\"dim\">A passkey signs you in from this device or your phone, without a terminal. Removing one signs every browser out.</p>") | 1219 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</span></h2><p class=\"dim\">A passkey signs you in from this device or your phone, without a terminal. Removing one signs every browser out.</p>") |
| 1224 | if templ_7745c5c3_Err != nil { | 1220 | if templ_7745c5c3_Err != nil { | ||
| 1225 | return templ_7745c5c3_Err | 1221 | return templ_7745c5c3_Err | ||
| 1226 | } | 1222 | } | ||
| 1227 | if len(p.Rows) > 0 { | 1223 | if len(p.Rows) > 0 { | ||
| 1228 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><th class=\"cur\"></th><th class=\"c-name\">Name</th><th class=\"c-when\">Created</th><th class=\"c-when\">Last used</th><th class=\"c-sync\">Synced</th><th class=\"c-act\"><span class=\"sr\">Remove</span></th></tr></thead> <tbody>") | 1224 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><th class=\"cur\"></th><th class=\"c-name\">Name</th><th class=\"c-when\">Created</th><th class=\"c-when\">Last used</th><th class=\"c-sync\">Synced</th><th class=\"c-act\"><span class=\"sr\">Remove</span></th></tr></thead> <tbody>") |
| 1229 | if templ_7745c5c3_Err != nil { | 1225 | if templ_7745c5c3_Err != nil { | ||
| 1230 | return templ_7745c5c3_Err | 1226 | return templ_7745c5c3_Err | ||
| 1231 | } | 1227 | } | ||
| 1232 | for _, r := range p.Rows { | 1228 | for _, r := range p.Rows { | ||
| 1233 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<tr><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-name\">") | 1229 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<tr><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-name\">") |
| 1234 | if templ_7745c5c3_Err != nil { | 1230 | if templ_7745c5c3_Err != nil { | ||
| 1235 | return templ_7745c5c3_Err | 1231 | return templ_7745c5c3_Err | ||
| 1236 | } | 1232 | } | ||
| 1237 | - | var templ_7745c5c3_Var61 string | 1233 | + | var templ_7745c5c3_Var59 string |
| 1238 | - | templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | 1234 | + | templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) |
| 1239 | if templ_7745c5c3_Err != nil { | 1235 | if templ_7745c5c3_Err != nil { | ||
| 1240 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 241, Col: 34} | 1236 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 248, Col: 34} |
| 1241 | } | 1237 | } | ||
| 1242 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61)) | 1238 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59)) |
| 1243 | if templ_7745c5c3_Err != nil { | 1239 | if templ_7745c5c3_Err != nil { | ||
| 1244 | return templ_7745c5c3_Err | 1240 | return templ_7745c5c3_Err | ||
| 1245 | } | 1241 | } | ||
| 1246 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</td><td class=\"c-when nowrap\"><time") | 1242 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "</td><td class=\"c-when nowrap\"><time") |
| 1247 | if templ_7745c5c3_Err != nil { | 1243 | if templ_7745c5c3_Err != nil { | ||
| 1248 | return templ_7745c5c3_Err | 1244 | return templ_7745c5c3_Err | ||
| 1249 | } | 1245 | } | ||
| 1250 | if r.CreatedAt != "" { | 1246 | if r.CreatedAt != "" { | ||
| 1251 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, " datetime=\"") | 1247 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, " datetime=\"") |
| 1252 | if templ_7745c5c3_Err != nil { | 1248 | if templ_7745c5c3_Err != nil { | ||
| 1253 | return templ_7745c5c3_Err | 1249 | return templ_7745c5c3_Err | ||
| 1254 | } | 1250 | } | ||
| 1255 | - | var templ_7745c5c3_Var62 string | 1251 | + | var templ_7745c5c3_Var60 string |
| 1256 | - | templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt) | 1252 | + | templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt) |
| 1257 | if templ_7745c5c3_Err != nil { | 1253 | if templ_7745c5c3_Err != nil { | ||
| 1258 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 245, Col: 32} | 1254 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 32} |
| 1259 | } | 1255 | } | ||
| 1260 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var62) | 1256 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60) |
| 1261 | if templ_7745c5c3_Err != nil { | 1257 | if templ_7745c5c3_Err != nil { | ||
| 1262 | return templ_7745c5c3_Err | 1258 | return templ_7745c5c3_Err | ||
| 1263 | } | 1259 | } | ||
| 1264 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "\"") | 1260 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "\"") |
| 1265 | if templ_7745c5c3_Err != nil { | 1261 | if templ_7745c5c3_Err != nil { | ||
| 1266 | return templ_7745c5c3_Err | 1262 | return templ_7745c5c3_Err | ||
| 1267 | } | 1263 | } | ||
| 1268 | } | 1264 | } | ||
| 1269 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, ">") | 1265 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, ">") |
| 1270 | if templ_7745c5c3_Err != nil { | 1266 | if templ_7745c5c3_Err != nil { | ||
| 1271 | return templ_7745c5c3_Err | 1267 | return templ_7745c5c3_Err | ||
| 1272 | } | 1268 | } | ||
| 1273 | - | var templ_7745c5c3_Var63 string | 1269 | + | var templ_7745c5c3_Var61 string |
| 1274 | - | templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created) | 1270 | + | templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created) |
| 1275 | if templ_7745c5c3_Err != nil { | 1271 | if templ_7745c5c3_Err != nil { | ||
| 1276 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 247, Col: 20} | 1272 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 254, Col: 20} |
| 1277 | } | 1273 | } | ||
| 1278 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63)) | 1274 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61)) |
| 1279 | if templ_7745c5c3_Err != nil { | 1275 | if templ_7745c5c3_Err != nil { | ||
| 1280 | return templ_7745c5c3_Err | 1276 | return templ_7745c5c3_Err | ||
| 1281 | } | 1277 | } | ||
| 1282 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</time></td><td class=\"c-when nowrap\"><time") | 1278 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</time></td><td class=\"c-when nowrap\"><time") |
| 1283 | if templ_7745c5c3_Err != nil { | 1279 | if templ_7745c5c3_Err != nil { | ||
| 1284 | return templ_7745c5c3_Err | 1280 | return templ_7745c5c3_Err | ||
| 1285 | } | 1281 | } | ||
| 1286 | if r.LastUsedAt != "" { | 1282 | if r.LastUsedAt != "" { | ||
| 1287 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, " datetime=\"") | 1283 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, " datetime=\"") |
| 1288 | if templ_7745c5c3_Err != nil { | 1284 | if templ_7745c5c3_Err != nil { | ||
| 1289 | return templ_7745c5c3_Err | 1285 | return templ_7745c5c3_Err | ||
| 1290 | } | 1286 | } | ||
| 1291 | - | var templ_7745c5c3_Var64 string | 1287 | + | var templ_7745c5c3_Var62 string |
| 1292 | - | templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt) | 1288 | + | templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt) |
| 1293 | if templ_7745c5c3_Err != nil { | 1289 | if templ_7745c5c3_Err != nil { | ||
| 1294 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 252, Col: 33} | 1290 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 259, Col: 33} |
| 1295 | } | 1291 | } | ||
| 1296 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var64) | 1292 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var62) |
| 1297 | if templ_7745c5c3_Err != nil { | 1293 | if templ_7745c5c3_Err != nil { | ||
| 1298 | return templ_7745c5c3_Err | 1294 | return templ_7745c5c3_Err | ||
| 1299 | } | 1295 | } | ||
| 1300 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "\"") | 1296 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "\"") |
| 1301 | if templ_7745c5c3_Err != nil { | 1297 | if templ_7745c5c3_Err != nil { | ||
| 1302 | return templ_7745c5c3_Err | 1298 | return templ_7745c5c3_Err | ||
| 1303 | } | 1299 | } | ||
| 1304 | } | 1300 | } | ||
| 1305 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, ">") | 1301 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, ">") |
| 1306 | if templ_7745c5c3_Err != nil { | 1302 | if templ_7745c5c3_Err != nil { | ||
| 1307 | return templ_7745c5c3_Err | 1303 | return templ_7745c5c3_Err | ||
| 1308 | } | 1304 | } | ||
| 1309 | - | var templ_7745c5c3_Var65 string | 1305 | + | var templ_7745c5c3_Var63 string |
| 1310 | - | templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed) | 1306 | + | templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed) |
| 1311 | if templ_7745c5c3_Err != nil { | 1307 | if templ_7745c5c3_Err != nil { | ||
| 1312 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 254, Col: 21} | 1308 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 261, Col: 21} |
| 1313 | } | 1309 | } | ||
| 1314 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65)) | 1310 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63)) |
| 1315 | if templ_7745c5c3_Err != nil { | 1311 | if templ_7745c5c3_Err != nil { | ||
| 1316 | return templ_7745c5c3_Err | 1312 | return templ_7745c5c3_Err | ||
| 1317 | } | 1313 | } | ||
| 1318 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</time></td><td class=\"c-sync\">") | 1314 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</time></td><td class=\"c-sync\">") |
| 1319 | if templ_7745c5c3_Err != nil { | 1315 | if templ_7745c5c3_Err != nil { | ||
| 1320 | return templ_7745c5c3_Err | 1316 | return templ_7745c5c3_Err | ||
| 1321 | } | 1317 | } | ||
| 1322 | if r.Synced { | 1318 | if r.Synced { | ||
| 1323 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "yes") | 1319 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "yes") |
| 1324 | if templ_7745c5c3_Err != nil { | 1320 | if templ_7745c5c3_Err != nil { | ||
| 1325 | return templ_7745c5c3_Err | 1321 | return templ_7745c5c3_Err | ||
| 1326 | } | 1322 | } | ||
| 1327 | } else { | 1323 | } else { | ||
| 1328 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "no") | 1324 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "no") |
| 1329 | if templ_7745c5c3_Err != nil { | 1325 | if templ_7745c5c3_Err != nil { | ||
| 1330 | return templ_7745c5c3_Err | 1326 | return templ_7745c5c3_Err | ||
| 1331 | } | 1327 | } | ||
| 1332 | } | 1328 | } | ||
| 1333 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "</td><td class=\"c-act\"><form method=\"post\" action=\"") | 1329 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "</td><td class=\"c-act\"><form method=\"post\" action=\"") |
| 1334 | if templ_7745c5c3_Err != nil { | 1330 | if templ_7745c5c3_Err != nil { | ||
| 1335 | return templ_7745c5c3_Err | 1331 | return templ_7745c5c3_Err | ||
| 1336 | } | 1332 | } | ||
| 1337 | - | var templ_7745c5c3_Var66 templ.SafeURL | 1333 | + | var templ_7745c5c3_Var64 templ.SafeURL |
| 1338 | - | templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove)) | 1334 | + | templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove)) |
| 1339 | if templ_7745c5c3_Err != nil { | 1335 | if templ_7745c5c3_Err != nil { | ||
| 1340 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 264, Col: 60} | 1336 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 271, Col: 60} |
| 1341 | } | 1337 | } | ||
| 1342 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66)) | 1338 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64)) |
| 1343 | if templ_7745c5c3_Err != nil { | 1339 | if templ_7745c5c3_Err != nil { | ||
| 1344 | return templ_7745c5c3_Err | 1340 | return templ_7745c5c3_Err | ||
| 1345 | } | 1341 | } | ||
| 1346 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"") | 1342 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"") |
| 1347 | if templ_7745c5c3_Err != nil { | 1343 | if templ_7745c5c3_Err != nil { | ||
| 1348 | return templ_7745c5c3_Err | 1344 | return templ_7745c5c3_Err | ||
| 1349 | } | 1345 | } | ||
| 1350 | - | var templ_7745c5c3_Var67 string | 1346 | + | var templ_7745c5c3_Var65 string |
| 1351 | - | templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name) | 1347 | + | templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name) |
| 1352 | if templ_7745c5c3_Err != nil { | 1348 | if templ_7745c5c3_Err != nil { | ||
| 1353 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 265, Col: 89} | 1349 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 272, Col: 89} |
| 1354 | } | 1350 | } | ||
| 1355 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var67) | 1351 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var65) |
| 1356 | if templ_7745c5c3_Err != nil { | 1352 | if templ_7745c5c3_Err != nil { | ||
| 1357 | return templ_7745c5c3_Err | 1353 | return templ_7745c5c3_Err | ||
| 1358 | } | 1354 | } | ||
| 1359 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "\">Remove</button></form></td></tr>") | 1355 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "\">Remove</button></form></td></tr>") |
| 1360 | if templ_7745c5c3_Err != nil { | 1356 | if templ_7745c5c3_Err != nil { | ||
| 1361 | return templ_7745c5c3_Err | 1357 | return templ_7745c5c3_Err | ||
| 1362 | } | 1358 | } | ||
| 1363 | } | 1359 | } | ||
| 1364 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</tbody></table>") | 1360 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</tbody></table>") |
| 1365 | if templ_7745c5c3_Err != nil { | 1361 | if templ_7745c5c3_Err != nil { | ||
| 1366 | return templ_7745c5c3_Err | 1362 | return templ_7745c5c3_Err | ||
| 1367 | } | 1363 | } | ||
| 1368 | } else { | 1364 | } else { | ||
| 1369 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<p class=\"lede dim\">no passkeys yet.</p>") | 1365 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "<p class=\"lede dim\">no passkeys yet.</p>") |
| 1370 | if templ_7745c5c3_Err != nil { | 1366 | if templ_7745c5c3_Err != nil { | ||
| 1371 | return templ_7745c5c3_Err | 1367 | return templ_7745c5c3_Err | ||
| 1372 | } | 1368 | } | ||
| 1373 | } | 1369 | } | ||
| 1374 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, " ") | 1370 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, " ") |
| 1375 | if templ_7745c5c3_Err != nil { | 1371 | if templ_7745c5c3_Err != nil { | ||
| 1376 | return templ_7745c5c3_Err | 1372 | return templ_7745c5c3_Err | ||
| 1377 | } | 1373 | } | ||
| 1378 | if p.Full { | 1374 | if p.Full { | ||
| 1379 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "<p class=\"dim\">") | 1375 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "<p class=\"dim\">") |
| 1380 | if templ_7745c5c3_Err != nil { | 1376 | if templ_7745c5c3_Err != nil { | ||
| 1381 | return templ_7745c5c3_Err | 1377 | return templ_7745c5c3_Err | ||
| 1382 | } | 1378 | } | ||
| 1383 | - | var templ_7745c5c3_Var68 string | 1379 | + | var templ_7745c5c3_Var66 string |
| 1384 | - | templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max)) | 1380 | + | templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max)) |
| 1385 | if templ_7745c5c3_Err != nil { | 1381 | if templ_7745c5c3_Err != nil { | ||
| 1386 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 276, Col: 31} | 1382 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 283, Col: 31} |
| 1387 | } | 1383 | } | ||
| 1388 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68)) | 1384 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66)) |
| 1389 | if templ_7745c5c3_Err != nil { | 1385 | if templ_7745c5c3_Err != nil { | ||
| 1390 | return templ_7745c5c3_Err | 1386 | return templ_7745c5c3_Err | ||
| 1391 | } | 1387 | } | ||
| 1392 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, " passkeys are registered, the most there can be. Remove one to add another.</p>") | 1388 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, " passkeys are registered, the most there can be. Remove one to add another.</p>") |
| 1393 | if templ_7745c5c3_Err != nil { | 1389 | if templ_7745c5c3_Err != nil { | ||
| 1394 | return templ_7745c5c3_Err | 1390 | return templ_7745c5c3_Err | ||
| 1395 | } | 1391 | } | ||
| 1396 | } else { | 1392 | } else { | ||
| 1397 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "<form class=\"passkey-add\" data-js data-passkey-form><label for=\"passkey-name\" class=\"sr\">Name of the new passkey</label> <input id=\"passkey-name\" type=\"text\" placeholder=\"Name, for example Pixel 9\" autocomplete=\"off\" data-passkey-name> <button type=\"submit\" class=\"btn primary\" data-passkey=\"register\" data-begin=\"") | 1393 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<form class=\"passkey-add\" data-js data-passkey-form><label for=\"passkey-name\" class=\"sr\">Name of the new passkey</label> <input id=\"passkey-name\" type=\"text\" placeholder=\"Name, for example Pixel 9\" autocomplete=\"off\" data-passkey-name> <button type=\"submit\" class=\"btn primary\" data-passkey=\"register\" data-begin=\"") |
| 1398 | if templ_7745c5c3_Err != nil { | 1394 | if templ_7745c5c3_Err != nil { | ||
| 1399 | return templ_7745c5c3_Err | 1395 | return templ_7745c5c3_Err | ||
| 1400 | } | 1396 | } | ||
| 1401 | - | var templ_7745c5c3_Var69 string | 1397 | + | var templ_7745c5c3_Var67 string |
| 1402 | - | templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | 1398 | + | templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) |
| 1403 | if templ_7745c5c3_Err != nil { | 1399 | if templ_7745c5c3_Err != nil { | ||
| 1404 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 281, Col: 90} | 1400 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 288, Col: 90} |
| 1405 | } | 1401 | } | ||
| 1406 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69) | 1402 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var67) |
| 1407 | if templ_7745c5c3_Err != nil { | 1403 | if templ_7745c5c3_Err != nil { | ||
| 1408 | return templ_7745c5c3_Err | 1404 | return templ_7745c5c3_Err | ||
| 1409 | } | 1405 | } | ||
| 1410 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "\" data-finish=\"") | 1406 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "\" data-finish=\"") |
| 1411 | if templ_7745c5c3_Err != nil { | 1407 | if templ_7745c5c3_Err != nil { | ||
| 1412 | return templ_7745c5c3_Err | 1408 | return templ_7745c5c3_Err | ||
| 1413 | } | 1409 | } | ||
| 1414 | - | var templ_7745c5c3_Var70 string | 1410 | + | var templ_7745c5c3_Var68 string |
| 1415 | - | templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | 1411 | + | templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) |
| 1416 | if templ_7745c5c3_Err != nil { | 1412 | if templ_7745c5c3_Err != nil { | ||
| 1417 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 281, Col: 115} | 1413 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 288, Col: 115} |
| 1418 | } | 1414 | } | ||
| 1419 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var70) | 1415 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var68) |
| 1420 | if templ_7745c5c3_Err != nil { | 1416 | if templ_7745c5c3_Err != nil { | ||
| 1421 | return templ_7745c5c3_Err | 1417 | return templ_7745c5c3_Err | ||
| 1422 | } | 1418 | } | ||
| 1423 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "\">Add a passkey</button></form>") | 1419 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "\">Add a passkey</button></form>") |
| 1424 | if templ_7745c5c3_Err != nil { | 1420 | if templ_7745c5c3_Err != nil { | ||
| 1425 | return templ_7745c5c3_Err | 1421 | return templ_7745c5c3_Err | ||
| 1426 | } | 1422 | } | ||
| 1427 | } | 1423 | } | ||
| 1428 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | 1424 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") |
| 1429 | if templ_7745c5c3_Err != nil { | 1425 | if templ_7745c5c3_Err != nil { | ||
| 1430 | return templ_7745c5c3_Err | 1426 | return templ_7745c5c3_Err | ||
| 1431 | } | 1427 | } | ||
| 1432 | return nil | 1428 | return nil | ||
| 1433 | }) | 1429 | }) | ||
| 1434 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var59), templ_7745c5c3_Buffer) | 1430 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var57), templ_7745c5c3_Buffer) |
| 1435 | if templ_7745c5c3_Err != nil { | 1431 | if templ_7745c5c3_Err != nil { | ||
| 1436 | return templ_7745c5c3_Err | 1432 | return templ_7745c5c3_Err | ||
| 1437 | } | 1433 | } | ||
M internal/adapters/web/static/css/30-list.css +40 -6
| @@ -28,13 +28,47 @@ | |||
| 28 | 28 | & .c-sub { color: var(--ink-dim); } | |
| 29 | 29 | } | |
| 30 | 30 | ||
| 31 | + | /* home: the repositories as cards in a grid (one column on a phone); the | |
| 32 | + | page is a stack of sections, so others can sit beside or below */ | |
| 31 | 33 | .home { | |
| 32 | - | & .c-name { width: 26%; font-family: var(--mono); font-weight: 700; } | |
| 33 | - | & th.c-name { font-family: var(--font); } | |
| 34 | - | & .c-desc { width: auto; } | |
| 35 | - | & .c-when { width: 130px; } | |
| 36 | - | & .c-ref { width: 120px; } | |
| 37 | - | & .c-lang { width: 120px; } | |
| 34 | + | display: flex; flex-direction: column; gap: var(--s5); | |
| 35 | + | & .home-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s3) var(--s4); margin-bottom: var(--s4); } | |
| 36 | + | & .home-bar .filter { flex: 1 1 260px; } | |
| 37 | + | & .sort { display: flex; align-items: center; gap: var(--s1); font-size: var(--fs-s); } | |
| 38 | + | & .sort > .mute { margin-right: var(--s1); } | |
| 39 | + | & .sort a { | |
| 40 | + | display: inline-flex; align-items: center; gap: 4px; height: 28px; padding: 0 var(--s2); | |
| 41 | + | color: var(--ink-dim); text-decoration: none; border: 1px solid transparent; border-radius: var(--r-s); | |
| 42 | + | } | |
| 43 | + | & .sort a:hover { color: var(--ink-hi); background: var(--bg-raised); } | |
| 44 | + | & .sort a[aria-current="true"] { color: var(--ink-hi); background: var(--bg-raised); border-color: var(--border-strong); } | |
| 45 | + | } | |
| 46 | + | .repos { | |
| 47 | + | display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 380px), 1fr)); gap: var(--s3); | |
| 48 | + | margin: 0; padding: 0; list-style: none; | |
| 49 | + | & .repo { | |
| 50 | + | position: relative; display: flex; flex-direction: column; gap: var(--s2); min-width: 0; | |
| 51 | + | padding: var(--s4); background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--r); | |
| 52 | + | } | |
| 53 | + | & .repo:hover { background: var(--bg-raised); border-color: var(--border-strong); } | |
| 54 | + | & .repo[data-cursor] { background: var(--bg-raised); border-color: var(--ink-mute); box-shadow: inset 3px 0 0 var(--ink-hi); } | |
| 55 | + | & .repo[hidden] { display: none; } | |
| 56 | + | & .repo-name { display: flex; align-items: center; flex-wrap: wrap; gap: var(--s1) var(--s2); font-size: 17px; line-height: 26px; overflow-wrap: anywhere; } | |
| 57 | + | & .repo-name a { color: var(--ink-hi); text-decoration: none; } | |
| 58 | + | /* the whole card is the target of the name link */ | |
| 59 | + | & .repo-name a::after { content: ""; position: absolute; inset: 0; border-radius: var(--r); } | |
| 60 | + | & .repo-name a:focus-visible { outline: none; } | |
| 61 | + | & .repo-name a:focus-visible::after { outline: 2px solid var(--focus); outline-offset: 1px; } | |
| 62 | + | & .repo:hover .repo-name a, & .repo[data-cursor] .repo-name a { text-decoration: underline; } | |
| 63 | + | & .repo-name .pill { margin-left: 0; } | |
| 64 | + | & .repo-desc { | |
| 65 | + | flex: 1; color: var(--ink-dim); | |
| 66 | + | display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; | |
| 67 | + | } | |
| 68 | + | & .repo-desc.mute { color: var(--ink-mute); font-style: italic; } | |
| 69 | + | & .repo-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s1) var(--s4); font-size: var(--fs-s); color: var(--ink-mute); } | |
| 70 | + | & .repo-meta time { color: var(--ink-dim); } | |
| 71 | + | & .repo-branch { display: inline-flex; align-items: center; gap: 6px; font-family: var(--mono); color: var(--ink-dim); } | |
| 38 | 72 | } | |
| 39 | 73 | .list.tree { | |
| 40 | 74 | & .c-kind { width: 36px; color: var(--ink-mute); padding-right: 0; text-align: center; } | |
| @@ -28,13 +28,47 @@ | |||||
| 28 | & .c-sub { color: var(--ink-dim); } | 28 | & .c-sub { color: var(--ink-dim); } | ||
| 29 | } | 29 | } | ||
| 30 | 30 | ||||
| 31 | + | /* home: the repositories as cards in a grid (one column on a phone); the | |||
| 32 | + | page is a stack of sections, so others can sit beside or below */ | |||
| 31 | .home { | 33 | .home { | ||
| 32 | - | & .c-name { width: 26%; font-family: var(--mono); font-weight: 700; } | 34 | + | display: flex; flex-direction: column; gap: var(--s5); |
| 33 | - | & th.c-name { font-family: var(--font); } | 35 | + | & .home-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s3) var(--s4); margin-bottom: var(--s4); } |
| 34 | - | & .c-desc { width: auto; } | 36 | + | & .home-bar .filter { flex: 1 1 260px; } |
| 35 | - | & .c-when { width: 130px; } | 37 | + | & .sort { display: flex; align-items: center; gap: var(--s1); font-size: var(--fs-s); } |
| 36 | - | & .c-ref { width: 120px; } | 38 | + | & .sort > .mute { margin-right: var(--s1); } |
| 37 | - | & .c-lang { width: 120px; } | 39 | + | & .sort a { |
| 40 | + | display: inline-flex; align-items: center; gap: 4px; height: 28px; padding: 0 var(--s2); | |||
| 41 | + | color: var(--ink-dim); text-decoration: none; border: 1px solid transparent; border-radius: var(--r-s); | |||
| 42 | + | } | |||
| 43 | + | & .sort a:hover { color: var(--ink-hi); background: var(--bg-raised); } | |||
| 44 | + | & .sort a[aria-current="true"] { color: var(--ink-hi); background: var(--bg-raised); border-color: var(--border-strong); } | |||
| 45 | + | } | |||
| 46 | + | .repos { | |||
| 47 | + | display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 380px), 1fr)); gap: var(--s3); | |||
| 48 | + | margin: 0; padding: 0; list-style: none; | |||
| 49 | + | & .repo { | |||
| 50 | + | position: relative; display: flex; flex-direction: column; gap: var(--s2); min-width: 0; | |||
| 51 | + | padding: var(--s4); background: var(--bg-surface); border: 1px solid var(--border); border-radius: var(--r); | |||
| 52 | + | } | |||
| 53 | + | & .repo:hover { background: var(--bg-raised); border-color: var(--border-strong); } | |||
| 54 | + | & .repo[data-cursor] { background: var(--bg-raised); border-color: var(--ink-mute); box-shadow: inset 3px 0 0 var(--ink-hi); } | |||
| 55 | + | & .repo[hidden] { display: none; } | |||
| 56 | + | & .repo-name { display: flex; align-items: center; flex-wrap: wrap; gap: var(--s1) var(--s2); font-size: 17px; line-height: 26px; overflow-wrap: anywhere; } | |||
| 57 | + | & .repo-name a { color: var(--ink-hi); text-decoration: none; } | |||
| 58 | + | /* the whole card is the target of the name link */ | |||
| 59 | + | & .repo-name a::after { content: ""; position: absolute; inset: 0; border-radius: var(--r); } | |||
| 60 | + | & .repo-name a:focus-visible { outline: none; } | |||
| 61 | + | & .repo-name a:focus-visible::after { outline: 2px solid var(--focus); outline-offset: 1px; } | |||
| 62 | + | & .repo:hover .repo-name a, & .repo[data-cursor] .repo-name a { text-decoration: underline; } | |||
| 63 | + | & .repo-name .pill { margin-left: 0; } | |||
| 64 | + | & .repo-desc { | |||
| 65 | + | flex: 1; color: var(--ink-dim); | |||
| 66 | + | display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; | |||
| 67 | + | } | |||
| 68 | + | & .repo-desc.mute { color: var(--ink-mute); font-style: italic; } | |||
| 69 | + | & .repo-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s1) var(--s4); font-size: var(--fs-s); color: var(--ink-mute); } | |||
| 70 | + | & .repo-meta time { color: var(--ink-dim); } | |||
| 71 | + | & .repo-branch { display: inline-flex; align-items: center; gap: 6px; font-family: var(--mono); color: var(--ink-dim); } | |||
| 38 | } | 72 | } | ||
| 39 | .list.tree { | 73 | .list.tree { | ||
| 40 | & .c-kind { width: 36px; color: var(--ink-mute); padding-right: 0; text-align: center; } | 74 | & .c-kind { width: 36px; color: var(--ink-mute); padding-right: 0; text-align: center; } | ||
M internal/adapters/web/view.go +10 -8
| @@ -83,25 +83,27 @@ type HomeRow struct { | |||
| 83 | 83 | Pushed string | |
| 84 | 84 | PushedAt string // RFC 3339, "" when never pushed | |
| 85 | 85 | Branch string | |
| 86 | - | Tag string | |
| 87 | 86 | Cursor bool | |
| 87 | + | // Private marks a private repository; only set for a signed-in visitor. | |
| 88 | + | Private bool | |
| 88 | 89 | // Fresh marks a row that a push just updated (live updates only). | |
| 89 | 90 | Fresh bool | |
| 90 | 91 | } | |
| 91 | 92 | ||
| 92 | - | // SortCol is a column header of the home list; it links to its sort order. | |
| 93 | - | type SortCol struct { | |
| 93 | + | // SortLink is one way to order the home list; it links to that order. | |
| 94 | + | type SortLink struct { | |
| 94 | 95 | Label string | |
| 95 | 96 | Href string | |
| 96 | - | Dir string // "ascending" | "descending" | "none" | |
| 97 | - | Mark string | |
| 98 | - | Class string | |
| 97 | + | Mark string // "▲" or "▼" on the current order, "" otherwise | |
| 98 | + | // State says the current direction and what the link does, for screen | |
| 99 | + | // readers (the mark is hidden from them); "" off the current order. | |
| 100 | + | State string | |
| 99 | 101 | } | |
| 100 | 102 | ||
| 101 | 103 | // HomePage is the repository list. | |
| 102 | 104 | type HomePage struct { | |
| 103 | - | Cols []SortCol | |
| 104 | - | Rows []HomeRow | |
| 105 | + | Sorts []SortLink | |
| 106 | + | Rows []HomeRow | |
| 105 | 107 | } | |
| 106 | 108 | ||
| 107 | 109 | // Fact is one key/value row of the facts block. | |
| @@ -83,25 +83,27 @@ type HomeRow struct { | |||||
| 83 | Pushed string | 83 | Pushed string | ||
| 84 | PushedAt string // RFC 3339, "" when never pushed | 84 | PushedAt string // RFC 3339, "" when never pushed | ||
| 85 | Branch string | 85 | Branch string | ||
| 86 | - | Tag string | |||
| 87 | Cursor bool | 86 | Cursor bool | ||
| 87 | + | // Private marks a private repository; only set for a signed-in visitor. | |||
| 88 | + | Private bool | |||
| 88 | // Fresh marks a row that a push just updated (live updates only). | 89 | // Fresh marks a row that a push just updated (live updates only). | ||
| 89 | Fresh bool | 90 | Fresh bool | ||
| 90 | } | 91 | } | ||
| 91 | 92 | ||||
| 92 | - | // SortCol is a column header of the home list; it links to its sort order. | 93 | + | // SortLink is one way to order the home list; it links to that order. |
| 93 | - | type SortCol struct { | 94 | + | type SortLink struct { |
| 94 | Label string | 95 | Label string | ||
| 95 | Href string | 96 | Href string | ||
| 96 | - | Dir string // "ascending" | "descending" | "none" | 97 | + | Mark string // "▲" or "▼" on the current order, "" otherwise |
| 97 | - | Mark string | 98 | + | // State says the current direction and what the link does, for screen |
| 98 | - | Class string | 99 | + | // readers (the mark is hidden from them); "" off the current order. |
| 100 | + | State string | |||
| 99 | } | 101 | } | ||
| 100 | 102 | ||||
| 101 | // HomePage is the repository list. | 103 | // HomePage is the repository list. | ||
| 102 | type HomePage struct { | 104 | type HomePage struct { | ||
| 103 | - | Cols []SortCol | 105 | + | Sorts []SortLink |
| 104 | - | Rows []HomeRow | 106 | + | Rows []HomeRow |
| 105 | } | 107 | } | ||
| 106 | 108 | ||||
| 107 | // Fact is one key/value row of the facts block. | 109 | // Fact is one key/value row of the facts block. | ||
M internal/app/testdata/web/home.html +39 -46
| @@ -49,58 +49,51 @@ | |||
| 49 | 49 | </header> | |
| 50 | 50 | <div class="work"> | |
| 51 | 51 | <main id="main" tabindex="-1"> | |
| 52 | + | <h1 class="sr">Repositories</h1> | |
| 53 | + | <div class="home"> | |
| 54 | + | <section class="home-repos" aria-label="Repositories"> | |
| 55 | + | <div class="home-bar"> | |
| 52 | 56 | <div class="filter"> | |
| 53 | 57 | <label for="home-filter" class="sr">filter</label> | |
| 54 | - | <input id="home-filter" type="search" data-filter="#repo-rows > tr" placeholder="Filter repositories…" autocomplete="off" hx-on:input="ermite.filter(this)"> | |
| 58 | + | <input id="home-filter" type="search" data-filter="#repo-rows > li" placeholder="Filter repositories…" autocomplete="off" hx-on:input="ermite.filter(this)"> | |
| 55 | 59 | </div> | |
| 56 | - | <table class="list home" aria-label="Repositories"> | |
| 57 | - | <thead> | |
| 58 | - | <tr> | |
| 59 | - | <th class="cur"> | |
| 60 | - | </th> | |
| 61 | - | <th class="c-name" aria-sort="none"> | |
| 62 | - | <a href="/?sort=name&dir=asc">name </a> | |
| 63 | - | </th> | |
| 64 | - | <th class="c-desc" aria-sort="none"> | |
| 65 | - | <a href="/?sort=desc&dir=asc">description </a> | |
| 66 | - | </th> | |
| 67 | - | <th class="c-when" aria-sort="descending"> | |
| 68 | - | <a href="/?sort=push&dir=asc">last push <span aria-hidden="true">▼</span> | |
| 60 | + | <nav class="sort" aria-label="Sort repositories"> | |
| 61 | + | <span class="mute">sort</span> | |
| 62 | + | <a href="/?sort=push&dir=asc" aria-current="true">last push <span aria-hidden="true">▼</span> | |
| 63 | + | <span class="sr">, descending, select for ascending</span> | |
| 69 | 64 | </a> | |
| 70 | - | </th> | |
| 71 | - | <th class="c-ref" aria-sort="none"> | |
| 72 | - | <a href="/?sort=branch&dir=asc">branch </a> | |
| 73 | - | </th> | |
| 74 | - | </tr> | |
| 75 | - | </thead> | |
| 76 | - | <tbody id="repo-rows" data-rows> | |
| 77 | - | <tr id="repo-demo" data-cursor> | |
| 78 | - | <td class="cur" aria-hidden="true"> | |
| 79 | - | </td> | |
| 80 | - | <td class="c-name"> | |
| 65 | + | <a href="/?sort=name&dir=asc">name </a> | |
| 66 | + | </nav> | |
| 67 | + | </div> | |
| 68 | + | <ul class="repos" id="repo-rows" data-rows> | |
| 69 | + | <li id="repo-demo" class="repo" data-cursor> | |
| 70 | + | <h2 class="repo-name"> | |
| 81 | 71 | <a href="/demo">demo</a> | |
| 82 | - | </td> | |
| 83 | - | <td class="c-desc dim">A demo repository</td> | |
| 84 | - | <td class="c-when nowrap"> | |
| 85 | - | <time datetime="STAMP">AGO</time> | |
| 86 | - | </td> | |
| 87 | - | <td class="c-ref">main</td> | |
| 88 | - | </tr> | |
| 89 | - | <tr id="repo-quiet"> | |
| 90 | - | <td class="cur" aria-hidden="true"> | |
| 91 | - | </td> | |
| 92 | - | <td class="c-name"> | |
| 72 | + | </h2> | |
| 73 | + | <p class="repo-desc">A demo repository</p> | |
| 74 | + | <p class="repo-meta"> | |
| 75 | + | <span class="repo-branch"> | |
| 76 | + | <span class="ico i-branch" aria-hidden="true"> | |
| 77 | + | </span>main</span> | |
| 78 | + | <span>pushed <time datetime="STAMP" title="STAMP">AGO</time> | |
| 79 | + | </span> | |
| 80 | + | </p> | |
| 81 | + | </li> | |
| 82 | + | <li id="repo-quiet" class="repo"> | |
| 83 | + | <h2 class="repo-name"> | |
| 93 | 84 | <a href="/quiet">quiet</a> | |
| 94 | - | </td> | |
| 95 | - | <td class="c-desc dim"> | |
| 96 | - | </td> | |
| 97 | - | <td class="c-when nowrap"> | |
| 98 | - | <time>never</time> | |
| 99 | - | </td> | |
| 100 | - | <td class="c-ref">main</td> | |
| 101 | - | </tr> | |
| 102 | - | </tbody> | |
| 103 | - | </table> | |
| 85 | + | </h2> | |
| 86 | + | <p class="repo-desc mute">no description</p> | |
| 87 | + | <p class="repo-meta"> | |
| 88 | + | <span class="repo-branch"> | |
| 89 | + | <span class="ico i-branch" aria-hidden="true"> | |
| 90 | + | </span>main</span> | |
| 91 | + | <span>never pushed</span> | |
| 92 | + | </p> | |
| 93 | + | </li> | |
| 94 | + | </ul> | |
| 95 | + | </section> | |
| 96 | + | </div> | |
| 104 | 97 | </main> | |
| 105 | 98 | </div> | |
| 106 | 99 | <footer class="foot"> | |
| @@ -49,58 +49,51 @@ | |||||
| 49 | </header> | 49 | </header> | ||
| 50 | <div class="work"> | 50 | <div class="work"> | ||
| 51 | <main id="main" tabindex="-1"> | 51 | <main id="main" tabindex="-1"> | ||
| 52 | + | <h1 class="sr">Repositories</h1> | |||
| 53 | + | <div class="home"> | |||
| 54 | + | <section class="home-repos" aria-label="Repositories"> | |||
| 55 | + | <div class="home-bar"> | |||
| 52 | <div class="filter"> | 56 | <div class="filter"> | ||
| 53 | <label for="home-filter" class="sr">filter</label> | 57 | <label for="home-filter" class="sr">filter</label> | ||
| 54 | - | <input id="home-filter" type="search" data-filter="#repo-rows > tr" placeholder="Filter repositories…" autocomplete="off" hx-on:input="ermite.filter(this)"> | 58 | + | <input id="home-filter" type="search" data-filter="#repo-rows > li" placeholder="Filter repositories…" autocomplete="off" hx-on:input="ermite.filter(this)"> |
| 55 | </div> | 59 | </div> | ||
| 56 | - | <table class="list home" aria-label="Repositories"> | 60 | + | <nav class="sort" aria-label="Sort repositories"> |
| 57 | - | <thead> | 61 | + | <span class="mute">sort</span> |
| 58 | - | <tr> | 62 | + | <a href="/?sort=push&dir=asc" aria-current="true">last push <span aria-hidden="true">▼</span> |
| 59 | - | <th class="cur"> | 63 | + | <span class="sr">, descending, select for ascending</span> |
| 60 | - | </th> | |||
| 61 | - | <th class="c-name" aria-sort="none"> | |||
| 62 | - | <a href="/?sort=name&dir=asc">name </a> | |||
| 63 | - | </th> | |||
| 64 | - | <th class="c-desc" aria-sort="none"> | |||
| 65 | - | <a href="/?sort=desc&dir=asc">description </a> | |||
| 66 | - | </th> | |||
| 67 | - | <th class="c-when" aria-sort="descending"> | |||
| 68 | - | <a href="/?sort=push&dir=asc">last push <span aria-hidden="true">▼</span> | |||
| 69 | </a> | 64 | </a> | ||
| 70 | - | </th> | 65 | + | <a href="/?sort=name&dir=asc">name </a> |
| 71 | - | <th class="c-ref" aria-sort="none"> | 66 | + | </nav> |
| 72 | - | <a href="/?sort=branch&dir=asc">branch </a> | 67 | + | </div> |
| 73 | - | </th> | 68 | + | <ul class="repos" id="repo-rows" data-rows> |
| 74 | - | </tr> | 69 | + | <li id="repo-demo" class="repo" data-cursor> |
| 75 | - | </thead> | 70 | + | <h2 class="repo-name"> |
| 76 | - | <tbody id="repo-rows" data-rows> | |||
| 77 | - | <tr id="repo-demo" data-cursor> | |||
| 78 | - | <td class="cur" aria-hidden="true"> | |||
| 79 | - | </td> | |||
| 80 | - | <td class="c-name"> | |||
| 81 | <a href="/demo">demo</a> | 71 | <a href="/demo">demo</a> | ||
| 82 | - | </td> | 72 | + | </h2> |
| 83 | - | <td class="c-desc dim">A demo repository</td> | 73 | + | <p class="repo-desc">A demo repository</p> |
| 84 | - | <td class="c-when nowrap"> | 74 | + | <p class="repo-meta"> |
| 85 | - | <time datetime="STAMP">AGO</time> | 75 | + | <span class="repo-branch"> |
| 86 | - | </td> | 76 | + | <span class="ico i-branch" aria-hidden="true"> |
| 87 | - | <td class="c-ref">main</td> | 77 | + | </span>main</span> |
| 88 | - | </tr> | 78 | + | <span>pushed <time datetime="STAMP" title="STAMP">AGO</time> |
| 89 | - | <tr id="repo-quiet"> | 79 | + | </span> |
| 90 | - | <td class="cur" aria-hidden="true"> | 80 | + | </p> |
| 91 | - | </td> | 81 | + | </li> |
| 92 | - | <td class="c-name"> | 82 | + | <li id="repo-quiet" class="repo"> |
| 83 | + | <h2 class="repo-name"> | |||
| 93 | <a href="/quiet">quiet</a> | 84 | <a href="/quiet">quiet</a> | ||
| 94 | - | </td> | 85 | + | </h2> |
| 95 | - | <td class="c-desc dim"> | 86 | + | <p class="repo-desc mute">no description</p> |
| 96 | - | </td> | 87 | + | <p class="repo-meta"> |
| 97 | - | <td class="c-when nowrap"> | 88 | + | <span class="repo-branch"> |
| 98 | - | <time>never</time> | 89 | + | <span class="ico i-branch" aria-hidden="true"> |
| 99 | - | </td> | 90 | + | </span>main</span> |
| 100 | - | <td class="c-ref">main</td> | 91 | + | <span>never pushed</span> |
| 101 | - | </tr> | 92 | + | </p> |
| 102 | - | </tbody> | 93 | + | </li> |
| 103 | - | </table> | 94 | + | </ul> |
| 95 | + | </section> | |||
| 96 | + | </div> | |||
| 104 | </main> | 97 | </main> | ||
| 105 | </div> | 98 | </div> | ||
| 106 | <footer class="foot"> | 99 | <footer class="foot"> | ||
M internal/app/web_events_test.go +4 -4
| @@ -122,7 +122,7 @@ func TestWebEventsHome(t *testing.T) { | |||
| 122 | 122 | assert.Less(t, time.Since(start), 2*time.Second) | |
| 123 | 123 | assert.Equal(t, "home-list", ev.name) | |
| 124 | 124 | assert.NotEmpty(t, ev.id) | |
| 125 | - | assert.Contains(t, ev.data, `<tr id="repo-pub"`) | |
| 125 | + | assert.Contains(t, ev.data, `<li id="repo-pub"`) | |
| 126 | 126 | assert.Contains(t, ev.data, `new push`) | |
| 127 | 127 | assert.Contains(t, ev.data, `href="/pub"`) | |
| 128 | 128 | ||
| @@ -131,7 +131,7 @@ func TestWebEventsHome(t *testing.T) { | |||
| 131 | 131 | require.NoError(t, err) | |
| 132 | 132 | ev = s.next(t, watchWait) | |
| 133 | 133 | assert.Equal(t, "home-list", ev.name) | |
| 134 | - | assert.Contains(t, ev.data, `<tr id="repo-fresh"`) | |
| 134 | + | assert.Contains(t, ev.data, `<li id="repo-fresh"`) | |
| 135 | 135 | assert.Contains(t, ev.data, "a <b>fresh</b> one", "text is escaped") | |
| 136 | 136 | assert.NotContains(t, ev.data, "new push") | |
| 137 | 137 | ||
| @@ -141,13 +141,13 @@ func TestWebEventsHome(t *testing.T) { | |||
| 141 | 141 | require.NoError(t, err) | |
| 142 | 142 | ev = s.next(t, watchWait) | |
| 143 | 143 | assert.Equal(t, "home-list", ev.name) | |
| 144 | - | assert.Contains(t, ev.data, `<tr id="repo-fresh" data-gone`) | |
| 144 | + | assert.Contains(t, ev.data, `<li id="repo-fresh" data-gone`) | |
| 145 | 145 | assert.NotContains(t, ev.data, "fresh one") | |
| 146 | 146 | ||
| 147 | 147 | // And a deleted one. | |
| 148 | 148 | require.NoError(t, h.forge.Repos.Delete(h.ctx, domain.Root(), h.name("pub"))) | |
| 149 | 149 | ev = s.next(t, watchWait) | |
| 150 | - | assert.Contains(t, ev.data, `<tr id="repo-pub" data-gone`) | |
| 150 | + | assert.Contains(t, ev.data, `<li id="repo-pub" data-gone`) | |
| 151 | 151 | } | |
| 152 | 152 | ||
| 153 | 153 | // AC5: the stream of a repository carries its last push; the refs page its | |
| @@ -122,7 +122,7 @@ func TestWebEventsHome(t *testing.T) { | |||||
| 122 | assert.Less(t, time.Since(start), 2*time.Second) | 122 | assert.Less(t, time.Since(start), 2*time.Second) | ||
| 123 | assert.Equal(t, "home-list", ev.name) | 123 | assert.Equal(t, "home-list", ev.name) | ||
| 124 | assert.NotEmpty(t, ev.id) | 124 | assert.NotEmpty(t, ev.id) | ||
| 125 | - | assert.Contains(t, ev.data, `<tr id="repo-pub"`) | 125 | + | assert.Contains(t, ev.data, `<li id="repo-pub"`) |
| 126 | assert.Contains(t, ev.data, `new push`) | 126 | assert.Contains(t, ev.data, `new push`) | ||
| 127 | assert.Contains(t, ev.data, `href="/pub"`) | 127 | assert.Contains(t, ev.data, `href="/pub"`) | ||
| 128 | 128 | ||||
| @@ -131,7 +131,7 @@ func TestWebEventsHome(t *testing.T) { | |||||
| 131 | require.NoError(t, err) | 131 | require.NoError(t, err) | ||
| 132 | ev = s.next(t, watchWait) | 132 | ev = s.next(t, watchWait) | ||
| 133 | assert.Equal(t, "home-list", ev.name) | 133 | assert.Equal(t, "home-list", ev.name) | ||
| 134 | - | assert.Contains(t, ev.data, `<tr id="repo-fresh"`) | 134 | + | assert.Contains(t, ev.data, `<li id="repo-fresh"`) |
| 135 | assert.Contains(t, ev.data, "a <b>fresh</b> one", "text is escaped") | 135 | assert.Contains(t, ev.data, "a <b>fresh</b> one", "text is escaped") | ||
| 136 | assert.NotContains(t, ev.data, "new push") | 136 | assert.NotContains(t, ev.data, "new push") | ||
| 137 | 137 | ||||
| @@ -141,13 +141,13 @@ func TestWebEventsHome(t *testing.T) { | |||||
| 141 | require.NoError(t, err) | 141 | require.NoError(t, err) | ||
| 142 | ev = s.next(t, watchWait) | 142 | ev = s.next(t, watchWait) | ||
| 143 | assert.Equal(t, "home-list", ev.name) | 143 | assert.Equal(t, "home-list", ev.name) | ||
| 144 | - | assert.Contains(t, ev.data, `<tr id="repo-fresh" data-gone`) | 144 | + | assert.Contains(t, ev.data, `<li id="repo-fresh" data-gone`) |
| 145 | assert.NotContains(t, ev.data, "fresh one") | 145 | assert.NotContains(t, ev.data, "fresh one") | ||
| 146 | 146 | ||||
| 147 | // And a deleted one. | 147 | // And a deleted one. | ||
| 148 | require.NoError(t, h.forge.Repos.Delete(h.ctx, domain.Root(), h.name("pub"))) | 148 | require.NoError(t, h.forge.Repos.Delete(h.ctx, domain.Root(), h.name("pub"))) | ||
| 149 | ev = s.next(t, watchWait) | 149 | ev = s.next(t, watchWait) | ||
| 150 | - | assert.Contains(t, ev.data, `<tr id="repo-pub" data-gone`) | 150 | + | assert.Contains(t, ev.data, `<li id="repo-pub" data-gone`) |
| 151 | } | 151 | } | ||
| 152 | 152 | ||||
| 153 | // AC5: the stream of a repository carries its last push; the refs page its | 153 | // AC5: the stream of a repository carries its last push; the refs page its | ||
M internal/app/web_session_test.go +3 -0
| @@ -118,6 +118,7 @@ func TestWebLoginEndToEnd(t *testing.T) { | |||
| 118 | 118 | assert.Equal(t, "no-cache", home.hdr.Get("Cache-Control")) | |
| 119 | 119 | assert.Equal(t, []string{"Accept-Encoding"}, home.hdr.Values("Vary"), "no Cookie in the Vary of a public page") | |
| 120 | 120 | assert.NotContains(t, home.body, `action="/-/logout"`) | |
| 121 | + | assert.NotContains(t, home.body, `>private</span>`, "an anonymous visitor sees no private badge") | |
| 121 | 122 | assert.Equal(t, 404, b.get("/secret", nil).status) | |
| 122 | 123 | ||
| 123 | 124 | // The CLI asks for a link and prints it; stderr says when it ends. | |
| @@ -199,6 +200,8 @@ func TestWebLoginEndToEnd(t *testing.T) { | |||
| 199 | 200 | } | |
| 200 | 201 | home = b.get("/", as(token)) | |
| 201 | 202 | assert.Contains(t, home.body, "secret") | |
| 203 | + | assert.Equal(t, 1, strings.Count(home.body, `<span class="pill">private</span>`), "only the private repository has the badge") | |
| 204 | + | assert.Regexp(t, `(?s)<li id="repo-secret".*?<span class="pill">private</span>.*?</li>\s*<li id="repo-pub"|<li id="repo-pub".*?</li>\s*<li id="repo-secret".*?<span class="pill">private</span>`, home.body) | |
| 202 | 205 | assert.Contains(t, home.body, `<form class="owner" method="post" action="/-/logout">`) | |
| 203 | 206 | assert.Contains(t, b.get("/secret/blob/main/notes.txt", as(token)).body, "notes.txt") | |
| 204 | 207 | raw := b.get("/secret/raw/main/notes.txt", as(token)) | |
| @@ -118,6 +118,7 @@ func TestWebLoginEndToEnd(t *testing.T) { | |||||
| 118 | assert.Equal(t, "no-cache", home.hdr.Get("Cache-Control")) | 118 | assert.Equal(t, "no-cache", home.hdr.Get("Cache-Control")) | ||
| 119 | assert.Equal(t, []string{"Accept-Encoding"}, home.hdr.Values("Vary"), "no Cookie in the Vary of a public page") | 119 | assert.Equal(t, []string{"Accept-Encoding"}, home.hdr.Values("Vary"), "no Cookie in the Vary of a public page") | ||
| 120 | assert.NotContains(t, home.body, `action="/-/logout"`) | 120 | assert.NotContains(t, home.body, `action="/-/logout"`) | ||
| 121 | + | assert.NotContains(t, home.body, `>private</span>`, "an anonymous visitor sees no private badge") | |||
| 121 | assert.Equal(t, 404, b.get("/secret", nil).status) | 122 | assert.Equal(t, 404, b.get("/secret", nil).status) | ||
| 122 | 123 | ||||
| 123 | // The CLI asks for a link and prints it; stderr says when it ends. | 124 | // The CLI asks for a link and prints it; stderr says when it ends. | ||
| @@ -199,6 +200,8 @@ func TestWebLoginEndToEnd(t *testing.T) { | |||||
| 199 | } | 200 | } | ||
| 200 | home = b.get("/", as(token)) | 201 | home = b.get("/", as(token)) | ||
| 201 | assert.Contains(t, home.body, "secret") | 202 | assert.Contains(t, home.body, "secret") | ||
| 203 | + | assert.Equal(t, 1, strings.Count(home.body, `<span class="pill">private</span>`), "only the private repository has the badge") | |||
| 204 | + | assert.Regexp(t, `(?s)<li id="repo-secret".*?<span class="pill">private</span>.*?</li>\s*<li id="repo-pub"|<li id="repo-pub".*?</li>\s*<li id="repo-secret".*?<span class="pill">private</span>`, home.body) | |||
| 202 | assert.Contains(t, home.body, `<form class="owner" method="post" action="/-/logout">`) | 205 | assert.Contains(t, home.body, `<form class="owner" method="post" action="/-/logout">`) | ||
| 203 | assert.Contains(t, b.get("/secret/blob/main/notes.txt", as(token)).body, "notes.txt") | 206 | assert.Contains(t, b.get("/secret/blob/main/notes.txt", as(token)).body, "notes.txt") | ||
| 204 | raw := b.get("/secret/raw/main/notes.txt", as(token)) | 207 | raw := b.get("/secret/raw/main/notes.txt", as(token)) | ||