feat(mirror): warn about failing mirrors on git push and show a badge on the repo page
- commit
- 475ebb670b09953ca4b84b98a0a9c24981098c7a
- author
- brice · · 2026-10-20 05:54 UTC
- committer
- brice · · 2026-10-20 10:02 UTC
- parent
- ed419c7
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
9 files · +501 -272
M internal/adapters/githttp/hooks.go +30 -3
| @@ -37,8 +37,9 @@ type hookEntry struct { | |||
| 37 | 37 | // HookServer registers the per-request hook tokens and serves the Unix | |
| 38 | 38 | // socket the hooks call back on. It implements HookTokens. | |
| 39 | 39 | type HookServer struct { | |
| 40 | - | path string | |
| 41 | - | hooks ports.PushHookService | |
| 40 | + | path string | |
| 41 | + | hooks ports.PushHookService | |
| 42 | + | mirrors ports.MirrorWarner | |
| 42 | 43 | ||
| 43 | 44 | mu sync.RWMutex | |
| 44 | 45 | tokens map[string]hookEntry | |
| @@ -56,6 +57,32 @@ func NewHookServer(path string, hooks ports.PushHookService) *HookServer { | |||
| 56 | 57 | return &HookServer{path: path, hooks: hooks, tokens: make(map[string]hookEntry), conns: make(map[net.Conn]struct{})} | |
| 57 | 58 | } | |
| 58 | 59 | ||
| 60 | + | // WithMirrorWarner enables best-effort mirror warnings. Configure before serving. | |
| 61 | + | func (s *HookServer) WithMirrorWarner(w ports.MirrorWarner) *HookServer { | |
| 62 | + | s.mirrors = w | |
| 63 | + | return s | |
| 64 | + | } | |
| 65 | + | ||
| 66 | + | // mirrorWarning bounds even a source that does not honor context cancellation. | |
| 67 | + | func (s *HookServer) mirrorWarning(ctx context.Context, repo domain.RepoName) string { | |
| 68 | + | if s.mirrors == nil { | |
| 69 | + | return "" | |
| 70 | + | } | |
| 71 | + | ctx, cancel := context.WithTimeout(ctx, 2*time.Second) | |
| 72 | + | defer cancel() | |
| 73 | + | result := make(chan string, 1) | |
| 74 | + | go func() { result <- s.mirrors.Warning(ctx, repo) }() | |
| 75 | + | select { | |
| 76 | + | case warning := <-result: | |
| 77 | + | if ctx.Err() != nil || warning == "" { | |
| 78 | + | return "" | |
| 79 | + | } | |
| 80 | + | return warning + "\n→ ermite mirror status " + repo.String() | |
| 81 | + | case <-ctx.Done(): | |
| 82 | + | return "" | |
| 83 | + | } | |
| 84 | + | } | |
| 85 | + | ||
| 59 | 86 | // Socket returns the path of the socket. | |
| 60 | 87 | func (s *HookServer) Socket() string { return s.path } | |
| 61 | 88 | ||
| @@ -229,7 +256,7 @@ func (s *HookServer) handle(ctx context.Context, conn net.Conn) { | |||
| 229 | 256 | s.reply(ctx, conn, HookReply{OK: true, Message: "ermite: the push succeeded but recording it failed"}) | |
| 230 | 257 | return | |
| 231 | 258 | } | |
| 232 | - | s.reply(ctx, conn, HookReply{OK: true}) | |
| 259 | + | s.reply(ctx, conn, HookReply{OK: true, Message: s.mirrorWarning(rctx, entry.repo)}) | |
| 233 | 260 | } | |
| 234 | 261 | } | |
| 235 | 262 | ||
| @@ -37,8 +37,9 @@ type hookEntry struct { | |||||
| 37 | // HookServer registers the per-request hook tokens and serves the Unix | 37 | // HookServer registers the per-request hook tokens and serves the Unix | ||
| 38 | // socket the hooks call back on. It implements HookTokens. | 38 | // socket the hooks call back on. It implements HookTokens. | ||
| 39 | type HookServer struct { | 39 | type HookServer struct { | ||
| 40 | - | path string | 40 | + | path string |
| 41 | - | hooks ports.PushHookService | 41 | + | hooks ports.PushHookService |
| 42 | + | mirrors ports.MirrorWarner | |||
| 42 | 43 | ||||
| 43 | mu sync.RWMutex | 44 | mu sync.RWMutex | ||
| 44 | tokens map[string]hookEntry | 45 | tokens map[string]hookEntry | ||
| @@ -56,6 +57,32 @@ func NewHookServer(path string, hooks ports.PushHookService) *HookServer { | |||||
| 56 | return &HookServer{path: path, hooks: hooks, tokens: make(map[string]hookEntry), conns: make(map[net.Conn]struct{})} | 57 | return &HookServer{path: path, hooks: hooks, tokens: make(map[string]hookEntry), conns: make(map[net.Conn]struct{})} | ||
| 57 | } | 58 | } | ||
| 58 | 59 | ||||
| 60 | + | // WithMirrorWarner enables best-effort mirror warnings. Configure before serving. | |||
| 61 | + | func (s *HookServer) WithMirrorWarner(w ports.MirrorWarner) *HookServer { | |||
| 62 | + | s.mirrors = w | |||
| 63 | + | return s | |||
| 64 | + | } | |||
| 65 | + | ||||
| 66 | + | // mirrorWarning bounds even a source that does not honor context cancellation. | |||
| 67 | + | func (s *HookServer) mirrorWarning(ctx context.Context, repo domain.RepoName) string { | |||
| 68 | + | if s.mirrors == nil { | |||
| 69 | + | return "" | |||
| 70 | + | } | |||
| 71 | + | ctx, cancel := context.WithTimeout(ctx, 2*time.Second) | |||
| 72 | + | defer cancel() | |||
| 73 | + | result := make(chan string, 1) | |||
| 74 | + | go func() { result <- s.mirrors.Warning(ctx, repo) }() | |||
| 75 | + | select { | |||
| 76 | + | case warning := <-result: | |||
| 77 | + | if ctx.Err() != nil || warning == "" { | |||
| 78 | + | return "" | |||
| 79 | + | } | |||
| 80 | + | return warning + "\n→ ermite mirror status " + repo.String() | |||
| 81 | + | case <-ctx.Done(): | |||
| 82 | + | return "" | |||
| 83 | + | } | |||
| 84 | + | } | |||
| 85 | + | ||||
| 59 | // Socket returns the path of the socket. | 86 | // Socket returns the path of the socket. | ||
| 60 | func (s *HookServer) Socket() string { return s.path } | 87 | func (s *HookServer) Socket() string { return s.path } | ||
| 61 | 88 | ||||
| @@ -229,7 +256,7 @@ func (s *HookServer) handle(ctx context.Context, conn net.Conn) { | |||||
| 229 | s.reply(ctx, conn, HookReply{OK: true, Message: "ermite: the push succeeded but recording it failed"}) | 256 | s.reply(ctx, conn, HookReply{OK: true, Message: "ermite: the push succeeded but recording it failed"}) | ||
| 230 | return | 257 | return | ||
| 231 | } | 258 | } | ||
| 232 | - | s.reply(ctx, conn, HookReply{OK: true}) | 259 | + | s.reply(ctx, conn, HookReply{OK: true, Message: s.mirrorWarning(rctx, entry.repo)}) |
| 233 | } | 260 | } | ||
| 234 | } | 261 | } | ||
| 235 | 262 | ||||
M internal/adapters/githttp/hooks_test.go +46 -0
| @@ -412,3 +412,49 @@ func TestHookScriptExecsTheBinaryWithQuotedPath(t *testing.T) { | |||
| 412 | 412 | require.NoError(t, err) | |
| 413 | 413 | assert.Equal(t, "line\n", string(in), "stdin reaches the binary") | |
| 414 | 414 | } | |
| 415 | + | ||
| 416 | + | func TestMirrorPostReceiveWarning(t *testing.T) { | |
| 417 | + | for _, warning := range []string{"ermite: mirror is failing: network unavailable", "ermite: mirror is paused: main diverged on remote", ""} { | |
| 418 | + | t.Run(warning, func(t *testing.T) { | |
| 419 | + | hooks := mocks.NewPushHookService(t) | |
| 420 | + | hooks.EXPECT().Record(mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) | |
| 421 | + | srv, sock := startHooks(t, hooks) | |
| 422 | + | w := mocks.NewMirrorWarner(t) | |
| 423 | + | w.EXPECT().Warning(mock.Anything, repoName(t, "proj")).Return(warning) | |
| 424 | + | srv.WithMirrorWarner(w) | |
| 425 | + | token, release := srv.Register(t.Context(), repoName(t, "proj"), domain.Root()) | |
| 426 | + | defer release() | |
| 427 | + | reply := raw(t, sock, `{"token":"`+token+`","hook":"post-receive","updates":[]}`) | |
| 428 | + | assert.True(t, reply.OK) | |
| 429 | + | if warning == "" { | |
| 430 | + | assert.Empty(t, reply.Message) | |
| 431 | + | } else { | |
| 432 | + | assert.Equal(t, warning+"\n→ ermite mirror status proj", reply.Message) | |
| 433 | + | } | |
| 434 | + | }) | |
| 435 | + | } | |
| 436 | + | } | |
| 437 | + | ||
| 438 | + | func TestMirrorPostReceiveTimeout(t *testing.T) { | |
| 439 | + | hooks := mocks.NewPushHookService(t) | |
| 440 | + | hooks.EXPECT().Record(mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) | |
| 441 | + | srv, sock := startHooks(t, hooks) | |
| 442 | + | w := mocks.NewMirrorWarner(t) | |
| 443 | + | release := make(chan struct{}) | |
| 444 | + | defer close(release) | |
| 445 | + | w.EXPECT().Warning(mock.Anything, repoName(t, "proj")).RunAndReturn(func(ctx context.Context, _ domain.RepoName) string { | |
| 446 | + | deadline, ok := ctx.Deadline() | |
| 447 | + | assert.True(t, ok) | |
| 448 | + | assert.LessOrEqual(t, time.Until(deadline), 2*time.Second) | |
| 449 | + | <-release // deliberately ignores cancellation | |
| 450 | + | return "late warning" | |
| 451 | + | }) | |
| 452 | + | srv.WithMirrorWarner(w) | |
| 453 | + | token, revoke := srv.Register(t.Context(), repoName(t, "proj"), domain.Root()) | |
| 454 | + | defer revoke() | |
| 455 | + | start := time.Now() | |
| 456 | + | reply := raw(t, sock, `{"token":"`+token+`","hook":"post-receive","updates":[]}`) | |
| 457 | + | assert.True(t, reply.OK) | |
| 458 | + | assert.Empty(t, reply.Message) | |
| 459 | + | assert.Less(t, time.Since(start), 2500*time.Millisecond) | |
| 460 | + | } | |
| @@ -412,3 +412,49 @@ func TestHookScriptExecsTheBinaryWithQuotedPath(t *testing.T) { | |||||
| 412 | require.NoError(t, err) | 412 | require.NoError(t, err) | ||
| 413 | assert.Equal(t, "line\n", string(in), "stdin reaches the binary") | 413 | assert.Equal(t, "line\n", string(in), "stdin reaches the binary") | ||
| 414 | } | 414 | } | ||
| 415 | + | ||||
| 416 | + | func TestMirrorPostReceiveWarning(t *testing.T) { | |||
| 417 | + | for _, warning := range []string{"ermite: mirror is failing: network unavailable", "ermite: mirror is paused: main diverged on remote", ""} { | |||
| 418 | + | t.Run(warning, func(t *testing.T) { | |||
| 419 | + | hooks := mocks.NewPushHookService(t) | |||
| 420 | + | hooks.EXPECT().Record(mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) | |||
| 421 | + | srv, sock := startHooks(t, hooks) | |||
| 422 | + | w := mocks.NewMirrorWarner(t) | |||
| 423 | + | w.EXPECT().Warning(mock.Anything, repoName(t, "proj")).Return(warning) | |||
| 424 | + | srv.WithMirrorWarner(w) | |||
| 425 | + | token, release := srv.Register(t.Context(), repoName(t, "proj"), domain.Root()) | |||
| 426 | + | defer release() | |||
| 427 | + | reply := raw(t, sock, `{"token":"`+token+`","hook":"post-receive","updates":[]}`) | |||
| 428 | + | assert.True(t, reply.OK) | |||
| 429 | + | if warning == "" { | |||
| 430 | + | assert.Empty(t, reply.Message) | |||
| 431 | + | } else { | |||
| 432 | + | assert.Equal(t, warning+"\n→ ermite mirror status proj", reply.Message) | |||
| 433 | + | } | |||
| 434 | + | }) | |||
| 435 | + | } | |||
| 436 | + | } | |||
| 437 | + | ||||
| 438 | + | func TestMirrorPostReceiveTimeout(t *testing.T) { | |||
| 439 | + | hooks := mocks.NewPushHookService(t) | |||
| 440 | + | hooks.EXPECT().Record(mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(nil) | |||
| 441 | + | srv, sock := startHooks(t, hooks) | |||
| 442 | + | w := mocks.NewMirrorWarner(t) | |||
| 443 | + | release := make(chan struct{}) | |||
| 444 | + | defer close(release) | |||
| 445 | + | w.EXPECT().Warning(mock.Anything, repoName(t, "proj")).RunAndReturn(func(ctx context.Context, _ domain.RepoName) string { | |||
| 446 | + | deadline, ok := ctx.Deadline() | |||
| 447 | + | assert.True(t, ok) | |||
| 448 | + | assert.LessOrEqual(t, time.Until(deadline), 2*time.Second) | |||
| 449 | + | <-release // deliberately ignores cancellation | |||
| 450 | + | return "late warning" | |||
| 451 | + | }) | |||
| 452 | + | srv.WithMirrorWarner(w) | |||
| 453 | + | token, revoke := srv.Register(t.Context(), repoName(t, "proj"), domain.Root()) | |||
| 454 | + | defer revoke() | |||
| 455 | + | start := time.Now() | |||
| 456 | + | reply := raw(t, sock, `{"token":"`+token+`","hook":"post-receive","updates":[]}`) | |||
| 457 | + | assert.True(t, reply.OK) | |||
| 458 | + | assert.Empty(t, reply.Message) | |||
| 459 | + | assert.Less(t, time.Since(start), 2500*time.Millisecond) | |||
| 460 | + | } | |||
A internal/adapters/web/mirror.go +34 -0
| @@ -0,0 +1,34 @@ | |||
| 1 | + | // SPDX-License-Identifier: AGPL-3.0-or-later | |
| 2 | + | ||
| 3 | + | package web | |
| 4 | + | ||
| 5 | + | import ( | |
| 6 | + | "context" | |
| 7 | + | ||
| 8 | + | "bnema.dev/ermite/internal/domain" | |
| 9 | + | "bnema.dev/ermite/internal/ports" | |
| 10 | + | ) | |
| 11 | + | ||
| 12 | + | // MirrorBadge is an administrative diagnostic in the summary rail. | |
| 13 | + | type MirrorBadge struct{ State, Reason, Command string } | |
| 14 | + | ||
| 15 | + | // WithMirrorWarner enables mirror badges. Configure before serving requests. | |
| 16 | + | func (s *Server) WithMirrorWarner(w ports.MirrorWarner) *Server { | |
| 17 | + | s.mirrors = w | |
| 18 | + | return s | |
| 19 | + | } | |
| 20 | + | ||
| 21 | + | // mirrorBadge selects presentation only; the source authorizes the lookup and reason. | |
| 22 | + | // | |
| 23 | + | //hexcheck:ignore suspicious-business-logic-in-adapter controls visibility of an administrative UI indicator | |
| 24 | + | func (s *Server) mirrorBadge(ctx context.Context, repo domain.RepoName) *MirrorBadge { | |
| 25 | + | p := principal(ctx) | |
| 26 | + | if s.mirrors == nil || !p.Allows(domain.ScopeRepoAdmin, repo) { | |
| 27 | + | return nil | |
| 28 | + | } | |
| 29 | + | state, reason := s.mirrors.Badge(ctx, p, repo) | |
| 30 | + | if state != domain.MirrorFailing && state != domain.MirrorPaused { | |
| 31 | + | return nil | |
| 32 | + | } | |
| 33 | + | return &MirrorBadge{State: string(state), Reason: reason, Command: "ermite mirror status " + repo.String()} | |
| 34 | + | } | |
| @@ -0,0 +1,34 @@ | |||||
| 1 | + | // SPDX-License-Identifier: AGPL-3.0-or-later | |||
| 2 | + | ||||
| 3 | + | package web | |||
| 4 | + | ||||
| 5 | + | import ( | |||
| 6 | + | "context" | |||
| 7 | + | ||||
| 8 | + | "bnema.dev/ermite/internal/domain" | |||
| 9 | + | "bnema.dev/ermite/internal/ports" | |||
| 10 | + | ) | |||
| 11 | + | ||||
| 12 | + | // MirrorBadge is an administrative diagnostic in the summary rail. | |||
| 13 | + | type MirrorBadge struct{ State, Reason, Command string } | |||
| 14 | + | ||||
| 15 | + | // WithMirrorWarner enables mirror badges. Configure before serving requests. | |||
| 16 | + | func (s *Server) WithMirrorWarner(w ports.MirrorWarner) *Server { | |||
| 17 | + | s.mirrors = w | |||
| 18 | + | return s | |||
| 19 | + | } | |||
| 20 | + | ||||
| 21 | + | // mirrorBadge selects presentation only; the source authorizes the lookup and reason. | |||
| 22 | + | // | |||
| 23 | + | //hexcheck:ignore suspicious-business-logic-in-adapter controls visibility of an administrative UI indicator | |||
| 24 | + | func (s *Server) mirrorBadge(ctx context.Context, repo domain.RepoName) *MirrorBadge { | |||
| 25 | + | p := principal(ctx) | |||
| 26 | + | if s.mirrors == nil || !p.Allows(domain.ScopeRepoAdmin, repo) { | |||
| 27 | + | return nil | |||
| 28 | + | } | |||
| 29 | + | state, reason := s.mirrors.Badge(ctx, p, repo) | |||
| 30 | + | if state != domain.MirrorFailing && state != domain.MirrorPaused { | |||
| 31 | + | return nil | |||
| 32 | + | } | |||
| 33 | + | return &MirrorBadge{State: string(state), Reason: reason, Command: "ermite mirror status " + repo.String()} | |||
| 34 | + | } | |||
A internal/adapters/web/mirror_test.go +53 -0
| @@ -0,0 +1,53 @@ | |||
| 1 | + | // SPDX-License-Identifier: AGPL-3.0-or-later | |
| 2 | + | ||
| 3 | + | package web | |
| 4 | + | ||
| 5 | + | import ( | |
| 6 | + | "testing" | |
| 7 | + | ||
| 8 | + | "github.com/stretchr/testify/assert" | |
| 9 | + | "github.com/stretchr/testify/mock" | |
| 10 | + | ||
| 11 | + | "bnema.dev/ermite/internal/domain" | |
| 12 | + | "bnema.dev/ermite/internal/ports/mocks" | |
| 13 | + | ) | |
| 14 | + | ||
| 15 | + | func TestMirrorBadge(t *testing.T) { | |
| 16 | + | repo := repoName(t, "proj") | |
| 17 | + | admin := domain.TokenPrincipal(domain.Token{ID: "admin", Scopes: []domain.Scope{domain.ScopeRepoAdmin}, Repos: []domain.RepoName{repo}}) | |
| 18 | + | reader := domain.TokenPrincipal(domain.Token{ID: "reader", Scopes: []domain.Scope{domain.ScopeRepoRead}}) | |
| 19 | + | for _, tc := range []struct { | |
| 20 | + | name string | |
| 21 | + | p domain.Principal | |
| 22 | + | state domain.MirrorState | |
| 23 | + | shown bool | |
| 24 | + | lookup bool | |
| 25 | + | }{ | |
| 26 | + | {"owner failing", domain.Owner(), domain.MirrorFailing, true, true}, | |
| 27 | + | {"admin paused", admin, domain.MirrorPaused, true, true}, | |
| 28 | + | {"anonymous", domain.Anonymous(), domain.MirrorFailing, false, false}, | |
| 29 | + | {"reader", reader, domain.MirrorFailing, false, false}, | |
| 30 | + | {"ok", admin, domain.MirrorOK, false, true}, | |
| 31 | + | {"disabled", admin, domain.MirrorDisabled, false, true}, | |
| 32 | + | } { | |
| 33 | + | t.Run(tc.name, func(t *testing.T) { | |
| 34 | + | w := mocks.NewMirrorWarner(t) | |
| 35 | + | if tc.lookup { | |
| 36 | + | w.EXPECT().Badge(mock.Anything, tc.p, repo).Return(tc.state, "main diverged on remote") | |
| 37 | + | } | |
| 38 | + | s := (&Server{}).WithMirrorWarner(w) | |
| 39 | + | badge := s.mirrorBadge(domain.ContextWithPrincipal(t.Context(), tc.p), repo) | |
| 40 | + | out := renderRail(t, SummaryPage{Mirror: badge}) | |
| 41 | + | if tc.shown { | |
| 42 | + | assert.Contains(t, out, `aria-labelledby="r-mirror"`) | |
| 43 | + | assert.Contains(t, out, "Mirror "+string(tc.state)) | |
| 44 | + | assert.Contains(t, out, "main diverged on remote") | |
| 45 | + | assert.Contains(t, out, "ermite mirror status proj") | |
| 46 | + | } else { | |
| 47 | + | assert.Nil(t, badge) | |
| 48 | + | assert.NotContains(t, out, `id="r-mirror"`) | |
| 49 | + | } | |
| 50 | + | }) | |
| 51 | + | } | |
| 52 | + | assert.Nil(t, (&Server{}).mirrorBadge(domain.ContextWithPrincipal(t.Context(), domain.Owner()), repo)) | |
| 53 | + | } | |
| @@ -0,0 +1,53 @@ | |||||
| 1 | + | // SPDX-License-Identifier: AGPL-3.0-or-later | |||
| 2 | + | ||||
| 3 | + | package web | |||
| 4 | + | ||||
| 5 | + | import ( | |||
| 6 | + | "testing" | |||
| 7 | + | ||||
| 8 | + | "github.com/stretchr/testify/assert" | |||
| 9 | + | "github.com/stretchr/testify/mock" | |||
| 10 | + | ||||
| 11 | + | "bnema.dev/ermite/internal/domain" | |||
| 12 | + | "bnema.dev/ermite/internal/ports/mocks" | |||
| 13 | + | ) | |||
| 14 | + | ||||
| 15 | + | func TestMirrorBadge(t *testing.T) { | |||
| 16 | + | repo := repoName(t, "proj") | |||
| 17 | + | admin := domain.TokenPrincipal(domain.Token{ID: "admin", Scopes: []domain.Scope{domain.ScopeRepoAdmin}, Repos: []domain.RepoName{repo}}) | |||
| 18 | + | reader := domain.TokenPrincipal(domain.Token{ID: "reader", Scopes: []domain.Scope{domain.ScopeRepoRead}}) | |||
| 19 | + | for _, tc := range []struct { | |||
| 20 | + | name string | |||
| 21 | + | p domain.Principal | |||
| 22 | + | state domain.MirrorState | |||
| 23 | + | shown bool | |||
| 24 | + | lookup bool | |||
| 25 | + | }{ | |||
| 26 | + | {"owner failing", domain.Owner(), domain.MirrorFailing, true, true}, | |||
| 27 | + | {"admin paused", admin, domain.MirrorPaused, true, true}, | |||
| 28 | + | {"anonymous", domain.Anonymous(), domain.MirrorFailing, false, false}, | |||
| 29 | + | {"reader", reader, domain.MirrorFailing, false, false}, | |||
| 30 | + | {"ok", admin, domain.MirrorOK, false, true}, | |||
| 31 | + | {"disabled", admin, domain.MirrorDisabled, false, true}, | |||
| 32 | + | } { | |||
| 33 | + | t.Run(tc.name, func(t *testing.T) { | |||
| 34 | + | w := mocks.NewMirrorWarner(t) | |||
| 35 | + | if tc.lookup { | |||
| 36 | + | w.EXPECT().Badge(mock.Anything, tc.p, repo).Return(tc.state, "main diverged on remote") | |||
| 37 | + | } | |||
| 38 | + | s := (&Server{}).WithMirrorWarner(w) | |||
| 39 | + | badge := s.mirrorBadge(domain.ContextWithPrincipal(t.Context(), tc.p), repo) | |||
| 40 | + | out := renderRail(t, SummaryPage{Mirror: badge}) | |||
| 41 | + | if tc.shown { | |||
| 42 | + | assert.Contains(t, out, `aria-labelledby="r-mirror"`) | |||
| 43 | + | assert.Contains(t, out, "Mirror "+string(tc.state)) | |||
| 44 | + | assert.Contains(t, out, "main diverged on remote") | |||
| 45 | + | assert.Contains(t, out, "ermite mirror status proj") | |||
| 46 | + | } else { | |||
| 47 | + | assert.Nil(t, badge) | |||
| 48 | + | assert.NotContains(t, out, `id="r-mirror"`) | |||
| 49 | + | } | |||
| 50 | + | }) | |||
| 51 | + | } | |||
| 52 | + | assert.Nil(t, (&Server{}).mirrorBadge(domain.ContextWithPrincipal(t.Context(), domain.Owner()), repo)) | |||
| 53 | + | } | |||
M internal/adapters/web/pages.templ +11 -0
| @@ -92,6 +92,17 @@ templ latestTagFact(t LatestTag) { | |||
| 92 | 92 | } | |
| 93 | 93 | ||
| 94 | 94 | templ summaryRail(p SummaryPage) { | |
| 95 | + | if p.Mirror != nil { | |
| 96 | + | <section aria-labelledby="r-mirror"> | |
| 97 | + | <h2 id="r-mirror">Mirror</h2> | |
| 98 | + | <p>⚠ Mirror { p.Mirror.State }</p> | |
| 99 | + | if p.Mirror.Reason != "" { | |
| 100 | + | <p>{ p.Mirror.Reason }</p> | |
| 101 | + | } | |
| 102 | + | <p>Run <code>{ p.Mirror.Command }</code></p> | |
| 103 | + | </section> | |
| 104 | + | } | |
| 105 | + | ||
| 95 | 106 | <section aria-labelledby="r-clone"><h2 id="r-clone">Clone</h2>@CloneBlock(p.Clone) | |
| 96 | 107 | </section> | |
| 97 | 108 | <section aria-labelledby="r-facts"> | |
| @@ -92,6 +92,17 @@ templ latestTagFact(t LatestTag) { | |||||
| 92 | } | 92 | } | ||
| 93 | 93 | ||||
| 94 | templ summaryRail(p SummaryPage) { | 94 | templ summaryRail(p SummaryPage) { | ||
| 95 | + | if p.Mirror != nil { | |||
| 96 | + | <section aria-labelledby="r-mirror"> | |||
| 97 | + | <h2 id="r-mirror">Mirror</h2> | |||
| 98 | + | <p>⚠ Mirror { p.Mirror.State }</p> | |||
| 99 | + | if p.Mirror.Reason != "" { | |||
| 100 | + | <p>{ p.Mirror.Reason }</p> | |||
| 101 | + | } | |||
| 102 | + | <p>Run <code>{ p.Mirror.Command }</code></p> | |||
| 103 | + | </section> | |||
| 104 | + | } | |||
| 105 | + | ||||
| 95 | <section aria-labelledby="r-clone"><h2 id="r-clone">Clone</h2>@CloneBlock(p.Clone) | 106 | <section aria-labelledby="r-clone"><h2 id="r-clone">Clone</h2>@CloneBlock(p.Clone) | ||
| 96 | </section> | 107 | </section> | ||
| 97 | <section aria-labelledby="r-facts"> | 108 | <section aria-labelledby="r-facts"> | ||
M internal/adapters/web/pages_templ.go +324 -269
| @@ -438,7 +438,62 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 438 | 438 | templ_7745c5c3_Var22 = templ.NopComponent | |
| 439 | 439 | } | |
| 440 | 440 | ctx = templ.ClearChildren(ctx) | |
| 441 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>") | |
| 441 | + | if p.Mirror != nil { | |
| 442 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "<section aria-labelledby=\"r-mirror\"><h2 id=\"r-mirror\">Mirror</h2><p>⚠ Mirror ") | |
| 443 | + | if templ_7745c5c3_Err != nil { | |
| 444 | + | return templ_7745c5c3_Err | |
| 445 | + | } | |
| 446 | + | var templ_7745c5c3_Var23 string | |
| 447 | + | templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.State) | |
| 448 | + | if templ_7745c5c3_Err != nil { | |
| 449 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 98, Col: 33} | |
| 450 | + | } | |
| 451 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) | |
| 452 | + | if templ_7745c5c3_Err != nil { | |
| 453 | + | return templ_7745c5c3_Err | |
| 454 | + | } | |
| 455 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</p>") | |
| 456 | + | if templ_7745c5c3_Err != nil { | |
| 457 | + | return templ_7745c5c3_Err | |
| 458 | + | } | |
| 459 | + | if p.Mirror.Reason != "" { | |
| 460 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<p>") | |
| 461 | + | if templ_7745c5c3_Err != nil { | |
| 462 | + | return templ_7745c5c3_Err | |
| 463 | + | } | |
| 464 | + | var templ_7745c5c3_Var24 string | |
| 465 | + | templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.Reason) | |
| 466 | + | if templ_7745c5c3_Err != nil { | |
| 467 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 100, Col: 24} | |
| 468 | + | } | |
| 469 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) | |
| 470 | + | if templ_7745c5c3_Err != nil { | |
| 471 | + | return templ_7745c5c3_Err | |
| 472 | + | } | |
| 473 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</p>") | |
| 474 | + | if templ_7745c5c3_Err != nil { | |
| 475 | + | return templ_7745c5c3_Err | |
| 476 | + | } | |
| 477 | + | } | |
| 478 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<p>Run <code>") | |
| 479 | + | if templ_7745c5c3_Err != nil { | |
| 480 | + | return templ_7745c5c3_Err | |
| 481 | + | } | |
| 482 | + | var templ_7745c5c3_Var25 string | |
| 483 | + | templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.Command) | |
| 484 | + | if templ_7745c5c3_Err != nil { | |
| 485 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 102, Col: 34} | |
| 486 | + | } | |
| 487 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) | |
| 488 | + | if templ_7745c5c3_Err != nil { | |
| 489 | + | return templ_7745c5c3_Err | |
| 490 | + | } | |
| 491 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</code></p></section>") | |
| 492 | + | if templ_7745c5c3_Err != nil { | |
| 493 | + | return templ_7745c5c3_Err | |
| 494 | + | } | |
| 495 | + | } | |
| 496 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>") | |
| 442 | 497 | if templ_7745c5c3_Err != nil { | |
| 443 | 498 | return templ_7745c5c3_Err | |
| 444 | 499 | } | |
| @@ -446,25 +501,25 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 446 | 501 | if templ_7745c5c3_Err != nil { | |
| 447 | 502 | return templ_7745c5c3_Err | |
| 448 | 503 | } | |
| 449 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">") | |
| 504 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">") | |
| 450 | 505 | if templ_7745c5c3_Err != nil { | |
| 451 | 506 | return templ_7745c5c3_Err | |
| 452 | 507 | } | |
| 453 | 508 | for _, f := range p.Facts { | |
| 454 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<dt>") | |
| 509 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<dt>") | |
| 455 | 510 | if templ_7745c5c3_Err != nil { | |
| 456 | 511 | return templ_7745c5c3_Err | |
| 457 | 512 | } | |
| 458 | - | var templ_7745c5c3_Var23 string | |
| 459 | - | templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key) | |
| 513 | + | var templ_7745c5c3_Var26 string | |
| 514 | + | templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key) | |
| 460 | 515 | if templ_7745c5c3_Err != nil { | |
| 461 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 101, Col: 15} | |
| 516 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 112, Col: 15} | |
| 462 | 517 | } | |
| 463 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) | |
| 518 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) | |
| 464 | 519 | if templ_7745c5c3_Err != nil { | |
| 465 | 520 | return templ_7745c5c3_Err | |
| 466 | 521 | } | |
| 467 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</dt>") | |
| 522 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</dt>") | |
| 468 | 523 | if templ_7745c5c3_Err != nil { | |
| 469 | 524 | return templ_7745c5c3_Err | |
| 470 | 525 | } | |
| @@ -479,25 +534,25 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 479 | 534 | return templ_7745c5c3_Err | |
| 480 | 535 | } | |
| 481 | 536 | } | |
| 482 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</dl></section>") | |
| 537 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</dl></section>") | |
| 483 | 538 | if templ_7745c5c3_Err != nil { | |
| 484 | 539 | return templ_7745c5c3_Err | |
| 485 | 540 | } | |
| 486 | 541 | if len(p.Recent) > 0 { | |
| 487 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"") | |
| 542 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"") | |
| 488 | 543 | if templ_7745c5c3_Err != nil { | |
| 489 | 544 | return templ_7745c5c3_Err | |
| 490 | 545 | } | |
| 491 | - | var templ_7745c5c3_Var24 templ.SafeURL | |
| 492 | - | templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref)) | |
| 546 | + | var templ_7745c5c3_Var27 templ.SafeURL | |
| 547 | + | templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref)) | |
| 493 | 548 | if templ_7745c5c3_Err != nil { | |
| 494 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 110, Col: 105} | |
| 549 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 121, Col: 105} | |
| 495 | 550 | } | |
| 496 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) | |
| 551 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) | |
| 497 | 552 | if templ_7745c5c3_Err != nil { | |
| 498 | 553 | return templ_7745c5c3_Err | |
| 499 | 554 | } | |
| 500 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "\">View all</a></h2>") | |
| 555 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\">View all</a></h2>") | |
| 501 | 556 | if templ_7745c5c3_Err != nil { | |
| 502 | 557 | return templ_7745c5c3_Err | |
| 503 | 558 | } | |
| @@ -505,7 +560,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 505 | 560 | if templ_7745c5c3_Err != nil { | |
| 506 | 561 | return templ_7745c5c3_Err | |
| 507 | 562 | } | |
| 508 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</section>") | |
| 563 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</section>") | |
| 509 | 564 | if templ_7745c5c3_Err != nil { | |
| 510 | 565 | return templ_7745c5c3_Err | |
| 511 | 566 | } | |
| @@ -517,7 +572,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 517 | 572 | } | |
| 518 | 573 | } | |
| 519 | 574 | if len(p.Outline) > 0 && p.Readme != nil { | |
| 520 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>") | |
| 575 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>") | |
| 521 | 576 | if templ_7745c5c3_Err != nil { | |
| 522 | 577 | return templ_7745c5c3_Err | |
| 523 | 578 | } | |
| @@ -525,7 +580,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||
| 525 | 580 | if templ_7745c5c3_Err != nil { | |
| 526 | 581 | return templ_7745c5c3_Err | |
| 527 | 582 | } | |
| 528 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</section>") | |
| 583 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</section>") | |
| 529 | 584 | if templ_7745c5c3_Err != nil { | |
| 530 | 585 | return templ_7745c5c3_Err | |
| 531 | 586 | } | |
| @@ -551,12 +606,12 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||
| 551 | 606 | }() | |
| 552 | 607 | } | |
| 553 | 608 | ctx = templ.InitializeContext(ctx) | |
| 554 | - | templ_7745c5c3_Var25 := templ.GetChildren(ctx) | |
| 555 | - | if templ_7745c5c3_Var25 == nil { | |
| 556 | - | templ_7745c5c3_Var25 = templ.NopComponent | |
| 609 | + | templ_7745c5c3_Var28 := templ.GetChildren(ctx) | |
| 610 | + | if templ_7745c5c3_Var28 == nil { | |
| 611 | + | templ_7745c5c3_Var28 = templ.NopComponent | |
| 557 | 612 | } | |
| 558 | 613 | ctx = templ.ClearChildren(ctx) | |
| 559 | - | templ_7745c5c3_Var26 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 614 | + | templ_7745c5c3_Var29 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 560 | 615 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 561 | 616 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 562 | 617 | if !templ_7745c5c3_IsBuffer { | |
| @@ -568,7 +623,7 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||
| 568 | 623 | }() | |
| 569 | 624 | } | |
| 570 | 625 | ctx = templ.InitializeContext(ctx) | |
| 571 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<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=\"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>") | |
| 626 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<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=\"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>") | |
| 572 | 627 | if templ_7745c5c3_Err != nil { | |
| 573 | 628 | return templ_7745c5c3_Err | |
| 574 | 629 | } | |
| @@ -576,32 +631,32 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||
| 576 | 631 | if templ_7745c5c3_Err != nil { | |
| 577 | 632 | return templ_7745c5c3_Err | |
| 578 | 633 | } | |
| 579 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</table>") | |
| 634 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</table>") | |
| 580 | 635 | if templ_7745c5c3_Err != nil { | |
| 581 | 636 | return templ_7745c5c3_Err | |
| 582 | 637 | } | |
| 583 | 638 | if p.Note != "" { | |
| 584 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<p class=\"note\">") | |
| 639 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<p class=\"note\">") | |
| 585 | 640 | if templ_7745c5c3_Err != nil { | |
| 586 | 641 | return templ_7745c5c3_Err | |
| 587 | 642 | } | |
| 588 | - | var templ_7745c5c3_Var27 string | |
| 589 | - | templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note) | |
| 643 | + | var templ_7745c5c3_Var30 string | |
| 644 | + | templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note) | |
| 590 | 645 | if templ_7745c5c3_Err != nil { | |
| 591 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 143, Col: 27} | |
| 646 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 154, Col: 27} | |
| 592 | 647 | } | |
| 593 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) | |
| 648 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) | |
| 594 | 649 | if templ_7745c5c3_Err != nil { | |
| 595 | 650 | return templ_7745c5c3_Err | |
| 596 | 651 | } | |
| 597 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</p>") | |
| 652 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</p>") | |
| 598 | 653 | if templ_7745c5c3_Err != nil { | |
| 599 | 654 | return templ_7745c5c3_Err | |
| 600 | 655 | } | |
| 601 | 656 | } | |
| 602 | 657 | return nil | |
| 603 | 658 | }) | |
| 604 | - | templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var26), templ_7745c5c3_Buffer) | |
| 659 | + | templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var29), templ_7745c5c3_Buffer) | |
| 605 | 660 | if templ_7745c5c3_Err != nil { | |
| 606 | 661 | return templ_7745c5c3_Err | |
| 607 | 662 | } | |
| @@ -625,112 +680,112 @@ func refRow(kind string, r RefRow) templ.Component { | |||
| 625 | 680 | }() | |
| 626 | 681 | } | |
| 627 | 682 | ctx = templ.InitializeContext(ctx) | |
| 628 | - | templ_7745c5c3_Var28 := templ.GetChildren(ctx) | |
| 629 | - | if templ_7745c5c3_Var28 == nil { | |
| 630 | - | templ_7745c5c3_Var28 = templ.NopComponent | |
| 683 | + | templ_7745c5c3_Var31 := templ.GetChildren(ctx) | |
| 684 | + | if templ_7745c5c3_Var31 == nil { | |
| 685 | + | templ_7745c5c3_Var31 = templ.NopComponent | |
| 631 | 686 | } | |
| 632 | 687 | ctx = templ.ClearChildren(ctx) | |
| 633 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<tr") | |
| 688 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<tr") | |
| 634 | 689 | if templ_7745c5c3_Err != nil { | |
| 635 | 690 | return templ_7745c5c3_Err | |
| 636 | 691 | } | |
| 637 | 692 | if r.Cursor { | |
| 638 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, " data-cursor") | |
| 693 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, " data-cursor") | |
| 639 | 694 | if templ_7745c5c3_Err != nil { | |
| 640 | 695 | return templ_7745c5c3_Err | |
| 641 | 696 | } | |
| 642 | 697 | } | |
| 643 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "><td class=\"c-kind mute\">") | |
| 698 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "><td class=\"c-kind mute\">") | |
| 644 | 699 | if templ_7745c5c3_Err != nil { | |
| 645 | 700 | return templ_7745c5c3_Err | |
| 646 | 701 | } | |
| 647 | - | var templ_7745c5c3_Var29 string | |
| 648 | - | templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(kind) | |
| 702 | + | var templ_7745c5c3_Var32 string | |
| 703 | + | templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(kind) | |
| 649 | 704 | if templ_7745c5c3_Err != nil { | |
| 650 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 150, Col: 32} | |
| 705 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 161, Col: 32} | |
| 651 | 706 | } | |
| 652 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29)) | |
| 707 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) | |
| 653 | 708 | if templ_7745c5c3_Err != nil { | |
| 654 | 709 | return templ_7745c5c3_Err | |
| 655 | 710 | } | |
| 656 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</td><td class=\"c-name\"><a href=\"") | |
| 711 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</td><td class=\"c-name\"><a href=\"") | |
| 657 | 712 | if templ_7745c5c3_Err != nil { | |
| 658 | 713 | return templ_7745c5c3_Err | |
| 659 | 714 | } | |
| 660 | - | var templ_7745c5c3_Var30 templ.SafeURL | |
| 661 | - | templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href)) | |
| 715 | + | var templ_7745c5c3_Var33 templ.SafeURL | |
| 716 | + | templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href)) | |
| 662 | 717 | if templ_7745c5c3_Err != nil { | |
| 663 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 152, Col: 34} | |
| 718 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 163, Col: 34} | |
| 664 | 719 | } | |
| 665 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) | |
| 720 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) | |
| 666 | 721 | if templ_7745c5c3_Err != nil { | |
| 667 | 722 | return templ_7745c5c3_Err | |
| 668 | 723 | } | |
| 669 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "\">") | |
| 724 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\">") | |
| 670 | 725 | if templ_7745c5c3_Err != nil { | |
| 671 | 726 | return templ_7745c5c3_Err | |
| 672 | 727 | } | |
| 673 | - | var templ_7745c5c3_Var31 string | |
| 674 | - | templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | |
| 728 | + | var templ_7745c5c3_Var34 string | |
| 729 | + | templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | |
| 675 | 730 | if templ_7745c5c3_Err != nil { | |
| 676 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 152, Col: 45} | |
| 731 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 163, Col: 45} | |
| 677 | 732 | } | |
| 678 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) | |
| 733 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) | |
| 679 | 734 | if templ_7745c5c3_Err != nil { | |
| 680 | 735 | return templ_7745c5c3_Err | |
| 681 | 736 | } | |
| 682 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</a> ") | |
| 737 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</a> ") | |
| 683 | 738 | if templ_7745c5c3_Err != nil { | |
| 684 | 739 | return templ_7745c5c3_Err | |
| 685 | 740 | } | |
| 686 | 741 | if r.Default { | |
| 687 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<span class=\"pill\">default</span>") | |
| 742 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<span class=\"pill\">default</span>") | |
| 688 | 743 | if templ_7745c5c3_Err != nil { | |
| 689 | 744 | return templ_7745c5c3_Err | |
| 690 | 745 | } | |
| 691 | 746 | } | |
| 692 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</td><td class=\"c-sha\">") | |
| 747 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</td><td class=\"c-sha\">") | |
| 693 | 748 | if templ_7745c5c3_Err != nil { | |
| 694 | 749 | return templ_7745c5c3_Err | |
| 695 | 750 | } | |
| 696 | 751 | if r.CHref != "" { | |
| 697 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<a href=\"") | |
| 752 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<a href=\"") | |
| 698 | 753 | if templ_7745c5c3_Err != nil { | |
| 699 | 754 | return templ_7745c5c3_Err | |
| 700 | 755 | } | |
| 701 | - | var templ_7745c5c3_Var32 templ.SafeURL | |
| 702 | - | templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref)) | |
| 756 | + | var templ_7745c5c3_Var35 templ.SafeURL | |
| 757 | + | templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref)) | |
| 703 | 758 | if templ_7745c5c3_Err != nil { | |
| 704 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 159, Col: 36} | |
| 759 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 170, Col: 36} | |
| 705 | 760 | } | |
| 706 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) | |
| 761 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35)) | |
| 707 | 762 | if templ_7745c5c3_Err != nil { | |
| 708 | 763 | return templ_7745c5c3_Err | |
| 709 | 764 | } | |
| 710 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "\">") | |
| 765 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "\">") | |
| 711 | 766 | if templ_7745c5c3_Err != nil { | |
| 712 | 767 | return templ_7745c5c3_Err | |
| 713 | 768 | } | |
| 714 | - | var templ_7745c5c3_Var33 string | |
| 715 | - | templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | |
| 769 | + | var templ_7745c5c3_Var36 string | |
| 770 | + | templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | |
| 716 | 771 | if templ_7745c5c3_Err != nil { | |
| 717 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 159, Col: 48} | |
| 772 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 170, Col: 48} | |
| 718 | 773 | } | |
| 719 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) | |
| 774 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36)) | |
| 720 | 775 | if templ_7745c5c3_Err != nil { | |
| 721 | 776 | return templ_7745c5c3_Err | |
| 722 | 777 | } | |
| 723 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "</a>") | |
| 778 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</a>") | |
| 724 | 779 | if templ_7745c5c3_Err != nil { | |
| 725 | 780 | return templ_7745c5c3_Err | |
| 726 | 781 | } | |
| 727 | 782 | } else { | |
| 728 | - | var templ_7745c5c3_Var34 string | |
| 729 | - | templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | |
| 783 | + | var templ_7745c5c3_Var37 string | |
| 784 | + | templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | |
| 730 | 785 | if templ_7745c5c3_Err != nil { | |
| 731 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 161, Col: 13} | |
| 786 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 172, Col: 13} | |
| 732 | 787 | } | |
| 733 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) | |
| 788 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37)) | |
| 734 | 789 | if templ_7745c5c3_Err != nil { | |
| 735 | 790 | return templ_7745c5c3_Err | |
| 736 | 791 | } | |
| @@ -739,69 +794,69 @@ func refRow(kind string, r RefRow) templ.Component { | |||
| 739 | 794 | if templ_7745c5c3_Err != nil { | |
| 740 | 795 | return templ_7745c5c3_Err | |
| 741 | 796 | } | |
| 742 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</td><td class=\"c-sub\">") | |
| 797 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</td><td class=\"c-sub\">") | |
| 743 | 798 | if templ_7745c5c3_Err != nil { | |
| 744 | 799 | return templ_7745c5c3_Err | |
| 745 | 800 | } | |
| 746 | - | var templ_7745c5c3_Var35 string | |
| 747 | - | templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject) | |
| 801 | + | var templ_7745c5c3_Var38 string | |
| 802 | + | templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject) | |
| 748 | 803 | if templ_7745c5c3_Err != nil { | |
| 749 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 165, Col: 31} | |
| 804 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 176, Col: 31} | |
| 750 | 805 | } | |
| 751 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35)) | |
| 806 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38)) | |
| 752 | 807 | if templ_7745c5c3_Err != nil { | |
| 753 | 808 | return templ_7745c5c3_Err | |
| 754 | 809 | } | |
| 755 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</td><td class=\"c-when dim\">") | |
| 810 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</td><td class=\"c-when dim\">") | |
| 756 | 811 | if templ_7745c5c3_Err != nil { | |
| 757 | 812 | return templ_7745c5c3_Err | |
| 758 | 813 | } | |
| 759 | 814 | if r.WhenAt != "" { | |
| 760 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<time datetime=\"") | |
| 815 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<time datetime=\"") | |
| 761 | 816 | if templ_7745c5c3_Err != nil { | |
| 762 | 817 | return templ_7745c5c3_Err | |
| 763 | 818 | } | |
| 764 | - | var templ_7745c5c3_Var36 string | |
| 765 | - | templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | |
| 819 | + | var templ_7745c5c3_Var39 string | |
| 820 | + | templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | |
| 766 | 821 | if templ_7745c5c3_Err != nil { | |
| 767 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 168, Col: 29} | |
| 822 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 179, Col: 29} | |
| 768 | 823 | } | |
| 769 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var36) | |
| 824 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var39) | |
| 770 | 825 | if templ_7745c5c3_Err != nil { | |
| 771 | 826 | return templ_7745c5c3_Err | |
| 772 | 827 | } | |
| 773 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "\" title=\"") | |
| 828 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "\" title=\"") | |
| 774 | 829 | if templ_7745c5c3_Err != nil { | |
| 775 | 830 | return templ_7745c5c3_Err | |
| 776 | 831 | } | |
| 777 | - | var templ_7745c5c3_Var37 string | |
| 778 | - | templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | |
| 832 | + | var templ_7745c5c3_Var40 string | |
| 833 | + | templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | |
| 779 | 834 | if templ_7745c5c3_Err != nil { | |
| 780 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 168, Col: 48} | |
| 835 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 179, Col: 48} | |
| 781 | 836 | } | |
| 782 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var37) | |
| 837 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40) | |
| 783 | 838 | if templ_7745c5c3_Err != nil { | |
| 784 | 839 | return templ_7745c5c3_Err | |
| 785 | 840 | } | |
| 786 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "\">") | |
| 841 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\">") | |
| 787 | 842 | if templ_7745c5c3_Err != nil { | |
| 788 | 843 | return templ_7745c5c3_Err | |
| 789 | 844 | } | |
| 790 | - | var templ_7745c5c3_Var38 string | |
| 791 | - | templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(r.When) | |
| 845 | + | var templ_7745c5c3_Var41 string | |
| 846 | + | templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(r.When) | |
| 792 | 847 | if templ_7745c5c3_Err != nil { | |
| 793 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 168, Col: 59} | |
| 848 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 179, Col: 59} | |
| 794 | 849 | } | |
| 795 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38)) | |
| 850 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41)) | |
| 796 | 851 | if templ_7745c5c3_Err != nil { | |
| 797 | 852 | return templ_7745c5c3_Err | |
| 798 | 853 | } | |
| 799 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</time>") | |
| 854 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</time>") | |
| 800 | 855 | if templ_7745c5c3_Err != nil { | |
| 801 | 856 | return templ_7745c5c3_Err | |
| 802 | 857 | } | |
| 803 | 858 | } | |
| 804 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</td></tr>") | |
| 859 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</td></tr>") | |
| 805 | 860 | if templ_7745c5c3_Err != nil { | |
| 806 | 861 | return templ_7745c5c3_Err | |
| 807 | 862 | } | |
| @@ -825,12 +880,12 @@ func refsRail(p RefsPage) templ.Component { | |||
| 825 | 880 | }() | |
| 826 | 881 | } | |
| 827 | 882 | ctx = templ.InitializeContext(ctx) | |
| 828 | - | templ_7745c5c3_Var39 := templ.GetChildren(ctx) | |
| 829 | - | if templ_7745c5c3_Var39 == nil { | |
| 830 | - | templ_7745c5c3_Var39 = templ.NopComponent | |
| 883 | + | templ_7745c5c3_Var42 := templ.GetChildren(ctx) | |
| 884 | + | if templ_7745c5c3_Var42 == nil { | |
| 885 | + | templ_7745c5c3_Var42 = templ.NopComponent | |
| 831 | 886 | } | |
| 832 | 887 | ctx = templ.ClearChildren(ctx) | |
| 833 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>") | |
| 888 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>") | |
| 834 | 889 | if templ_7745c5c3_Err != nil { | |
| 835 | 890 | return templ_7745c5c3_Err | |
| 836 | 891 | } | |
| @@ -838,7 +893,7 @@ func refsRail(p RefsPage) templ.Component { | |||
| 838 | 893 | if templ_7745c5c3_Err != nil { | |
| 839 | 894 | return templ_7745c5c3_Err | |
| 840 | 895 | } | |
| 841 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</section>") | |
| 896 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</section>") | |
| 842 | 897 | if templ_7745c5c3_Err != nil { | |
| 843 | 898 | return templ_7745c5c3_Err | |
| 844 | 899 | } | |
| @@ -863,12 +918,12 @@ func State(l Layout, p StatePage) templ.Component { | |||
| 863 | 918 | }() | |
| 864 | 919 | } | |
| 865 | 920 | ctx = templ.InitializeContext(ctx) | |
| 866 | - | templ_7745c5c3_Var40 := templ.GetChildren(ctx) | |
| 867 | - | if templ_7745c5c3_Var40 == nil { | |
| 868 | - | templ_7745c5c3_Var40 = templ.NopComponent | |
| 921 | + | templ_7745c5c3_Var43 := templ.GetChildren(ctx) | |
| 922 | + | if templ_7745c5c3_Var43 == nil { | |
| 923 | + | templ_7745c5c3_Var43 = templ.NopComponent | |
| 869 | 924 | } | |
| 870 | 925 | ctx = templ.ClearChildren(ctx) | |
| 871 | - | templ_7745c5c3_Var41 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 926 | + | templ_7745c5c3_Var44 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 872 | 927 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 873 | 928 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 874 | 929 | if !templ_7745c5c3_IsBuffer { | |
| @@ -880,51 +935,51 @@ func State(l Layout, p StatePage) templ.Component { | |||
| 880 | 935 | }() | |
| 881 | 936 | } | |
| 882 | 937 | ctx = templ.InitializeContext(ctx) | |
| 883 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">") | |
| 938 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">") | |
| 884 | 939 | if templ_7745c5c3_Err != nil { | |
| 885 | 940 | return templ_7745c5c3_Err | |
| 886 | 941 | } | |
| 887 | - | var templ_7745c5c3_Var42 string | |
| 888 | - | templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code) | |
| 942 | + | var templ_7745c5c3_Var45 string | |
| 943 | + | templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code) | |
| 889 | 944 | if templ_7745c5c3_Err != nil { | |
| 890 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 185, Col: 30} | |
| 945 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 196, Col: 30} | |
| 891 | 946 | } | |
| 892 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42)) | |
| 947 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45)) | |
| 893 | 948 | if templ_7745c5c3_Err != nil { | |
| 894 | 949 | return templ_7745c5c3_Err | |
| 895 | 950 | } | |
| 896 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "</p><h1 id=\"state-title\">") | |
| 951 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</p><h1 id=\"state-title\">") | |
| 897 | 952 | if templ_7745c5c3_Err != nil { | |
| 898 | 953 | return templ_7745c5c3_Err | |
| 899 | 954 | } | |
| 900 | - | var templ_7745c5c3_Var43 string | |
| 901 | - | templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 955 | + | var templ_7745c5c3_Var46 string | |
| 956 | + | templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 902 | 957 | if templ_7745c5c3_Err != nil { | |
| 903 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 186, Col: 33} | |
| 958 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 197, Col: 33} | |
| 904 | 959 | } | |
| 905 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43)) | |
| 960 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46)) | |
| 906 | 961 | if templ_7745c5c3_Err != nil { | |
| 907 | 962 | return templ_7745c5c3_Err | |
| 908 | 963 | } | |
| 909 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</h1>") | |
| 964 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</h1>") | |
| 910 | 965 | if templ_7745c5c3_Err != nil { | |
| 911 | 966 | return templ_7745c5c3_Err | |
| 912 | 967 | } | |
| 913 | 968 | for _, line := range p.Lines { | |
| 914 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "<p class=\"dim\">") | |
| 969 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "<p class=\"dim\">") | |
| 915 | 970 | if templ_7745c5c3_Err != nil { | |
| 916 | 971 | return templ_7745c5c3_Err | |
| 917 | 972 | } | |
| 918 | - | var templ_7745c5c3_Var44 string | |
| 919 | - | templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 973 | + | var templ_7745c5c3_Var47 string | |
| 974 | + | templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 920 | 975 | if templ_7745c5c3_Err != nil { | |
| 921 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 188, Col: 25} | |
| 976 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 199, Col: 25} | |
| 922 | 977 | } | |
| 923 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44)) | |
| 978 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) | |
| 924 | 979 | if templ_7745c5c3_Err != nil { | |
| 925 | 980 | return templ_7745c5c3_Err | |
| 926 | 981 | } | |
| 927 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</p>") | |
| 982 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</p>") | |
| 928 | 983 | if templ_7745c5c3_Err != nil { | |
| 929 | 984 | return templ_7745c5c3_Err | |
| 930 | 985 | } | |
| @@ -935,49 +990,49 @@ func State(l Layout, p StatePage) templ.Component { | |||
| 935 | 990 | return templ_7745c5c3_Err | |
| 936 | 991 | } | |
| 937 | 992 | } | |
| 938 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<p class=\"state-back\">") | |
| 993 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<p class=\"state-back\">") | |
| 939 | 994 | if templ_7745c5c3_Err != nil { | |
| 940 | 995 | return templ_7745c5c3_Err | |
| 941 | 996 | } | |
| 942 | 997 | for _, b := range p.Back { | |
| 943 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<a href=\"") | |
| 998 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<a href=\"") | |
| 944 | 999 | if templ_7745c5c3_Err != nil { | |
| 945 | 1000 | return templ_7745c5c3_Err | |
| 946 | 1001 | } | |
| 947 | - | var templ_7745c5c3_Var45 templ.SafeURL | |
| 948 | - | templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href)) | |
| 1002 | + | var templ_7745c5c3_Var48 templ.SafeURL | |
| 1003 | + | templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href)) | |
| 949 | 1004 | if templ_7745c5c3_Err != nil { | |
| 950 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 195, Col: 36} | |
| 1005 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 206, Col: 36} | |
| 951 | 1006 | } | |
| 952 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45)) | |
| 1007 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48)) | |
| 953 | 1008 | if templ_7745c5c3_Err != nil { | |
| 954 | 1009 | return templ_7745c5c3_Err | |
| 955 | 1010 | } | |
| 956 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "\">") | |
| 1011 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "\">") | |
| 957 | 1012 | if templ_7745c5c3_Err != nil { | |
| 958 | 1013 | return templ_7745c5c3_Err | |
| 959 | 1014 | } | |
| 960 | - | var templ_7745c5c3_Var46 string | |
| 961 | - | templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label) | |
| 1015 | + | var templ_7745c5c3_Var49 string | |
| 1016 | + | templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label) | |
| 962 | 1017 | if templ_7745c5c3_Err != nil { | |
| 963 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 195, Col: 48} | |
| 1018 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 206, Col: 48} | |
| 964 | 1019 | } | |
| 965 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46)) | |
| 1020 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49)) | |
| 966 | 1021 | if templ_7745c5c3_Err != nil { | |
| 967 | 1022 | return templ_7745c5c3_Err | |
| 968 | 1023 | } | |
| 969 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</a>") | |
| 1024 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</a>") | |
| 970 | 1025 | if templ_7745c5c3_Err != nil { | |
| 971 | 1026 | return templ_7745c5c3_Err | |
| 972 | 1027 | } | |
| 973 | 1028 | } | |
| 974 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</p></section>") | |
| 1029 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</p></section>") | |
| 975 | 1030 | if templ_7745c5c3_Err != nil { | |
| 976 | 1031 | return templ_7745c5c3_Err | |
| 977 | 1032 | } | |
| 978 | 1033 | return nil | |
| 979 | 1034 | }) | |
| 980 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var41), templ_7745c5c3_Buffer) | |
| 1035 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var44), templ_7745c5c3_Buffer) | |
| 981 | 1036 | if templ_7745c5c3_Err != nil { | |
| 982 | 1037 | return templ_7745c5c3_Err | |
| 983 | 1038 | } | |
| @@ -1006,12 +1061,12 @@ func Login(l Layout, p LoginPage) templ.Component { | |||
| 1006 | 1061 | }() | |
| 1007 | 1062 | } | |
| 1008 | 1063 | ctx = templ.InitializeContext(ctx) | |
| 1009 | - | templ_7745c5c3_Var47 := templ.GetChildren(ctx) | |
| 1010 | - | if templ_7745c5c3_Var47 == nil { | |
| 1011 | - | templ_7745c5c3_Var47 = templ.NopComponent | |
| 1064 | + | templ_7745c5c3_Var50 := templ.GetChildren(ctx) | |
| 1065 | + | if templ_7745c5c3_Var50 == nil { | |
| 1066 | + | templ_7745c5c3_Var50 = templ.NopComponent | |
| 1012 | 1067 | } | |
| 1013 | 1068 | ctx = templ.ClearChildren(ctx) | |
| 1014 | - | templ_7745c5c3_Var48 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1069 | + | templ_7745c5c3_Var51 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1015 | 1070 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 1016 | 1071 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 1017 | 1072 | if !templ_7745c5c3_IsBuffer { | |
| @@ -1023,75 +1078,75 @@ func Login(l Layout, p LoginPage) templ.Component { | |||
| 1023 | 1078 | }() | |
| 1024 | 1079 | } | |
| 1025 | 1080 | ctx = templ.InitializeContext(ctx) | |
| 1026 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | |
| 1081 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | |
| 1027 | 1082 | if templ_7745c5c3_Err != nil { | |
| 1028 | 1083 | return templ_7745c5c3_Err | |
| 1029 | 1084 | } | |
| 1030 | - | var templ_7745c5c3_Var49 string | |
| 1031 | - | templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 1085 | + | var templ_7745c5c3_Var52 string | |
| 1086 | + | templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 1032 | 1087 | if templ_7745c5c3_Err != nil { | |
| 1033 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 210, Col: 33} | |
| 1088 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 221, Col: 33} | |
| 1034 | 1089 | } | |
| 1035 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49)) | |
| 1090 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52)) | |
| 1036 | 1091 | if templ_7745c5c3_Err != nil { | |
| 1037 | 1092 | return templ_7745c5c3_Err | |
| 1038 | 1093 | } | |
| 1039 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "</h1>") | |
| 1094 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</h1>") | |
| 1040 | 1095 | if templ_7745c5c3_Err != nil { | |
| 1041 | 1096 | return templ_7745c5c3_Err | |
| 1042 | 1097 | } | |
| 1043 | 1098 | for _, line := range p.Lines { | |
| 1044 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<p class=\"dim\">") | |
| 1099 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<p class=\"dim\">") | |
| 1045 | 1100 | if templ_7745c5c3_Err != nil { | |
| 1046 | 1101 | return templ_7745c5c3_Err | |
| 1047 | 1102 | } | |
| 1048 | - | var templ_7745c5c3_Var50 string | |
| 1049 | - | templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 1103 | + | var templ_7745c5c3_Var53 string | |
| 1104 | + | templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 1050 | 1105 | if templ_7745c5c3_Err != nil { | |
| 1051 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 212, Col: 25} | |
| 1106 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 223, Col: 25} | |
| 1052 | 1107 | } | |
| 1053 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var50)) | |
| 1108 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53)) | |
| 1054 | 1109 | if templ_7745c5c3_Err != nil { | |
| 1055 | 1110 | return templ_7745c5c3_Err | |
| 1056 | 1111 | } | |
| 1057 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</p>") | |
| 1112 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</p>") | |
| 1058 | 1113 | if templ_7745c5c3_Err != nil { | |
| 1059 | 1114 | return templ_7745c5c3_Err | |
| 1060 | 1115 | } | |
| 1061 | 1116 | } | |
| 1062 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "<form class=\"state-act\" method=\"post\" action=\"") | |
| 1117 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<form class=\"state-act\" method=\"post\" action=\"") | |
| 1063 | 1118 | if templ_7745c5c3_Err != nil { | |
| 1064 | 1119 | return templ_7745c5c3_Err | |
| 1065 | 1120 | } | |
| 1066 | - | var templ_7745c5c3_Var51 templ.SafeURL | |
| 1067 | - | templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action)) | |
| 1121 | + | var templ_7745c5c3_Var54 templ.SafeURL | |
| 1122 | + | templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action)) | |
| 1068 | 1123 | if templ_7745c5c3_Err != nil { | |
| 1069 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 214, Col: 73} | |
| 1124 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 225, Col: 73} | |
| 1070 | 1125 | } | |
| 1071 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51)) | |
| 1126 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54)) | |
| 1072 | 1127 | if templ_7745c5c3_Err != nil { | |
| 1073 | 1128 | return templ_7745c5c3_Err | |
| 1074 | 1129 | } | |
| 1075 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">") | |
| 1130 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">") | |
| 1076 | 1131 | if templ_7745c5c3_Err != nil { | |
| 1077 | 1132 | return templ_7745c5c3_Err | |
| 1078 | 1133 | } | |
| 1079 | - | var templ_7745c5c3_Var52 string | |
| 1080 | - | templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | |
| 1134 | + | var templ_7745c5c3_Var55 string | |
| 1135 | + | templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | |
| 1081 | 1136 | if templ_7745c5c3_Err != nil { | |
| 1082 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 215, Col: 56} | |
| 1137 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 226, Col: 56} | |
| 1083 | 1138 | } | |
| 1084 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52)) | |
| 1139 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55)) | |
| 1085 | 1140 | if templ_7745c5c3_Err != nil { | |
| 1086 | 1141 | return templ_7745c5c3_Err | |
| 1087 | 1142 | } | |
| 1088 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | |
| 1143 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | |
| 1089 | 1144 | if templ_7745c5c3_Err != nil { | |
| 1090 | 1145 | return templ_7745c5c3_Err | |
| 1091 | 1146 | } | |
| 1092 | 1147 | return nil | |
| 1093 | 1148 | }) | |
| 1094 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var48), templ_7745c5c3_Buffer) | |
| 1149 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var51), templ_7745c5c3_Buffer) | |
| 1095 | 1150 | if templ_7745c5c3_Err != nil { | |
| 1096 | 1151 | return templ_7745c5c3_Err | |
| 1097 | 1152 | } | |
| @@ -1117,12 +1172,12 @@ func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component { | |||
| 1117 | 1172 | }() | |
| 1118 | 1173 | } | |
| 1119 | 1174 | ctx = templ.InitializeContext(ctx) | |
| 1120 | - | templ_7745c5c3_Var53 := templ.GetChildren(ctx) | |
| 1121 | - | if templ_7745c5c3_Var53 == nil { | |
| 1122 | - | templ_7745c5c3_Var53 = templ.NopComponent | |
| 1175 | + | templ_7745c5c3_Var56 := templ.GetChildren(ctx) | |
| 1176 | + | if templ_7745c5c3_Var56 == nil { | |
| 1177 | + | templ_7745c5c3_Var56 = templ.NopComponent | |
| 1123 | 1178 | } | |
| 1124 | 1179 | ctx = templ.ClearChildren(ctx) | |
| 1125 | - | templ_7745c5c3_Var54 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1180 | + | templ_7745c5c3_Var57 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1126 | 1181 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 1127 | 1182 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 1128 | 1183 | if !templ_7745c5c3_IsBuffer { | |
| @@ -1134,88 +1189,88 @@ func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component { | |||
| 1134 | 1189 | }() | |
| 1135 | 1190 | } | |
| 1136 | 1191 | ctx = templ.InitializeContext(ctx) | |
| 1137 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | |
| 1192 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | |
| 1138 | 1193 | if templ_7745c5c3_Err != nil { | |
| 1139 | 1194 | return templ_7745c5c3_Err | |
| 1140 | 1195 | } | |
| 1141 | - | var templ_7745c5c3_Var55 string | |
| 1142 | - | templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 1196 | + | var templ_7745c5c3_Var58 string | |
| 1197 | + | templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | |
| 1143 | 1198 | if templ_7745c5c3_Err != nil { | |
| 1144 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 227, Col: 33} | |
| 1199 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 238, Col: 33} | |
| 1145 | 1200 | } | |
| 1146 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55)) | |
| 1201 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var58)) | |
| 1147 | 1202 | if templ_7745c5c3_Err != nil { | |
| 1148 | 1203 | return templ_7745c5c3_Err | |
| 1149 | 1204 | } | |
| 1150 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"") | |
| 1205 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"") | |
| 1151 | 1206 | if templ_7745c5c3_Err != nil { | |
| 1152 | 1207 | return templ_7745c5c3_Err | |
| 1153 | 1208 | } | |
| 1154 | - | var templ_7745c5c3_Var56 string | |
| 1155 | - | templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | |
| 1209 | + | var templ_7745c5c3_Var59 string | |
| 1210 | + | templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | |
| 1156 | 1211 | if templ_7745c5c3_Err != nil { | |
| 1157 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 229, Col: 87} | |
| 1212 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 240, Col: 87} | |
| 1158 | 1213 | } | |
| 1159 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var56) | |
| 1214 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59) | |
| 1160 | 1215 | if templ_7745c5c3_Err != nil { | |
| 1161 | 1216 | return templ_7745c5c3_Err | |
| 1162 | 1217 | } | |
| 1163 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "\" data-finish=\"") | |
| 1218 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "\" data-finish=\"") | |
| 1164 | 1219 | if templ_7745c5c3_Err != nil { | |
| 1165 | 1220 | return templ_7745c5c3_Err | |
| 1166 | 1221 | } | |
| 1167 | - | var templ_7745c5c3_Var57 string | |
| 1168 | - | templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | |
| 1222 | + | var templ_7745c5c3_Var60 string | |
| 1223 | + | templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | |
| 1169 | 1224 | if templ_7745c5c3_Err != nil { | |
| 1170 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 229, Col: 112} | |
| 1225 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 240, Col: 112} | |
| 1171 | 1226 | } | |
| 1172 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var57) | |
| 1227 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60) | |
| 1173 | 1228 | if templ_7745c5c3_Err != nil { | |
| 1174 | 1229 | return templ_7745c5c3_Err | |
| 1175 | 1230 | } | |
| 1176 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "\">") | |
| 1231 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "\">") | |
| 1177 | 1232 | if templ_7745c5c3_Err != nil { | |
| 1178 | 1233 | return templ_7745c5c3_Err | |
| 1179 | 1234 | } | |
| 1180 | - | var templ_7745c5c3_Var58 string | |
| 1181 | - | templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | |
| 1235 | + | var templ_7745c5c3_Var61 string | |
| 1236 | + | templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | |
| 1182 | 1237 | if templ_7745c5c3_Err != nil { | |
| 1183 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 229, Col: 125} | |
| 1238 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 240, Col: 125} | |
| 1184 | 1239 | } | |
| 1185 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var58)) | |
| 1240 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61)) | |
| 1186 | 1241 | if templ_7745c5c3_Err != nil { | |
| 1187 | 1242 | return templ_7745c5c3_Err | |
| 1188 | 1243 | } | |
| 1189 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | |
| 1244 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | |
| 1190 | 1245 | if templ_7745c5c3_Err != nil { | |
| 1191 | 1246 | return templ_7745c5c3_Err | |
| 1192 | 1247 | } | |
| 1193 | 1248 | for _, line := range p.Lines { | |
| 1194 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<p class=\"dim\">") | |
| 1249 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<p class=\"dim\">") | |
| 1195 | 1250 | if templ_7745c5c3_Err != nil { | |
| 1196 | 1251 | return templ_7745c5c3_Err | |
| 1197 | 1252 | } | |
| 1198 | - | var templ_7745c5c3_Var59 string | |
| 1199 | - | templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 1253 | + | var templ_7745c5c3_Var62 string | |
| 1254 | + | templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(line) | |
| 1200 | 1255 | if templ_7745c5c3_Err != nil { | |
| 1201 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 233, Col: 25} | |
| 1256 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 244, Col: 25} | |
| 1202 | 1257 | } | |
| 1203 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59)) | |
| 1258 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62)) | |
| 1204 | 1259 | if templ_7745c5c3_Err != nil { | |
| 1205 | 1260 | return templ_7745c5c3_Err | |
| 1206 | 1261 | } | |
| 1207 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</p>") | |
| 1262 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</p>") | |
| 1208 | 1263 | if templ_7745c5c3_Err != nil { | |
| 1209 | 1264 | return templ_7745c5c3_Err | |
| 1210 | 1265 | } | |
| 1211 | 1266 | } | |
| 1212 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | |
| 1267 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | |
| 1213 | 1268 | if templ_7745c5c3_Err != nil { | |
| 1214 | 1269 | return templ_7745c5c3_Err | |
| 1215 | 1270 | } | |
| 1216 | 1271 | return nil | |
| 1217 | 1272 | }) | |
| 1218 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var54), templ_7745c5c3_Buffer) | |
| 1273 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var57), templ_7745c5c3_Buffer) | |
| 1219 | 1274 | if templ_7745c5c3_Err != nil { | |
| 1220 | 1275 | return templ_7745c5c3_Err | |
| 1221 | 1276 | } | |
| @@ -1240,12 +1295,12 @@ func Passkeys(l Layout, p PasskeysPage) templ.Component { | |||
| 1240 | 1295 | }() | |
| 1241 | 1296 | } | |
| 1242 | 1297 | ctx = templ.InitializeContext(ctx) | |
| 1243 | - | templ_7745c5c3_Var60 := templ.GetChildren(ctx) | |
| 1244 | - | if templ_7745c5c3_Var60 == nil { | |
| 1245 | - | templ_7745c5c3_Var60 = templ.NopComponent | |
| 1298 | + | templ_7745c5c3_Var63 := templ.GetChildren(ctx) | |
| 1299 | + | if templ_7745c5c3_Var63 == nil { | |
| 1300 | + | templ_7745c5c3_Var63 = templ.NopComponent | |
| 1246 | 1301 | } | |
| 1247 | 1302 | ctx = templ.ClearChildren(ctx) | |
| 1248 | - | templ_7745c5c3_Var61 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1303 | + | templ_7745c5c3_Var64 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | |
| 1249 | 1304 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | |
| 1250 | 1305 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | |
| 1251 | 1306 | if !templ_7745c5c3_IsBuffer { | |
| @@ -1257,231 +1312,231 @@ func Passkeys(l Layout, p PasskeysPage) templ.Component { | |||
| 1257 | 1312 | }() | |
| 1258 | 1313 | } | |
| 1259 | 1314 | ctx = templ.InitializeContext(ctx) | |
| 1260 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">") | |
| 1315 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">") | |
| 1261 | 1316 | if templ_7745c5c3_Err != nil { | |
| 1262 | 1317 | return templ_7745c5c3_Err | |
| 1263 | 1318 | } | |
| 1264 | - | var templ_7745c5c3_Var62 string | |
| 1265 | - | templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows))) | |
| 1319 | + | var templ_7745c5c3_Var65 string | |
| 1320 | + | templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows))) | |
| 1266 | 1321 | if templ_7745c5c3_Err != nil { | |
| 1267 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 243, Col: 81} | |
| 1322 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 254, Col: 81} | |
| 1268 | 1323 | } | |
| 1269 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62)) | |
| 1324 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65)) | |
| 1270 | 1325 | if templ_7745c5c3_Err != nil { | |
| 1271 | 1326 | return templ_7745c5c3_Err | |
| 1272 | 1327 | } | |
| 1273 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</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>") | |
| 1328 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "</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>") | |
| 1274 | 1329 | if templ_7745c5c3_Err != nil { | |
| 1275 | 1330 | return templ_7745c5c3_Err | |
| 1276 | 1331 | } | |
| 1277 | 1332 | if len(p.Rows) > 0 { | |
| 1278 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><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>") | |
| 1333 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><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>") | |
| 1279 | 1334 | if templ_7745c5c3_Err != nil { | |
| 1280 | 1335 | return templ_7745c5c3_Err | |
| 1281 | 1336 | } | |
| 1282 | 1337 | for _, r := range p.Rows { | |
| 1283 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<tr><td class=\"c-name\">") | |
| 1338 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<tr><td class=\"c-name\">") | |
| 1284 | 1339 | if templ_7745c5c3_Err != nil { | |
| 1285 | 1340 | return templ_7745c5c3_Err | |
| 1286 | 1341 | } | |
| 1287 | - | var templ_7745c5c3_Var63 string | |
| 1288 | - | templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | |
| 1342 | + | var templ_7745c5c3_Var66 string | |
| 1343 | + | templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | |
| 1289 | 1344 | if templ_7745c5c3_Err != nil { | |
| 1290 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 259, Col: 34} | |
| 1345 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 270, Col: 34} | |
| 1291 | 1346 | } | |
| 1292 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63)) | |
| 1347 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66)) | |
| 1293 | 1348 | if templ_7745c5c3_Err != nil { | |
| 1294 | 1349 | return templ_7745c5c3_Err | |
| 1295 | 1350 | } | |
| 1296 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</td><td class=\"c-when nowrap\"><time") | |
| 1351 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "</td><td class=\"c-when nowrap\"><time") | |
| 1297 | 1352 | if templ_7745c5c3_Err != nil { | |
| 1298 | 1353 | return templ_7745c5c3_Err | |
| 1299 | 1354 | } | |
| 1300 | 1355 | if r.CreatedAt != "" { | |
| 1301 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, " datetime=\"") | |
| 1356 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, " datetime=\"") | |
| 1302 | 1357 | if templ_7745c5c3_Err != nil { | |
| 1303 | 1358 | return templ_7745c5c3_Err | |
| 1304 | 1359 | } | |
| 1305 | - | var templ_7745c5c3_Var64 string | |
| 1306 | - | templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt) | |
| 1360 | + | var templ_7745c5c3_Var67 string | |
| 1361 | + | templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt) | |
| 1307 | 1362 | if templ_7745c5c3_Err != nil { | |
| 1308 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 263, Col: 32} | |
| 1363 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 274, Col: 32} | |
| 1309 | 1364 | } | |
| 1310 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var64) | |
| 1365 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var67) | |
| 1311 | 1366 | if templ_7745c5c3_Err != nil { | |
| 1312 | 1367 | return templ_7745c5c3_Err | |
| 1313 | 1368 | } | |
| 1314 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "\"") | |
| 1369 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\"") | |
| 1315 | 1370 | if templ_7745c5c3_Err != nil { | |
| 1316 | 1371 | return templ_7745c5c3_Err | |
| 1317 | 1372 | } | |
| 1318 | 1373 | } | |
| 1319 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, ">") | |
| 1374 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, ">") | |
| 1320 | 1375 | if templ_7745c5c3_Err != nil { | |
| 1321 | 1376 | return templ_7745c5c3_Err | |
| 1322 | 1377 | } | |
| 1323 | - | var templ_7745c5c3_Var65 string | |
| 1324 | - | templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created) | |
| 1378 | + | var templ_7745c5c3_Var68 string | |
| 1379 | + | templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created) | |
| 1325 | 1380 | if templ_7745c5c3_Err != nil { | |
| 1326 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 265, Col: 20} | |
| 1381 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 276, Col: 20} | |
| 1327 | 1382 | } | |
| 1328 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65)) | |
| 1383 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68)) | |
| 1329 | 1384 | if templ_7745c5c3_Err != nil { | |
| 1330 | 1385 | return templ_7745c5c3_Err | |
| 1331 | 1386 | } | |
| 1332 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</time></td><td class=\"c-when nowrap\"><time") | |
| 1387 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</time></td><td class=\"c-when nowrap\"><time") | |
| 1333 | 1388 | if templ_7745c5c3_Err != nil { | |
| 1334 | 1389 | return templ_7745c5c3_Err | |
| 1335 | 1390 | } | |
| 1336 | 1391 | if r.LastUsedAt != "" { | |
| 1337 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, " datetime=\"") | |
| 1392 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, " datetime=\"") | |
| 1338 | 1393 | if templ_7745c5c3_Err != nil { | |
| 1339 | 1394 | return templ_7745c5c3_Err | |
| 1340 | 1395 | } | |
| 1341 | - | var templ_7745c5c3_Var66 string | |
| 1342 | - | templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt) | |
| 1396 | + | var templ_7745c5c3_Var69 string | |
| 1397 | + | templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt) | |
| 1343 | 1398 | if templ_7745c5c3_Err != nil { | |
| 1344 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 270, Col: 33} | |
| 1399 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 281, Col: 33} | |
| 1345 | 1400 | } | |
| 1346 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var66) | |
| 1401 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69) | |
| 1347 | 1402 | if templ_7745c5c3_Err != nil { | |
| 1348 | 1403 | return templ_7745c5c3_Err | |
| 1349 | 1404 | } | |
| 1350 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "\"") | |
| 1405 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "\"") | |
| 1351 | 1406 | if templ_7745c5c3_Err != nil { | |
| 1352 | 1407 | return templ_7745c5c3_Err | |
| 1353 | 1408 | } | |
| 1354 | 1409 | } | |
| 1355 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, ">") | |
| 1410 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, ">") | |
| 1356 | 1411 | if templ_7745c5c3_Err != nil { | |
| 1357 | 1412 | return templ_7745c5c3_Err | |
| 1358 | 1413 | } | |
| 1359 | - | var templ_7745c5c3_Var67 string | |
| 1360 | - | templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed) | |
| 1414 | + | var templ_7745c5c3_Var70 string | |
| 1415 | + | templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed) | |
| 1361 | 1416 | if templ_7745c5c3_Err != nil { | |
| 1362 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 272, Col: 21} | |
| 1417 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 283, Col: 21} | |
| 1363 | 1418 | } | |
| 1364 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67)) | |
| 1419 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70)) | |
| 1365 | 1420 | if templ_7745c5c3_Err != nil { | |
| 1366 | 1421 | return templ_7745c5c3_Err | |
| 1367 | 1422 | } | |
| 1368 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</time></td><td class=\"c-sync\">") | |
| 1423 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "</time></td><td class=\"c-sync\">") | |
| 1369 | 1424 | if templ_7745c5c3_Err != nil { | |
| 1370 | 1425 | return templ_7745c5c3_Err | |
| 1371 | 1426 | } | |
| 1372 | 1427 | if r.Synced { | |
| 1373 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "yes") | |
| 1428 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "yes") | |
| 1374 | 1429 | if templ_7745c5c3_Err != nil { | |
| 1375 | 1430 | return templ_7745c5c3_Err | |
| 1376 | 1431 | } | |
| 1377 | 1432 | } else { | |
| 1378 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "no") | |
| 1433 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "no") | |
| 1379 | 1434 | if templ_7745c5c3_Err != nil { | |
| 1380 | 1435 | return templ_7745c5c3_Err | |
| 1381 | 1436 | } | |
| 1382 | 1437 | } | |
| 1383 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "</td><td class=\"c-act\"><form method=\"post\" action=\"") | |
| 1438 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "</td><td class=\"c-act\"><form method=\"post\" action=\"") | |
| 1384 | 1439 | if templ_7745c5c3_Err != nil { | |
| 1385 | 1440 | return templ_7745c5c3_Err | |
| 1386 | 1441 | } | |
| 1387 | - | var templ_7745c5c3_Var68 templ.SafeURL | |
| 1388 | - | templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove)) | |
| 1442 | + | var templ_7745c5c3_Var71 templ.SafeURL | |
| 1443 | + | templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove)) | |
| 1389 | 1444 | if templ_7745c5c3_Err != nil { | |
| 1390 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 282, Col: 60} | |
| 1445 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 293, Col: 60} | |
| 1391 | 1446 | } | |
| 1392 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68)) | |
| 1447 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71)) | |
| 1393 | 1448 | if templ_7745c5c3_Err != nil { | |
| 1394 | 1449 | return templ_7745c5c3_Err | |
| 1395 | 1450 | } | |
| 1396 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"") | |
| 1451 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"") | |
| 1397 | 1452 | if templ_7745c5c3_Err != nil { | |
| 1398 | 1453 | return templ_7745c5c3_Err | |
| 1399 | 1454 | } | |
| 1400 | - | var templ_7745c5c3_Var69 string | |
| 1401 | - | templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name) | |
| 1455 | + | var templ_7745c5c3_Var72 string | |
| 1456 | + | templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name) | |
| 1402 | 1457 | if templ_7745c5c3_Err != nil { | |
| 1403 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 283, Col: 89} | |
| 1458 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 294, Col: 89} | |
| 1404 | 1459 | } | |
| 1405 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69) | |
| 1460 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72) | |
| 1406 | 1461 | if templ_7745c5c3_Err != nil { | |
| 1407 | 1462 | return templ_7745c5c3_Err | |
| 1408 | 1463 | } | |
| 1409 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "\">Remove</button></form></td></tr>") | |
| 1464 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "\">Remove</button></form></td></tr>") | |
| 1410 | 1465 | if templ_7745c5c3_Err != nil { | |
| 1411 | 1466 | return templ_7745c5c3_Err | |
| 1412 | 1467 | } | |
| 1413 | 1468 | } | |
| 1414 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "</tbody></table>") | |
| 1469 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "</tbody></table>") | |
| 1415 | 1470 | if templ_7745c5c3_Err != nil { | |
| 1416 | 1471 | return templ_7745c5c3_Err | |
| 1417 | 1472 | } | |
| 1418 | 1473 | } else { | |
| 1419 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<p class=\"lede dim\">no passkeys yet.</p>") | |
| 1474 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "<p class=\"lede dim\">no passkeys yet.</p>") | |
| 1420 | 1475 | if templ_7745c5c3_Err != nil { | |
| 1421 | 1476 | return templ_7745c5c3_Err | |
| 1422 | 1477 | } | |
| 1423 | 1478 | } | |
| 1424 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, " ") | |
| 1479 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, " ") | |
| 1425 | 1480 | if templ_7745c5c3_Err != nil { | |
| 1426 | 1481 | return templ_7745c5c3_Err | |
| 1427 | 1482 | } | |
| 1428 | 1483 | if p.Full { | |
| 1429 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "<p class=\"dim\">") | |
| 1484 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "<p class=\"dim\">") | |
| 1430 | 1485 | if templ_7745c5c3_Err != nil { | |
| 1431 | 1486 | return templ_7745c5c3_Err | |
| 1432 | 1487 | } | |
| 1433 | - | var templ_7745c5c3_Var70 string | |
| 1434 | - | templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max)) | |
| 1488 | + | var templ_7745c5c3_Var73 string | |
| 1489 | + | templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max)) | |
| 1435 | 1490 | if templ_7745c5c3_Err != nil { | |
| 1436 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 294, Col: 31} | |
| 1491 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 305, Col: 31} | |
| 1437 | 1492 | } | |
| 1438 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70)) | |
| 1493 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var73)) | |
| 1439 | 1494 | if templ_7745c5c3_Err != nil { | |
| 1440 | 1495 | return templ_7745c5c3_Err | |
| 1441 | 1496 | } | |
| 1442 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, " passkeys are registered, the most there can be. Remove one to add another.</p>") | |
| 1497 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, " passkeys are registered, the most there can be. Remove one to add another.</p>") | |
| 1443 | 1498 | if templ_7745c5c3_Err != nil { | |
| 1444 | 1499 | return templ_7745c5c3_Err | |
| 1445 | 1500 | } | |
| 1446 | 1501 | } else { | |
| 1447 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "<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=\"") | |
| 1502 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "<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=\"") | |
| 1448 | 1503 | if templ_7745c5c3_Err != nil { | |
| 1449 | 1504 | return templ_7745c5c3_Err | |
| 1450 | 1505 | } | |
| 1451 | - | var templ_7745c5c3_Var71 string | |
| 1452 | - | templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | |
| 1506 | + | var templ_7745c5c3_Var74 string | |
| 1507 | + | templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | |
| 1453 | 1508 | if templ_7745c5c3_Err != nil { | |
| 1454 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 299, Col: 90} | |
| 1509 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 310, Col: 90} | |
| 1455 | 1510 | } | |
| 1456 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var71) | |
| 1511 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var74) | |
| 1457 | 1512 | if templ_7745c5c3_Err != nil { | |
| 1458 | 1513 | return templ_7745c5c3_Err | |
| 1459 | 1514 | } | |
| 1460 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "\" data-finish=\"") | |
| 1515 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "\" data-finish=\"") | |
| 1461 | 1516 | if templ_7745c5c3_Err != nil { | |
| 1462 | 1517 | return templ_7745c5c3_Err | |
| 1463 | 1518 | } | |
| 1464 | - | var templ_7745c5c3_Var72 string | |
| 1465 | - | templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | |
| 1519 | + | var templ_7745c5c3_Var75 string | |
| 1520 | + | templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | |
| 1466 | 1521 | if templ_7745c5c3_Err != nil { | |
| 1467 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 299, Col: 115} | |
| 1522 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 310, Col: 115} | |
| 1468 | 1523 | } | |
| 1469 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72) | |
| 1524 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var75) | |
| 1470 | 1525 | if templ_7745c5c3_Err != nil { | |
| 1471 | 1526 | return templ_7745c5c3_Err | |
| 1472 | 1527 | } | |
| 1473 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "\">Add a passkey</button></form>") | |
| 1528 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "\">Add a passkey</button></form>") | |
| 1474 | 1529 | if templ_7745c5c3_Err != nil { | |
| 1475 | 1530 | return templ_7745c5c3_Err | |
| 1476 | 1531 | } | |
| 1477 | 1532 | } | |
| 1478 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | |
| 1533 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | |
| 1479 | 1534 | if templ_7745c5c3_Err != nil { | |
| 1480 | 1535 | return templ_7745c5c3_Err | |
| 1481 | 1536 | } | |
| 1482 | 1537 | return nil | |
| 1483 | 1538 | }) | |
| 1484 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var61), templ_7745c5c3_Buffer) | |
| 1539 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var64), templ_7745c5c3_Buffer) | |
| 1485 | 1540 | if templ_7745c5c3_Err != nil { | |
| 1486 | 1541 | return templ_7745c5c3_Err | |
| 1487 | 1542 | } | |
| @@ -438,7 +438,62 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 438 | templ_7745c5c3_Var22 = templ.NopComponent | 438 | templ_7745c5c3_Var22 = templ.NopComponent | ||
| 439 | } | 439 | } | ||
| 440 | ctx = templ.ClearChildren(ctx) | 440 | ctx = templ.ClearChildren(ctx) | ||
| 441 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>") | 441 | + | if p.Mirror != nil { |
| 442 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "<section aria-labelledby=\"r-mirror\"><h2 id=\"r-mirror\">Mirror</h2><p>⚠ Mirror ") | |||
| 443 | + | if templ_7745c5c3_Err != nil { | |||
| 444 | + | return templ_7745c5c3_Err | |||
| 445 | + | } | |||
| 446 | + | var templ_7745c5c3_Var23 string | |||
| 447 | + | templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.State) | |||
| 448 | + | if templ_7745c5c3_Err != nil { | |||
| 449 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 98, Col: 33} | |||
| 450 | + | } | |||
| 451 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) | |||
| 452 | + | if templ_7745c5c3_Err != nil { | |||
| 453 | + | return templ_7745c5c3_Err | |||
| 454 | + | } | |||
| 455 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</p>") | |||
| 456 | + | if templ_7745c5c3_Err != nil { | |||
| 457 | + | return templ_7745c5c3_Err | |||
| 458 | + | } | |||
| 459 | + | if p.Mirror.Reason != "" { | |||
| 460 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<p>") | |||
| 461 | + | if templ_7745c5c3_Err != nil { | |||
| 462 | + | return templ_7745c5c3_Err | |||
| 463 | + | } | |||
| 464 | + | var templ_7745c5c3_Var24 string | |||
| 465 | + | templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.Reason) | |||
| 466 | + | if templ_7745c5c3_Err != nil { | |||
| 467 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 100, Col: 24} | |||
| 468 | + | } | |||
| 469 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) | |||
| 470 | + | if templ_7745c5c3_Err != nil { | |||
| 471 | + | return templ_7745c5c3_Err | |||
| 472 | + | } | |||
| 473 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</p>") | |||
| 474 | + | if templ_7745c5c3_Err != nil { | |||
| 475 | + | return templ_7745c5c3_Err | |||
| 476 | + | } | |||
| 477 | + | } | |||
| 478 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "<p>Run <code>") | |||
| 479 | + | if templ_7745c5c3_Err != nil { | |||
| 480 | + | return templ_7745c5c3_Err | |||
| 481 | + | } | |||
| 482 | + | var templ_7745c5c3_Var25 string | |||
| 483 | + | templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinStringErrs(p.Mirror.Command) | |||
| 484 | + | if templ_7745c5c3_Err != nil { | |||
| 485 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 102, Col: 34} | |||
| 486 | + | } | |||
| 487 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25)) | |||
| 488 | + | if templ_7745c5c3_Err != nil { | |||
| 489 | + | return templ_7745c5c3_Err | |||
| 490 | + | } | |||
| 491 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</code></p></section>") | |||
| 492 | + | if templ_7745c5c3_Err != nil { | |||
| 493 | + | return templ_7745c5c3_Err | |||
| 494 | + | } | |||
| 495 | + | } | |||
| 496 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "<section aria-labelledby=\"r-clone\"><h2 id=\"r-clone\">Clone</h2>") | |||
| 442 | if templ_7745c5c3_Err != nil { | 497 | if templ_7745c5c3_Err != nil { | ||
| 443 | return templ_7745c5c3_Err | 498 | return templ_7745c5c3_Err | ||
| 444 | } | 499 | } | ||
| @@ -446,25 +501,25 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 446 | if templ_7745c5c3_Err != nil { | 501 | if templ_7745c5c3_Err != nil { | ||
| 447 | return templ_7745c5c3_Err | 502 | return templ_7745c5c3_Err | ||
| 448 | } | 503 | } | ||
| 449 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">") | 504 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</section><section aria-labelledby=\"r-facts\"><h2 id=\"r-facts\">About</h2><dl class=\"kv\">") |
| 450 | if templ_7745c5c3_Err != nil { | 505 | if templ_7745c5c3_Err != nil { | ||
| 451 | return templ_7745c5c3_Err | 506 | return templ_7745c5c3_Err | ||
| 452 | } | 507 | } | ||
| 453 | for _, f := range p.Facts { | 508 | for _, f := range p.Facts { | ||
| 454 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "<dt>") | 509 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<dt>") |
| 455 | if templ_7745c5c3_Err != nil { | 510 | if templ_7745c5c3_Err != nil { | ||
| 456 | return templ_7745c5c3_Err | 511 | return templ_7745c5c3_Err | ||
| 457 | } | 512 | } | ||
| 458 | - | var templ_7745c5c3_Var23 string | 513 | + | var templ_7745c5c3_Var26 string |
| 459 | - | templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key) | 514 | + | templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.JoinStringErrs(f.Key) |
| 460 | if templ_7745c5c3_Err != nil { | 515 | if templ_7745c5c3_Err != nil { | ||
| 461 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 101, Col: 15} | 516 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 112, Col: 15} |
| 462 | } | 517 | } | ||
| 463 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23)) | 518 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var26)) |
| 464 | if templ_7745c5c3_Err != nil { | 519 | if templ_7745c5c3_Err != nil { | ||
| 465 | return templ_7745c5c3_Err | 520 | return templ_7745c5c3_Err | ||
| 466 | } | 521 | } | ||
| 467 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "</dt>") | 522 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</dt>") |
| 468 | if templ_7745c5c3_Err != nil { | 523 | if templ_7745c5c3_Err != nil { | ||
| 469 | return templ_7745c5c3_Err | 524 | return templ_7745c5c3_Err | ||
| 470 | } | 525 | } | ||
| @@ -479,25 +534,25 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 479 | return templ_7745c5c3_Err | 534 | return templ_7745c5c3_Err | ||
| 480 | } | 535 | } | ||
| 481 | } | 536 | } | ||
| 482 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</dl></section>") | 537 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</dl></section>") |
| 483 | if templ_7745c5c3_Err != nil { | 538 | if templ_7745c5c3_Err != nil { | ||
| 484 | return templ_7745c5c3_Err | 539 | return templ_7745c5c3_Err | ||
| 485 | } | 540 | } | ||
| 486 | if len(p.Recent) > 0 { | 541 | if len(p.Recent) > 0 { | ||
| 487 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"") | 542 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "<section aria-labelledby=\"r-recent\"><h2 id=\"r-recent\">Recent commits <a href=\"") |
| 488 | if templ_7745c5c3_Err != nil { | 543 | if templ_7745c5c3_Err != nil { | ||
| 489 | return templ_7745c5c3_Err | 544 | return templ_7745c5c3_Err | ||
| 490 | } | 545 | } | ||
| 491 | - | var templ_7745c5c3_Var24 templ.SafeURL | 546 | + | var templ_7745c5c3_Var27 templ.SafeURL |
| 492 | - | templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref)) | 547 | + | templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.AllHref)) |
| 493 | if templ_7745c5c3_Err != nil { | 548 | if templ_7745c5c3_Err != nil { | ||
| 494 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 110, Col: 105} | 549 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 121, Col: 105} |
| 495 | } | 550 | } | ||
| 496 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24)) | 551 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) |
| 497 | if templ_7745c5c3_Err != nil { | 552 | if templ_7745c5c3_Err != nil { | ||
| 498 | return templ_7745c5c3_Err | 553 | return templ_7745c5c3_Err | ||
| 499 | } | 554 | } | ||
| 500 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "\">View all</a></h2>") | 555 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "\">View all</a></h2>") |
| 501 | if templ_7745c5c3_Err != nil { | 556 | if templ_7745c5c3_Err != nil { | ||
| 502 | return templ_7745c5c3_Err | 557 | return templ_7745c5c3_Err | ||
| 503 | } | 558 | } | ||
| @@ -505,7 +560,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 505 | if templ_7745c5c3_Err != nil { | 560 | if templ_7745c5c3_Err != nil { | ||
| 506 | return templ_7745c5c3_Err | 561 | return templ_7745c5c3_Err | ||
| 507 | } | 562 | } | ||
| 508 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "</section>") | 563 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</section>") |
| 509 | if templ_7745c5c3_Err != nil { | 564 | if templ_7745c5c3_Err != nil { | ||
| 510 | return templ_7745c5c3_Err | 565 | return templ_7745c5c3_Err | ||
| 511 | } | 566 | } | ||
| @@ -517,7 +572,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 517 | } | 572 | } | ||
| 518 | } | 573 | } | ||
| 519 | if len(p.Outline) > 0 && p.Readme != nil { | 574 | if len(p.Outline) > 0 && p.Readme != nil { | ||
| 520 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>") | 575 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<section aria-labelledby=\"r-outline\"><h2 id=\"r-outline\">On this page</h2>") |
| 521 | if templ_7745c5c3_Err != nil { | 576 | if templ_7745c5c3_Err != nil { | ||
| 522 | return templ_7745c5c3_Err | 577 | return templ_7745c5c3_Err | ||
| 523 | } | 578 | } | ||
| @@ -525,7 +580,7 @@ func summaryRail(p SummaryPage) templ.Component { | |||||
| 525 | if templ_7745c5c3_Err != nil { | 580 | if templ_7745c5c3_Err != nil { | ||
| 526 | return templ_7745c5c3_Err | 581 | return templ_7745c5c3_Err | ||
| 527 | } | 582 | } | ||
| 528 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "</section>") | 583 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "</section>") |
| 529 | if templ_7745c5c3_Err != nil { | 584 | if templ_7745c5c3_Err != nil { | ||
| 530 | return templ_7745c5c3_Err | 585 | return templ_7745c5c3_Err | ||
| 531 | } | 586 | } | ||
| @@ -551,12 +606,12 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||||
| 551 | }() | 606 | }() | ||
| 552 | } | 607 | } | ||
| 553 | ctx = templ.InitializeContext(ctx) | 608 | ctx = templ.InitializeContext(ctx) | ||
| 554 | - | templ_7745c5c3_Var25 := templ.GetChildren(ctx) | 609 | + | templ_7745c5c3_Var28 := templ.GetChildren(ctx) |
| 555 | - | if templ_7745c5c3_Var25 == nil { | 610 | + | if templ_7745c5c3_Var28 == nil { |
| 556 | - | templ_7745c5c3_Var25 = templ.NopComponent | 611 | + | templ_7745c5c3_Var28 = templ.NopComponent |
| 557 | } | 612 | } | ||
| 558 | ctx = templ.ClearChildren(ctx) | 613 | ctx = templ.ClearChildren(ctx) | ||
| 559 | - | templ_7745c5c3_Var26 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 614 | + | templ_7745c5c3_Var29 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 560 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 615 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 561 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 616 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 562 | if !templ_7745c5c3_IsBuffer { | 617 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -568,7 +623,7 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||||
| 568 | }() | 623 | }() | ||
| 569 | } | 624 | } | ||
| 570 | ctx = templ.InitializeContext(ctx) | 625 | ctx = templ.InitializeContext(ctx) | ||
| 571 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<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=\"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>") | 626 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "<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=\"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>") |
| 572 | if templ_7745c5c3_Err != nil { | 627 | if templ_7745c5c3_Err != nil { | ||
| 573 | return templ_7745c5c3_Err | 628 | return templ_7745c5c3_Err | ||
| 574 | } | 629 | } | ||
| @@ -576,32 +631,32 @@ func Refs(l Layout, p RefsPage) templ.Component { | |||||
| 576 | if templ_7745c5c3_Err != nil { | 631 | if templ_7745c5c3_Err != nil { | ||
| 577 | return templ_7745c5c3_Err | 632 | return templ_7745c5c3_Err | ||
| 578 | } | 633 | } | ||
| 579 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "</table>") | 634 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</table>") |
| 580 | if templ_7745c5c3_Err != nil { | 635 | if templ_7745c5c3_Err != nil { | ||
| 581 | return templ_7745c5c3_Err | 636 | return templ_7745c5c3_Err | ||
| 582 | } | 637 | } | ||
| 583 | if p.Note != "" { | 638 | if p.Note != "" { | ||
| 584 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<p class=\"note\">") | 639 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<p class=\"note\">") |
| 585 | if templ_7745c5c3_Err != nil { | 640 | if templ_7745c5c3_Err != nil { | ||
| 586 | return templ_7745c5c3_Err | 641 | return templ_7745c5c3_Err | ||
| 587 | } | 642 | } | ||
| 588 | - | var templ_7745c5c3_Var27 string | 643 | + | var templ_7745c5c3_Var30 string |
| 589 | - | templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note) | 644 | + | templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note) |
| 590 | if templ_7745c5c3_Err != nil { | 645 | if templ_7745c5c3_Err != nil { | ||
| 591 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 143, Col: 27} | 646 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 154, Col: 27} |
| 592 | } | 647 | } | ||
| 593 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27)) | 648 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) |
| 594 | if templ_7745c5c3_Err != nil { | 649 | if templ_7745c5c3_Err != nil { | ||
| 595 | return templ_7745c5c3_Err | 650 | return templ_7745c5c3_Err | ||
| 596 | } | 651 | } | ||
| 597 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</p>") | 652 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</p>") |
| 598 | if templ_7745c5c3_Err != nil { | 653 | if templ_7745c5c3_Err != nil { | ||
| 599 | return templ_7745c5c3_Err | 654 | return templ_7745c5c3_Err | ||
| 600 | } | 655 | } | ||
| 601 | } | 656 | } | ||
| 602 | return nil | 657 | return nil | ||
| 603 | }) | 658 | }) | ||
| 604 | - | templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var26), templ_7745c5c3_Buffer) | 659 | + | templ_7745c5c3_Err = Shell(l, refsRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var29), templ_7745c5c3_Buffer) |
| 605 | if templ_7745c5c3_Err != nil { | 660 | if templ_7745c5c3_Err != nil { | ||
| 606 | return templ_7745c5c3_Err | 661 | return templ_7745c5c3_Err | ||
| 607 | } | 662 | } | ||
| @@ -625,112 +680,112 @@ func refRow(kind string, r RefRow) templ.Component { | |||||
| 625 | }() | 680 | }() | ||
| 626 | } | 681 | } | ||
| 627 | ctx = templ.InitializeContext(ctx) | 682 | ctx = templ.InitializeContext(ctx) | ||
| 628 | - | templ_7745c5c3_Var28 := templ.GetChildren(ctx) | 683 | + | templ_7745c5c3_Var31 := templ.GetChildren(ctx) |
| 629 | - | if templ_7745c5c3_Var28 == nil { | 684 | + | if templ_7745c5c3_Var31 == nil { |
| 630 | - | templ_7745c5c3_Var28 = templ.NopComponent | 685 | + | templ_7745c5c3_Var31 = templ.NopComponent |
| 631 | } | 686 | } | ||
| 632 | ctx = templ.ClearChildren(ctx) | 687 | ctx = templ.ClearChildren(ctx) | ||
| 633 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<tr") | 688 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<tr") |
| 634 | if templ_7745c5c3_Err != nil { | 689 | if templ_7745c5c3_Err != nil { | ||
| 635 | return templ_7745c5c3_Err | 690 | return templ_7745c5c3_Err | ||
| 636 | } | 691 | } | ||
| 637 | if r.Cursor { | 692 | if r.Cursor { | ||
| 638 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, " data-cursor") | 693 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, " data-cursor") |
| 639 | if templ_7745c5c3_Err != nil { | 694 | if templ_7745c5c3_Err != nil { | ||
| 640 | return templ_7745c5c3_Err | 695 | return templ_7745c5c3_Err | ||
| 641 | } | 696 | } | ||
| 642 | } | 697 | } | ||
| 643 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "><td class=\"c-kind mute\">") | 698 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "><td class=\"c-kind mute\">") |
| 644 | if templ_7745c5c3_Err != nil { | 699 | if templ_7745c5c3_Err != nil { | ||
| 645 | return templ_7745c5c3_Err | 700 | return templ_7745c5c3_Err | ||
| 646 | } | 701 | } | ||
| 647 | - | var templ_7745c5c3_Var29 string | 702 | + | var templ_7745c5c3_Var32 string |
| 648 | - | templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(kind) | 703 | + | templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(kind) |
| 649 | if templ_7745c5c3_Err != nil { | 704 | if templ_7745c5c3_Err != nil { | ||
| 650 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 150, Col: 32} | 705 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 161, Col: 32} |
| 651 | } | 706 | } | ||
| 652 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29)) | 707 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) |
| 653 | if templ_7745c5c3_Err != nil { | 708 | if templ_7745c5c3_Err != nil { | ||
| 654 | return templ_7745c5c3_Err | 709 | return templ_7745c5c3_Err | ||
| 655 | } | 710 | } | ||
| 656 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "</td><td class=\"c-name\"><a href=\"") | 711 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</td><td class=\"c-name\"><a href=\"") |
| 657 | if templ_7745c5c3_Err != nil { | 712 | if templ_7745c5c3_Err != nil { | ||
| 658 | return templ_7745c5c3_Err | 713 | return templ_7745c5c3_Err | ||
| 659 | } | 714 | } | ||
| 660 | - | var templ_7745c5c3_Var30 templ.SafeURL | 715 | + | var templ_7745c5c3_Var33 templ.SafeURL |
| 661 | - | templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href)) | 716 | + | templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href)) |
| 662 | if templ_7745c5c3_Err != nil { | 717 | if templ_7745c5c3_Err != nil { | ||
| 663 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 152, Col: 34} | 718 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 163, Col: 34} |
| 664 | } | 719 | } | ||
| 665 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30)) | 720 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) |
| 666 | if templ_7745c5c3_Err != nil { | 721 | if templ_7745c5c3_Err != nil { | ||
| 667 | return templ_7745c5c3_Err | 722 | return templ_7745c5c3_Err | ||
| 668 | } | 723 | } | ||
| 669 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "\">") | 724 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "\">") |
| 670 | if templ_7745c5c3_Err != nil { | 725 | if templ_7745c5c3_Err != nil { | ||
| 671 | return templ_7745c5c3_Err | 726 | return templ_7745c5c3_Err | ||
| 672 | } | 727 | } | ||
| 673 | - | var templ_7745c5c3_Var31 string | 728 | + | var templ_7745c5c3_Var34 string |
| 674 | - | templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | 729 | + | templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) |
| 675 | if templ_7745c5c3_Err != nil { | 730 | if templ_7745c5c3_Err != nil { | ||
| 676 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 152, Col: 45} | 731 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 163, Col: 45} |
| 677 | } | 732 | } | ||
| 678 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31)) | 733 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) |
| 679 | if templ_7745c5c3_Err != nil { | 734 | if templ_7745c5c3_Err != nil { | ||
| 680 | return templ_7745c5c3_Err | 735 | return templ_7745c5c3_Err | ||
| 681 | } | 736 | } | ||
| 682 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, "</a> ") | 737 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</a> ") |
| 683 | if templ_7745c5c3_Err != nil { | 738 | if templ_7745c5c3_Err != nil { | ||
| 684 | return templ_7745c5c3_Err | 739 | return templ_7745c5c3_Err | ||
| 685 | } | 740 | } | ||
| 686 | if r.Default { | 741 | if r.Default { | ||
| 687 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "<span class=\"pill\">default</span>") | 742 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<span class=\"pill\">default</span>") |
| 688 | if templ_7745c5c3_Err != nil { | 743 | if templ_7745c5c3_Err != nil { | ||
| 689 | return templ_7745c5c3_Err | 744 | return templ_7745c5c3_Err | ||
| 690 | } | 745 | } | ||
| 691 | } | 746 | } | ||
| 692 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "</td><td class=\"c-sha\">") | 747 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</td><td class=\"c-sha\">") |
| 693 | if templ_7745c5c3_Err != nil { | 748 | if templ_7745c5c3_Err != nil { | ||
| 694 | return templ_7745c5c3_Err | 749 | return templ_7745c5c3_Err | ||
| 695 | } | 750 | } | ||
| 696 | if r.CHref != "" { | 751 | if r.CHref != "" { | ||
| 697 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<a href=\"") | 752 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "<a href=\"") |
| 698 | if templ_7745c5c3_Err != nil { | 753 | if templ_7745c5c3_Err != nil { | ||
| 699 | return templ_7745c5c3_Err | 754 | return templ_7745c5c3_Err | ||
| 700 | } | 755 | } | ||
| 701 | - | var templ_7745c5c3_Var32 templ.SafeURL | 756 | + | var templ_7745c5c3_Var35 templ.SafeURL |
| 702 | - | templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref)) | 757 | + | templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref)) |
| 703 | if templ_7745c5c3_Err != nil { | 758 | if templ_7745c5c3_Err != nil { | ||
| 704 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 159, Col: 36} | 759 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 170, Col: 36} |
| 705 | } | 760 | } | ||
| 706 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32)) | 761 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35)) |
| 707 | if templ_7745c5c3_Err != nil { | 762 | if templ_7745c5c3_Err != nil { | ||
| 708 | return templ_7745c5c3_Err | 763 | return templ_7745c5c3_Err | ||
| 709 | } | 764 | } | ||
| 710 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "\">") | 765 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "\">") |
| 711 | if templ_7745c5c3_Err != nil { | 766 | if templ_7745c5c3_Err != nil { | ||
| 712 | return templ_7745c5c3_Err | 767 | return templ_7745c5c3_Err | ||
| 713 | } | 768 | } | ||
| 714 | - | var templ_7745c5c3_Var33 string | 769 | + | var templ_7745c5c3_Var36 string |
| 715 | - | templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | 770 | + | templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) |
| 716 | if templ_7745c5c3_Err != nil { | 771 | if templ_7745c5c3_Err != nil { | ||
| 717 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 159, Col: 48} | 772 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 170, Col: 48} |
| 718 | } | 773 | } | ||
| 719 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33)) | 774 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36)) |
| 720 | if templ_7745c5c3_Err != nil { | 775 | if templ_7745c5c3_Err != nil { | ||
| 721 | return templ_7745c5c3_Err | 776 | return templ_7745c5c3_Err | ||
| 722 | } | 777 | } | ||
| 723 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "</a>") | 778 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</a>") |
| 724 | if templ_7745c5c3_Err != nil { | 779 | if templ_7745c5c3_Err != nil { | ||
| 725 | return templ_7745c5c3_Err | 780 | return templ_7745c5c3_Err | ||
| 726 | } | 781 | } | ||
| 727 | } else { | 782 | } else { | ||
| 728 | - | var templ_7745c5c3_Var34 string | 783 | + | var templ_7745c5c3_Var37 string |
| 729 | - | templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) | 784 | + | templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(r.Short) |
| 730 | if templ_7745c5c3_Err != nil { | 785 | if templ_7745c5c3_Err != nil { | ||
| 731 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 161, Col: 13} | 786 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 172, Col: 13} |
| 732 | } | 787 | } | ||
| 733 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34)) | 788 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37)) |
| 734 | if templ_7745c5c3_Err != nil { | 789 | if templ_7745c5c3_Err != nil { | ||
| 735 | return templ_7745c5c3_Err | 790 | return templ_7745c5c3_Err | ||
| 736 | } | 791 | } | ||
| @@ -739,69 +794,69 @@ func refRow(kind string, r RefRow) templ.Component { | |||||
| 739 | if templ_7745c5c3_Err != nil { | 794 | if templ_7745c5c3_Err != nil { | ||
| 740 | return templ_7745c5c3_Err | 795 | return templ_7745c5c3_Err | ||
| 741 | } | 796 | } | ||
| 742 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "</td><td class=\"c-sub\">") | 797 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</td><td class=\"c-sub\">") |
| 743 | if templ_7745c5c3_Err != nil { | 798 | if templ_7745c5c3_Err != nil { | ||
| 744 | return templ_7745c5c3_Err | 799 | return templ_7745c5c3_Err | ||
| 745 | } | 800 | } | ||
| 746 | - | var templ_7745c5c3_Var35 string | 801 | + | var templ_7745c5c3_Var38 string |
| 747 | - | templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject) | 802 | + | templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject) |
| 748 | if templ_7745c5c3_Err != nil { | 803 | if templ_7745c5c3_Err != nil { | ||
| 749 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 165, Col: 31} | 804 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 176, Col: 31} |
| 750 | } | 805 | } | ||
| 751 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var35)) | 806 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38)) |
| 752 | if templ_7745c5c3_Err != nil { | 807 | if templ_7745c5c3_Err != nil { | ||
| 753 | return templ_7745c5c3_Err | 808 | return templ_7745c5c3_Err | ||
| 754 | } | 809 | } | ||
| 755 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</td><td class=\"c-when dim\">") | 810 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</td><td class=\"c-when dim\">") |
| 756 | if templ_7745c5c3_Err != nil { | 811 | if templ_7745c5c3_Err != nil { | ||
| 757 | return templ_7745c5c3_Err | 812 | return templ_7745c5c3_Err | ||
| 758 | } | 813 | } | ||
| 759 | if r.WhenAt != "" { | 814 | if r.WhenAt != "" { | ||
| 760 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "<time datetime=\"") | 815 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<time datetime=\"") |
| 761 | if templ_7745c5c3_Err != nil { | 816 | if templ_7745c5c3_Err != nil { | ||
| 762 | return templ_7745c5c3_Err | 817 | return templ_7745c5c3_Err | ||
| 763 | } | 818 | } | ||
| 764 | - | var templ_7745c5c3_Var36 string | 819 | + | var templ_7745c5c3_Var39 string |
| 765 | - | templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | 820 | + | templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) |
| 766 | if templ_7745c5c3_Err != nil { | 821 | if templ_7745c5c3_Err != nil { | ||
| 767 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 168, Col: 29} | 822 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 179, Col: 29} |
| 768 | } | 823 | } | ||
| 769 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var36) | 824 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var39) |
| 770 | if templ_7745c5c3_Err != nil { | 825 | if templ_7745c5c3_Err != nil { | ||
| 771 | return templ_7745c5c3_Err | 826 | return templ_7745c5c3_Err | ||
| 772 | } | 827 | } | ||
| 773 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "\" title=\"") | 828 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "\" title=\"") |
| 774 | if templ_7745c5c3_Err != nil { | 829 | if templ_7745c5c3_Err != nil { | ||
| 775 | return templ_7745c5c3_Err | 830 | return templ_7745c5c3_Err | ||
| 776 | } | 831 | } | ||
| 777 | - | var templ_7745c5c3_Var37 string | 832 | + | var templ_7745c5c3_Var40 string |
| 778 | - | templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) | 833 | + | templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt) |
| 779 | if templ_7745c5c3_Err != nil { | 834 | if templ_7745c5c3_Err != nil { | ||
| 780 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 168, Col: 48} | 835 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 179, Col: 48} |
| 781 | } | 836 | } | ||
| 782 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var37) | 837 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40) |
| 783 | if templ_7745c5c3_Err != nil { | 838 | if templ_7745c5c3_Err != nil { | ||
| 784 | return templ_7745c5c3_Err | 839 | return templ_7745c5c3_Err | ||
| 785 | } | 840 | } | ||
| 786 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "\">") | 841 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\">") |
| 787 | if templ_7745c5c3_Err != nil { | 842 | if templ_7745c5c3_Err != nil { | ||
| 788 | return templ_7745c5c3_Err | 843 | return templ_7745c5c3_Err | ||
| 789 | } | 844 | } | ||
| 790 | - | var templ_7745c5c3_Var38 string | 845 | + | var templ_7745c5c3_Var41 string |
| 791 | - | templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(r.When) | 846 | + | templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(r.When) |
| 792 | if templ_7745c5c3_Err != nil { | 847 | if templ_7745c5c3_Err != nil { | ||
| 793 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 168, Col: 59} | 848 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 179, Col: 59} |
| 794 | } | 849 | } | ||
| 795 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38)) | 850 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41)) |
| 796 | if templ_7745c5c3_Err != nil { | 851 | if templ_7745c5c3_Err != nil { | ||
| 797 | return templ_7745c5c3_Err | 852 | return templ_7745c5c3_Err | ||
| 798 | } | 853 | } | ||
| 799 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "</time>") | 854 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</time>") |
| 800 | if templ_7745c5c3_Err != nil { | 855 | if templ_7745c5c3_Err != nil { | ||
| 801 | return templ_7745c5c3_Err | 856 | return templ_7745c5c3_Err | ||
| 802 | } | 857 | } | ||
| 803 | } | 858 | } | ||
| 804 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</td></tr>") | 859 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "</td></tr>") |
| 805 | if templ_7745c5c3_Err != nil { | 860 | if templ_7745c5c3_Err != nil { | ||
| 806 | return templ_7745c5c3_Err | 861 | return templ_7745c5c3_Err | ||
| 807 | } | 862 | } | ||
| @@ -825,12 +880,12 @@ func refsRail(p RefsPage) templ.Component { | |||||
| 825 | }() | 880 | }() | ||
| 826 | } | 881 | } | ||
| 827 | ctx = templ.InitializeContext(ctx) | 882 | ctx = templ.InitializeContext(ctx) | ||
| 828 | - | templ_7745c5c3_Var39 := templ.GetChildren(ctx) | 883 | + | templ_7745c5c3_Var42 := templ.GetChildren(ctx) |
| 829 | - | if templ_7745c5c3_Var39 == nil { | 884 | + | if templ_7745c5c3_Var42 == nil { |
| 830 | - | templ_7745c5c3_Var39 = templ.NopComponent | 885 | + | templ_7745c5c3_Var42 = templ.NopComponent |
| 831 | } | 886 | } | ||
| 832 | ctx = templ.ClearChildren(ctx) | 887 | ctx = templ.ClearChildren(ctx) | ||
| 833 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>") | 888 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<section aria-labelledby=\"r-refs\"><h2 id=\"r-refs\">Overview</h2>") |
| 834 | if templ_7745c5c3_Err != nil { | 889 | if templ_7745c5c3_Err != nil { | ||
| 835 | return templ_7745c5c3_Err | 890 | return templ_7745c5c3_Err | ||
| 836 | } | 891 | } | ||
| @@ -838,7 +893,7 @@ func refsRail(p RefsPage) templ.Component { | |||||
| 838 | if templ_7745c5c3_Err != nil { | 893 | if templ_7745c5c3_Err != nil { | ||
| 839 | return templ_7745c5c3_Err | 894 | return templ_7745c5c3_Err | ||
| 840 | } | 895 | } | ||
| 841 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "</section>") | 896 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</section>") |
| 842 | if templ_7745c5c3_Err != nil { | 897 | if templ_7745c5c3_Err != nil { | ||
| 843 | return templ_7745c5c3_Err | 898 | return templ_7745c5c3_Err | ||
| 844 | } | 899 | } | ||
| @@ -863,12 +918,12 @@ func State(l Layout, p StatePage) templ.Component { | |||||
| 863 | }() | 918 | }() | ||
| 864 | } | 919 | } | ||
| 865 | ctx = templ.InitializeContext(ctx) | 920 | ctx = templ.InitializeContext(ctx) | ||
| 866 | - | templ_7745c5c3_Var40 := templ.GetChildren(ctx) | 921 | + | templ_7745c5c3_Var43 := templ.GetChildren(ctx) |
| 867 | - | if templ_7745c5c3_Var40 == nil { | 922 | + | if templ_7745c5c3_Var43 == nil { |
| 868 | - | templ_7745c5c3_Var40 = templ.NopComponent | 923 | + | templ_7745c5c3_Var43 = templ.NopComponent |
| 869 | } | 924 | } | ||
| 870 | ctx = templ.ClearChildren(ctx) | 925 | ctx = templ.ClearChildren(ctx) | ||
| 871 | - | templ_7745c5c3_Var41 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 926 | + | templ_7745c5c3_Var44 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 872 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 927 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 873 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 928 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 874 | if !templ_7745c5c3_IsBuffer { | 929 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -880,51 +935,51 @@ func State(l Layout, p StatePage) templ.Component { | |||||
| 880 | }() | 935 | }() | ||
| 881 | } | 936 | } | ||
| 882 | ctx = templ.InitializeContext(ctx) | 937 | ctx = templ.InitializeContext(ctx) | ||
| 883 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">") | 938 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<section class=\"state\" aria-labelledby=\"state-title\"><p class=\"eyebrow\">") |
| 884 | if templ_7745c5c3_Err != nil { | 939 | if templ_7745c5c3_Err != nil { | ||
| 885 | return templ_7745c5c3_Err | 940 | return templ_7745c5c3_Err | ||
| 886 | } | 941 | } | ||
| 887 | - | var templ_7745c5c3_Var42 string | 942 | + | var templ_7745c5c3_Var45 string |
| 888 | - | templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code) | 943 | + | templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(p.Code) |
| 889 | if templ_7745c5c3_Err != nil { | 944 | if templ_7745c5c3_Err != nil { | ||
| 890 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 185, Col: 30} | 945 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 196, Col: 30} |
| 891 | } | 946 | } | ||
| 892 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42)) | 947 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45)) |
| 893 | if templ_7745c5c3_Err != nil { | 948 | if templ_7745c5c3_Err != nil { | ||
| 894 | return templ_7745c5c3_Err | 949 | return templ_7745c5c3_Err | ||
| 895 | } | 950 | } | ||
| 896 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "</p><h1 id=\"state-title\">") | 951 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</p><h1 id=\"state-title\">") |
| 897 | if templ_7745c5c3_Err != nil { | 952 | if templ_7745c5c3_Err != nil { | ||
| 898 | return templ_7745c5c3_Err | 953 | return templ_7745c5c3_Err | ||
| 899 | } | 954 | } | ||
| 900 | - | var templ_7745c5c3_Var43 string | 955 | + | var templ_7745c5c3_Var46 string |
| 901 | - | templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | 956 | + | templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) |
| 902 | if templ_7745c5c3_Err != nil { | 957 | if templ_7745c5c3_Err != nil { | ||
| 903 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 186, Col: 33} | 958 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 197, Col: 33} |
| 904 | } | 959 | } | ||
| 905 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43)) | 960 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46)) |
| 906 | if templ_7745c5c3_Err != nil { | 961 | if templ_7745c5c3_Err != nil { | ||
| 907 | return templ_7745c5c3_Err | 962 | return templ_7745c5c3_Err | ||
| 908 | } | 963 | } | ||
| 909 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "</h1>") | 964 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</h1>") |
| 910 | if templ_7745c5c3_Err != nil { | 965 | if templ_7745c5c3_Err != nil { | ||
| 911 | return templ_7745c5c3_Err | 966 | return templ_7745c5c3_Err | ||
| 912 | } | 967 | } | ||
| 913 | for _, line := range p.Lines { | 968 | for _, line := range p.Lines { | ||
| 914 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "<p class=\"dim\">") | 969 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "<p class=\"dim\">") |
| 915 | if templ_7745c5c3_Err != nil { | 970 | if templ_7745c5c3_Err != nil { | ||
| 916 | return templ_7745c5c3_Err | 971 | return templ_7745c5c3_Err | ||
| 917 | } | 972 | } | ||
| 918 | - | var templ_7745c5c3_Var44 string | 973 | + | var templ_7745c5c3_Var47 string |
| 919 | - | templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(line) | 974 | + | templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(line) |
| 920 | if templ_7745c5c3_Err != nil { | 975 | if templ_7745c5c3_Err != nil { | ||
| 921 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 188, Col: 25} | 976 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 199, Col: 25} |
| 922 | } | 977 | } | ||
| 923 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44)) | 978 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47)) |
| 924 | if templ_7745c5c3_Err != nil { | 979 | if templ_7745c5c3_Err != nil { | ||
| 925 | return templ_7745c5c3_Err | 980 | return templ_7745c5c3_Err | ||
| 926 | } | 981 | } | ||
| 927 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</p>") | 982 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</p>") |
| 928 | if templ_7745c5c3_Err != nil { | 983 | if templ_7745c5c3_Err != nil { | ||
| 929 | return templ_7745c5c3_Err | 984 | return templ_7745c5c3_Err | ||
| 930 | } | 985 | } | ||
| @@ -935,49 +990,49 @@ func State(l Layout, p StatePage) templ.Component { | |||||
| 935 | return templ_7745c5c3_Err | 990 | return templ_7745c5c3_Err | ||
| 936 | } | 991 | } | ||
| 937 | } | 992 | } | ||
| 938 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<p class=\"state-back\">") | 993 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<p class=\"state-back\">") |
| 939 | if templ_7745c5c3_Err != nil { | 994 | if templ_7745c5c3_Err != nil { | ||
| 940 | return templ_7745c5c3_Err | 995 | return templ_7745c5c3_Err | ||
| 941 | } | 996 | } | ||
| 942 | for _, b := range p.Back { | 997 | for _, b := range p.Back { | ||
| 943 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<a href=\"") | 998 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<a href=\"") |
| 944 | if templ_7745c5c3_Err != nil { | 999 | if templ_7745c5c3_Err != nil { | ||
| 945 | return templ_7745c5c3_Err | 1000 | return templ_7745c5c3_Err | ||
| 946 | } | 1001 | } | ||
| 947 | - | var templ_7745c5c3_Var45 templ.SafeURL | 1002 | + | var templ_7745c5c3_Var48 templ.SafeURL |
| 948 | - | templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href)) | 1003 | + | templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(b.Href)) |
| 949 | if templ_7745c5c3_Err != nil { | 1004 | if templ_7745c5c3_Err != nil { | ||
| 950 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 195, Col: 36} | 1005 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 206, Col: 36} |
| 951 | } | 1006 | } | ||
| 952 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45)) | 1007 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48)) |
| 953 | if templ_7745c5c3_Err != nil { | 1008 | if templ_7745c5c3_Err != nil { | ||
| 954 | return templ_7745c5c3_Err | 1009 | return templ_7745c5c3_Err | ||
| 955 | } | 1010 | } | ||
| 956 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "\">") | 1011 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "\">") |
| 957 | if templ_7745c5c3_Err != nil { | 1012 | if templ_7745c5c3_Err != nil { | ||
| 958 | return templ_7745c5c3_Err | 1013 | return templ_7745c5c3_Err | ||
| 959 | } | 1014 | } | ||
| 960 | - | var templ_7745c5c3_Var46 string | 1015 | + | var templ_7745c5c3_Var49 string |
| 961 | - | templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label) | 1016 | + | templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(b.Label) |
| 962 | if templ_7745c5c3_Err != nil { | 1017 | if templ_7745c5c3_Err != nil { | ||
| 963 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 195, Col: 48} | 1018 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 206, Col: 48} |
| 964 | } | 1019 | } | ||
| 965 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46)) | 1020 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49)) |
| 966 | if templ_7745c5c3_Err != nil { | 1021 | if templ_7745c5c3_Err != nil { | ||
| 967 | return templ_7745c5c3_Err | 1022 | return templ_7745c5c3_Err | ||
| 968 | } | 1023 | } | ||
| 969 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</a>") | 1024 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</a>") |
| 970 | if templ_7745c5c3_Err != nil { | 1025 | if templ_7745c5c3_Err != nil { | ||
| 971 | return templ_7745c5c3_Err | 1026 | return templ_7745c5c3_Err | ||
| 972 | } | 1027 | } | ||
| 973 | } | 1028 | } | ||
| 974 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</p></section>") | 1029 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "</p></section>") |
| 975 | if templ_7745c5c3_Err != nil { | 1030 | if templ_7745c5c3_Err != nil { | ||
| 976 | return templ_7745c5c3_Err | 1031 | return templ_7745c5c3_Err | ||
| 977 | } | 1032 | } | ||
| 978 | return nil | 1033 | return nil | ||
| 979 | }) | 1034 | }) | ||
| 980 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var41), templ_7745c5c3_Buffer) | 1035 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var44), templ_7745c5c3_Buffer) |
| 981 | if templ_7745c5c3_Err != nil { | 1036 | if templ_7745c5c3_Err != nil { | ||
| 982 | return templ_7745c5c3_Err | 1037 | return templ_7745c5c3_Err | ||
| 983 | } | 1038 | } | ||
| @@ -1006,12 +1061,12 @@ func Login(l Layout, p LoginPage) templ.Component { | |||||
| 1006 | }() | 1061 | }() | ||
| 1007 | } | 1062 | } | ||
| 1008 | ctx = templ.InitializeContext(ctx) | 1063 | ctx = templ.InitializeContext(ctx) | ||
| 1009 | - | templ_7745c5c3_Var47 := templ.GetChildren(ctx) | 1064 | + | templ_7745c5c3_Var50 := templ.GetChildren(ctx) |
| 1010 | - | if templ_7745c5c3_Var47 == nil { | 1065 | + | if templ_7745c5c3_Var50 == nil { |
| 1011 | - | templ_7745c5c3_Var47 = templ.NopComponent | 1066 | + | templ_7745c5c3_Var50 = templ.NopComponent |
| 1012 | } | 1067 | } | ||
| 1013 | ctx = templ.ClearChildren(ctx) | 1068 | ctx = templ.ClearChildren(ctx) | ||
| 1014 | - | templ_7745c5c3_Var48 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 1069 | + | templ_7745c5c3_Var51 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 1015 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 1070 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 1016 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 1071 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 1017 | if !templ_7745c5c3_IsBuffer { | 1072 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -1023,75 +1078,75 @@ func Login(l Layout, p LoginPage) templ.Component { | |||||
| 1023 | }() | 1078 | }() | ||
| 1024 | } | 1079 | } | ||
| 1025 | ctx = templ.InitializeContext(ctx) | 1080 | ctx = templ.InitializeContext(ctx) | ||
| 1026 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | 1081 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") |
| 1027 | if templ_7745c5c3_Err != nil { | 1082 | if templ_7745c5c3_Err != nil { | ||
| 1028 | return templ_7745c5c3_Err | 1083 | return templ_7745c5c3_Err | ||
| 1029 | } | 1084 | } | ||
| 1030 | - | var templ_7745c5c3_Var49 string | 1085 | + | var templ_7745c5c3_Var52 string |
| 1031 | - | templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | 1086 | + | templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) |
| 1032 | if templ_7745c5c3_Err != nil { | 1087 | if templ_7745c5c3_Err != nil { | ||
| 1033 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 210, Col: 33} | 1088 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 221, Col: 33} |
| 1034 | } | 1089 | } | ||
| 1035 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49)) | 1090 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52)) |
| 1036 | if templ_7745c5c3_Err != nil { | 1091 | if templ_7745c5c3_Err != nil { | ||
| 1037 | return templ_7745c5c3_Err | 1092 | return templ_7745c5c3_Err | ||
| 1038 | } | 1093 | } | ||
| 1039 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "</h1>") | 1094 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</h1>") |
| 1040 | if templ_7745c5c3_Err != nil { | 1095 | if templ_7745c5c3_Err != nil { | ||
| 1041 | return templ_7745c5c3_Err | 1096 | return templ_7745c5c3_Err | ||
| 1042 | } | 1097 | } | ||
| 1043 | for _, line := range p.Lines { | 1098 | for _, line := range p.Lines { | ||
| 1044 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<p class=\"dim\">") | 1099 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<p class=\"dim\">") |
| 1045 | if templ_7745c5c3_Err != nil { | 1100 | if templ_7745c5c3_Err != nil { | ||
| 1046 | return templ_7745c5c3_Err | 1101 | return templ_7745c5c3_Err | ||
| 1047 | } | 1102 | } | ||
| 1048 | - | var templ_7745c5c3_Var50 string | 1103 | + | var templ_7745c5c3_Var53 string |
| 1049 | - | templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.JoinStringErrs(line) | 1104 | + | templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(line) |
| 1050 | if templ_7745c5c3_Err != nil { | 1105 | if templ_7745c5c3_Err != nil { | ||
| 1051 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 212, Col: 25} | 1106 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 223, Col: 25} |
| 1052 | } | 1107 | } | ||
| 1053 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var50)) | 1108 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53)) |
| 1054 | if templ_7745c5c3_Err != nil { | 1109 | if templ_7745c5c3_Err != nil { | ||
| 1055 | return templ_7745c5c3_Err | 1110 | return templ_7745c5c3_Err | ||
| 1056 | } | 1111 | } | ||
| 1057 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</p>") | 1112 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</p>") |
| 1058 | if templ_7745c5c3_Err != nil { | 1113 | if templ_7745c5c3_Err != nil { | ||
| 1059 | return templ_7745c5c3_Err | 1114 | return templ_7745c5c3_Err | ||
| 1060 | } | 1115 | } | ||
| 1061 | } | 1116 | } | ||
| 1062 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "<form class=\"state-act\" method=\"post\" action=\"") | 1117 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<form class=\"state-act\" method=\"post\" action=\"") |
| 1063 | if templ_7745c5c3_Err != nil { | 1118 | if templ_7745c5c3_Err != nil { | ||
| 1064 | return templ_7745c5c3_Err | 1119 | return templ_7745c5c3_Err | ||
| 1065 | } | 1120 | } | ||
| 1066 | - | var templ_7745c5c3_Var51 templ.SafeURL | 1121 | + | var templ_7745c5c3_Var54 templ.SafeURL |
| 1067 | - | templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action)) | 1122 | + | templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.Action)) |
| 1068 | if templ_7745c5c3_Err != nil { | 1123 | if templ_7745c5c3_Err != nil { | ||
| 1069 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 214, Col: 73} | 1124 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 225, Col: 73} |
| 1070 | } | 1125 | } | ||
| 1071 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51)) | 1126 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54)) |
| 1072 | if templ_7745c5c3_Err != nil { | 1127 | if templ_7745c5c3_Err != nil { | ||
| 1073 | return templ_7745c5c3_Err | 1128 | return templ_7745c5c3_Err | ||
| 1074 | } | 1129 | } | ||
| 1075 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">") | 1130 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "\" data-autosubmit><button type=\"submit\" class=\"btn primary\">") |
| 1076 | if templ_7745c5c3_Err != nil { | 1131 | if templ_7745c5c3_Err != nil { | ||
| 1077 | return templ_7745c5c3_Err | 1132 | return templ_7745c5c3_Err | ||
| 1078 | } | 1133 | } | ||
| 1079 | - | var templ_7745c5c3_Var52 string | 1134 | + | var templ_7745c5c3_Var55 string |
| 1080 | - | templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | 1135 | + | templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) |
| 1081 | if templ_7745c5c3_Err != nil { | 1136 | if templ_7745c5c3_Err != nil { | ||
| 1082 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 215, Col: 56} | 1137 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 226, Col: 56} |
| 1083 | } | 1138 | } | ||
| 1084 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52)) | 1139 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55)) |
| 1085 | if templ_7745c5c3_Err != nil { | 1140 | if templ_7745c5c3_Err != nil { | ||
| 1086 | return templ_7745c5c3_Err | 1141 | return templ_7745c5c3_Err | ||
| 1087 | } | 1142 | } | ||
| 1088 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | 1143 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</button></form><p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") |
| 1089 | if templ_7745c5c3_Err != nil { | 1144 | if templ_7745c5c3_Err != nil { | ||
| 1090 | return templ_7745c5c3_Err | 1145 | return templ_7745c5c3_Err | ||
| 1091 | } | 1146 | } | ||
| 1092 | return nil | 1147 | return nil | ||
| 1093 | }) | 1148 | }) | ||
| 1094 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var48), templ_7745c5c3_Buffer) | 1149 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var51), templ_7745c5c3_Buffer) |
| 1095 | if templ_7745c5c3_Err != nil { | 1150 | if templ_7745c5c3_Err != nil { | ||
| 1096 | return templ_7745c5c3_Err | 1151 | return templ_7745c5c3_Err | ||
| 1097 | } | 1152 | } | ||
| @@ -1117,12 +1172,12 @@ func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component { | |||||
| 1117 | }() | 1172 | }() | ||
| 1118 | } | 1173 | } | ||
| 1119 | ctx = templ.InitializeContext(ctx) | 1174 | ctx = templ.InitializeContext(ctx) | ||
| 1120 | - | templ_7745c5c3_Var53 := templ.GetChildren(ctx) | 1175 | + | templ_7745c5c3_Var56 := templ.GetChildren(ctx) |
| 1121 | - | if templ_7745c5c3_Var53 == nil { | 1176 | + | if templ_7745c5c3_Var56 == nil { |
| 1122 | - | templ_7745c5c3_Var53 = templ.NopComponent | 1177 | + | templ_7745c5c3_Var56 = templ.NopComponent |
| 1123 | } | 1178 | } | ||
| 1124 | ctx = templ.ClearChildren(ctx) | 1179 | ctx = templ.ClearChildren(ctx) | ||
| 1125 | - | templ_7745c5c3_Var54 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 1180 | + | templ_7745c5c3_Var57 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 1126 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 1181 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 1127 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 1182 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 1128 | if !templ_7745c5c3_IsBuffer { | 1183 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -1134,88 +1189,88 @@ func PasskeyLogin(l Layout, p PasskeyLoginPage) templ.Component { | |||||
| 1134 | }() | 1189 | }() | ||
| 1135 | } | 1190 | } | ||
| 1136 | ctx = templ.InitializeContext(ctx) | 1191 | ctx = templ.InitializeContext(ctx) | ||
| 1137 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") | 1192 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<section class=\"state\" aria-labelledby=\"state-title\"><h1 id=\"state-title\">") |
| 1138 | if templ_7745c5c3_Err != nil { | 1193 | if templ_7745c5c3_Err != nil { | ||
| 1139 | return templ_7745c5c3_Err | 1194 | return templ_7745c5c3_Err | ||
| 1140 | } | 1195 | } | ||
| 1141 | - | var templ_7745c5c3_Var55 string | 1196 | + | var templ_7745c5c3_Var58 string |
| 1142 | - | templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) | 1197 | + | templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.JoinStringErrs(p.Title) |
| 1143 | if templ_7745c5c3_Err != nil { | 1198 | if templ_7745c5c3_Err != nil { | ||
| 1144 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 227, Col: 33} | 1199 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 238, Col: 33} |
| 1145 | } | 1200 | } | ||
| 1146 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55)) | 1201 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var58)) |
| 1147 | if templ_7745c5c3_Err != nil { | 1202 | if templ_7745c5c3_Err != nil { | ||
| 1148 | return templ_7745c5c3_Err | 1203 | return templ_7745c5c3_Err | ||
| 1149 | } | 1204 | } | ||
| 1150 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"") | 1205 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</h1><form class=\"state-act\" data-js data-passkey-form><button type=\"submit\" class=\"btn primary\" data-passkey=\"login\" data-begin=\"") |
| 1151 | if templ_7745c5c3_Err != nil { | 1206 | if templ_7745c5c3_Err != nil { | ||
| 1152 | return templ_7745c5c3_Err | 1207 | return templ_7745c5c3_Err | ||
| 1153 | } | 1208 | } | ||
| 1154 | - | var templ_7745c5c3_Var56 string | 1209 | + | var templ_7745c5c3_Var59 string |
| 1155 | - | templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | 1210 | + | templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) |
| 1156 | if templ_7745c5c3_Err != nil { | 1211 | if templ_7745c5c3_Err != nil { | ||
| 1157 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 229, Col: 87} | 1212 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 240, Col: 87} |
| 1158 | } | 1213 | } | ||
| 1159 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var56) | 1214 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59) |
| 1160 | if templ_7745c5c3_Err != nil { | 1215 | if templ_7745c5c3_Err != nil { | ||
| 1161 | return templ_7745c5c3_Err | 1216 | return templ_7745c5c3_Err | ||
| 1162 | } | 1217 | } | ||
| 1163 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "\" data-finish=\"") | 1218 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "\" data-finish=\"") |
| 1164 | if templ_7745c5c3_Err != nil { | 1219 | if templ_7745c5c3_Err != nil { | ||
| 1165 | return templ_7745c5c3_Err | 1220 | return templ_7745c5c3_Err | ||
| 1166 | } | 1221 | } | ||
| 1167 | - | var templ_7745c5c3_Var57 string | 1222 | + | var templ_7745c5c3_Var60 string |
| 1168 | - | templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | 1223 | + | templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) |
| 1169 | if templ_7745c5c3_Err != nil { | 1224 | if templ_7745c5c3_Err != nil { | ||
| 1170 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 229, Col: 112} | 1225 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 240, Col: 112} |
| 1171 | } | 1226 | } | ||
| 1172 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var57) | 1227 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60) |
| 1173 | if templ_7745c5c3_Err != nil { | 1228 | if templ_7745c5c3_Err != nil { | ||
| 1174 | return templ_7745c5c3_Err | 1229 | return templ_7745c5c3_Err | ||
| 1175 | } | 1230 | } | ||
| 1176 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "\">") | 1231 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "\">") |
| 1177 | if templ_7745c5c3_Err != nil { | 1232 | if templ_7745c5c3_Err != nil { | ||
| 1178 | return templ_7745c5c3_Err | 1233 | return templ_7745c5c3_Err | ||
| 1179 | } | 1234 | } | ||
| 1180 | - | var templ_7745c5c3_Var58 string | 1235 | + | var templ_7745c5c3_Var61 string |
| 1181 | - | templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) | 1236 | + | templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(p.Button) |
| 1182 | if templ_7745c5c3_Err != nil { | 1237 | if templ_7745c5c3_Err != nil { | ||
| 1183 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 229, Col: 125} | 1238 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 240, Col: 125} |
| 1184 | } | 1239 | } | ||
| 1185 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var58)) | 1240 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61)) |
| 1186 | if templ_7745c5c3_Err != nil { | 1241 | if templ_7745c5c3_Err != nil { | ||
| 1187 | return templ_7745c5c3_Err | 1242 | return templ_7745c5c3_Err | ||
| 1188 | } | 1243 | } | ||
| 1189 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | 1244 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</button></form><p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") |
| 1190 | if templ_7745c5c3_Err != nil { | 1245 | if templ_7745c5c3_Err != nil { | ||
| 1191 | return templ_7745c5c3_Err | 1246 | return templ_7745c5c3_Err | ||
| 1192 | } | 1247 | } | ||
| 1193 | for _, line := range p.Lines { | 1248 | for _, line := range p.Lines { | ||
| 1194 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<p class=\"dim\">") | 1249 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<p class=\"dim\">") |
| 1195 | if templ_7745c5c3_Err != nil { | 1250 | if templ_7745c5c3_Err != nil { | ||
| 1196 | return templ_7745c5c3_Err | 1251 | return templ_7745c5c3_Err | ||
| 1197 | } | 1252 | } | ||
| 1198 | - | var templ_7745c5c3_Var59 string | 1253 | + | var templ_7745c5c3_Var62 string |
| 1199 | - | templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinStringErrs(line) | 1254 | + | templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(line) |
| 1200 | if templ_7745c5c3_Err != nil { | 1255 | if templ_7745c5c3_Err != nil { | ||
| 1201 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 233, Col: 25} | 1256 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 244, Col: 25} |
| 1202 | } | 1257 | } | ||
| 1203 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59)) | 1258 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62)) |
| 1204 | if templ_7745c5c3_Err != nil { | 1259 | if templ_7745c5c3_Err != nil { | ||
| 1205 | return templ_7745c5c3_Err | 1260 | return templ_7745c5c3_Err | ||
| 1206 | } | 1261 | } | ||
| 1207 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</p>") | 1262 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</p>") |
| 1208 | if templ_7745c5c3_Err != nil { | 1263 | if templ_7745c5c3_Err != nil { | ||
| 1209 | return templ_7745c5c3_Err | 1264 | return templ_7745c5c3_Err | ||
| 1210 | } | 1265 | } | ||
| 1211 | } | 1266 | } | ||
| 1212 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") | 1267 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "<p class=\"state-back\"><a href=\"/\">Back to home</a></p></section>") |
| 1213 | if templ_7745c5c3_Err != nil { | 1268 | if templ_7745c5c3_Err != nil { | ||
| 1214 | return templ_7745c5c3_Err | 1269 | return templ_7745c5c3_Err | ||
| 1215 | } | 1270 | } | ||
| 1216 | return nil | 1271 | return nil | ||
| 1217 | }) | 1272 | }) | ||
| 1218 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var54), templ_7745c5c3_Buffer) | 1273 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var57), templ_7745c5c3_Buffer) |
| 1219 | if templ_7745c5c3_Err != nil { | 1274 | if templ_7745c5c3_Err != nil { | ||
| 1220 | return templ_7745c5c3_Err | 1275 | return templ_7745c5c3_Err | ||
| 1221 | } | 1276 | } | ||
| @@ -1240,12 +1295,12 @@ func Passkeys(l Layout, p PasskeysPage) templ.Component { | |||||
| 1240 | }() | 1295 | }() | ||
| 1241 | } | 1296 | } | ||
| 1242 | ctx = templ.InitializeContext(ctx) | 1297 | ctx = templ.InitializeContext(ctx) | ||
| 1243 | - | templ_7745c5c3_Var60 := templ.GetChildren(ctx) | 1298 | + | templ_7745c5c3_Var63 := templ.GetChildren(ctx) |
| 1244 | - | if templ_7745c5c3_Var60 == nil { | 1299 | + | if templ_7745c5c3_Var63 == nil { |
| 1245 | - | templ_7745c5c3_Var60 = templ.NopComponent | 1300 | + | templ_7745c5c3_Var63 = templ.NopComponent |
| 1246 | } | 1301 | } | ||
| 1247 | ctx = templ.ClearChildren(ctx) | 1302 | ctx = templ.ClearChildren(ctx) | ||
| 1248 | - | templ_7745c5c3_Var61 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { | 1303 | + | templ_7745c5c3_Var64 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { |
| 1249 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | 1304 | templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context | ||
| 1250 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | 1305 | templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) | ||
| 1251 | if !templ_7745c5c3_IsBuffer { | 1306 | if !templ_7745c5c3_IsBuffer { | ||
| @@ -1257,231 +1312,231 @@ func Passkeys(l Layout, p PasskeysPage) templ.Component { | |||||
| 1257 | }() | 1312 | }() | ||
| 1258 | } | 1313 | } | ||
| 1259 | ctx = templ.InitializeContext(ctx) | 1314 | ctx = templ.InitializeContext(ctx) | ||
| 1260 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">") | 1315 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "<h2 class=\"rule-h\"><span>Passkeys</span><span class=\"count\">") |
| 1261 | if templ_7745c5c3_Err != nil { | 1316 | if templ_7745c5c3_Err != nil { | ||
| 1262 | return templ_7745c5c3_Err | 1317 | return templ_7745c5c3_Err | ||
| 1263 | } | 1318 | } | ||
| 1264 | - | var templ_7745c5c3_Var62 string | 1319 | + | var templ_7745c5c3_Var65 string |
| 1265 | - | templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows))) | 1320 | + | templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Rows))) |
| 1266 | if templ_7745c5c3_Err != nil { | 1321 | if templ_7745c5c3_Err != nil { | ||
| 1267 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 243, Col: 81} | 1322 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 254, Col: 81} |
| 1268 | } | 1323 | } | ||
| 1269 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62)) | 1324 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65)) |
| 1270 | if templ_7745c5c3_Err != nil { | 1325 | if templ_7745c5c3_Err != nil { | ||
| 1271 | return templ_7745c5c3_Err | 1326 | return templ_7745c5c3_Err | ||
| 1272 | } | 1327 | } | ||
| 1273 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</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>") | 1328 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "</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>") |
| 1274 | if templ_7745c5c3_Err != nil { | 1329 | if templ_7745c5c3_Err != nil { | ||
| 1275 | return templ_7745c5c3_Err | 1330 | return templ_7745c5c3_Err | ||
| 1276 | } | 1331 | } | ||
| 1277 | if len(p.Rows) > 0 { | 1332 | if len(p.Rows) > 0 { | ||
| 1278 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><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>") | 1333 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "<table class=\"list passkeys\" aria-label=\"Passkeys\"><thead><tr><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>") |
| 1279 | if templ_7745c5c3_Err != nil { | 1334 | if templ_7745c5c3_Err != nil { | ||
| 1280 | return templ_7745c5c3_Err | 1335 | return templ_7745c5c3_Err | ||
| 1281 | } | 1336 | } | ||
| 1282 | for _, r := range p.Rows { | 1337 | for _, r := range p.Rows { | ||
| 1283 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<tr><td class=\"c-name\">") | 1338 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "<tr><td class=\"c-name\">") |
| 1284 | if templ_7745c5c3_Err != nil { | 1339 | if templ_7745c5c3_Err != nil { | ||
| 1285 | return templ_7745c5c3_Err | 1340 | return templ_7745c5c3_Err | ||
| 1286 | } | 1341 | } | ||
| 1287 | - | var templ_7745c5c3_Var63 string | 1342 | + | var templ_7745c5c3_Var66 string |
| 1288 | - | templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) | 1343 | + | templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name) |
| 1289 | if templ_7745c5c3_Err != nil { | 1344 | if templ_7745c5c3_Err != nil { | ||
| 1290 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 259, Col: 34} | 1345 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 270, Col: 34} |
| 1291 | } | 1346 | } | ||
| 1292 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63)) | 1347 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66)) |
| 1293 | if templ_7745c5c3_Err != nil { | 1348 | if templ_7745c5c3_Err != nil { | ||
| 1294 | return templ_7745c5c3_Err | 1349 | return templ_7745c5c3_Err | ||
| 1295 | } | 1350 | } | ||
| 1296 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "</td><td class=\"c-when nowrap\"><time") | 1351 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "</td><td class=\"c-when nowrap\"><time") |
| 1297 | if templ_7745c5c3_Err != nil { | 1352 | if templ_7745c5c3_Err != nil { | ||
| 1298 | return templ_7745c5c3_Err | 1353 | return templ_7745c5c3_Err | ||
| 1299 | } | 1354 | } | ||
| 1300 | if r.CreatedAt != "" { | 1355 | if r.CreatedAt != "" { | ||
| 1301 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, " datetime=\"") | 1356 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, " datetime=\"") |
| 1302 | if templ_7745c5c3_Err != nil { | 1357 | if templ_7745c5c3_Err != nil { | ||
| 1303 | return templ_7745c5c3_Err | 1358 | return templ_7745c5c3_Err | ||
| 1304 | } | 1359 | } | ||
| 1305 | - | var templ_7745c5c3_Var64 string | 1360 | + | var templ_7745c5c3_Var67 string |
| 1306 | - | templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt) | 1361 | + | templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.CreatedAt) |
| 1307 | if templ_7745c5c3_Err != nil { | 1362 | if templ_7745c5c3_Err != nil { | ||
| 1308 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 263, Col: 32} | 1363 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 274, Col: 32} |
| 1309 | } | 1364 | } | ||
| 1310 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var64) | 1365 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var67) |
| 1311 | if templ_7745c5c3_Err != nil { | 1366 | if templ_7745c5c3_Err != nil { | ||
| 1312 | return templ_7745c5c3_Err | 1367 | return templ_7745c5c3_Err | ||
| 1313 | } | 1368 | } | ||
| 1314 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "\"") | 1369 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "\"") |
| 1315 | if templ_7745c5c3_Err != nil { | 1370 | if templ_7745c5c3_Err != nil { | ||
| 1316 | return templ_7745c5c3_Err | 1371 | return templ_7745c5c3_Err | ||
| 1317 | } | 1372 | } | ||
| 1318 | } | 1373 | } | ||
| 1319 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, ">") | 1374 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, ">") |
| 1320 | if templ_7745c5c3_Err != nil { | 1375 | if templ_7745c5c3_Err != nil { | ||
| 1321 | return templ_7745c5c3_Err | 1376 | return templ_7745c5c3_Err | ||
| 1322 | } | 1377 | } | ||
| 1323 | - | var templ_7745c5c3_Var65 string | 1378 | + | var templ_7745c5c3_Var68 string |
| 1324 | - | templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created) | 1379 | + | templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(r.Created) |
| 1325 | if templ_7745c5c3_Err != nil { | 1380 | if templ_7745c5c3_Err != nil { | ||
| 1326 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 265, Col: 20} | 1381 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 276, Col: 20} |
| 1327 | } | 1382 | } | ||
| 1328 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65)) | 1383 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68)) |
| 1329 | if templ_7745c5c3_Err != nil { | 1384 | if templ_7745c5c3_Err != nil { | ||
| 1330 | return templ_7745c5c3_Err | 1385 | return templ_7745c5c3_Err | ||
| 1331 | } | 1386 | } | ||
| 1332 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</time></td><td class=\"c-when nowrap\"><time") | 1387 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</time></td><td class=\"c-when nowrap\"><time") |
| 1333 | if templ_7745c5c3_Err != nil { | 1388 | if templ_7745c5c3_Err != nil { | ||
| 1334 | return templ_7745c5c3_Err | 1389 | return templ_7745c5c3_Err | ||
| 1335 | } | 1390 | } | ||
| 1336 | if r.LastUsedAt != "" { | 1391 | if r.LastUsedAt != "" { | ||
| 1337 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, " datetime=\"") | 1392 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, " datetime=\"") |
| 1338 | if templ_7745c5c3_Err != nil { | 1393 | if templ_7745c5c3_Err != nil { | ||
| 1339 | return templ_7745c5c3_Err | 1394 | return templ_7745c5c3_Err | ||
| 1340 | } | 1395 | } | ||
| 1341 | - | var templ_7745c5c3_Var66 string | 1396 | + | var templ_7745c5c3_Var69 string |
| 1342 | - | templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt) | 1397 | + | templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.LastUsedAt) |
| 1343 | if templ_7745c5c3_Err != nil { | 1398 | if templ_7745c5c3_Err != nil { | ||
| 1344 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 270, Col: 33} | 1399 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 281, Col: 33} |
| 1345 | } | 1400 | } | ||
| 1346 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var66) | 1401 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69) |
| 1347 | if templ_7745c5c3_Err != nil { | 1402 | if templ_7745c5c3_Err != nil { | ||
| 1348 | return templ_7745c5c3_Err | 1403 | return templ_7745c5c3_Err | ||
| 1349 | } | 1404 | } | ||
| 1350 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "\"") | 1405 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "\"") |
| 1351 | if templ_7745c5c3_Err != nil { | 1406 | if templ_7745c5c3_Err != nil { | ||
| 1352 | return templ_7745c5c3_Err | 1407 | return templ_7745c5c3_Err | ||
| 1353 | } | 1408 | } | ||
| 1354 | } | 1409 | } | ||
| 1355 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, ">") | 1410 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, ">") |
| 1356 | if templ_7745c5c3_Err != nil { | 1411 | if templ_7745c5c3_Err != nil { | ||
| 1357 | return templ_7745c5c3_Err | 1412 | return templ_7745c5c3_Err | ||
| 1358 | } | 1413 | } | ||
| 1359 | - | var templ_7745c5c3_Var67 string | 1414 | + | var templ_7745c5c3_Var70 string |
| 1360 | - | templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed) | 1415 | + | templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(r.LastUsed) |
| 1361 | if templ_7745c5c3_Err != nil { | 1416 | if templ_7745c5c3_Err != nil { | ||
| 1362 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 272, Col: 21} | 1417 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 283, Col: 21} |
| 1363 | } | 1418 | } | ||
| 1364 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67)) | 1419 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70)) |
| 1365 | if templ_7745c5c3_Err != nil { | 1420 | if templ_7745c5c3_Err != nil { | ||
| 1366 | return templ_7745c5c3_Err | 1421 | return templ_7745c5c3_Err | ||
| 1367 | } | 1422 | } | ||
| 1368 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</time></td><td class=\"c-sync\">") | 1423 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "</time></td><td class=\"c-sync\">") |
| 1369 | if templ_7745c5c3_Err != nil { | 1424 | if templ_7745c5c3_Err != nil { | ||
| 1370 | return templ_7745c5c3_Err | 1425 | return templ_7745c5c3_Err | ||
| 1371 | } | 1426 | } | ||
| 1372 | if r.Synced { | 1427 | if r.Synced { | ||
| 1373 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "yes") | 1428 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "yes") |
| 1374 | if templ_7745c5c3_Err != nil { | 1429 | if templ_7745c5c3_Err != nil { | ||
| 1375 | return templ_7745c5c3_Err | 1430 | return templ_7745c5c3_Err | ||
| 1376 | } | 1431 | } | ||
| 1377 | } else { | 1432 | } else { | ||
| 1378 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "no") | 1433 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "no") |
| 1379 | if templ_7745c5c3_Err != nil { | 1434 | if templ_7745c5c3_Err != nil { | ||
| 1380 | return templ_7745c5c3_Err | 1435 | return templ_7745c5c3_Err | ||
| 1381 | } | 1436 | } | ||
| 1382 | } | 1437 | } | ||
| 1383 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "</td><td class=\"c-act\"><form method=\"post\" action=\"") | 1438 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "</td><td class=\"c-act\"><form method=\"post\" action=\"") |
| 1384 | if templ_7745c5c3_Err != nil { | 1439 | if templ_7745c5c3_Err != nil { | ||
| 1385 | return templ_7745c5c3_Err | 1440 | return templ_7745c5c3_Err | ||
| 1386 | } | 1441 | } | ||
| 1387 | - | var templ_7745c5c3_Var68 templ.SafeURL | 1442 | + | var templ_7745c5c3_Var71 templ.SafeURL |
| 1388 | - | templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove)) | 1443 | + | templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Remove)) |
| 1389 | if templ_7745c5c3_Err != nil { | 1444 | if templ_7745c5c3_Err != nil { | ||
| 1390 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 282, Col: 60} | 1445 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 293, Col: 60} |
| 1391 | } | 1446 | } | ||
| 1392 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68)) | 1447 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71)) |
| 1393 | if templ_7745c5c3_Err != nil { | 1448 | if templ_7745c5c3_Err != nil { | ||
| 1394 | return templ_7745c5c3_Err | 1449 | return templ_7745c5c3_Err | ||
| 1395 | } | 1450 | } | ||
| 1396 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"") | 1451 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "\"><button type=\"submit\" class=\"btn danger\" aria-label=\"") |
| 1397 | if templ_7745c5c3_Err != nil { | 1452 | if templ_7745c5c3_Err != nil { | ||
| 1398 | return templ_7745c5c3_Err | 1453 | return templ_7745c5c3_Err | ||
| 1399 | } | 1454 | } | ||
| 1400 | - | var templ_7745c5c3_Var69 string | 1455 | + | var templ_7745c5c3_Var72 string |
| 1401 | - | templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name) | 1456 | + | templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue("Remove passkey " + r.Name) |
| 1402 | if templ_7745c5c3_Err != nil { | 1457 | if templ_7745c5c3_Err != nil { | ||
| 1403 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 283, Col: 89} | 1458 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 294, Col: 89} |
| 1404 | } | 1459 | } | ||
| 1405 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var69) | 1460 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72) |
| 1406 | if templ_7745c5c3_Err != nil { | 1461 | if templ_7745c5c3_Err != nil { | ||
| 1407 | return templ_7745c5c3_Err | 1462 | return templ_7745c5c3_Err | ||
| 1408 | } | 1463 | } | ||
| 1409 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "\">Remove</button></form></td></tr>") | 1464 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "\">Remove</button></form></td></tr>") |
| 1410 | if templ_7745c5c3_Err != nil { | 1465 | if templ_7745c5c3_Err != nil { | ||
| 1411 | return templ_7745c5c3_Err | 1466 | return templ_7745c5c3_Err | ||
| 1412 | } | 1467 | } | ||
| 1413 | } | 1468 | } | ||
| 1414 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "</tbody></table>") | 1469 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "</tbody></table>") |
| 1415 | if templ_7745c5c3_Err != nil { | 1470 | if templ_7745c5c3_Err != nil { | ||
| 1416 | return templ_7745c5c3_Err | 1471 | return templ_7745c5c3_Err | ||
| 1417 | } | 1472 | } | ||
| 1418 | } else { | 1473 | } else { | ||
| 1419 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<p class=\"lede dim\">no passkeys yet.</p>") | 1474 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "<p class=\"lede dim\">no passkeys yet.</p>") |
| 1420 | if templ_7745c5c3_Err != nil { | 1475 | if templ_7745c5c3_Err != nil { | ||
| 1421 | return templ_7745c5c3_Err | 1476 | return templ_7745c5c3_Err | ||
| 1422 | } | 1477 | } | ||
| 1423 | } | 1478 | } | ||
| 1424 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, " ") | 1479 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, " ") |
| 1425 | if templ_7745c5c3_Err != nil { | 1480 | if templ_7745c5c3_Err != nil { | ||
| 1426 | return templ_7745c5c3_Err | 1481 | return templ_7745c5c3_Err | ||
| 1427 | } | 1482 | } | ||
| 1428 | if p.Full { | 1483 | if p.Full { | ||
| 1429 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "<p class=\"dim\">") | 1484 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "<p class=\"dim\">") |
| 1430 | if templ_7745c5c3_Err != nil { | 1485 | if templ_7745c5c3_Err != nil { | ||
| 1431 | return templ_7745c5c3_Err | 1486 | return templ_7745c5c3_Err | ||
| 1432 | } | 1487 | } | ||
| 1433 | - | var templ_7745c5c3_Var70 string | 1488 | + | var templ_7745c5c3_Var73 string |
| 1434 | - | templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max)) | 1489 | + | templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Max)) |
| 1435 | if templ_7745c5c3_Err != nil { | 1490 | if templ_7745c5c3_Err != nil { | ||
| 1436 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 294, Col: 31} | 1491 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 305, Col: 31} |
| 1437 | } | 1492 | } | ||
| 1438 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var70)) | 1493 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var73)) |
| 1439 | if templ_7745c5c3_Err != nil { | 1494 | if templ_7745c5c3_Err != nil { | ||
| 1440 | return templ_7745c5c3_Err | 1495 | return templ_7745c5c3_Err | ||
| 1441 | } | 1496 | } | ||
| 1442 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, " passkeys are registered, the most there can be. Remove one to add another.</p>") | 1497 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, " passkeys are registered, the most there can be. Remove one to add another.</p>") |
| 1443 | if templ_7745c5c3_Err != nil { | 1498 | if templ_7745c5c3_Err != nil { | ||
| 1444 | return templ_7745c5c3_Err | 1499 | return templ_7745c5c3_Err | ||
| 1445 | } | 1500 | } | ||
| 1446 | } else { | 1501 | } else { | ||
| 1447 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "<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=\"") | 1502 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "<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=\"") |
| 1448 | if templ_7745c5c3_Err != nil { | 1503 | if templ_7745c5c3_Err != nil { | ||
| 1449 | return templ_7745c5c3_Err | 1504 | return templ_7745c5c3_Err | ||
| 1450 | } | 1505 | } | ||
| 1451 | - | var templ_7745c5c3_Var71 string | 1506 | + | var templ_7745c5c3_Var74 string |
| 1452 | - | templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) | 1507 | + | templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Begin) |
| 1453 | if templ_7745c5c3_Err != nil { | 1508 | if templ_7745c5c3_Err != nil { | ||
| 1454 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 299, Col: 90} | 1509 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 310, Col: 90} |
| 1455 | } | 1510 | } | ||
| 1456 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var71) | 1511 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var74) |
| 1457 | if templ_7745c5c3_Err != nil { | 1512 | if templ_7745c5c3_Err != nil { | ||
| 1458 | return templ_7745c5c3_Err | 1513 | return templ_7745c5c3_Err | ||
| 1459 | } | 1514 | } | ||
| 1460 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "\" data-finish=\"") | 1515 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "\" data-finish=\"") |
| 1461 | if templ_7745c5c3_Err != nil { | 1516 | if templ_7745c5c3_Err != nil { | ||
| 1462 | return templ_7745c5c3_Err | 1517 | return templ_7745c5c3_Err | ||
| 1463 | } | 1518 | } | ||
| 1464 | - | var templ_7745c5c3_Var72 string | 1519 | + | var templ_7745c5c3_Var75 string |
| 1465 | - | templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) | 1520 | + | templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.Finish) |
| 1466 | if templ_7745c5c3_Err != nil { | 1521 | if templ_7745c5c3_Err != nil { | ||
| 1467 | - | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 299, Col: 115} | 1522 | + | return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/pages.templ`, Line: 310, Col: 115} |
| 1468 | } | 1523 | } | ||
| 1469 | - | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72) | 1524 | + | _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var75) |
| 1470 | if templ_7745c5c3_Err != nil { | 1525 | if templ_7745c5c3_Err != nil { | ||
| 1471 | return templ_7745c5c3_Err | 1526 | return templ_7745c5c3_Err | ||
| 1472 | } | 1527 | } | ||
| 1473 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "\">Add a passkey</button></form>") | 1528 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "\">Add a passkey</button></form>") |
| 1474 | if templ_7745c5c3_Err != nil { | 1529 | if templ_7745c5c3_Err != nil { | ||
| 1475 | return templ_7745c5c3_Err | 1530 | return templ_7745c5c3_Err | ||
| 1476 | } | 1531 | } | ||
| 1477 | } | 1532 | } | ||
| 1478 | - | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") | 1533 | + | templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, " <p class=\"dim\" role=\"status\" aria-live=\"polite\" data-passkey-status></p>") |
| 1479 | if templ_7745c5c3_Err != nil { | 1534 | if templ_7745c5c3_Err != nil { | ||
| 1480 | return templ_7745c5c3_Err | 1535 | return templ_7745c5c3_Err | ||
| 1481 | } | 1536 | } | ||
| 1482 | return nil | 1537 | return nil | ||
| 1483 | }) | 1538 | }) | ||
| 1484 | - | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var61), templ_7745c5c3_Buffer) | 1539 | + | templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var64), templ_7745c5c3_Buffer) |
| 1485 | if templ_7745c5c3_Err != nil { | 1540 | if templ_7745c5c3_Err != nil { | ||
| 1486 | return templ_7745c5c3_Err | 1541 | return templ_7745c5c3_Err | ||
| 1487 | } | 1542 | } | ||
M internal/adapters/web/summary.go +1 -0
| @@ -49,6 +49,7 @@ func (s *Server) summary(ctx context.Context, r *http.Request) (templ.Component, | |||
| 49 | 49 | now := s.cfg.Now() | |
| 50 | 50 | ||
| 51 | 51 | p := SummaryPage{ | |
| 52 | + | Mirror: s.mirrorBadge(ctx, d.repo.Name), | |
| 52 | 53 | AllHref: repoHref(d.name(), "commits", ref), | |
| 53 | 54 | Clone: Clone{ID: "clone-" + d.name(), Lines: []string{"git clone " + s.cloneURL(d.name())}}, | |
| 54 | 55 | } | |
| @@ -49,6 +49,7 @@ func (s *Server) summary(ctx context.Context, r *http.Request) (templ.Component, | |||||
| 49 | now := s.cfg.Now() | 49 | now := s.cfg.Now() | ||
| 50 | 50 | ||||
| 51 | p := SummaryPage{ | 51 | p := SummaryPage{ | ||
| 52 | + | Mirror: s.mirrorBadge(ctx, d.repo.Name), | |||
| 52 | AllHref: repoHref(d.name(), "commits", ref), | 53 | AllHref: repoHref(d.name(), "commits", ref), | ||
| 53 | Clone: Clone{ID: "clone-" + d.name(), Lines: []string{"git clone " + s.cloneURL(d.name())}}, | 54 | Clone: Clone{ID: "clone-" + d.name(), Lines: []string{"git clone " + s.cloneURL(d.name())}}, | ||
| 54 | } | 55 | } | ||
M internal/adapters/web/view.go +1 -0
| @@ -203,6 +203,7 @@ type CommitRow struct { | |||
| 203 | 203 | ||
| 204 | 204 | // SummaryPage is the repository summary. | |
| 205 | 205 | type SummaryPage struct { | |
| 206 | + | Mirror *MirrorBadge | |
| 206 | 207 | Facts []Fact | |
| 207 | 208 | Clone Clone | |
| 208 | 209 | Recent []CommitRow | |
| @@ -203,6 +203,7 @@ type CommitRow struct { | |||||
| 203 | 203 | ||||
| 204 | // SummaryPage is the repository summary. | 204 | // SummaryPage is the repository summary. | ||
| 205 | type SummaryPage struct { | 205 | type SummaryPage struct { | ||
| 206 | + | Mirror *MirrorBadge | |||
| 206 | Facts []Fact | 207 | Facts []Fact | ||
| 207 | Clone Clone | 208 | Clone Clone | ||
| 208 | Recent []CommitRow | 209 | Recent []CommitRow | ||
M internal/adapters/web/web.go +1 -0
| @@ -127,6 +127,7 @@ type Config struct { | |||
| 127 | 127 | ||
| 128 | 128 | // Server serves the pages. It is an http.Handler. | |
| 129 | 129 | type Server struct { | |
| 130 | + | mirrors ports.MirrorWarner | |
| 130 | 131 | cfg Config | |
| 131 | 132 | instance string | |
| 132 | 133 | origin string // scheme://host of the public URL, what a POST must come from | |
| @@ -127,6 +127,7 @@ type Config struct { | |||||
| 127 | 127 | ||||
| 128 | // Server serves the pages. It is an http.Handler. | 128 | // Server serves the pages. It is an http.Handler. | ||
| 129 | type Server struct { | 129 | type Server struct { | ||
| 130 | + | mirrors ports.MirrorWarner | |||
| 130 | cfg Config | 131 | cfg Config | ||
| 131 | instance string | 132 | instance string | ||
| 132 | origin string // scheme://host of the public URL, what a POST must come from | 133 | origin string // scheme://host of the public URL, what a POST must come from | ||