Monorepo for Tangled tangled.org
2

Configure Feed

Select the types of activity you want to include in your feed.

appview: the great uppercasing

Signed-off-by: Anirudh Oppiliappan <anirudh@tangled.org>

author
Anirudh Oppiliappan
committer
Tangled
date (May 27, 2026, 1:35 PM +0300) commit 457fae85 parent bf0f20ef change-id mrqwzmsp
+1790 -1677
+18 -12
appview/pages/funcmap.go
··· 45 45 "split": func(s string) []string { 46 46 return strings.Split(s, "\n") 47 47 }, 48 + "capitalize": func(s string) string { 49 + if s == "" { 50 + return s 51 + } 52 + return strings.ToUpper(s[:1]) + s[1:] 53 + }, 48 54 "trimPrefix": func(s, prefix string) string { 49 55 return strings.TrimPrefix(s, prefix) 50 56 }, ··· 527 533 "OrderedReactionKinds": models.OrderedReactionKinds, 528 534 // would be great to have ordered maps right about now 529 535 "UserSettingsTabs": []tab{ 530 - {"Name": "profile", "Icon": "user"}, 531 - {"Name": "keys", "Icon": "key"}, 532 - {"Name": "emails", "Icon": "mail"}, 533 - {"Name": "notifications", "Icon": "bell"}, 534 - {"Name": "knots", "Icon": "volleyball"}, 535 - {"Name": "spindles", "Icon": "spool"}, 536 - {"Name": "sites", "Icon": "globe"}, 536 + {"Name": "profile", "Label": "Profile", "Icon": "user"}, 537 + {"Name": "keys", "Label": "Keys", "Icon": "key"}, 538 + {"Name": "emails", "Label": "Emails", "Icon": "mail"}, 539 + {"Name": "notifications", "Label": "Notifications", "Icon": "bell"}, 540 + {"Name": "knots", "Label": "Knots", "Icon": "volleyball"}, 541 + {"Name": "spindles", "Label": "Spindles", "Icon": "spool"}, 542 + {"Name": "sites", "Label": "Sites", "Icon": "globe"}, 537 543 }, 538 544 "RepoSettingsTabs": []tab{ 539 - {"Name": "general", "Icon": "sliders-horizontal"}, 540 - {"Name": "access", "Icon": "users"}, 541 - {"Name": "pipelines", "Icon": "layers-2"}, 542 - {"Name": "hooks", "Icon": "webhook"}, 543 - {"Name": "sites", "Icon": "globe"}, 545 + {"Name": "general", "Label": "General", "Icon": "sliders-horizontal"}, 546 + {"Name": "access", "Label": "Access", "Icon": "users"}, 547 + {"Name": "pipelines", "Label": "Pipelines", "Icon": "layers-2"}, 548 + {"Name": "hooks", "Label": "Hooks", "Icon": "webhook"}, 549 + {"Name": "sites", "Label": "Sites", "Icon": "globe"}, 544 550 }, 545 551 "PdsUserDomain": p.pdsCfg.UserDomain, 546 552 }
+1 -1
appview/pages/templates/brand/brand.html
··· 1 - {{ define "title" }}brand{{ end }} 1 + {{ define "title" }}Brand &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="grid grid-cols-10">
+3 -3
appview/pages/templates/errors/404.html
··· 1 - {{ define "title" }}404 &middot; tangled{{ end }} 1 + {{ define "title" }}404 &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="flex flex-col items-center justify-center min-h-[60vh] text-center"> ··· 11 11 12 12 <div class="space-y-4"> 13 13 <h1 class="text-2xl sm:text-3xl font-bold text-gray-900 dark:text-white"> 14 - 404 &mdash; page not found 14 + 404 &mdash; Page not found 15 15 </h1> 16 16 <p class="text-gray-600 dark:text-gray-300"> 17 17 The page you're looking for doesn't exist. It may have been moved, deleted, or you have the wrong URL. ··· 19 19 <div class="flex flex-col sm:flex-row gap-3 justify-center items-center mt-6"> 20 20 <a href="javascript:history.back()" class="btn no-underline hover:no-underline gap-2"> 21 21 {{ i "arrow-left" "w-4 h-4" }} 22 - go back 22 + Go back 23 23 </a> 24 24 </div> 25 25 </div>
+4 -4
appview/pages/templates/errors/500.html
··· 1 - {{ define "title" }}500 &middot; tangled{{ end }} 1 + {{ define "title" }}500 &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="flex flex-col items-center justify-center min-h-[60vh] text-center"> ··· 11 11 12 12 <div class="space-y-4"> 13 13 <h1 class="text-2xl sm:text-3xl font-bold text-gray-900 dark:text-white"> 14 - 500 &mdash; internal server error 14 + 500 &mdash; Internal server error 15 15 </h1> 16 16 <p class="text-gray-600 dark:text-gray-300"> 17 17 We encountered an error while processing your request. Please try again later. ··· 19 19 <div class="flex flex-col sm:flex-row gap-3 justify-center items-center mt-6"> 20 20 <button onclick="location.reload()" class="btn-create gap-2"> 21 21 {{ i "refresh-cw" "w-4 h-4" }} 22 - try again 22 + Try again 23 23 </button> 24 24 <a href="/" class="btn no-underline hover:no-underline gap-2"> 25 25 {{ i "arrow-left" "w-4 h-4" }} 26 - back to home 26 + Back to home 27 27 </a> 28 28 </div> 29 29 </div>
+4 -4
appview/pages/templates/errors/503.html
··· 1 - {{ define "title" }}503 &middot; tangled{{ end }} 1 + {{ define "title" }}503 &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="flex flex-col items-center justify-center min-h-[60vh] text-center"> ··· 11 11 12 12 <div class="space-y-4"> 13 13 <h1 class="text-2xl sm:text-3xl font-bold text-gray-900 dark:text-white"> 14 - 503 &mdash; service unavailable 14 + 503 &mdash; Service unavailable 15 15 </h1> 16 16 <p class="text-gray-600 dark:text-gray-300"> 17 17 We were unable to reach the knot hosting this repository. The service may be temporarily unavailable. ··· 19 19 <div class="flex flex-col sm:flex-row gap-3 justify-center items-center mt-6"> 20 20 <button onclick="location.reload()" class="btn-create gap-2"> 21 21 {{ i "refresh-cw" "w-4 h-4" }} 22 - try again 22 + Try again 23 23 </button> 24 24 <a href="/" class="btn gap-2 no-underline hover:no-underline"> 25 25 {{ i "arrow-left" "w-4 h-4" }} 26 - back to timeline 26 + Back to timeline 27 27 </a> 28 28 </div> 29 29 </div>
+3 -3
appview/pages/templates/errors/knot404.html
··· 1 - {{ define "title" }}404 &middot; tangled{{ end }} 1 + {{ define "title" }}404 &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="flex flex-col items-center justify-center min-h-[60vh] text-center"> ··· 11 11 12 12 <div class="space-y-4"> 13 13 <h1 class="text-2xl sm:text-3xl font-bold text-gray-900 dark:text-white"> 14 - 404 &mdash; repository not found 14 + 404 &mdash; Repository not found 15 15 </h1> 16 16 <p class="text-gray-600 dark:text-gray-300"> 17 17 The repository you were looking for could not be found. The knot serving the repository may be unavailable. ··· 19 19 <div class="flex flex-col sm:flex-row gap-3 justify-center items-center mt-6"> 20 20 <a href="/" class="btn flex items-center gap-2 no-underline hover:no-underline"> 21 21 {{ i "arrow-left" "w-4 h-4" }} 22 - back to timeline 22 + Back to timeline 23 23 </a> 24 24 </div> 25 25 </div>
+1 -1
appview/pages/templates/fragments/comment/commentHeader.html
··· 32 32 {{ if .Comment.Deleted }} 33 33 {{ template "repo/fragments/shortTimeAgo" .Comment.Deleted }} 34 34 {{ else if .Comment.Edited }} 35 - edited {{ template "repo/fragments/shortTimeAgo" .Comment.Edited }} 35 + Edited {{ template "repo/fragments/shortTimeAgo" .Comment.Edited }} 36 36 {{ else }} 37 37 {{ template "repo/fragments/shortTimeAgo" .Comment.Created }} 38 38 {{ end }}
+2 -2
appview/pages/templates/fragments/comment/edit.html
··· 31 31 class="btn-create py-0 flex gap-1 items-center group text-sm" 32 32 > 33 33 {{ i "check" "size-4" }} 34 - save 34 + Save 35 35 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 36 36 </button> 37 37 {{ end }} ··· 44 44 hx-swap="outerHTML" 45 45 > 46 46 {{ i "x" "size-4" }} 47 - cancel 47 + Cancel 48 48 </button> 49 49 {{ end }}
+2 -2
appview/pages/templates/fragments/comment/reply.html
··· 34 34 hx-swap="outerHTML" 35 35 > 36 36 {{ i "x" "size-4" }} 37 - cancel 37 + Cancel 38 38 </button> 39 39 {{ end }} 40 40 ··· 45 45 > 46 46 {{ i "reply" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 47 47 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 48 - reply 48 + Reply 49 49 </button> 50 50 {{ end }}
+2 -2
appview/pages/templates/fragments/pagination.html
··· 23 23 {{ end }} 24 24 > 25 25 {{ i "chevron-left" "w-4 h-4" }} 26 - prev 26 + Prev 27 27 </a> 28 28 29 29 {{ if gt $page.Offset 0 }} ··· 74 74 href="{{ $basePath }}?{{ $queryParams }}&offset={{ $next }}&limit={{ $page.Limit }}" 75 75 {{ end }} 76 76 > 77 - next 77 + Next 78 78 {{ i "chevron-right" "w-4 h-4" }} 79 79 </a> 80 80 </div>
+1 -1
appview/pages/templates/fragments/starBtn.html
··· 22 22 {{ i "star" "w-4 h-4 shrink-0 inline group-[.htmx-request]:hidden" }} 23 23 {{ end }} 24 24 {{ i "loader-circle" "w-4 h-4 shrink-0 animate-spin hidden group-[.htmx-request]:inline" }} 25 - <span class="group-[.htmx-request]:hidden">{{ if .IsStarred }}unstar{{ else }}star{{ end }}</span> 25 + <span class="group-[.htmx-request]:hidden">{{ if .IsStarred }}Unstar{{ else }}Star{{ end }}</span> 26 26 </button> 27 27 {{ if .RepoName }} 28 28 {{ $did := .SubjectAt.Authority | string }}
+4 -4
appview/pages/templates/goodfirstissues/index.html
··· 1 - {{ define "title" }}good first issues{{ end }} 1 + {{ define "title" }}Good first issues &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 - <meta property="og:title" content="good first issues · tangled" /> 4 + <meta property="og:title" content="Good first issues · Tangled" /> 5 5 <meta property="og:type" content="object" /> 6 6 <meta property="og:url" content="https://tangled.org/goodfirstissues" /> 7 7 <meta property="og:description" content="Find good first issues to contribute to open source projects" /> ··· 141 141 href="/goodfirstissues?offset={{ $prev.Offset }}&limit={{ $prev.Limit }}" 142 142 > 143 143 {{ i "chevron-left" "w-4 h-4" }} 144 - previous 144 + Previous 145 145 </a> 146 146 {{ else }} 147 147 <div></div> ··· 154 154 hx-boost="true" 155 155 href="/goodfirstissues?offset={{ $next.Offset }}&limit={{ $next.Limit }}" 156 156 > 157 - next 157 + Next 158 158 {{ i "chevron-right" "w-4 h-4" }} 159 159 </a> 160 160 {{ end }}
+8 -8
appview/pages/templates/knots/dashboard.html
··· 1 - {{ define "title" }}{{ .Registration.Domain }} &middot; {{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} &middot; {{ .Registration.Domain }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 19 19 {{ define "knotDash" }} 20 20 <div> 21 21 <div class="flex justify-between items-center"> 22 - <h2 class="text-sm pb-2 uppercase font-bold">{{ .Tab }} &middot; {{ .Registration.Domain }}</h2> 22 + <h2 class="text-lg pb-2 font-medium">{{ .Tab | capitalize }} &middot; {{ .Registration.Domain }}</h2> 23 23 <div id="right-side" class="flex gap-2"> 24 24 {{ $style := "px-2 py-1 rounded flex items-center flex-shrink-0 gap-2" }} 25 25 {{ $isOwner := and .LoggedInUser (eq .LoggedInUser.Did .Registration.ByDid) }} 26 26 {{ if .Registration.IsRegistered }} 27 - <span class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 {{$style}}">{{ i "shield-check" "w-4 h-4" }} verified</span> 27 + <span class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 {{$style}}">{{ i "shield-check" "w-4 h-4" }} Verified</span> 28 28 {{ if $isOwner }} 29 29 {{ template "knots/fragments/addMemberModal" .Registration }} 30 30 {{ end }} 31 31 {{ else if .Registration.IsReadOnly }} 32 32 <span class="bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 {{$style}}"> 33 - {{ i "shield-alert" "w-4 h-4" }} read-only 33 + {{ i "shield-alert" "w-4 h-4" }} Read-only 34 34 </span> 35 35 {{ if $isOwner }} 36 36 {{ block "retryButton" .Registration }} {{ end }} 37 37 {{ end }} 38 38 {{ else }} 39 - <span class="bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200 {{$style}}">{{ i "shield-off" "w-4 h-4" }} unverified</span> 39 + <span class="bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200 {{$style}}">{{ i "shield-off" "w-4 h-4" }} Unverified</span> 40 40 {{ if $isOwner }} 41 41 {{ block "retryButton" .Registration }} {{ end }} 42 42 {{ end }} ··· 101 101 hx-headers='{"shouldRedirect": "true"}' 102 102 > 103 103 {{ i "trash-2" "w-5 h-5" }} 104 - <span class="hidden md:inline">delete</span> 104 + <span class="hidden md:inline">Delete</span> 105 105 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 106 106 </button> 107 107 {{ end }} ··· 116 116 hx-headers='{"shouldRefresh": "true"}' 117 117 > 118 118 {{ i "rotate-ccw" "w-5 h-5" }} 119 - <span class="hidden md:inline">retry</span> 119 + <span class="hidden md:inline">Retry</span> 120 120 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 121 121 </button> 122 122 {{ end }} ··· 135 135 hx-confirm="Are you sure you want to remove {{ $memberHandle }} from this knot?" 136 136 > 137 137 {{ i "user-minus" "w-4 h-4" }} 138 - remove 138 + Remove 139 139 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 140 140 </button> 141 141 {{ end }}
+5 -5
appview/pages/templates/knots/fragments/addMemberModal.html
··· 6 6 popovertargetaction="toggle" 7 7 > 8 8 {{ i "user-plus" "w-5 h-5" }} 9 - <span class="hidden md:inline">add member</span> 9 + <span class="hidden md:inline">Add member</span> 10 10 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 11 11 </button> 12 12 ··· 27 27 hx-swap="none" 28 28 class="flex flex-col gap-2" 29 29 > 30 - <label for="member-did-{{ .Id }}" class="uppercase p-0"> 31 - ADD MEMBER 30 + <label for="member-did-{{ .Id }}" class="text-lg font-medium p-0"> 31 + Add member 32 32 </label> 33 33 <p class="text-sm text-gray-500 dark:text-gray-400">Members can create repositories and run workflows on this knot.</p> 34 34 <actor-typeahead> ··· 51 51 popovertargetaction="hide" 52 52 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 53 53 > 54 - {{ i "x" "size-4" }} cancel 54 + {{ i "x" "size-4" }} Cancel 55 55 </button> 56 56 <button type="submit" class="btn w-1/2 flex items-center"> 57 - <span class="inline-flex gap-2 items-center">{{ i "user-plus" "size-4" }} add</span> 57 + <span class="inline-flex gap-2 items-center">{{ i "user-plus" "size-4" }} Add</span> 58 58 <span id="spinner" class="group"> 59 59 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 60 60 </span>
+6 -6
appview/pages/templates/knots/fragments/knotListing.html
··· 32 32 {{ $style := "px-2 py-1 rounded flex items-center flex-shrink-0 gap-2 text-sm" }} 33 33 {{ if .IsRegistered }} 34 34 <span class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 {{$style}}"> 35 - {{ i "shield-check" "w-4 h-4" }} verified 35 + {{ i "shield-check" "w-4 h-4" }} Verified 36 36 </span> 37 37 {{ template "knots/fragments/addMemberModal" . }} 38 38 {{ block "knotDeleteButton" . }} {{ end }} 39 39 {{ else if .IsNeedsUpgrade }} 40 40 <span class="bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 {{$style}}"> 41 - {{ i "shield-alert" "w-4 h-4" }} needs upgrade 41 + {{ i "shield-alert" "w-4 h-4" }} Needs upgrade 42 42 </span> 43 43 {{ block "knotRetryButton" . }} {{ end }} 44 44 {{ block "knotDeleteButton" . }} {{ end }} 45 45 {{ else }} 46 46 <span class="bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200 {{$style}}"> 47 - {{ i "shield-off" "w-4 h-4" }} unverified 47 + {{ i "shield-off" "w-4 h-4" }} Unverified 48 48 </span> 49 49 {{ block "knotRetryButton" . }} {{ end }} 50 50 {{ block "knotDeleteButton" . }} {{ end }} ··· 62 62 hx-confirm="{{ template "knots/fragments/deleteConfirm" . }}" 63 63 > 64 64 {{ i "trash-2" "w-5 h-5" }} 65 - <span class="hidden md:inline">delete</span> 65 + <span class="hidden md:inline">Delete</span> 66 66 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 67 67 </button> 68 68 {{ end }} ··· 77 77 hx-target="#knot-{{.Id}}" 78 78 > 79 79 {{ i "rotate-ccw" "w-5 h-5" }} 80 - <span class="hidden md:inline">retry</span> 80 + <span class="hidden md:inline">Retry</span> 81 81 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 82 82 </button> 83 83 {{ end }} 84 84 85 85 {{ define "knots/fragments/deleteConfirm" -}} 86 86 {{ if .RepoCount -}} 87 - Unregistering '{{ .Domain }}' will remove {{ plural .RepoCount "repository" "" }} from Tangled. The git data will stay on the knot, but these repos will disappear from Tangled. Are you sure? 87 + Unregistering '{{ .Domain }}' will remove {{ plural .RepoCount "repository" "" }} from Tangled. The git data will stay on the knot, but these repositories will disappear from Tangled. Are you sure? 88 88 {{- else -}} 89 89 Are you sure you want to delete the knot '{{ .Domain }}'? 90 90 {{- end -}}
+7 -7
appview/pages/templates/knots/index.html
··· 1 - {{ define "title" }}{{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 19 19 {{ define "knotsList" }} 20 20 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 21 21 <div class="col-span-1 md:col-span-2"> 22 - <h2 class="text-sm pb-2 uppercase font-bold">Knots</h2> 22 + <h2 class="text-lg pb-2 font-medium">Knots</h2> 23 23 {{ block "about" . }} {{ end }} 24 24 </div> 25 25 <div class="col-span-1 md:col-span-1 md:justify-self-end"> ··· 48 48 49 49 {{ define "list" }} 50 50 <section class="rounded w-full flex flex-col gap-2"> 51 - <h2 class="text-sm font-bold py-2 uppercase dark:text-gray-300">your knots</h2> 51 + <h2 class="text-lg font-medium py-2 dark:text-gray-300">Your knots</h2> 52 52 <div class="flex flex-col rounded border border-gray-200 dark:border-gray-700 w-full"> 53 53 {{ range .Knots }} 54 54 {{ template "knots/fragments/knotListing" . }} 55 55 {{ else }} 56 56 <div class="flex items-center justify-center p-2 border-b border-gray-200 dark:border-gray-700 text-gray-500"> 57 - no knots registered yet 57 + No knots registered yet 58 58 </div> 59 59 {{ end }} 60 60 </div> ··· 64 64 65 65 {{ define "register" }} 66 66 <section class="rounded w-full lg:w-fit flex flex-col gap-2"> 67 - <h2 class="text-sm font-bold py-2 uppercase dark:text-gray-300">register a knot</h2> 67 + <h2 class="text-lg font-medium py-2 dark:text-gray-300">Register a knot</h2> 68 68 <p class="mb-2 dark:text-gray-300">Enter the hostname of your knot to get started.</p> 69 69 <form 70 70 hx-post="/settings/knots/register" ··· 88 88 > 89 89 <span class="inline-flex items-center gap-2"> 90 90 {{ i "plus" "w-4 h-4" }} 91 - register 91 + Register 92 92 </span> 93 93 <span class="pl-2 hidden group-[.htmx-request]:inline"> 94 94 {{ i "loader-circle" "w-4 h-4 animate-spin" }} ··· 107 107 class="btn flex items-center gap-2" 108 108 href="https://docs.tangled.org/knot-self-hosting-guide.html#knot-self-hosting-guide"> 109 109 {{ i "book" "size-4" }} 110 - docs 110 + Docs 111 111 </a> 112 112 <div 113 113 id="add-email-modal"
+30 -30
appview/pages/templates/layouts/fragments/footer.html
··· 11 11 </a> 12 12 </div> 13 13 14 - {{ $headerStyle := "text-gray-900 dark:text-gray-200 font-bold text-sm uppercase tracking-wide mb-1" }} 14 + {{ $headerStyle := "text-gray-900 dark:text-gray-200 font-bold text-sm tracking-wide mb-1" }} 15 15 {{ $linkStyle := "text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:underline inline-flex gap-1 items-center" }} 16 16 {{ $iconStyle := "w-4 h-4 flex-shrink-0" }} 17 17 18 18 <!-- Center section with max-width --> 19 19 <div class="grid grid-cols-4 gap-2"> 20 20 <div class="flex flex-col gap-1"> 21 - <div class="{{ $headerStyle }}">legal</div> 22 - <a href="/terms" class="{{ $linkStyle }}">{{ i "file-text" $iconStyle }} terms of service</a> 23 - <a href="/privacy" class="{{ $linkStyle }}">{{ i "shield" $iconStyle }} privacy policy</a> 21 + <div class="{{ $headerStyle }}">Legal</div> 22 + <a href="/terms" class="{{ $linkStyle }}">{{ i "file-text" $iconStyle }} Terms of service</a> 23 + <a href="/privacy" class="{{ $linkStyle }}">{{ i "shield" $iconStyle }} Privacy policy</a> 24 24 </div> 25 25 26 26 <div class="flex flex-col gap-1"> 27 - <div class="{{ $headerStyle }}">resources</div> 28 - <a href="https://blog.tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "book-open" $iconStyle }} blog</a> 29 - <a href="https://docs.tangled.org" class="{{ $linkStyle }}">{{ i "book" $iconStyle }} docs</a> 30 - <a href="https://tangled.org/@tangled.org/core" class="{{ $linkStyle }}">{{ i "code" $iconStyle }} source</a> 31 - <a href="https://tangled.org/brand" class="{{ $linkStyle }}">{{ i "paintbrush" $iconStyle }} brand</a> 27 + <div class="{{ $headerStyle }}">Resources</div> 28 + <a href="https://blog.tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "book-open" $iconStyle }} Blog</a> 29 + <a href="https://docs.tangled.org" class="{{ $linkStyle }}">{{ i "book" $iconStyle }} Docs</a> 30 + <a href="https://tangled.org/@tangled.org/core" class="{{ $linkStyle }}">{{ i "code" $iconStyle }} Source</a> 31 + <a href="https://tangled.org/brand" class="{{ $linkStyle }}">{{ i "paintbrush" $iconStyle }} Brand</a> 32 32 </div> 33 33 34 34 <div class="flex flex-col gap-1"> 35 - <div class="{{ $headerStyle }}">social</div> 36 - <a href="https://chat.tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "message-circle" $iconStyle }} discord</a> 37 - <a href="https://web.libera.chat/#tangled" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "hash" $iconStyle }} irc</a> 38 - <a href="https://bsky.app/profile/tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ template "user/fragments/bluesky" $iconStyle }} bluesky</a> 39 - <a href="https://x.com/tangled_org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ template "user/fragments/x" $iconStyle }} twitter (x)</a> 35 + <div class="{{ $headerStyle }}">Social</div> 36 + <a href="https://chat.tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "message-circle" $iconStyle }} Discord</a> 37 + <a href="https://web.libera.chat/#tangled" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "hash" $iconStyle }} IRC</a> 38 + <a href="https://bsky.app/profile/tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ template "user/fragments/bluesky" $iconStyle }} Bluesky</a> 39 + <a href="https://x.com/tangled_org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ template "user/fragments/x" $iconStyle }} Twitter (X)</a> 40 40 </div> 41 41 42 42 <div class="flex flex-col gap-1"> 43 - <div class="{{ $headerStyle }}">contact</div> 43 + <div class="{{ $headerStyle }}">Contact</div> 44 44 <a href="mailto:team@tangled.org" class="{{ $linkStyle }}">{{ i "mail" "w-4 h-4 flex-shrink-0" }} team@tangled.org</a> 45 45 <a href="mailto:security@tangled.org" class="{{ $linkStyle }}">{{ i "shield-check" "w-4 h-4 flex-shrink-0" }} security@tangled.org</a> 46 46 </div> ··· 54 54 55 55 <!-- Mobile layout: stacked --> 56 56 <div class="lg:hidden flex flex-col gap-8"> 57 - {{ $headerStyle := "text-gray-900 dark:text-gray-200 font-bold text-xs uppercase tracking-wide mb-1" }} 57 + {{ $headerStyle := "text-gray-900 dark:text-gray-200 font-bold text-xs tracking-wide mb-1" }} 58 58 {{ $linkStyle := "text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:underline inline-flex gap-1 items-center" }} 59 59 {{ $iconStyle := "w-4 h-4 flex-shrink-0" }} 60 60 ··· 66 66 67 67 <div class="grid grid-cols-1 sm:grid-cols-1 md:grid-cols-4 sm:gap-6 md:gap-2 gap-6"> 68 68 <div class="flex flex-col gap-1"> 69 - <div class="{{ $headerStyle }}">legal</div> 70 - <a href="/terms" class="{{ $linkStyle }}">{{ i "file-text" $iconStyle }} terms of service</a> 71 - <a href="/privacy" class="{{ $linkStyle }}">{{ i "shield" $iconStyle }} privacy policy</a> 69 + <div class="{{ $headerStyle }}">Legal</div> 70 + <a href="/terms" class="{{ $linkStyle }}">{{ i "file-text" $iconStyle }} Terms of service</a> 71 + <a href="/privacy" class="{{ $linkStyle }}">{{ i "shield" $iconStyle }} Privacy policy</a> 72 72 </div> 73 73 74 74 <div class="flex flex-col gap-1"> 75 - <div class="{{ $headerStyle }}">resources</div> 76 - <a href="https://blog.tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "book-open" $iconStyle }} blog</a> 77 - <a href="https://docs.tangled.org" class="{{ $linkStyle }}">{{ i "book" $iconStyle }} docs</a> 78 - <a href="https://tangled.org/@tangled.org/core" class="{{ $linkStyle }}">{{ i "code" $iconStyle }} source</a> 79 - <a href="https://tangled.org/brand" class="{{ $linkStyle }}">{{ i "paintbrush" $iconStyle }} brand</a> 75 + <div class="{{ $headerStyle }}">Resources</div> 76 + <a href="https://blog.tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "book-open" $iconStyle }} Blog</a> 77 + <a href="https://docs.tangled.org" class="{{ $linkStyle }}">{{ i "book" $iconStyle }} Docs</a> 78 + <a href="https://tangled.org/@tangled.org/core" class="{{ $linkStyle }}">{{ i "code" $iconStyle }} Source</a> 79 + <a href="https://tangled.org/brand" class="{{ $linkStyle }}">{{ i "paintbrush" $iconStyle }} Brand</a> 80 80 </div> 81 81 82 82 <div class="flex flex-col gap-1"> 83 - <div class="{{ $headerStyle }}">social</div> 84 - <a href="https://chat.tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "message-circle" $iconStyle }} discord</a> 85 - <a href="https://web.libera.chat/#tangled" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "hash" $iconStyle }} irc</a> 86 - <a href="https://bsky.app/profile/tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ template "user/fragments/bluesky" $iconStyle }} bluesky</a> 87 - <a href="https://x.com/tangled_org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ template "user/fragments/x" $iconStyle }} twitter (x)</a> 83 + <div class="{{ $headerStyle }}">Social</div> 84 + <a href="https://chat.tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "message-circle" $iconStyle }} Discord</a> 85 + <a href="https://web.libera.chat/#tangled" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ i "hash" $iconStyle }} IRC</a> 86 + <a href="https://bsky.app/profile/tangled.org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ template "user/fragments/bluesky" $iconStyle }} Bluesky</a> 87 + <a href="https://x.com/tangled_org" class="{{ $linkStyle }}" target="_blank" rel="noopener noreferrer">{{ template "user/fragments/x" $iconStyle }} Twitter (X)</a> 88 88 </div> 89 89 90 90 <div class="flex flex-col gap-1"> 91 - <div class="{{ $headerStyle }}">contact</div> 91 + <div class="{{ $headerStyle }}">Contact</div> 92 92 <a href="mailto:team@tangled.org" class="{{ $linkStyle }}">{{ i "mail" "w-4 h-4 flex-shrink-0" }} team@tangled.org</a> 93 93 <a href="mailto:security@tangled.org" class="{{ $linkStyle }}">{{ i "shield-check" "w-4 h-4 flex-shrink-0" }} security@tangled.org</a> 94 94 </div>
+9 -9
appview/pages/templates/layouts/fragments/footerMinimal.html
··· 7 7 </a> 8 8 <span>&copy; 2026 Tangled Labs Oy.</span> 9 9 </div> 10 - <a href="https://blog.tangled.org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">blog</a> 11 - <a href="https://docs.tangled.org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">docs</a> 12 - <a href="https://tangled.org/tangled.org/core" hx-boost="true" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">source</a> 13 - <a href="https://tangled.org/brand" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">brand</a> 14 - <a href="https://chat.tangled.org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline" target="_blank" rel="noopener noreferrer">discord</a> 15 - <a href="https://bsky.app/profile/tangled.org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline" target="_blank" rel="noopener noreferrer">bluesky</a> 16 - <a href="https://x.com/tangled_org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline" target="_blank" rel="noopener noreferrer">twitter (x)</a> 17 - <a href="/terms" hx-boost="true" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">terms</a> 18 - <a href="/privacy" hx-boost="true" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">privacy</a> 10 + <a href="https://blog.tangled.org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">Blog</a> 11 + <a href="https://docs.tangled.org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">Docs</a> 12 + <a href="https://tangled.org/tangled.org/core" hx-boost="true" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">Source</a> 13 + <a href="https://tangled.org/brand" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">Brand</a> 14 + <a href="https://chat.tangled.org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline" target="_blank" rel="noopener noreferrer">Discord</a> 15 + <a href="https://bsky.app/profile/tangled.org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline" target="_blank" rel="noopener noreferrer">Bluesky</a> 16 + <a href="https://x.com/tangled_org" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline" target="_blank" rel="noopener noreferrer">Twitter (X)</a> 17 + <a href="/terms" hx-boost="true" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">Terms</a> 18 + <a href="/privacy" hx-boost="true" class="hover:text-gray-900 dark:hover:text-gray-200 hover:underline">Privacy</a> 19 19 </div> 20 20 </footer> 21 21 {{ end }}
+14 -14
appview/pages/templates/layouts/fragments/topbar.html
··· 15 15 <div class="hidden md:block md:order-2 w-px h-6 bg-gray-200 dark:bg-gray-700 self-center"></div> 16 16 <div class="flex items-center order-4 md:order-5">{{ block "profileDropdown" . }} {{ end }}</div> 17 17 {{ else }} 18 - <a href="/login">login</a> 18 + <a href="/login">Login</a> 19 19 <span class="text-gray-500 dark:text-gray-400">or</span> 20 20 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 21 - join now {{ i "arrow-right" "size-4" }} 21 + Join now {{ i "arrow-right" "size-4" }} 22 22 </a> 23 23 {{ end }} 24 24 </div> ··· 29 29 {{ define "newButton" }} 30 30 <details class="relative inline-block text-left nav-dropdown"> 31 31 <summary class="btn py-0 cursor-pointer list-none flex items-center gap-2"> 32 - {{ i "plus" "w-4 h-4" }} <span class="hidden md:inline">new</span> 32 + {{ i "plus" "w-4 h-4" }} <span class="hidden md:inline">New</span> 33 33 </summary> 34 34 <div class="absolute flex flex-col right-0 mt-3 p-4 rounded w-48 bg-white dark:bg-gray-800 dark:text-white border border-gray-200 dark:border-gray-700"> 35 35 <a href="/repo/new" class="flex items-center gap-2"> 36 36 {{ i "book-plus" "w-4 h-4" }} 37 - new repository 37 + New repository 38 38 </a> 39 39 <a href="/strings/new" class="flex items-center gap-2"> 40 40 {{ i "line-squiggle" "w-4 h-4" }} 41 - new string 41 + New string 42 42 </a> 43 43 </div> 44 44 </details> ··· 52 52 type="text" 53 53 id="topbar-search-input" 54 54 name="q" 55 - placeholder="search..." 55 + placeholder="Search..." 56 56 autocomplete="off" 57 57 class="flex-1 border-none bg-transparent p-0 focus:outline-none focus:[box-shadow:none] text-sm text-gray-800 dark:text-gray-200 placeholder-gray-400 dark:placeholder-gray-600 peer" 58 58 hx-get="/search/quick" ··· 107 107 type="text" 108 108 id="mobile-search-input" 109 109 name="q" 110 - placeholder="search..." 110 + placeholder="Search..." 111 111 autocomplete="off" 112 112 inputmode="search" 113 113 class="flex-1 min-w-0 border-none bg-transparent p-0 focus:outline-none focus:[box-shadow:none] text-[16px] text-gray-800 dark:text-gray-200 placeholder-gray-400 dark:placeholder-gray-600 peer" ··· 158 158 159 159 {{ $others := .Accounts | otherAccounts .Did }} 160 160 {{ if $others }} 161 - <div class="text-sm text-gray-500 dark:text-gray-400 px-3 py-1 pt-2">switch account</div> 161 + <div class="text-sm text-gray-500 dark:text-gray-400 px-3 py-1 pt-2">Switch account</div> 162 162 {{ range $others }} 163 163 <button 164 164 type="button" ··· 179 179 </div> 180 180 181 181 <div class="text-left flex-1 min-w-0 block truncate"> 182 - add account 182 + Add account 183 183 </div> 184 184 </a> 185 185 186 186 <div class="border-t border-gray-200 dark:border-gray-700"> 187 187 <a href="/{{ $handle }}" class="{{$linkStyle}}"> 188 188 {{ i "user" "size-4" }} 189 - profile 189 + Profile 190 190 </a> 191 191 <a href="/{{ $handle }}?tab=repos" class="{{$linkStyle}}"> 192 192 {{ i "book-marked" "size-4" }} 193 - repositories 193 + Repositories 194 194 </a> 195 195 <a href="/{{ $handle }}?tab=strings" class="{{$linkStyle}}"> 196 196 {{ i "line-squiggle" "size-4" }} 197 - strings 197 + Strings 198 198 </a> 199 199 <a href="/settings" class="{{$linkStyle}}"> 200 200 {{ i "cog" "size-4" }} 201 - settings 201 + Settings 202 202 </a> 203 203 <a href="#" 204 204 hx-post="/logout" 205 205 hx-swap="none" 206 206 class="{{$linkStyle}} text-red-400 hover:text-red-400 hover:bg-red-100 dark:hover:bg-red-700/20 pb-2"> 207 207 {{ i "log-out" "size-4" }} 208 - logout 208 + Logout 209 209 </a> 210 210 </div> 211 211 </div>
+4 -4
appview/pages/templates/layouts/profilebase.html
··· 1 - {{ define "title" }}{{ resolve .Card.UserDid }}{{ end }} 1 + {{ define "title" }}{{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 4 {{ $handle := resolve .Card.UserDid }} ··· 89 89 "> 90 90 <span class="flex items-center justify-center"> 91 91 {{ i $icon "w-4 h-4 mr-2" }} 92 - {{ $key }} 92 + {{ if eq $key "repos" }}Repositories{{ else }}{{ $key | capitalize }}{{ end }} 93 93 {{ if $meta }} 94 94 <span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-sm ml-1">{{ scaleFmt $meta }}</span> 95 95 {{ end }} ··· 104 104 {{ define "punchcard" }} 105 105 {{ $now := now }} 106 106 <div> 107 - <p class="px-2 pb-4 flex gap-2 text-sm font-bold dark:text-white"> 108 - PUNCHCARD 107 + <p class="px-2 pb-4 flex gap-2 items-baseline text-base font-medium dark:text-white"> 108 + Punchcard 109 109 <span class="font-mono font-normal text-sm text-gray-500 dark:text-gray-400 "> 110 110 {{ .Total | int64 | commaFmt }} commits 111 111 </span>
+4 -4
appview/pages/templates/layouts/repobase.html
··· 1 - {{ define "title" }}{{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <section id="repo-header" class="mb-2 py-2 px-4 dark:text-white"> ··· 45 45 > 46 46 <span class="flex items-center justify-center"> 47 47 {{ i $icon "w-4 h-4 mr-2" }} 48 - {{ $key }} 48 + {{ $key | capitalize }} 49 49 {{ if $meta }} 50 50 <span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-sm ml-1">{{ scaleFmt $meta }}</span> 51 51 {{ end }} ··· 90 90 {{ if .RepoInfo.Description }} 91 91 {{ .RepoInfo.Description | description }} 92 92 {{ else }} 93 - <span class="italic">this repo has no description</span> 93 + <span class="italic">This repository has no description</span> 94 94 {{ end }} 95 95 96 96 {{ with .RepoInfo.Website }} ··· 124 124 href="/{{ .RepoInfo.FullName }}/fork" 125 125 > 126 126 {{ i "git-fork" "w-4 h-4" }} 127 - fork 127 + Fork 128 128 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 129 129 </a> 130 130 <a
+1 -1
appview/pages/templates/legal/privacy.html
··· 1 - {{ define "title" }}privacy policy{{ end }} 1 + {{ define "title" }}Privacy policy &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="grid grid-cols-10">
+1 -1
appview/pages/templates/legal/terms.html
··· 1 - {{ define "title" }}terms of service{{ end }} 1 + {{ define "title" }}Terms of service &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="grid grid-cols-10">
+4 -4
appview/pages/templates/notifications/list.html
··· 1 - {{ define "title" }}notifications{{ end }} 1 + {{ define "title" }}Notifications &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="px-6 py-4"> ··· 6 6 <p class="text-xl font-bold dark:text-white">Notifications</p> 7 7 <a href="/settings/notifications" class="flex items-center gap-2"> 8 8 {{ i "settings" "w-4 h-4" }} 9 - preferences 9 + Preferences 10 10 </a> 11 11 </div> 12 12 </div> ··· 43 43 href = "/notifications?offset={{ $prev.Offset }}&limit={{ $prev.Limit }}" 44 44 > 45 45 {{ i "chevron-left" "w-4 h-4" }} 46 - previous 46 + Previous 47 47 </a> 48 48 {{ else }} 49 49 <div></div> ··· 57 57 hx-boost="true" 58 58 href = "/notifications?offset={{ $next.Offset }}&limit={{ $next.Limit }}" 59 59 > 60 - next 60 + Next 61 61 {{ i "chevron-right" "w-4 h-4" }} 62 62 </a> 63 63 {{ end }}
+3 -3
appview/pages/templates/repo/blob.html
··· 1 - {{ define "title" }}{{ .Path }} at {{ .Ref }} &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .Path }} at {{ .Ref }} &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 4 {{ template "repo/fragments/meta" . }} ··· 45 45 46 46 {{ if .BlobView.HasRawView }} 47 47 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 48 - <a href="/{{ .RepoInfo.FullName }}/raw/{{ pathEscape .Ref }}/{{ .Path }}">view raw</a> 48 + <a href="/{{ .RepoInfo.FullName }}/raw/{{ pathEscape .Ref }}/{{ .Path }}">View raw</a> 49 49 {{ end }} 50 50 51 51 {{ if .BlobView.ShowToggle }} 52 52 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 53 53 <a href="/{{ .RepoInfo.FullName }}/blob/{{ pathEscape .Ref }}/{{ .Path }}?code={{ .BlobView.ShowingRendered }}" hx-boost="true"> 54 - view {{ if .BlobView.ShowingRendered }}code{{ else }}rendered{{ end }} 54 + View {{ if .BlobView.ShowingRendered }}code{{ else }}rendered{{ end }} 55 55 </a> 56 56 {{ end }} 57 57
+8 -8
appview/pages/templates/repo/branches.html
··· 1 1 {{ define "title" }} 2 - branches &middot; {{ .RepoInfo.FullName }} 2 + Branches &middot; {{ .RepoInfo.FullName }} &middot; Tangled 3 3 {{ end }} 4 4 5 5 {{ define "extrameta" }} ··· 11 11 12 12 {{ define "repoContent" }} 13 13 <section id="branches-table" class="overflow-x-auto"> 14 - <h2 class="font-bold text-sm mb-4 uppercase dark:text-white"> 14 + <h2 class="font-bold text-sm mb-4 dark:text-white"> 15 15 Branches 16 16 </h2> 17 17 ··· 19 19 <table class="w-full border-collapse hidden md:table"> 20 20 <thead> 21 21 <tr> 22 - <th class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold">Name</th> 23 - <th class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold">Commit</th> 24 - <th class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold">Message</th> 25 - <th class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold">Date</th> 22 + <th class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 font-bold">Name</th> 23 + <th class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 font-bold">Commit</th> 24 + <th class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 font-bold">Message</th> 25 + <th class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 font-bold">Date</th> 26 26 </tr> 27 27 </thead> 28 28 <tbody> ··· 41 41 px-2 mx-1/2 42 42 inline-flex items-center 43 43 "> 44 - default 44 + Default 45 45 </span> 46 46 {{ end }} 47 47 </a> ··· 84 84 px-2 85 85 inline-flex items-center 86 86 "> 87 - default 87 + Default 88 88 </span> 89 89 {{ end }} 90 90 </a>
+2 -2
appview/pages/templates/repo/commit.html
··· 1 1 {{ define "title" }} 2 2 {{ $messageParts := splitN .Diff.Commit.Message "\n\n" 2 }} 3 - {{ index $messageParts 0 }} &middot; {{ .RepoInfo.FullName }}@{{ slice .Diff.Commit.This 0 7 }} 3 + {{ index $messageParts 0 }} &middot; {{ .RepoInfo.FullName }}@{{ slice .Diff.Commit.This 0 7 }} &middot; Tangled 4 4 {{ end }} 5 5 6 6 {{ define "extrameta" }} ··· 49 49 <div class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 px-2 py-1 rounded cursor-pointer"> 50 50 <div class="flex items-center gap-2"> 51 51 {{ i "shield-check" "w-4 h-4" }} 52 - verified 52 + Verified 53 53 </div> 54 54 </div> 55 55 <div class="absolute z-[9999] hidden group-hover:block bg-white dark:bg-gray-900 text-sm text-black dark:text-white rounded-md shadow-md p-4 w-80 top-full mt-2">
+1 -1
appview/pages/templates/repo/compare/compare.html
··· 1 1 {{ define "title" }} 2 - comparing {{ .Base }} and {{ .Head }} on {{ .RepoInfo.FullName }} 2 + Comparing {{ .Base }} and {{ .Head }} &middot; {{ .RepoInfo.FullName }} &middot; Tangled 3 3 {{ end }} 4 4 5 5 {{ define "repoContent" }}
+1 -1
appview/pages/templates/repo/compare/new.html
··· 1 1 {{ define "title" }} 2 - compare refs on {{ .RepoInfo.FullName }} 2 + Compare refs &middot; {{ .RepoInfo.FullName }} &middot; Tangled 3 3 {{ end }} 4 4 5 5 {{ define "repoContent" }}
+1 -1
appview/pages/templates/repo/empty.html
··· 1 - {{ define "title" }}{{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 4 {{ template "repo/fragments/meta" . }}
+7 -7
appview/pages/templates/repo/fork.html
··· 1 - {{ define "title" }}fork &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}Fork &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="grid grid-cols-12"> ··· 32 32 <div class="flex gap-4 relative border-l border-gray-200 dark:border-gray-700 pl-6 pb-6"> 33 33 {{ template "fork/numberCircle" 1 }} 34 34 <div class="flex-1"> 35 - <h2 class="text-lg font-semibold dark:text-white">Details</h2> 35 + <h2 class="text-lg font-medium dark:text-white">Details</h2> 36 36 37 37 <div class="space-y-4"> 38 38 39 39 {{/* Repository name */}} 40 40 <div> 41 - <label class="block text-sm font-bold uppercase dark:text-white mb-1">Repository name</label> 41 + <label class="block text-sm font-bold dark:text-white mb-1">Repository name</label> 42 42 <div class="flex flex-col md:flex-row md:items-center gap-2 md:gap-0 w-full"> 43 43 <div class="shrink-0 hidden md:flex items-center px-2 py-2 gap-1 text-sm text-gray-700 dark:text-gray-300 md:border md:border-r-0 md:border-gray-300 md:dark:border-gray-600 md:rounded-l md:bg-gray-50 md:dark:bg-gray-700"> 44 44 {{ template "user/fragments/picHandle" .LoggedInUser.Did }} ··· 56 56 57 57 {{/* Description */}} 58 58 <div> 59 - <label for="fork_description" class="block text-sm font-bold uppercase dark:text-white mb-1">Description</label> 59 + <label for="fork_description" class="block text-sm font-bold dark:text-white mb-1">Description</label> 60 60 <input 61 61 type="text" 62 62 id="fork_description" ··· 78 78 <div class="flex gap-4 relative border-l border-gray-200 dark:border-gray-700 pl-6 pb-6"> 79 79 {{ template "fork/numberCircle" 2 }} 80 80 <div class="flex-1 flex flex-col gap-2"> 81 - <h2 class="text-lg font-semibold dark:text-white">Knot selection</h2> 81 + <h2 class="text-lg font-medium dark:text-white">Knot selection</h2> 82 82 83 83 <div class="space-y-4"> 84 84 ··· 99 99 100 100 {{/* Knot list */}} 101 101 <div> 102 - <label class="block text-sm font-bold uppercase dark:text-white mb-1">Select a knot</label> 102 + <label class="block text-sm font-bold dark:text-white mb-1">Select a knot</label> 103 103 <div class="w-full dark:bg-gray-800 dark:text-white dark:border-gray-700 space-y-2"> 104 104 {{ range .Knots }} 105 105 <div class="flex items-center"> ··· 127 127 <div class="py-8 flex justify-end border-l border-gray-200 dark:border-gray-700 pl-6"> 128 128 <button type="submit" class="btn-create flex items-center gap-2"> 129 129 {{ i "git-fork" "size-4" }} 130 - fork repo 130 + Fork repository 131 131 <span id="spinner" class="group"> 132 132 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 133 133 </span>
+3 -3
appview/pages/templates/repo/forks.html
··· 1 - {{ define "title" }}forks · {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}Forks &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 {{ define "repoContent" }} 3 3 <div class="flex flex-col gap-4"> 4 - <h2 class="text-sm uppercase font-bold">Forked by</h2> 4 + <h2 class="text-lg font-medium">Forked by</h2> 5 5 <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"> 6 6 {{ range .Forks }} 7 7 <div class="border border-gray-200 dark:border-gray-700 rounded p-4"> ··· 34 34 <a href="/{{ $repoOwner }}/{{ .Name }}" class="truncate">{{ .Name }}</a> 35 35 </div> 36 36 <p class="text-sm text-gray-500 dark:text-gray-400"> 37 - forked {{ .Created | relTimeFmt }} 37 + Forked {{ .Created | relTimeFmt }} 38 38 </p> 39 39 </div> 40 40 </div>
+2 -2
appview/pages/templates/repo/fragments/artifactList.html
··· 4 4 {{ $isPushAllowed := $root.RepoInfo.Roles.IsPushAllowed }} 5 5 {{ $artifacts := index $root.ArtifactMap $tag.Tag.Hash }} 6 6 7 - <h2 class="my-4 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold">artifacts</h2> 7 + <h2 class="my-4 text-sm text-left text-gray-700 dark:text-gray-300 font-bold">Artifacts</h2> 8 8 <div class="flex flex-col rounded border border-gray-200 dark:border-gray-700"> 9 9 {{ range $artifact := $artifacts }} 10 10 {{ $args := dict "LoggedInUser" $root.LoggedInUser "RepoInfo" $root.RepoInfo "Artifact" $artifact }} ··· 62 62 title="Upload artifact"> 63 63 {{ i "upload" "size-4 inline group-[.htmx-request]:hidden" }} 64 64 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 65 - <span class="hidden md:inline">upload</span> 65 + <span class="hidden md:inline">Upload</span> 66 66 </button> 67 67 </div> 68 68 </form>
+1 -1
appview/pages/templates/repo/fragments/cloneDropdown.html
··· 9 9 popovertargetaction="toggle" 10 10 class="btn-create cursor-pointer list-none flex items-center gap-2 px-4"> 11 11 {{ i "download" "w-4 h-4" }} 12 - <span class="hidden md:inline">code</span> 12 + <span class="hidden md:inline">Code</span> 13 13 </button> 14 14 <div 15 15 popover
+1 -1
appview/pages/templates/repo/fragments/compareAllowPull.html
··· 18 18 class="btn flex items-center gap-2 no-underline hover:no-underline" 19 19 > 20 20 {{ i "git-pull-request-create" "w-4 h-4" }} 21 - create pull 21 + Create pull 22 22 <span id="create-pull-spinner" class="group"> 23 23 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 24 24 </span>
+7 -7
appview/pages/templates/repo/fragments/compareForm.html
··· 1 1 {{ define "repo/fragments/compareForm" }} 2 2 <div id="compare-select"> 3 - <h2 class="font-bold text-sm mb-2 uppercase dark:text-white"> 3 + <h2 class="font-bold text-sm mb-2 dark:text-white"> 4 4 Compare changes 5 5 </h2> 6 6 <p>Choose any two refs to compare.</p> 7 7 8 8 <form id="compare-form" class="flex items-center gap-2 py-4"> 9 9 <div> 10 - <span class="hidden md:inline">base:</span> 10 + <span class="hidden md:inline">Base:</span> 11 11 {{ block "dropdown" (list $ "base" $.Base) }} {{ end }} 12 12 </div> 13 13 <span class="flex-shrink-0"> 14 14 {{ i "arrow-left" "w-4 h-4" }} 15 15 </span> 16 16 <div> 17 - <span class="hidden md:inline">compare:</span> 17 + <span class="hidden md:inline">Compare:</span> 18 18 {{ block "dropdown" (list $ "head" $.Head) }} {{ end }} 19 19 </div> 20 20 <button ··· 27 27 const head = document.getElementById('head-select').value; 28 28 window.location.href = `/{{$.RepoInfo.FullName}}/compare/${encodeURIComponent(base)}...${encodeURIComponent(head)}`; 29 29 "> 30 - go 30 + Go 31 31 </button> 32 32 </form> 33 33 </div> ··· 53 53 {{ $name := index . 1 }} 54 54 {{ $default := index . 2 }} 55 55 <select name="{{$name}}" id="{{$name}}-select" class="p-1 border max-w-32 md:max-w-64 border-gray-200 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-700"> 56 - <optgroup label="branches ({{ len $root.Branches }})" class="bold text-sm"> 56 + <optgroup label="Branches ({{ len $root.Branches }})" class="bold text-sm"> 57 57 {{ range $root.Branches }} 58 58 <option value="{{ .Reference.Name }}" class="py-1" {{if eq .Reference.Name $default}}selected{{end}}> 59 59 {{ .Reference.Name }} 60 60 </option> 61 61 {{ end }} 62 62 </optgroup> 63 - <optgroup label="tags ({{ len $root.Tags }})" class="bold text-sm"> 63 + <optgroup label="Tags ({{ len $root.Tags }})" class="bold text-sm"> 64 64 {{ range $root.Tags }} 65 65 <option value="{{ .Reference.Name }}" class="py-1" {{if eq .Reference.Name $default}}selected{{end}}> 66 66 {{ .Reference.Name }} 67 67 </option> 68 68 {{ else }} 69 - <option class="py-1" disabled>no tags found</option> 69 + <option class="py-1" disabled>No tags found</option> 70 70 {{ end }} 71 71 </optgroup> 72 72 </select>
+6 -6
appview/pages/templates/repo/fragments/diff.html
··· 44 44 {{ if $root.IsInterdiff }} 45 45 <!-- interdiff indicator --> 46 46 <div class="flex items-center gap-2 before:content-['|'] before:text-gray-300 dark:before:text-gray-600 before:mr-2"> 47 - <span class="text-xs text-gray-600 dark:text-gray-400 uppercase tracking-wide">Interdiff</span> 47 + <span class="text-xs text-gray-600 dark:text-gray-400 tracking-wide">Interdiff</span> 48 48 <a 49 49 href="/{{ $root.RepoInfo.FullName }}/pulls/{{ $root.Pull.PullId }}/round/{{ sub $root.ActiveRound 1 }}" 50 50 class="px-2 py-0.5 bg-white dark:bg-gray-700 rounded font-mono text-xs hover:bg-gray-50 dark:hover:bg-gray-600 border border-gray-300 dark:border-gray-600" ··· 62 62 {{ else if ne $root.ActiveRound nil }} 63 63 <!-- diff round indicator --> 64 64 <div class="flex items-center gap-2 before:content-['|'] before:text-gray-300 dark:before:text-gray-600 before:mr-2"> 65 - <span class="text-xs text-gray-600 dark:text-gray-400 uppercase tracking-wide">Diff</span> 65 + <span class="text-xs text-gray-600 dark:text-gray-400 tracking-wide">Diff</span> 66 66 <span class="px-2 py-0.5 bg-white dark:bg-gray-700 rounded font-mono text-xs border border-gray-300 dark:border-gray-600"> 67 - <span class="hidden md:inline">round </span>#{{ $root.ActiveRound }} 67 + <span class="hidden md:inline">Round </span>#{{ $root.ActiveRound }} 68 68 </span> 69 69 </div> 70 70 {{ end }} ··· 195 195 /> 196 196 <span class="peer-checked:hidden">{{ i "circle" "size-4" }}</span> 197 197 <span class="hidden peer-checked:inline text-green-600 dark:text-green-400">{{ i "circle-check" "size-4" }}</span> 198 - <span class="hidden md:inline">reviewed</span> 198 + <span class="hidden md:inline">Reviewed</span> 199 199 </label> 200 200 </div> 201 201 </summary> ··· 236 236 <input type="checkbox" id="collapseToggle" class="peer/collapse hidden" checked/> 237 237 <span class="peer-checked/collapse:hidden inline-flex items-center gap-2"> 238 238 {{ i "unfold-vertical" "w-4 h-4" }} 239 - <span class="hidden md:inline">expand all</span> 239 + <span class="hidden md:inline">Expand all</span> 240 240 </span> 241 241 <span class="peer-checked/collapse:inline-flex hidden flex items-center gap-2"> 242 242 {{ i "fold-vertical" "w-4 h-4" }} 243 - <span class="hidden md:inline">collapse all</span> 243 + <span class="hidden md:inline">Collapse all</span> 244 244 </span> 245 245 </label> 246 246 <script>
+2 -2
appview/pages/templates/repo/fragments/diffOpts.html
··· 28 28 class="group btn-group-item {{ if eq $active "unified" }}active{{ end }}"> 29 29 {{ i "square-split-vertical" "size-4 inline group-[.htmx-request]:hidden" }} 30 30 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 31 - unified 31 + Unified 32 32 </button> 33 33 <button 34 34 {{ if $usePost }} ··· 46 46 class="group btn-group-item {{ if eq $active "split" }}active{{ end }}"> 47 47 {{ i "square-split-horizontal" "size-4 inline group-[.htmx-request]:hidden" }} 48 48 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 49 - split 49 + Split 50 50 </button> 51 51 </div> 52 52 {{ end }}
+4 -4
appview/pages/templates/repo/fragments/editLabelPanel.html
··· 148 148 })()" 149 149 class="text-xs text-gray-500 dark:text-gray-400 hover:underline self-end inline-flex items-center gap-1"> 150 150 {{ i "user-round-plus" "size-3.5" }} 151 - assign to me 151 + Assign to me 152 152 </button> 153 153 {{ end }} 154 154 ··· 160 160 {{ template "multipleInputField" (dict "def" $def "value" "" "key" $def.AtUri.String "prefix" $prefix) }} 161 161 </div> 162 162 <button type="button" onClick="this.insertAdjacentHTML('beforebegin', document.getElementById('tpl-{{ $def.Id }}{{ $groupSuffix }}').innerHTML)" class="w-full btn flex items-center gap-2"> 163 - {{ i "plus" "size-4" }} add 163 + {{ i "plus" "size-4" }} Add 164 164 </button> 165 165 {{ end }} 166 166 ··· 254 254 hx-swap="outerHTML" 255 255 hx-target="#edit-label-panel" 256 256 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 group"> 257 - {{ i "x" "size-4" }} cancel 257 + {{ i "x" "size-4" }} Cancel 258 258 </button> 259 259 260 260 <button 261 261 id="save-btn" 262 262 type="submit" 263 263 class="btn w-1/2 flex items-center"> 264 - <span class="inline-flex gap-2 items-center">{{ i "check" "size-4" }} save</span> 264 + <span class="inline-flex gap-2 items-center">{{ i "check" "size-4" }} Save</span> 265 265 <span id="spinner" class="group"> 266 266 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 267 267 </span>
+1 -1
appview/pages/templates/repo/fragments/feedDropdown.html
··· 4 4 popovertargetaction="toggle" 5 5 class="btn text-sm cursor-pointer list-none flex items-center gap-2"> 6 6 {{ i "rss" "size-4" }} 7 - <span class="hidden md:inline">atom</span> 7 + <span class="hidden md:inline">Atom</span> 8 8 </button> 9 9 10 10 <div
+1 -1
appview/pages/templates/repo/fragments/labelSectionHeaderText.html
··· 1 1 {{ define "repo/fragments/labelSectionHeaderText" }} 2 - <span class="text-xs uppercase tracking-wide text-gray-800 dark:text-gray-200">{{ . }}</span> 2 + <span class="text-sm font-bold text-gray-500 dark:text-gray-400 capitalize">{{ . }}</span> 3 3 {{ end }}
+1 -1
appview/pages/templates/repo/fragments/singleTag.html
··· 58 58 {{ end }} 59 59 {{ template "repo/fragments/artifactList" (list $root .) }} 60 60 {{ else }} 61 - <p class="italic text-gray-500 dark:text-gray-400">no message</p> 61 + <p class="italic text-gray-500 dark:text-gray-400">No message</p> 62 62 {{ end }} 63 63 </div> 64 64 </div>
+10 -10
appview/pages/templates/repo/index.html
··· 1 - {{ define "title" }}{{ .RepoInfo.FullName }} at {{ .Ref }}{{ end }} 1 + {{ define "title" }}{{ .RepoInfo.FullName }} at {{ .Ref }} &middot; Tangled{{ end }} 2 2 3 3 4 4 {{ define "extrameta" }} ··· 71 71 onchange="window.location.href = '/{{ .RepoInfo.FullName }}/tree/' + encodeURIComponent(this.value)" 72 72 class="p-1 border max-w-32 border-gray-200 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-700" 73 73 > 74 - <optgroup label="branches ({{len .Branches}})" class="bold text-sm"> 74 + <optgroup label="Branches ({{len .Branches}})" class="bold text-sm"> 75 75 {{ range .Branches }} 76 76 <option 77 77 value="{{ .Reference.Name }}" ··· 84 84 </option> 85 85 {{ end }} 86 86 </optgroup> 87 - <optgroup label="tags ({{len .Tags}})" class="bold text-sm"> 87 + <optgroup label="Tags ({{len .Tags}})" class="bold text-sm"> 88 88 {{ range .Tags }} 89 89 <option 90 90 value="{{ .Reference.Name }}" ··· 96 96 {{ .Reference.Name }} 97 97 </option> 98 98 {{ else }} 99 - <option class="py-1" disabled>no tags found</option> 99 + <option class="py-1" disabled>No tags found</option> 100 100 {{ end }} 101 101 </optgroup> 102 102 </select> ··· 166 166 <div id="commit-log" class="md:col-span-1 px-2 pb-4"> 167 167 <div class="flex justify-between items-center"> 168 168 <a href="/{{ .RepoInfo.FullName }}/commits/{{ .Ref | urlquery }}" class="flex items-center gap-2 pb-2 cursor-pointer font-bold hover:text-gray-600 dark:hover:text-gray-300 hover:no-underline"> 169 - {{ i "logs" "w-4 h-4" }} commits 169 + {{ i "logs" "w-4 h-4" }} Commits 170 170 <span class="bg-gray-100 dark:bg-gray-700 font-normal rounded py-1/2 px-1 text-sm">{{ scaleFmt .TotalCommits }}</span> 171 171 </a> 172 172 </div> ··· 286 286 {{ if gt (len .BranchesTrunc) 0 }} 287 287 <div id="branches" class="md:col-span-1 px-2 py-4 border-t border-gray-200 dark:border-gray-700"> 288 288 <a href="/{{ .RepoInfo.FullName }}/branches" class="flex items-center gap-2 pb-2 cursor-pointer font-bold hover:text-gray-600 dark:hover:text-gray-300 hover:no-underline"> 289 - {{ i "git-branch" "w-4 h-4" }} branches 289 + {{ i "git-branch" "w-4 h-4" }} Branches 290 290 <span class="bg-gray-100 dark:bg-gray-700 font-normal rounded py-1/2 px-1 text-sm">{{ scaleFmt (len .Branches) }}</span> 291 291 </a> 292 292 <div class="flex flex-col gap-1"> ··· 303 303 {{ end }} 304 304 {{ if .IsDefault }} 305 305 <span class="px-1 text-gray-500 dark:text-gray-400 select-none after:content-['·'] shrink-0"></span> 306 - <span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-xs font-mono shrink-0">default</span> 306 + <span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-xs font-mono shrink-0">Default</span> 307 307 {{ end }} 308 308 </div> 309 309 {{ if ne $.Ref .Reference.Name }} 310 310 <a href="/{{ $.RepoInfo.FullName }}/compare/{{ $.Ref | urlquery }}...{{ .Reference.Name | urlquery }}" 311 311 class="text-xs flex gap-2 items-center shrink-0 ml-2" 312 312 title="Compare branches or tags"> 313 - {{ i "git-compare" "w-3 h-3" }} compare 313 + {{ i "git-compare" "w-3 h-3" }} Compare 314 314 </a> 315 315 {{ end }} 316 316 </div> ··· 325 325 <div id="tags" class="md:col-span-1 px-2 py-4 border-t border-gray-200 dark:border-gray-700"> 326 326 <div class="flex justify-between items-center"> 327 327 <a href="/{{ .RepoInfo.FullName }}/tags" class="flex items-center gap-2 pb-2 cursor-pointer font-bold hover:text-gray-600 dark:hover:text-gray-300 hover:no-underline"> 328 - {{ i "tags" "w-4 h-4" }} tags 328 + {{ i "tags" "w-4 h-4" }} Tags 329 329 <span class="bg-gray-100 dark:bg-gray-700 font-normal rounded py-1/2 px-1 text-sm">{{ scaleFmt (len .Tags) }}</span> 330 330 </a> 331 331 </div> ··· 345 345 {{ end }} 346 346 {{ if eq $idx 0 }} 347 347 {{ with .Tag }}<span class="px-1 text-gray-500 dark:text-gray-400 select-none after:content-['·']"></span>{{ end }} 348 - <span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-xs font-mono">latest</span> 348 + <span class="bg-gray-200 dark:bg-gray-700 rounded py-1/2 px-1 text-xs font-mono">Latest</span> 349 349 {{ end }} 350 350 </div> 351 351 </div>
+2 -2
appview/pages/templates/repo/issues/fragments/issueListing.html
··· 14 14 <div class="text-sm text-gray-500 dark:text-gray-400 flex flex-wrap items-center gap-1"> 15 15 {{ $bgColor := "bg-gray-800 dark:bg-gray-700" }} 16 16 {{ $icon := "ban" }} 17 - {{ $state := "closed" }} 17 + {{ $state := "Closed" }} 18 18 {{ if .Open }} 19 19 {{ $bgColor = "bg-green-600 dark:bg-green-700" }} 20 20 {{ $icon = "circle-dot" }} 21 - {{ $state = "open" }} 21 + {{ $state = "Open" }} 22 22 {{ end }} 23 23 24 24 <span class="inline-flex items-center rounded px-2 py-[5px] {{ $bgColor }}">
+7 -7
appview/pages/templates/repo/issues/fragments/newComment.html
··· 34 34 > 35 35 {{ i "message-square-plus" "w-4 h-4 inline group-[.htmx-request]/form:hidden" }} 36 36 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]/form:inline" }} 37 - comment 37 + Comment 38 38 </button> 39 39 40 40 {{ $isIssueAuthor := and .LoggedInUser (eq .LoggedInUser.Did .Issue.Did) }} ··· 49 49 > 50 50 {{ i "ban" "w-4 h-4 inline group-[.htmx-request]/close:hidden" }} 51 51 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]/close:inline" }} 52 - <span id="close-button-text">close</span> 52 + <span id="close-button-text">Close</span> 53 53 </button> 54 54 <div 55 55 id="close-issue" ··· 70 70 > 71 71 {{ i "refresh-ccw-dot" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 72 72 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 73 - reopen 73 + Reopen 74 74 </button> 75 75 {{ end }} 76 76 ··· 93 93 94 94 if (closeButtonText) { 95 95 if (textarea.value.trim() !== '') { 96 - closeButtonText.innerHTML = `close with comment`; 96 + closeButtonText.innerHTML = `Close with comment`; 97 97 } else { 98 - closeButtonText.innerHTML = `close`; 98 + closeButtonText.innerHTML = `Close`; 99 99 } 100 100 } 101 101 } ··· 109 109 {{ else }} 110 110 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm p-6 relative flex gap-2 items-center"> 111 111 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 112 - sign up 112 + Sign up 113 113 </a> 114 114 <span class="text-gray-500 dark:text-gray-400">or</span> 115 - <a href="/login" class="underline">login</a> 115 + <a href="/login" class="underline">Login</a> 116 116 to add to the discussion 117 117 </div> 118 118 {{ end }}
+4 -4
appview/pages/templates/repo/issues/fragments/putIssue.html
··· 11 11 class="group"> 12 12 <div class="flex flex-col gap-2"> 13 13 <div> 14 - <label for="title">title</label> 14 + <label for="title">Title</label> 15 15 <input type="text" name="title" id="title" class="w-full" value="{{ if .Issue }}{{ .Issue.Title }}{{ end }}" /> 16 16 </div> 17 17 <div> 18 - <label for="body">body</label> 18 + <label for="body">Body</label> 19 19 <textarea 20 20 name="body" 21 21 id="body" ··· 37 37 {{ end }} 38 38 > 39 39 {{ i "x" "w-4 h-4" }} 40 - cancel 40 + Cancel 41 41 </a> 42 42 <button type="submit" class="btn-create flex items-center gap-2"> 43 43 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} ··· 46 46 {{ else }} 47 47 {{ i "circle-plus" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 48 48 {{ end }} 49 - {{ .Action }} 49 + {{ .Action | capitalize }} 50 50 </button> 51 51 </div> 52 52 </div>
+2 -2
appview/pages/templates/repo/issues/issue.html
··· 1 - {{ define "title" }}{{ .Issue.Title }} &middot; issue #{{ .Issue.IssueId }} &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .Issue.Title }} &middot; Issue #{{ .Issue.IssueId }} &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 4 4 {{ define "extrameta" }} ··· 64 64 <div class="inline-flex items-center gap-2"> 65 65 <span class="inline-flex items-center rounded px-2 py-[5px] {{ $bgColor }}"> 66 66 {{ i $icon "w-3 h-3 mr-1.5 text-white dark:text-white" }} 67 - <span class="text-white dark:text-white text-sm">{{ .Issue.State }}</span> 67 + <span class="text-white dark:text-white text-sm">{{ if eq .Issue.State "open" }}Open{{ else }}Closed{{ end }}</span> 68 68 </span> 69 69 70 70 <span class="text-gray-500 dark:text-gray-400 text-sm flex flex-wrap items-center gap-1">
+6 -6
appview/pages/templates/repo/issues/issues.html
··· 1 - {{ define "title" }}issues &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}Issues &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 - {{ $title := "issues"}} 4 + {{ $title := "Issues"}} 5 5 {{ $url := printf "https://tangled.org/%s/issues" .RepoInfo.FullName }} 6 6 7 7 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} ··· 13 13 {{ $open := 14 14 (dict 15 15 "Key" "open" 16 - "Value" "open" 16 + "Value" "Open" 17 17 "Icon" "circle-dot" 18 18 "Meta" (scaleFmt .RepoInfo.Stats.IssueCount.Open)) }} 19 19 {{ $closed := 20 20 (dict 21 21 "Key" "closed" 22 - "Value" "closed" 22 + "Value" "Closed" 23 23 "Icon" "ban" 24 24 "Meta" (scaleFmt .RepoInfo.Stats.IssueCount.Closed)) }} 25 25 {{ $values := list $open $closed }} ··· 33 33 type="text" 34 34 name="q" 35 35 value="{{ .FilterQuery }}" 36 - placeholder="search issues..." 36 + placeholder="Search issues..." 37 37 > 38 38 <a 39 39 {{ if $active }}href="?q=state:{{ $active }}"{{ else }}href="?"{{ end }} ··· 57 57 class="col-start-3 btn-create text-sm flex items-center justify-center gap-2 no-underline hover:no-underline hover:text-white" 58 58 > 59 59 {{ i "circle-plus" "w-4 h-4" }} 60 - <span>new</span> 60 + <span>New</span> 61 61 </a> 62 62 </div> 63 63 <div class="error" id="issues"></div>
+1 -1
appview/pages/templates/repo/issues/new.html
··· 1 - {{ define "title" }}new issue &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}New issue &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "repoContent" }} 4 4 {{ template "repo/issues/fragments/putIssue" . }}
+1 -1
appview/pages/templates/repo/knotUnreachable.html
··· 1 - {{ define "title" }}{{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 {{ define "extrameta" }} 3 3 {{ template "repo/fragments/meta" . }} 4 4 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo) }}
+10 -10
appview/pages/templates/repo/log.html
··· 1 - {{ define "title" }}commits &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}Commits &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 - {{ $title := printf "commits &middot; %s" .RepoInfo.FullName }} 4 + {{ $title := printf "Commits &middot; %s" .RepoInfo.FullName }} 5 5 {{ $url := printf "https://tangled.org/%s/commits" .RepoInfo.FullName }} 6 6 7 7 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} ··· 9 9 10 10 {{ define "repoContent" }} 11 11 <section id="commit-table" class="overflow-x-auto"> 12 - <h2 class="font-bold text-sm mb-4 uppercase dark:text-white"> 13 - commits 12 + <h2 class="font-bold text-sm mb-4 dark:text-white"> 13 + Commits 14 14 </h2> 15 15 16 16 <!-- desktop view (hidden on small screens) --> 17 17 <div class="hidden md:flex md:flex-col divide-y divide-gray-200 dark:divide-gray-700"> 18 18 {{ $grid := "grid grid-cols-14 gap-4" }} 19 19 <div class="{{ $grid }}"> 20 - <div class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold col-span-3">Author</div> 21 - <div class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold col-span-3">Commit</div> 22 - <div class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold col-span-6">Message</div> 23 - <div class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold col-span-2 justify-self-end">Date</div> 20 + <div class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 font-bold col-span-3">Author</div> 21 + <div class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 font-bold col-span-3">Commit</div> 22 + <div class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 font-bold col-span-6">Message</div> 23 + <div class="py-2 text-sm text-left text-gray-700 dark:text-gray-300 font-bold col-span-2 justify-self-end">Date</div> 24 24 </div> 25 25 {{ range $index, $commit := .Commits }} 26 26 {{ $messageParts := splitN $commit.Message "\n\n" 2 }} ··· 202 202 {{ define "repoAfter" }} 203 203 {{ $commits_len := len .Commits }} 204 204 <div class="flex justify-end mt-4 gap-2"> 205 - {{ if gt .Page 1 }}<a class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700" hx-boost="true" onclick="window.location.href = window.location.pathname + '?page={{ sub .Page 1 }}'">{{ i "chevron-left" "w-4 h-4" }} previous</a>{{ else }}<div></div>{{ end }} 206 - {{ if eq $commits_len 60 }}<a class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700" hx-boost="true" onclick="window.location.href = window.location.pathname + '?page={{ add .Page 1 }}'">next {{ i "chevron-right" "w-4 h-4" }}</a>{{ end }} 205 + {{ if gt .Page 1 }}<a class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700" hx-boost="true" onclick="window.location.href = window.location.pathname + '?page={{ sub .Page 1 }}'">{{ i "chevron-left" "w-4 h-4" }} Previous</a>{{ else }}<div></div>{{ end }} 206 + {{ if eq $commits_len 60 }}<a class="btn flex items-center gap-2 no-underline hover:no-underline dark:text-white dark:hover:bg-gray-700" hx-boost="true" onclick="window.location.href = window.location.pathname + '?page={{ add .Page 1 }}'">Next {{ i "chevron-right" "w-4 h-4" }}</a>{{ end }} 207 207 </div> 208 208 {{ end }}
+2 -2
appview/pages/templates/repo/needsUpgrade.html
··· 1 - {{ define "title" }}{{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 {{ define "extrameta" }} 3 3 {{ template "repo/fragments/meta" . }} 4 4 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo) }} ··· 7 7 <main> 8 8 <div class="relative w-full h-96 flex items-center justify-center"> 9 9 <div class="w-full h-full grid grid-cols-1 md:grid-cols-2 gap-4 md:divide-x divide-gray-300 dark:divide-gray-600 text-gray-300 dark:text-gray-600"> 10 - <!-- mimic the repo view here, placeholders are LLM generated --> 10 + <!-- mimic the repository view here, placeholders are LLM generated --> 11 11 <div id="file-list" class="flex flex-col gap-2 col-span-1 w-full h-full p-4 items-start justify-start text-left"> 12 12 {{ $files := 13 13 (list
+9 -9
appview/pages/templates/repo/new.html
··· 1 - {{ define "title" }}new repo{{ end }} 1 + {{ define "title" }}New repository &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="grid grid-cols-12"> ··· 27 27 <div class="mt-8 flex justify-end"> 28 28 <button type="submit" class="btn-create flex items-center gap-2"> 29 29 {{ i "book-plus" "w-4 h-4" }} 30 - create repo 30 + Create repository 31 31 <span id="spinner" class="group"> 32 32 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 33 33 </span> ··· 46 46 47 47 <!-- Content column --> 48 48 <div class="flex-1 pb-12"> 49 - <h2 class="text-lg font-semibold dark:text-white">General</h2> 49 + <h2 class="text-lg font-medium dark:text-white">General</h2> 50 50 <div class="text-sm text-gray-500 dark:text-gray-400 mb-4">Basic repository information.</div> 51 51 52 52 <div class="space-y-2"> ··· 64 64 </div> 65 65 66 66 <div class="flex-1"> 67 - <h2 class="text-lg font-semibold dark:text-white">Configuration</h2> 67 + <h2 class="text-lg font-medium dark:text-white">Configuration</h2> 68 68 <div class="text-sm text-gray-500 dark:text-gray-400 mb-4">Repository settings and hosting.</div> 69 69 70 70 <div class="space-y-2"> ··· 78 78 {{ define "name" }} 79 79 <!-- Repository Name with Owner --> 80 80 <div> 81 - <label class="block text-sm font-bold uppercase dark:text-white mb-1"> 81 + <label class="block text-sm font-bold dark:text-white mb-1"> 82 82 Repository name 83 83 </label> 84 84 <div class="flex flex-col md:flex-row md:items-center gap-2 md:gap-0 w-full"> ··· 103 103 {{ define "description" }} 104 104 <!-- Description --> 105 105 <div> 106 - <label for="description" class="block text-sm font-bold uppercase dark:text-white mb-1"> 106 + <label for="description" class="block text-sm font-bold dark:text-white mb-1"> 107 107 Description 108 108 </label> 109 109 <input ··· 123 123 {{ define "defaultBranch" }} 124 124 <!-- Default Branch --> 125 125 <div> 126 - <label for="branch" class="block text-sm font-bold uppercase dark:text-white mb-1"> 126 + <label for="branch" class="block text-sm font-bold dark:text-white mb-1"> 127 127 Default branch 128 128 </label> 129 129 <input ··· 143 143 {{ define "knot" }} 144 144 <!-- Knot Selection --> 145 145 <div> 146 - <label class="block text-sm font-bold uppercase dark:text-white mb-1"> 146 + <label class="block text-sm font-bold dark:text-white mb-1"> 147 147 Select a knot 148 148 </label> 149 149 <div class="w-full space-y-2"> ··· 161 161 <label for="domain-{{ . }}" class="dark:text-white lowercase">{{ . }}</label> 162 162 </div> 163 163 {{ else }} 164 - <p class="dark:text-white">no knots available.</p> 164 + <p class="dark:text-white">No knots available.</p> 165 165 {{ end }} 166 166 </div> 167 167 <p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
+5 -5
appview/pages/templates/repo/pipelines/pipelines.html
··· 1 - {{ define "title" }}pipelines &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}Pipelines &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 - {{ $title := "pipelines"}} 4 + {{ $title := "Pipelines"}} 5 5 {{ $url := printf "https://tangled.org/%s/pipelines" .RepoInfo.FullName }} 6 6 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 7 7 {{ end }} ··· 12 12 {{ $all := 13 13 (dict 14 14 "Key" "all" 15 - "Value" "all" 15 + "Value" "All" 16 16 "Icon" "package" 17 17 "Meta" "") }} 18 18 {{ $push := 19 19 (dict 20 20 "Key" "push" 21 - "Value" "push" 21 + "Value" "Push" 22 22 "Icon" "git-commit-horizontal" 23 23 "Meta" "") }} 24 24 {{ $pr := 25 25 (dict 26 26 "Key" "pull_request" 27 - "Value" "pull request" 27 + "Value" "Pull request" 28 28 "Icon" "git-pull-request" 29 29 "Meta" "") }} 30 30 {{ $values := list $all $push $pr }}
+2 -2
appview/pages/templates/repo/pipelines/workflow.html
··· 1 - {{ define "title" }} {{ .Workflow }} &middot; pipeline {{ .Pipeline.Id }} &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .Workflow }} &middot; Pipeline {{ .Pipeline.Id }} &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 - {{ $title := "pipelines"}} 4 + {{ $title := "Pipelines"}} 5 5 {{ $url := printf "https://tangled.org/%s/pipelines" .RepoInfo.FullName }} 6 6 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} 7 7 {{ end }}
+6 -6
appview/pages/templates/repo/pulls/fragments/pullActions.html
··· 28 28 class="btn-flat p-2 flex items-center gap-2 no-underline hover:no-underline group"> 29 29 {{ i "message-square-plus" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 30 30 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 31 - comment 31 + Comment 32 32 </button> 33 33 {{ if .BranchDeleteStatus }} 34 34 <button ··· 38 38 class="btn-flat p-2 flex items-center gap-2 no-underline hover:no-underline group text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 39 39 {{ i "git-branch" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 40 40 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 41 - delete branch 41 + Delete branch 42 42 </button> 43 43 {{ end }} 44 44 {{ if and $isPushAllowed $isOpen $isLastRound }} ··· 51 51 > 52 52 {{ i "git-merge" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 53 53 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 54 - merge{{if $stackCount}} {{$stackCount}}{{end}} 54 + Merge{{if $stackCount}} {{$stackCount}}{{end}} 55 55 </button> 56 56 {{ end }} 57 57 ··· 76 76 > 77 77 {{ i "rotate-ccw" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 78 78 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 79 - resubmit 79 + Resubmit 80 80 </button> 81 81 {{ end }} 82 82 ··· 87 87 class="btn-flat p-2 flex items-center gap-2 group"> 88 88 {{ i "ban" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 89 89 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 90 - close 90 + Close 91 91 </button> 92 92 {{ end }} 93 93 ··· 98 98 class="btn-flat p-2 flex items-center gap-2 group"> 99 99 {{ i "refresh-ccw-dot" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 100 100 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 101 - reopen 101 + Reopen 102 102 </button> 103 103 {{ end }} 104 104 </div>
+2 -2
appview/pages/templates/repo/pulls/fragments/pullCompareBranches.html
··· 33 33 class="py-1" 34 34 > 35 35 {{ .Reference.Name }} 36 - {{ if $isRecent }}(new){{ end }} 37 - {{ if and $.TargetBranch (eq .Reference.Name $.TargetBranch) }}(target){{ end }} 36 + {{ if $isRecent }}(New){{ end }} 37 + {{ if and $.TargetBranch (eq .Reference.Name $.TargetBranch) }}(Target){{ end }} 38 38 </option> 39 39 {{ end }} 40 40 </select>
+1 -1
appview/pages/templates/repo/pulls/fragments/pullCompareForksBranches.html
··· 30 30 class="py-1" 31 31 > 32 32 {{ .Reference.Name }} 33 - {{ if $isRecent }}(new){{ end }} 33 + {{ if $isRecent }}(New){{ end }} 34 34 </option> 35 35 {{ end }} 36 36 </select>
+3 -3
appview/pages/templates/repo/pulls/fragments/pullComposeHost.html
··· 26 26 <div class="flex-shrink-0 relative z-10"> 27 27 {{ template "pullComposeSectionNumber" 1 }} 28 28 </div> 29 - <h3 class="uppercase text-sm tracking-wide font-bold my-0 dark:text-white">source</h3> 29 + <h3 class="text-sm tracking-wide font-bold my-0 dark:text-white">Source</h3> 30 30 </div> 31 31 <div class="ml-10 flex flex-col gap-3"> 32 32 {{ template "repo/pulls/fragments/pullStepSource" . }} ··· 43 43 <div class="flex-shrink-0 relative z-10"> 44 44 {{ template "pullComposeSectionNumber" 2 }} 45 45 </div> 46 - <h3 class="uppercase text-sm tracking-wide font-bold my-0 dark:text-white">review</h3> 46 + <h3 class="text-sm tracking-wide font-bold my-0 dark:text-white">Review</h3> 47 47 </div> 48 48 <div class="ml-10 flex flex-col gap-3"> 49 49 {{ template "repo/pulls/fragments/pullStepReview" . }} ··· 57 57 <div class="flex-shrink-0 relative z-10"> 58 58 {{ template "pullComposeSectionNumber" 3 }} 59 59 </div> 60 - <h3 class="uppercase text-sm tracking-wide font-bold my-0 dark:text-white">details</h3> 60 + <h3 class="text-sm tracking-wide font-bold my-0 dark:text-white">Details</h3> 61 61 </div> 62 62 <div class="ml-10 flex flex-col gap-3"> 63 63 {{ template "repo/pulls/fragments/pullStepDetails" . }}
+2 -2
appview/pages/templates/repo/pulls/fragments/pullNewComment.html
··· 41 41 hx-target="#actions-{{.RoundNumber}}" 42 42 > 43 43 {{ i "x" "w-4 h-4" }} 44 - <span>cancel</span> 44 + <span>Cancel</span> 45 45 </button> 46 46 {{ end }} 47 47 ··· 51 51 class="btn-create-flat flex items-center gap-2"> 52 52 {{ i "reply" "w-4 h-4 inline group-[.htmx-request]:hidden" }} 53 53 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 54 - reply 54 + Reply 55 55 </button> 56 56 {{ end }}
+3 -3
appview/pages/templates/repo/pulls/fragments/pullResubmit.html
··· 5 5 6 6 <div class="flex items-center gap-2 text-amber-500 dark:text-amber-50"> 7 7 {{ i "pencil" "w-4 h-4" }} 8 - <span class="font-medium">resubmit your patch</span> 8 + <span class="font-medium">Resubmit your patch</span> 9 9 </div> 10 10 11 11 <div class="mt-2 text-sm text-gray-700 dark:text-gray-200"> ··· 37 37 {{ end }} 38 38 > 39 39 {{ i "rotate-ccw" "w-4 h-4" }} 40 - <span>resubmit</span> 40 + <span>Resubmit</span> 41 41 <span id="resubmit-spinner" class="group"> 42 42 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 43 43 </span> ··· 51 51 hx-indicator="#cancel-resubmit-spinner" 52 52 > 53 53 {{ i "x" "w-4 h-4" }} 54 - <span>cancel</span> 54 + <span>Cancel</span> 55 55 <span id="cancel-resubmit-spinner" class="group"> 56 56 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 57 57 </span>
+1 -1
appview/pages/templates/repo/pulls/fragments/pullStack.html
··· 8 8 <span class="hidden group-open:flex"> 9 9 {{ i "chevrons-down-up" "w-4 h-4" }} 10 10 </span> 11 - STACK 11 + Stack 12 12 <span class="bg-gray-200 dark:bg-gray-700 font-normal rounded py-1/2 px-1 text-sm">{{ len .Stack }}</span> 13 13 </span> 14 14 </summary>
+1 -1
appview/pages/templates/repo/pulls/fragments/pullState.html
··· 15 15 16 16 <span class="inline-flex items-center rounded px-2 py-[5px] {{ $bgColor }} text-sm"> 17 17 {{ i $icon "w-3 h-3 mr-1.5 text-white" }} 18 - <span class="text-white">{{ .String }}</span> 18 + <span class="text-white">{{ if .IsOpen }}Open{{ else if .IsMerged }}Merged{{ else if .IsAbandoned }}Abandoned{{ else }}Closed{{ end }}</span> 19 19 </span> 20 20 {{ end }} 21 21
+1 -1
appview/pages/templates/repo/pulls/fragments/pullStepDetails.html
··· 24 24 {{ $root := .Root }} 25 25 {{ $previewUrl := .PreviewUrl }} 26 26 <div class="flex flex-col gap-1"> 27 - <label for="title" class="text-xs uppercase tracking-wide text-gray-800 dark:text-gray-200">title</label> 27 + <label for="title" class="text-xs tracking-wide text-gray-800 dark:text-gray-200">Title</label> 28 28 <input 29 29 type="text" 30 30 name="title"
+1 -1
appview/pages/templates/repo/pulls/fragments/pullStepReview.html
··· 139 139 <div class="flex flex-col md:flex-row gap-6"> 140 140 <div class="flex-1 min-w-0 flex flex-col gap-3"> 141 141 <div class="flex flex-col gap-1"> 142 - <label class="text-xs uppercase tracking-wide text-gray-800 dark:text-gray-200">title</label> 142 + <label class="text-xs tracking-wide text-gray-800 dark:text-gray-200">Title</label> 143 143 <input 144 144 type="text" 145 145 name="{{ $titleName }}"
+1 -1
appview/pages/templates/repo/pulls/fragments/pullStepSource.html
··· 85 85 {{ if $preset }}selected{{ end }} 86 86 {{ if $isSource }}disabled{{ end }}> 87 87 {{ .Reference.Name }} 88 - {{ if $isSource }}(source){{ end }} 88 + {{ if $isSource }}(Source){{ end }} 89 89 </option> 90 90 {{ end }} 91 91 </select>
+1 -1
appview/pages/templates/repo/pulls/fragments/pullVouchNudge.html
··· 27 27 title="Skip suggestion" 28 28 class="group shrink-0 text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 p-0.5" 29 29 > 30 - <span class="group-[.htmx-request]:hidden">dismiss</span> 30 + <span class="group-[.htmx-request]:hidden">Dismiss</span> 31 31 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:block" }} 32 32 </button> 33 33 <div class="shrink-0">
+2 -2
appview/pages/templates/repo/pulls/fragments/summarizedPullHeader.html
··· 24 24 <div class="inline-flex items-center gap-1"> 25 25 {{ i "message-square" "w-3 h-3 md:hidden" }} 26 26 {{ $commentCount }} 27 - <span class="hidden md:inline">comment{{if ne $commentCount 1}}s{{end}}</span> 27 + <span class="hidden md:inline">Comment{{if ne $commentCount 1}}s{{end}}</span> 28 28 </div> 29 29 </span> 30 30 <span class="before:content-['·'] before:select-none text-gray-500 dark:text-gray-400"></span> 31 31 <span> 32 - <span class="hidden md:inline">round</span> 32 + <span class="hidden md:inline">Round</span> 33 33 <span class="font-mono">#{{ $latestRound }}</span> 34 34 </span> 35 35 </div>
+1 -1
appview/pages/templates/repo/pulls/new.html
··· 1 - {{ define "title" }}new pull &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}New pull &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "repoContent" }} 4 4 {{ template "repo/pulls/fragments/pullComposeHost" . }}
+25 -25
appview/pages/templates/repo/pulls/pull.html
··· 1 1 {{ define "title" }} 2 - {{ .Pull.Title }} &middot; pull #{{ .Pull.PullId }} &middot; {{ .RepoInfo.FullName }} 2 + {{ .Pull.Title }} &middot; Pull #{{ .Pull.PullId }} &middot; {{ .RepoInfo.FullName }} &middot; Tangled 3 3 {{ end }} 4 4 5 5 {{ define "extrameta" }} ··· 364 364 <a class="btn-flat flex items-center gap-2 no-underline hover:no-underline text-sm" 365 365 href="/{{ $root.RepoInfo.FullName }}/pulls/{{ $root.Pull.PullId }}/round/{{ $round }}?{{ safeUrl $root.DiffOpts.Encode }}#round-#{{ $round }}"> 366 366 {{ i "diff" "w-4 h-4" }} 367 - diff 367 + Diff 368 368 </a> 369 369 {{ end }} 370 370 {{ if and (ne $idx 0) (or (not $root.IsInterdiff) (ne $root.ActiveRound $round)) }} 371 371 <a class="btn-flat flex items-center gap-2 no-underline hover:no-underline text-sm" 372 372 href="/{{ $root.RepoInfo.FullName }}/pulls/{{ $root.Pull.PullId }}/round/{{ $round }}/interdiff?{{ safeUrl $root.DiffOpts.Encode }}"> 373 373 {{ i "chevrons-left-right-ellipsis" "w-4 h-4 rotate-90" }} 374 - interdiff 374 + Interdiff 375 375 </a> 376 376 {{ end }} 377 377 </div> ··· 389 389 <span>{{ i "git-commit-horizontal" "w-4 h-4" }}</span> 390 390 {{ len $patches }} commit{{ if ne (len $patches) 1 }}s{{ end }} 391 391 <div class="text-sm text-gray-500 dark:text-gray-400"> 392 - <span class="group-open/commit:hidden inline">expand</span> 393 - <span class="hidden group-open/commit:inline">collapse</span> 392 + <span class="group-open/commit:hidden inline">Expand</span> 393 + <span class="hidden group-open/commit:inline">Collapse</span> 394 394 </div> 395 395 </summary> 396 396 {{ range $patches }} ··· 447 447 {{ define "mergeCheck" }} 448 448 {{ $isOpen := .Pull.State.IsOpen }} 449 449 {{ if and $isOpen .MergeCheck .MergeCheck.Error }} 450 - <div class="flex items-center gap-2"> 451 - {{ i "triangle-alert" "w-4 h-4 text-red-600 dark:text-red-500" }} 452 - {{ .MergeCheck.Error }} 450 + <div class="flex items-center gap-2 text-red-600 dark:text-red-500"> 451 + {{ i "triangle-alert" "w-4 h-4" }} 452 + <span class="font-medium">{{ .MergeCheck.Error }}</span> 453 453 </div> 454 454 {{ else if and $isOpen .MergeCheck .MergeCheck.IsConflicted }} 455 455 <details class="group/conflict"> 456 456 <summary class="flex items-center justify-between cursor-pointer list-none"> 457 - <div class="flex items-center gap-2 "> 458 - {{ i "triangle-alert" "text-red-600 dark:text-red-500 w-4 h-4" }} 459 - <span class="font-medium">merge conflicts detected</span> 457 + <div class="flex items-center gap-2 text-red-600 dark:text-red-500"> 458 + {{ i "triangle-alert" "w-4 h-4" }} 459 + <span class="font-medium">Merge conflicts detected</span> 460 460 <div class="text-sm text-gray-500 dark:text-gray-400"> 461 - <span class="group-open/conflict:hidden inline">expand</span> 462 - <span class="hidden group-open/conflict:inline">collapse</span> 461 + <span class="group-open/conflict:hidden inline">Expand</span> 462 + <span class="hidden group-open/conflict:inline">Collapse</span> 463 463 </div> 464 464 </div> 465 465 </summary> ··· 482 482 {{ end }} 483 483 </details> 484 484 {{ else if and $isOpen .MergeCheck }} 485 - <div class="flex items-center gap-2"> 486 - {{ i "check" "w-4 h-4 text-green-600 dark:text-green-500" }} 487 - <span>no conflicts, ready to merge</span> 485 + <div class="flex items-center gap-2 text-green-600 dark:text-green-500"> 486 + {{ i "check" "w-4 h-4" }} 487 + <span class="font-medium">No conflicts, ready to merge</span> 488 488 </div> 489 489 {{ end }} 490 490 {{ end }} ··· 494 494 <div class="bg-gray-50 dark:bg-gray-700 border border-black dark:border-gray-500 rounded shadow-sm px-6 py-2 relative"> 495 495 <div class="flex items-center gap-2 text-black dark:text-white"> 496 496 {{ i "ban" "w-4 h-4" }} 497 - <span class="font-medium">closed without merging</span 497 + <span class="font-medium">Closed without merging</span 498 498 > 499 499 </div> 500 500 </div> ··· 502 502 <div class="bg-purple-50 dark:bg-purple-900 border border-purple-500 rounded shadow-sm px-6 py-2 relative"> 503 503 <div class="flex items-center gap-2 text-purple-500 dark:text-purple-300"> 504 504 {{ i "git-merge" "w-4 h-4" }} 505 - <span class="font-medium">pull request successfully merged</span 505 + <span class="font-medium">Pull request successfully merged</span 506 506 > 507 507 </div> 508 508 </div> ··· 521 521 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded shadow-sm px-6 py-2 relative"> 522 522 <div class="flex items-center gap-2 text-amber-500 dark:text-amber-300"> 523 523 {{ i "triangle-alert" "w-4 h-4" }} 524 - <span class="font-medium">this branch has been updated, consider resubmitting</span> 524 + <span class="font-medium">This branch has been updated, consider resubmitting</span> 525 525 </div> 526 526 </div> 527 527 {{ end }} ··· 538 538 <summary class="cursor-pointer list-none flex items-center gap-2"> 539 539 {{ template "repo/pipelines/fragments/pipelineSymbol" (dict "Pipeline" $pipeline "ShortSummary" false) }} 540 540 <div class="text-sm text-gray-500 dark:text-gray-400"> 541 - <span class="group-open/pipeline:hidden inline">expand</span> 542 - <span class="hidden group-open/pipeline:inline">collapse</span> 541 + <span class="group-open/pipeline:hidden inline">Expand</span> 542 + <span class="hidden group-open/pipeline:inline">Collapse</span> 543 543 </div> 544 544 </summary> 545 545 <div class="my-2 grid grid-cols-1 bg-white dark:bg-gray-800 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700"> ··· 589 589 </div> 590 590 <span class="text-gray-500 dark:text-gray-400 text-sm group-hover/summary:text-gray-600 dark:group-hover/summary:text-gray-300 transition-colors flex items-center gap-2 -ml-2 relative"> 591 591 {{ i "circle-plus" "size-4 z-5" }} 592 - expand {{ $c }} comment{{ if ne $c 1 }}s{{ end }} 592 + Expand {{ $c }} comment{{ if ne $c 1 }}s{{ end }} 593 593 </span> 594 594 </div> 595 595 </summary> ··· 606 606 </div> 607 607 {{ if gt $c 0}} 608 608 <button class="flex items-center gap-2 -ml-2 relative cursor-pointer text-sm text-gray-500 dark:text-gray-400 group-hover/collapse:text-gray-600 dark:group-hover/collapse:text-gray-300 mt-4 pb-4 transition-colors" hx-on:click="this.closest('details').open = false"> 609 - <span class="bg-gray-50 dark:bg-slate-900 dark:rounded-full">{{ i "circle-chevron-up" "size-4 z-5" }}</span> collapse comment{{ if ne $c 1 }}s{{ end }} 609 + <span class="bg-gray-50 dark:bg-slate-900 dark:rounded-full">{{ i "circle-chevron-up" "size-4 z-5" }}</span> Collapse comment{{ if ne $c 1 }}s{{ end }} 610 610 </button> 611 611 {{ end }} 612 612 ··· 652 652 {{ define "loginPrompt" }} 653 653 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded shadow-sm p-2 relative flex gap-2 items-center"> 654 654 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 655 - sign up 655 + Sign up 656 656 </a> 657 657 <span class="text-gray-500 dark:text-gray-400">or</span> 658 - <a href="/login" class="underline">login</a> 658 + <a href="/login" class="underline">Login</a> 659 659 to add to the discussion 660 660 </div> 661 661 {{ end }}
+9 -9
appview/pages/templates/repo/pulls/pulls.html
··· 1 - {{ define "title" }}pulls &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}Pulls &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 - {{ $title := "pulls"}} 4 + {{ $title := "Pulls"}} 5 5 {{ $url := printf "https://tangled.org/%s/pulls" .RepoInfo.FullName }} 6 6 7 7 {{ template "repo/fragments/og" (dict "RepoInfo" .RepoInfo "Title" $title "Url" $url) }} ··· 12 12 {{ $open := 13 13 (dict 14 14 "Key" "open" 15 - "Value" "open" 15 + "Value" "Open" 16 16 "Icon" "git-pull-request" 17 17 "Meta" (scaleFmt .RepoInfo.Stats.PullCount.Open)) }} 18 18 {{ $merged := 19 19 (dict 20 20 "Key" "merged" 21 - "Value" "merged" 21 + "Value" "Merged" 22 22 "Icon" "git-merge" 23 23 "Meta" (scaleFmt .RepoInfo.Stats.PullCount.Merged)) }} 24 24 {{ $closed := 25 25 (dict 26 26 "Key" "closed" 27 - "Value" "closed" 27 + "Value" "Closed" 28 28 "Icon" "ban" 29 29 "Meta" (scaleFmt .RepoInfo.Stats.PullCount.Closed)) }} 30 30 {{ $values := list $open $merged $closed }} ··· 37 37 type="text" 38 38 name="q" 39 39 value="{{ .FilterQuery }}" 40 - placeholder="search pulls..." 40 + placeholder="Search pulls..." 41 41 > 42 42 <a 43 43 {{ if $active }}href="?q=state:{{ $active }}"{{ else }}href="?"{{ end }} ··· 61 61 class="col-start-3 btn-create text-sm flex items-center gap-2 no-underline hover:no-underline hover:text-white" 62 62 > 63 63 {{ i "git-pull-request-create" "w-4 h-4" }} 64 - <span>new</span> 64 + <span>New</span> 65 65 </a> 66 66 </div> 67 67 <div class="error" id="pulls"></div> ··· 96 96 </span> 97 97 98 98 <span class="before:content-['·']"> 99 - round 99 + Round 100 100 <span class="font-mono"> 101 101 #{{ $topPR.LastRoundNumber }} 102 102 </span> ··· 127 127 {{ i "chevrons-down-up" "size-3" }} 128 128 </span> 129 129 {{ $rest := sub (len $stack) 1 }} 130 - expand {{ $rest }} pull{{if ne $rest 1 }}s{{end}} in this stack 130 + Expand {{ $rest }} pull{{if ne $rest 1 }}s{{end}} in this stack 131 131 </span> 132 132 </summary> 133 133 {{ template "stackedPullList" (list (slice $stack 1) $) }}
+6 -6
appview/pages/templates/repo/settings/access.html
··· 1 - {{ define "title" }}{{ .Tab }} settings &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "repoContent" }} 4 4 <section class="w-full grid grid-cols-1 md:grid-cols-4 gap-2"> ··· 14 14 {{ define "collaboratorSettings" }} 15 15 <div class="grid grid-cols-1 gap-4 items-center"> 16 16 <div class="col-span-1"> 17 - <h2 class="text-sm pb-2 uppercase font-bold">Collaborators</h2> 17 + <h2 class="text-lg pb-2 font-medium">Collaborators</h2> 18 18 <p class="text-gray-500 dark:text-gray-400"> 19 19 Any user added as a collaborator will be able to push commits and tags to this repository, upload releases, and workflows. 20 20 </p> ··· 79 79 hx-swap="none" 80 80 class="flex flex-col gap-2" 81 81 > 82 - <label for="add-collaborator" class="uppercase p-0"> 83 - ADD COLLABORATOR 82 + <label for="add-collaborator" class="text-lg font-medium p-0"> 83 + Add collaborator 84 84 </label> 85 85 <p class="text-sm text-gray-500 dark:text-gray-400">Collaborators can push to this repository.</p> 86 86 <actor-typeahead> ··· 103 103 popovertargetaction="hide" 104 104 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 105 105 > 106 - {{ i "x" "size-4" }} cancel 106 + {{ i "x" "size-4" }} Cancel 107 107 </button> 108 108 <button type="submit" class="btn w-1/2 flex items-center"> 109 - <span class="inline-flex gap-2 items-center">{{ i "user-plus" "size-4" }} add</span> 109 + <span class="inline-flex gap-2 items-center">{{ i "user-plus" "size-4" }} Add</span> 110 110 <span id="spinner" class="group"> 111 111 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 112 112 </span>
+2 -2
appview/pages/templates/repo/settings/fragments/addLabelDefModal.html
··· 149 149 popovertargetaction="hide" 150 150 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 151 151 > 152 - {{ i "x" "size-4" }} cancel 152 + {{ i "x" "size-4" }} Cancel 153 153 </button> 154 154 {{ end }} 155 155 156 156 {{ define "submitButton" }} 157 157 <button type="submit" class="btn-create w-1/2 flex items-center"> 158 - <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} add</span> 158 + <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} Add</span> 159 159 <span id="spinner" class="group"> 160 160 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 161 161 </span>
+2 -2
appview/pages/templates/repo/settings/fragments/labelListing.html
··· 5 5 {{ template "labels/fragments/labelDef" $label }} 6 6 <div class="flex flex-wrap text items-center gap-1 text-gray-500 dark:text-gray-400"> 7 7 {{ if $label.ValueType.IsNull }} 8 - basic 8 + Basic 9 9 {{ else }} 10 10 {{ $label.ValueType.Type }} type 11 11 {{ end }} ··· 22 22 23 23 {{ if $label.Multiple }} 24 24 <span class="before:content-['·'] before:select-none"></span> 25 - multiple 25 + Multiple 26 26 {{ end }} 27 27 28 28 <span class="before:content-['·'] before:select-none"></span>
+1 -1
appview/pages/templates/repo/settings/fragments/secretListing.html
··· 22 22 hx-confirm="Are you sure you want to delete the secret {{ $secret.Key }}?" 23 23 > 24 24 {{ i "trash-2" "w-5 h-5" }} 25 - <span class="hidden md:inline">delete</span> 25 + <span class="hidden md:inline">Delete</span> 26 26 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 27 27 </button> 28 28 </div>
+1 -1
appview/pages/templates/repo/settings/fragments/sidebar.html
··· 7 7 <a href="/{{ $.RepoInfo.FullName }}/settings?tab={{.Name}}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25"> 8 8 <div class="flex gap-3 items-center p-2 {{ if eq .Name $active }} {{ $activeTab }} {{ else }} {{ $inactiveTab }} {{ end }}"> 9 9 {{ i .Icon "size-4" }} 10 - {{ .Name }} 10 + {{ .Label }} 11 11 </div> 12 12 </a> 13 13 {{ end }}
+2 -2
appview/pages/templates/repo/settings/fragments/webhookDeliveries.html
··· 1 1 {{define "repo/settings/fragments/webhookDeliveries"}} 2 2 <div class="flex flex-col gap-4"> 3 3 <div class="flex items-center justify-between"> 4 - <h3 class="text-lg font-bold uppercase text-sm">Recent Deliveries</h3> 4 + <h3 class="text-lg font-medium">Recent deliveries</h3> 5 5 <button 6 6 type="button" 7 7 onclick="this.closest('[popover]').hidePopover()" 8 8 class="btn text-sm flex items-center gap-1" 9 9 > 10 - {{ i "x" "size-4" }} close 10 + {{ i "x" "size-4" }} Close 11 11 </button> 12 12 </div> 13 13
+18 -18
appview/pages/templates/repo/settings/general.html
··· 1 - {{ define "title" }}{{ .Tab }} settings &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "repoContent" }} 4 4 <section class="w-full grid grid-cols-1 md:grid-cols-4 gap-2"> ··· 23 23 class="" 24 24 {{ if not .RepoInfo.Roles.IsOwner }}disabled{{ end }} 25 25 > 26 - <h2 class="text-sm pb-2 uppercase font-bold">Description</h2> 26 + <h2 class="text-lg pb-2 font-medium">Description</h2> 27 27 <textarea 28 28 rows="3" 29 29 class="w-full mb-2" 30 30 id="base-form-description" 31 31 name="description" 32 32 >{{ .RepoInfo.Description }}</textarea> 33 - <h2 class="text-sm pb-2 uppercase font-bold">Website URL</h2> 33 + <h2 class="text-lg pb-2 font-medium">Website URL</h2> 34 34 <input 35 35 type="text" 36 36 class="w-full mb-2" ··· 38 38 name="website" 39 39 value="{{ .RepoInfo.Website }}" 40 40 > 41 - <h2 class="text-sm pb-2 uppercase font-bold">Topics</h2> 41 + <h2 class="text-lg pb-2 font-medium">Topics</h2> 42 42 <p class="text-gray-500 dark:text-gray-400"> 43 43 List of topics separated by spaces. 44 44 </p> ··· 55 55 class="btn-create flex items-center gap-2 group" 56 56 > 57 57 {{ i "save" "w-4 h-4" }} 58 - save 58 + Save 59 59 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 60 60 </button> 61 61 </div> ··· 66 66 {{ define "branchSettings" }} 67 67 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 68 68 <div class="col-span-1 md:col-span-2"> 69 - <h2 class="text-sm pb-2 uppercase font-bold">Default Branch</h2> 69 + <h2 class="text-lg pb-2 font-medium">Default branch</h2> 70 70 <p class="text-gray-500 dark:text-gray-400"> 71 71 The default branch is considered the “base” branch in your repository, 72 72 against which all pull requests and code commits are automatically made, ··· 96 96 <div class="flex flex-col gap-2"> 97 97 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 98 98 <div class="col-span-1 md:col-span-2"> 99 - <h2 class="text-sm pb-2 uppercase font-bold">Default Labels</h2> 99 + <h2 class="text-lg pb-2 font-medium">Default labels</h2> 100 100 <p class="text-gray-500 dark:text-gray-400"> 101 101 Manage your issues and pulls by creating labels to categorize them. Only 102 102 repository owners may configure labels. You may choose to subscribe to ··· 106 106 <form class="col-span-1 md:col-span-1 md:justify-self-end"> 107 107 {{ $title := "Unsubscribe from all labels" }} 108 108 {{ $icon := "x" }} 109 - {{ $text := "unsubscribe all" }} 109 + {{ $text := "Unsubscribe all" }} 110 110 {{ $action := "unsubscribe" }} 111 111 {{ if $.ShouldSubscribeAll }} 112 112 {{ $title = "Subscribe to all labels" }} 113 113 {{ $icon = "check-check" }} 114 - {{ $text = "subscribe all" }} 114 + {{ $text = "Subscribe all" }} 115 115 {{ $action = "subscribe" }} 116 116 {{ end }} 117 117 {{ range .DefaultLabels }} ··· 154 154 </div> 155 155 {{ else }} 156 156 <div class="flex items-center justify-center p-2 text-gray-500"> 157 - no labels added yet 157 + No labels added yet 158 158 </div> 159 159 {{ end }} 160 160 </div> ··· 166 166 <div class="flex flex-col gap-2"> 167 167 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 168 168 <div class="col-span-1 md:col-span-2"> 169 - <h2 class="text-sm pb-2 uppercase font-bold">Custom Labels</h2> 169 + <h2 class="text-lg pb-2 font-medium">Custom labels</h2> 170 170 </div> 171 171 <div class="col-span-1 md:col-span-1 md:justify-self-end"> 172 172 <button ··· 176 176 {{ if not .RepoInfo.Roles.IsOwner }}disabled{{ end }} 177 177 popovertargetaction="toggle"> 178 178 {{ i "plus" "size-4" }} 179 - add label 179 + Add label 180 180 </button> 181 181 <div 182 182 id="add-labeldef-modal" ··· 200 200 hx-confirm="Are you sure you want to delete the label `{{ .Name }}`?" 201 201 > 202 202 {{ i "trash-2" "w-5 h-5" }} 203 - <span class="hidden md:inline">delete</span> 203 + <span class="hidden md:inline">Delete</span> 204 204 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 205 205 </button> 206 206 {{ end }} 207 207 </div> 208 208 {{ else }} 209 209 <div class="flex items-center justify-center p-2 text-gray-500"> 210 - no labels added yet 210 + No labels added yet 211 211 </div> 212 212 {{ end }} 213 213 </div> ··· 218 218 {{ define "renameRepo" }} 219 219 {{ if and .RepoInfo.Roles.IsOwner .RepoInfo.RepoDid }} 220 220 <form hx-post="/{{ $.RepoInfo.FullName }}/settings/rename" hx-swap="none" class="group"> 221 - <h2 class="text-sm pb-2 uppercase font-bold">Rename Repository</h2> 221 + <h2 class="text-lg pb-2 font-medium">Rename repository</h2> 222 222 <p class="text-gray-500 dark:text-gray-400 mb-2"> 223 223 Existing git remotes that use the old name will break. Use the 224 224 stable, DID-based URLs below to avoid breakage on future renames. ··· 242 242 class="btn flex items-center gap-2" 243 243 > 244 244 {{ i "pencil" "w-4 h-4" }} 245 - rename 245 + Rename 246 246 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 247 247 </button> 248 248 </div> ··· 254 254 {{ if .RepoInfo.Roles.RepoDeleteAllowed }} 255 255 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 256 256 <div class="col-span-1 md:col-span-2"> 257 - <h2 class="text-sm pb-2 uppercase text-red-500 dark:text-red-400 font-bold">Delete Repository</h2> 257 + <h2 class="text-lg pb-2 text-red-500 dark:text-red-400 font-medium">Delete repository</h2> 258 258 <p class="text-red-500 dark:text-red-400 "> 259 259 Deleting a repository is irreversible and permanent. Be certain before deleting a repository. 260 260 </p> ··· 267 267 hx-delete="/{{ $.RepoInfo.FullName }}/settings/delete" 268 268 hx-confirm="Are you sure you want to delete {{ $.RepoInfo.FullName }}?"> 269 269 {{ i "trash-2" "size-4" }} 270 - delete 270 + Delete 271 271 <span class="ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline"> 272 272 {{ i "loader-circle" "w-4 h-4" }} 273 273 </span>
+16 -16
appview/pages/templates/repo/settings/hooks.html
··· 1 - {{ define "title" }}{{ .Tab }} settings &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "repoContent" }} 4 4 <section class="w-full grid grid-cols-1 md:grid-cols-4 gap-2"> ··· 15 15 {{ define "webhooksSettings" }} 16 16 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 17 17 <div class="col-span-1 md:col-span-2"> 18 - <h2 class="text-sm pb-2 uppercase font-bold">Webhooks</h2> 18 + <h2 class="text-lg pb-2 font-medium">Webhooks</h2> 19 19 <p class="text-gray-500 dark:text-gray-400"> 20 20 Webhooks allow external services to be notified when certain events happen. 21 21 When the specified events happen, we'll send a POST request to each of the URLs you provide. ··· 28 28 {{ if not .RepoInfo.Roles.IsOwner }}disabled{{ end }} 29 29 popovertargetaction="toggle"> 30 30 {{ i "plus" "size-4" }} 31 - new webhook 31 + New webhook 32 32 </button> 33 33 <div 34 34 id="add-webhook-modal" ··· 48 48 {{ if .Active }} 49 49 <span class="inline-flex items-center gap-1 px-2 py-1 text-sm rounded bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200"> 50 50 {{ i "circle-check" "size-4" }} 51 - active 51 + Active 52 52 </span> 53 53 {{ else }} 54 54 <span class="inline-flex items-center gap-1 px-2 py-1 text-sm rounded bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-200"> 55 55 {{ i "circle" "size-4" }} 56 - inactive 56 + Inactive 57 57 </span> 58 58 {{ end }} 59 59 </div> ··· 68 68 popovertarget="edit-webhook-modal-{{.Id}}" 69 69 popovertargetaction="toggle"> 70 70 {{ i "pencil" "size-4" }} 71 - edit 71 + Edit 72 72 </button> 73 73 <button 74 74 class="btn text-sm text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 flex items-center gap-1 group" ··· 76 76 hx-swap="none" 77 77 hx-confirm="Are you sure you want to delete this webhook?"> 78 78 {{ i "trash-2" "size-4" }} 79 - delete 79 + Delete 80 80 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 81 81 </button> 82 82 </div> ··· 103 103 {{ if $deliveries }} 104 104 <div class="mt-3 border-t border-gray-200 dark:border-gray-700 pt-3"> 105 105 <div class="flex items-center justify-between mb-2"> 106 - <h4 class="text-sm font-semibold text-gray-700 dark:text-gray-300 uppercase">Recent Deliveries</h4> 106 + <h4 class="text-lg font-medium text-gray-700 dark:text-gray-300">Recent deliveries</h4> 107 107 </div> 108 108 <div class="flex flex-col gap-2"> 109 109 {{ range $deliveries }} ··· 141 141 popovertargetaction="toggle" 142 142 > 143 143 {{ i "list" "size-3" }} 144 - show all 144 + Show all 145 145 </button> 146 146 </div> 147 147 </div> ··· 175 175 </div> 176 176 {{ else }} 177 177 <div class="flex items-center justify-center p-4 text-gray-500"> 178 - no webhooks configured yet 178 + No webhooks configured yet 179 179 </div> 180 180 {{ end }} 181 181 </div> ··· 187 187 hx-swap="none" 188 188 class="flex flex-col gap-4" 189 189 > 190 - <h3 class="uppercase font-bold">New Webhook</h3> 190 + <h3 class="text-lg font-medium">New webhook</h3> 191 191 192 192 <div class="flex flex-col gap-2"> 193 193 <label for="webhook-url" class="text-sm font-semibold">Payload URL</label> ··· 247 247 popovertargetaction="hide" 248 248 class="btn flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 249 249 > 250 - {{ i "x" "size-4" }} cancel 250 + {{ i "x" "size-4" }} Cancel 251 251 </button> 252 252 <button type="submit" class="btn-create flex items-center gap-2 group"> 253 - {{ i "plus" "size-4" }} add webhook 253 + {{ i "plus" "size-4" }} Add webhook 254 254 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 255 255 </button> 256 256 </div> ··· 266 266 hx-swap="none" 267 267 class="flex flex-col gap-4" 268 268 > 269 - <h3 class="uppercase font-bold">Edit Webhook</h3> 269 + <h3 class="text-lg font-medium">Edit webhook</h3> 270 270 271 271 <div class="flex flex-col gap-2"> 272 272 <label for="edit-webhook-url-{{ $webhook.Id }}" class="text-sm font-semibold">Payload URL</label> ··· 329 329 popovertargetaction="hide" 330 330 class="btn flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 331 331 > 332 - {{ i "x" "size-4" }} cancel 332 + {{ i "x" "size-4" }} Cancel 333 333 </button> 334 334 <button type="submit" class="btn-create flex items-center gap-2 group"> 335 - {{ i "save" "size-4" }} save 335 + {{ i "save" "size-4" }} Save 336 336 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 337 337 </button> 338 338 </div>
+9 -9
appview/pages/templates/repo/settings/pipelines.html
··· 1 - {{ define "title" }}{{ .Tab }} settings &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "repoContent" }} 4 4 <section class="w-full grid grid-cols-1 md:grid-cols-4 gap-2"> ··· 18 18 {{ define "spindleSettings" }} 19 19 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 20 20 <div class="col-span-1 md:col-span-2"> 21 - <h2 class="text-sm pb-2 uppercase font-bold">Spindle</h2> 21 + <h2 class="text-lg pb-2 font-medium">Spindle</h2> 22 22 <p class="text-gray-500 dark:text-gray-400"> 23 23 Choose a spindle to execute your workflows on. Only repository owners 24 24 can configure spindles. Spindles can be selfhosted, ··· 64 64 {{ define "secretSettings" }} 65 65 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 66 66 <div class="col-span-1 md:col-span-2"> 67 - <h2 class="text-sm pb-2 uppercase font-bold">SECRETS</h2> 67 + <h2 class="text-lg pb-2 font-medium">Secrets</h2> 68 68 <p class="text-gray-500 dark:text-gray-400"> 69 69 Secrets are accessible in workflow runs via environment variables. Anyone 70 70 with collaborator access to this repository can add and use secrets in ··· 80 80 {{ template "repo/settings/fragments/secretListing" (list $ .) }} 81 81 {{ else }} 82 82 <div class="flex items-center justify-center p-2 text-gray-500"> 83 - no secrets added yet 83 + No secrets added yet 84 84 </div> 85 85 {{ end }} 86 86 </div> ··· 92 92 popovertarget="add-secret-modal" 93 93 popovertargetaction="toggle"> 94 94 {{ i "plus" "size-4" }} 95 - add secret 95 + Add secret 96 96 </button> 97 97 <div 98 98 id="add-secret-modal" ··· 110 110 hx-swap="none" 111 111 class="flex flex-col gap-2" 112 112 > 113 - <p class="uppercase p-0 font-bold">ADD SECRET</p> 113 + <p class="text-lg font-medium p-0">Add secret</p> 114 114 <p class="text-sm text-gray-500 dark:text-gray-400">Secrets are available as environment variables in the workflow.</p> 115 115 <input 116 116 type="text" ··· 124 124 id="secret-value" 125 125 name="value" 126 126 required 127 - placeholder="secret value"></textarea> 127 + placeholder="Secret value"></textarea> 128 128 <div class="flex gap-2 pt-2"> 129 129 <button 130 130 type="button" ··· 132 132 popovertargetaction="hide" 133 133 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 134 134 > 135 - {{ i "x" "size-4" }} cancel 135 + {{ i "x" "size-4" }} Cancel 136 136 </button> 137 137 <button type="submit" class="btn w-1/2 flex items-center"> 138 - <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} add</span> 138 + <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} Add</span> 139 139 <span id="spinner" class="group"> 140 140 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 141 141 </span>
+22 -22
appview/pages/templates/repo/settings/sites.html
··· 1 - {{ define "title" }}{{ .Tab }} settings &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "repoContent" }} 4 4 <section class="w-full grid grid-cols-1 md:grid-cols-4 gap-2"> ··· 14 14 {{ define "repoSiteSettings" }} 15 15 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-start"> 16 16 <div class="col-span-1 md:col-span-2"> 17 - <h2 class="text-sm pb-2 uppercase font-bold">Git Sites</h2> 17 + <h2 class="text-lg pb-2 font-medium">Git sites</h2> 18 18 <p class="text-gray-500 dark:text-gray-400"> 19 19 Serve a static site directly from this repository. 20 20 Choose a branch and the directory containing your <code>index.html</code>. ··· 27 27 {{ if .SiteConfig.IsIndex }} 28 28 <div class="flex items-center gap-2 px-3 py-2 rounded border border-green-200 dark:border-green-800 bg-green-50 dark:bg-green-900/20 text-sm text-green-800 dark:text-green-300"> 29 29 {{ i "circle-check" "size-4 shrink-0" }} 30 - live at <a class="underline font-mono" href="https://{{ .OwnerClaim.Domain }}">{{ .OwnerClaim.Domain }}</a> 30 + Live at <a class="underline font-mono" href="https://{{ .OwnerClaim.Domain }}">{{ .OwnerClaim.Domain }}</a> 31 31 </div> 32 32 {{ else }} 33 33 <div class="flex items-center gap-2 px-3 py-2 rounded border border-green-200 dark:border-green-800 bg-green-50 dark:bg-green-900/20 text-sm text-green-800 dark:text-green-300"> 34 34 {{ i "circle-check" "size-4 shrink-0" }} 35 - live at <a class="underline font-mono" href="https://{{ .OwnerClaim.Domain }}/{{ .RepoInfo.Name }}">{{ .OwnerClaim.Domain }}/{{ .RepoInfo.Name }}</a> 35 + Live at <a class="underline font-mono" href="https://{{ .OwnerClaim.Domain }}/{{ .RepoInfo.Name }}">{{ .OwnerClaim.Domain }}/{{ .RepoInfo.Name }}</a> 36 36 </div> 37 37 {{ end }} 38 38 {{ else if and .SiteConfig (not .OwnerClaim) }} 39 39 <div class="flex items-center gap-2 px-3 py-2 rounded border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-900/20 text-sm text-amber-800 dark:text-amber-300"> 40 40 {{ i "triangle-alert" "size-4 shrink-0" }} 41 - site is configured but not live &mdash; <a class="underline" href="/settings/sites">claim a domain</a> to publish it. 41 + Site is configured but not live &mdash; <a class="underline" href="/settings/sites">claim a domain</a> to publish it. 42 42 </div> 43 43 {{ else if and (not .SiteConfig) .OwnerClaim }} 44 44 <div class="flex items-center gap-2 px-3 py-2 rounded border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 text-sm text-gray-600 dark:text-gray-400"> 45 45 {{ i "circle-dashed" "size-4 shrink-0" }} 46 - not enabled &mdash; configure a branch below to publish to <span class="font-mono">{{ .OwnerClaim.Domain }}</span>. 46 + Not enabled &mdash; configure a branch below to publish to <span class="font-mono">{{ .OwnerClaim.Domain }}</span>. 47 47 </div> 48 48 {{ else }} 49 49 <div class="flex items-center gap-2 px-3 py-2 rounded border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50 text-sm text-gray-600 dark:text-gray-400"> 50 50 {{ i "circle-dashed" "size-4 shrink-0" }} 51 - not enabled &mdash; configure a branch below and <a class="underline" href="/settings/sites">claim a domain</a> to publish. 51 + Not enabled &mdash; configure a branch below and <a class="underline" href="/settings/sites">claim a domain</a> to publish. 52 52 </div> 53 53 {{ end }} 54 54 ··· 62 62 63 63 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 64 64 <div class="col-span-1 md:col-span-2"> 65 - <h2 class="text-sm pb-2 uppercase font-bold">Branch</h2> 65 + <h2 class="text-lg pb-2 font-medium">Branch</h2> 66 66 <p class="text-gray-500 dark:text-gray-400"> 67 67 The branch to build and deploy the site from. 68 68 </p> ··· 88 88 89 89 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 90 90 <div class="col-span-1 md:col-span-2"> 91 - <h2 class="text-sm pb-2 uppercase font-bold">Deploy directory</h2> 91 + <h2 class="text-lg pb-2 font-medium">Deploy directory</h2> 92 92 <p class="text-gray-500 dark:text-gray-400"> 93 93 Path within the repository that contains your <code>index.html</code>. 94 94 Use <code>/</code> for the root, or a subdirectory like <code>/docs</code>. ··· 108 108 </div> 109 109 110 110 <div class="flex flex-col gap-2"> 111 - <h2 class="text-sm pb-2 uppercase font-bold">Site type</h2> 111 + <h2 class="text-lg pb-2 font-medium">Site type</h2> 112 112 <p class="text-gray-500 dark:text-gray-400"> 113 113 An <strong>index site</strong> is served at the root of your sites domain. 114 114 A <strong>sub-path site</strong> is served under the repository name. ··· 130 130 {{ if and .IndexSiteTakenBy (not (and .SiteConfig .SiteConfig.IsIndex)) }}disabled{{ end }} 131 131 /> 132 132 <div> 133 - <span class="font-medium">index site</span> 133 + <span class="font-medium">Index site</span> 134 134 <p class="text-xs text-gray-500 dark:text-gray-400 mt-2"> 135 135 {{ if .OwnerClaim }} 136 136 <code>{{ .OwnerClaim.Domain }}</code> ··· 140 140 </p> 141 141 {{ if and .IndexSiteTakenBy (not (and .SiteConfig .SiteConfig.IsIndex)) }} 142 142 <p class="text-xs text-amber-600 dark:text-amber-400 mt-1"> 143 - already used by <code>{{ .IndexSiteTakenBy }}</code> 143 + Already used by <code>{{ .IndexSiteTakenBy }}</code> 144 144 </p> 145 145 {{ end }} 146 146 </div> ··· 154 154 {{ if and .SiteConfig (not .SiteConfig.IsIndex) }}checked{{ end }} 155 155 /> 156 156 <div> 157 - <span class="font-medium">sub-path site</span> 157 + <span class="font-medium">Sub-path site</span> 158 158 <p class="text-xs text-gray-500 dark:text-gray-400 mt-2"> 159 159 {{ if .OwnerClaim }} 160 160 <code>{{ .OwnerClaim.Domain }}/{{ $.RepoInfo.Name }}</code> ··· 174 174 type="submit" 175 175 class="btn-create flex items-center gap-2 group"> 176 176 {{ i "save" "size-4" }} 177 - save 177 + Save 178 178 <span id="sites-spinner" class="group"> 179 179 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 180 180 </span> ··· 187 187 {{ if .SiteConfig }} 188 188 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 189 189 <div class="col-span-1 md:col-span-2"> 190 - <h2 class="text-sm pb-2 uppercase text-red-500 dark:text-red-400 font-bold">Disable Site</h2> 190 + <h2 class="text-lg pb-2 text-red-500 dark:text-red-400 font-medium">Disable site</h2> 191 191 <p class="text-red-500 dark:text-red-400"> 192 192 Removes the site configuration for this repository. The site will no longer be served. 193 193 </p> ··· 202 202 class="btn group flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 203 203 {{ if not .RepoInfo.Roles.IsOwner }}disabled{{ end }}> 204 204 {{ i "trash-2" "size-4" }} 205 - disable 205 + Disable 206 206 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 207 207 </button> 208 208 </form> ··· 211 211 {{ end }} 212 212 213 213 <div class="flex flex-col gap-3"> 214 - <h2 class="text-sm uppercase font-bold">Recent Deploys</h2> 214 + <h2 class="text-lg font-medium">Recent deploys</h2> 215 215 {{ if .Deploys }} 216 216 <div class="flex flex-col divide-y divide-gray-200 dark:divide-gray-700 border border-gray-200 dark:border-gray-700 rounded"> 217 217 {{ range .Deploys }} ··· 220 220 {{ if eq .Status "success" }} 221 221 <span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200"> 222 222 {{ i "circle-check" "size-3" }} 223 - success 223 + Success 224 224 </span> 225 225 {{ else }} 226 226 <span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"> 227 227 {{ i "circle-x" "size-3" }} 228 - failed 228 + Failed 229 229 </span> 230 230 {{ end }} 231 231 {{ if eq .Trigger "push" }} 232 232 <span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200"> 233 233 {{ i "git-commit-horizontal" "size-3" }} 234 - push 234 + Push 235 235 </span> 236 236 {{ else if eq .Trigger "config_change" }} 237 237 <span class="inline-flex items-center gap-1 px-2 py-0.5 text-xs rounded bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300"> 238 238 {{ i "settings" "size-3" }} 239 - config change 239 + Config change 240 240 </span> 241 241 {{ end }} 242 242 <span class="font-mono text-xs text-gray-600 dark:text-gray-400"> ··· 261 261 </div> 262 262 {{ else }} 263 263 <div class="flex items-center justify-center p-6 text-gray-500 dark:text-gray-400 border border-gray-200 dark:border-gray-700 rounded"> 264 - no deploys yet 264 + No deploys yet 265 265 </div> 266 266 {{ end }} 267 267 </div>
+3 -3
appview/pages/templates/repo/stars.html
··· 1 - {{ define "title" }}stars · {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title" }}Stars &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 {{ define "repoContent" }} 3 3 <div class="flex flex-col gap-4"> 4 - <h2 class="text-sm uppercase font-bold">Starred by</h2> 4 + <h2 class="text-lg font-medium">Starred by</h2> 5 5 <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"> 6 6 {{ range .Starrers }} 7 7 {{ $handle := resolve .Did }} ··· 11 11 <div class="flex-1 min-w-0"> 12 12 <a href="/{{ $handle }}" class="block truncate">{{ $handle }}</a> 13 13 <p class="text-sm text-gray-500 dark:text-gray-400"> 14 - starred {{ .Created | relTimeFmt }} 14 + Starred {{ .Created | relTimeFmt }} 15 15 </p> 16 16 </div> 17 17 </div>
+1 -1
appview/pages/templates/repo/tag.html
··· 1 1 {{ define "title" }} 2 - tags · {{ .RepoInfo.FullName }} 2 + Tags &middot; {{ .RepoInfo.FullName }} &middot; Tangled 3 3 {{ end }} 4 4 5 5 {{ define "extrameta" }}
+3 -3
appview/pages/templates/repo/tags.html
··· 1 1 {{ define "title" }} 2 - tags · {{ .RepoInfo.FullName }} 2 + Tags &middot; {{ .RepoInfo.FullName }} &middot; Tangled 3 3 {{ end }} 4 4 5 5 {{ define "extrameta" }} ··· 11 11 12 12 {{ define "repoContent" }} 13 13 <section> 14 - <h2 class="mb-4 text-sm text-left text-gray-700 dark:text-gray-300 uppercase font-bold">tags</h2> 14 + <h2 class="mb-4 text-sm text-left text-gray-700 dark:text-gray-300 font-bold">Tags</h2> 15 15 <div class="flex flex-col py-2 gap-12 md:gap-0"> 16 16 {{ range .Tags }} 17 17 {{ template "repo/fragments/singleTag" (list $ . ) }} ··· 38 38 {{ $artifacts := $root.DanglingArtifacts }} 39 39 40 40 {{ if and (gt (len $artifacts) 0) $isPushAllowed }} 41 - <h2 class="mb-2 text-sm text-left text-red-700 dark:text-red-400 uppercase font-bold">dangling artifacts</h2> 41 + <h2 class="mb-2 text-sm text-left text-red-700 dark:text-red-400 font-bold">Dangling artifacts</h2> 42 42 <p class="mb-4">The tags that these artifacts were attached to have been deleted. These artifacts are only visible to collaborators.</p> 43 43 <div class="flex flex-col rounded border border-gray-200 dark:border-gray-700"> 44 44 {{ range $artifact := $artifacts }}
+1 -1
appview/pages/templates/repo/tree.html
··· 1 - {{ define "title"}}{{ range .BreadCrumbs }}{{ pathUnescape (index . 0)}}/{{ end }} at {{ .Ref }} &middot; {{ .RepoInfo.FullName }}{{ end }} 1 + {{ define "title"}}{{ range .BreadCrumbs }}{{ pathUnescape (index . 0)}}/{{ end }} at {{ .Ref }} &middot; {{ .RepoInfo.FullName }} &middot; Tangled{{ end }} 2 2 3 3 4 4 {{ define "extrameta" }}
+4 -4
appview/pages/templates/search/fragments/quick.html
··· 8 8 </div> 9 9 {{- else if .Query -}} 10 10 <div class="bg-white dark:bg-gray-900 border border-t-0 border-gray-200 dark:border-gray-700 rounded-b-md shadow-xl overflow-hidden px-4 py-8 text-center text-sm text-gray-500 dark:text-gray-400"> 11 - no results for "{{ .Query }}" 11 + No results for "{{ .Query }}" 12 12 </div> 13 13 {{- end -}} 14 14 {{end}} ··· 23 23 </div> 24 24 {{- else if .Query -}} 25 25 <div class="px-4 py-8 text-center text-sm text-gray-500 dark:text-gray-400"> 26 - no results for "{{ .Query }}" 26 + No results for "{{ .Query }}" 27 27 </div> 28 28 {{- end -}} 29 29 {{end}} ··· 36 36 37 37 {{define "search/fragments/quickFooter"}} 38 38 <div data-results-footer class="bg-gray-50 dark:bg-gray-800 px-4 py-2 flex justify-between items-center text-sm text-gray-600 dark:text-gray-400 border-t border-gray-100 dark:border-gray-700"> 39 - <span>showing {{ len .Repos }} of {{ .Total }}</span> 39 + <span>Showing {{ len .Repos }} of {{ .Total }}</span> 40 40 <a href="/search?q={{ urlquery .Query }}" 41 41 class="flex items-center gap-1 hover:text-gray-600 dark:hover:text-gray-300 no-underline hover:no-underline"> 42 - all results {{ i "arrow-right" "size-4" }} 42 + All results {{ i "arrow-right" "size-4" }} 43 43 </a> 44 44 </div> 45 45 {{end}}
+3 -3
appview/pages/templates/search/search.html
··· 1 - {{ define "title" }}Search{{ end }} 1 + {{ define "title" }}Search &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <h1 class="text-2xl font-bold mb-4 px-2">Search</h1> ··· 25 25 type="text" 26 26 name="q" 27 27 value="{{ .FilterQuery }}" 28 - placeholder="search repos..." 28 + placeholder="Search repositories..." 29 29 > 30 30 <a 31 31 href="/search" ··· 61 61 </div> 62 62 {{ else }} 63 63 <div class="text-base text-gray-500 flex items-center justify-center italic p-12 border border-gray-200 dark:border-gray-700 rounded"> 64 - <span>No repos found.</span> 64 + <span>No repositories found.</span> 65 65 </div> 66 66 {{ end }} 67 67 </div>
+7 -7
appview/pages/templates/spindles/dashboard.html
··· 1 - {{ define "title" }}{{.Spindle.Instance}} &middot; {{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} &middot; {{.Spindle.Instance}} &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 19 19 {{ define "spindleDash" }} 20 20 <div> 21 21 <div class="flex justify-between items-center"> 22 - <h2 class="text-sm pb-2 uppercase font-bold">{{ .Tab }} &middot; {{ .Spindle.Instance }}</h2> 22 + <h2 class="text-lg pb-2 font-medium">{{ .Tab | capitalize }} &middot; {{ .Spindle.Instance }}</h2> 23 23 <div id="right-side" class="flex gap-2"> 24 24 {{ $style := "px-2 py-1 rounded flex items-center flex-shrink-0 gap-2" }} 25 25 {{ $isOwner := and .LoggedInUser (eq .LoggedInUser.Did .Spindle.Owner) }} 26 26 {{ if .Spindle.Verified }} 27 - <span class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 {{$style}}">{{ i "shield-check" "w-4 h-4" }} verified</span> 27 + <span class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 {{$style}}">{{ i "shield-check" "w-4 h-4" }} Verified</span> 28 28 {{ if $isOwner }} 29 29 {{ template "spindles/fragments/addMemberModal" .Spindle }} 30 30 {{ end }} 31 31 {{ else }} 32 - <span class="bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200 {{$style}}">{{ i "shield-off" "w-4 h-4" }} unverified</span> 32 + <span class="bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200 {{$style}}">{{ i "shield-off" "w-4 h-4" }} Unverified</span> 33 33 {{ if $isOwner }} 34 34 {{ block "retryButton" .Spindle }} {{ end }} 35 35 {{ end }} ··· 93 93 hx-headers='{"shouldRedirect": "true"}' 94 94 > 95 95 {{ i "trash-2" "w-5 h-5" }} 96 - <span class="hidden md:inline">delete</span> 96 + <span class="hidden md:inline">Delete</span> 97 97 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 98 98 </button> 99 99 {{ end }} ··· 108 108 hx-headers='{"shouldRefresh": "true"}' 109 109 > 110 110 {{ i "rotate-ccw" "w-5 h-5" }} 111 - <span class="hidden md:inline">retry</span> 111 + <span class="hidden md:inline">Retry</span> 112 112 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 113 113 </button> 114 114 {{ end }} ··· 126 126 hx-confirm="Are you sure you want to remove {{ resolve $member }} from this instance?" 127 127 > 128 128 {{ i "user-minus" "w-4 h-4" }} 129 - remove 129 + Remove 130 130 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 131 131 </button> 132 132 {{ end }}
+5 -5
appview/pages/templates/spindles/fragments/addMemberModal.html
··· 6 6 popovertargetaction="toggle" 7 7 > 8 8 {{ i "user-plus" "w-5 h-5" }} 9 - <span class="hidden md:inline">add member</span> 9 + <span class="hidden md:inline">Add member</span> 10 10 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 11 11 </button> 12 12 ··· 27 27 hx-swap="none" 28 28 class="flex flex-col gap-2" 29 29 > 30 - <label for="member-did-{{ .Id }}" class="uppercase p-0"> 31 - ADD MEMBER 30 + <label for="member-did-{{ .Id }}" class="text-lg font-medium p-0"> 31 + Add member 32 32 </label> 33 33 <p class="text-sm text-gray-500 dark:text-gray-400">Members can register repositories and run workflows on this spindle.</p> 34 34 <actor-typeahead> ··· 51 51 popovertargetaction="hide" 52 52 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 53 53 > 54 - {{ i "x" "size-4" }} cancel 54 + {{ i "x" "size-4" }} Cancel 55 55 </button> 56 56 <button type="submit" class="btn w-1/2 flex items-center"> 57 - <span class="inline-flex gap-2 items-center">{{ i "user-plus" "size-4" }} add</span> 57 + <span class="inline-flex gap-2 items-center">{{ i "user-plus" "size-4" }} Add</span> 58 58 <span id="spinner" class="group"> 59 59 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 60 60 </span>
+5 -5
appview/pages/templates/spindles/fragments/spindleListing.html
··· 32 32 {{ $style := "px-2 py-1 rounded flex items-center flex-shrink-0 gap-2 text-sm" }} 33 33 34 34 {{ if .NeedsUpgrade }} 35 - <span class="bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 {{$style}}"> {{ i "shield-alert" "w-4 h-4" }} needs upgrade </span> 35 + <span class="bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 {{$style}}"> {{ i "shield-alert" "w-4 h-4" }} Needs upgrade </span> 36 36 {{ block "spindleRetryButton" . }} {{ end }} 37 37 {{ else if .Verified }} 38 - <span class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 {{$style}}">{{ i "shield-check" "w-4 h-4" }} verified</span> 38 + <span class="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 {{$style}}">{{ i "shield-check" "w-4 h-4" }} Verified</span> 39 39 {{ template "spindles/fragments/addMemberModal" . }} 40 40 {{ else }} 41 - <span class="bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200 {{$style}}">{{ i "shield-off" "w-4 h-4" }} unverified</span> 41 + <span class="bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200 {{$style}}">{{ i "shield-off" "w-4 h-4" }} Unverified</span> 42 42 {{ block "spindleRetryButton" . }} {{ end }} 43 43 {{ end }} 44 44 ··· 56 56 hx-confirm="Are you sure you want to delete the spindle '{{ .Instance }}'?" 57 57 > 58 58 {{ i "trash-2" "w-5 h-5" }} 59 - <span class="hidden md:inline">delete</span> 59 + <span class="hidden md:inline">Delete</span> 60 60 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 61 61 </button> 62 62 {{ end }} ··· 71 71 hx-target="#spindle-{{.Id}}" 72 72 > 73 73 {{ i "rotate-ccw" "w-5 h-5" }} 74 - <span class="hidden md:inline">retry</span> 74 + <span class="hidden md:inline">Retry</span> 75 75 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 76 76 </button> 77 77 {{ end }}
+7 -7
appview/pages/templates/spindles/index.html
··· 1 - {{ define "title" }}{{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 19 19 {{ define "spindleList" }} 20 20 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 21 21 <div class="col-span-1 md:col-span-2"> 22 - <h2 class="text-sm pb-2 uppercase font-bold">Spindle</h2> 22 + <h2 class="text-lg pb-2 font-medium">Spindle</h2> 23 23 {{ block "about" . }} {{ end }} 24 24 </div> 25 25 <div class="col-span-1 md:col-span-1 md:justify-self-end"> ··· 45 45 46 46 {{ define "list" }} 47 47 <section class="rounded w-full flex flex-col gap-2"> 48 - <h2 class="text-sm font-bold py-2 uppercase dark:text-gray-300">your spindles</h2> 48 + <h2 class="text-lg font-medium py-2 dark:text-gray-300">Your spindles</h2> 49 49 <div class="flex flex-col rounded border border-gray-200 dark:border-gray-700 w-full"> 50 50 {{ range $spindle := .Spindles }} 51 51 {{ template "spindles/fragments/spindleListing" . }} 52 52 {{ else }} 53 53 <div class="flex items-center justify-center p-2 border-b border-gray-200 dark:border-gray-700 text-gray-500"> 54 - no spindles registered yet 54 + No spindles registered yet 55 55 </div> 56 56 {{ end }} 57 57 </div> ··· 61 61 62 62 {{ define "register" }} 63 63 <section class="rounded w-full lg:w-fit flex flex-col gap-2"> 64 - <h2 class="text-sm font-bold py-2 uppercase dark:text-gray-300">register a spindle</h2> 64 + <h2 class="text-lg font-medium py-2 dark:text-gray-300">Register a spindle</h2> 65 65 <p class="mb-2 dark:text-gray-300">Enter the hostname of your spindle to get started.</p> 66 66 <form 67 67 hx-post="/settings/spindles/register" ··· 85 85 > 86 86 <span class="inline-flex items-center gap-2"> 87 87 {{ i "plus" "w-4 h-4" }} 88 - register 88 + Register 89 89 </span> 90 90 <span class="pl-2 hidden group-[.htmx-request]:inline"> 91 91 {{ i "loader-circle" "w-4 h-4 animate-spin" }} ··· 104 104 class="btn flex items-center gap-2" 105 105 href="https://docs.tangled.org/spindles.html#self-hosting-guide"> 106 106 {{ i "book" "size-4" }} 107 - docs 107 + Docs 108 108 </a> 109 109 <div 110 110 id="add-email-modal"
+2 -2
appview/pages/templates/strings/dashboard.html
··· 1 - {{ define "title" }}strings by {{ resolve .Card.UserDid }}{{ end }} 1 + {{ define "title" }}Strings by {{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 4 {{ $handle := resolve .Card.UserDid }} ··· 21 21 {{ end }} 22 22 23 23 {{ define "allStrings" }} 24 - <p class="text-sm font-bold p-2 dark:text-white">ALL STRINGS</p> 24 + <p class="text-base font-medium p-2 dark:text-white">All strings</p> 25 25 <div id="strings" class="grid grid-cols-1 gap-4 mb-6"> 26 26 {{ range .Strings }} 27 27 {{ template "singleString" (list $ .) }}
+2 -2
appview/pages/templates/strings/fragments/form.html
··· 47 47 <a class="btn flex items-center gap-2 no-underline hover:no-underline p-2 group text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 " 48 48 href="/strings/{{ .String.Did }}/{{ .String.Rkey }}"> 49 49 {{ i "x" "size-4" }} 50 - <span class="hidden md:inline">cancel</span> 50 + <span class="hidden md:inline">Cancel</span> 51 51 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 52 52 </a> 53 53 {{ end }} ··· 58 58 > 59 59 <span class="inline-flex items-center gap-2"> 60 60 {{ i "arrow-up" "w-4 h-4" }} 61 - publish 61 + Publish 62 62 </span> 63 63 <span class="pl-2 hidden group-[.htmx-request]:inline"> 64 64 {{ i "loader-circle" "w-4 h-4 animate-spin" }}
+1 -1
appview/pages/templates/strings/put.html
··· 1 - {{ define "title" }}publish a new string{{ end }} 1 + {{ define "title" }}Publish a new string &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="px-6 py-2 mb-4">
+8 -8
appview/pages/templates/strings/string.html
··· 1 - {{ define "title" }}{{ .String.Filename }} · by {{ resolve .Owner.DID.String }}{{ end }} 1 + {{ define "title" }}{{ .String.Filename }} &middot; by {{ resolve .Owner.DID.String }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 4 {{ $ownerId := resolve .Owner.DID.String }} ··· 25 25 {{ if .String.Description }} 26 26 {{ .String.Description }} 27 27 {{ else }} 28 - <span class="italic">this string has no description</span> 28 + <span class="italic">This string has no description</span> 29 29 {{ end }} 30 30 </span> 31 31 </div> ··· 36 36 hx-boost="true" 37 37 href="/strings/{{ .String.Did }}/{{ .String.Rkey }}/edit"> 38 38 {{ i "pencil" "w-4 h-4" }} 39 - <span class="hidden md:inline">edit</span> 39 + <span class="hidden md:inline">Edit</span> 40 40 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 41 41 </a> 42 42 <button ··· 47 47 hx-confirm="Are you sure you want to delete the string `{{ .String.Filename }}`?" 48 48 > 49 49 {{ i "trash-2" "w-4 h-4" }} 50 - <span class="hidden md:inline">delete</span> 50 + <span class="hidden md:inline">Delete</span> 51 51 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 52 52 </button> 53 53 {{ end }} ··· 76 76 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 77 77 <span>{{ byteFmt .Stats.ByteCount }}</span> 78 78 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 79 - <a href="/strings/{{ $ownerId }}/{{ .String.Rkey }}/raw">view raw</a> 79 + <a href="/strings/{{ $ownerId }}/{{ .String.Rkey }}/raw">View raw</a> 80 80 {{ if .RenderToggle }} 81 81 <span class="select-none px-1 md:px-2 [&:before]:content-['·']"></span> 82 82 <a href="?code={{ .ShowRendered }}" hx-boost="true"> 83 - view {{ if .ShowRendered }}code{{ else }}rendered{{ end }} 83 + View {{ if .ShowRendered }}code{{ else }}rendered{{ end }} 84 84 </a> 85 85 {{ end }} 86 86 </div> ··· 140 140 > 141 141 {{ i "message-square-plus" "w-4 h-4 inline group-[.htmx-request]/form:hidden" }} 142 142 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]/form:inline" }} 143 - comment 143 + Comment 144 144 </button> 145 145 </div> 146 146 </form> 147 147 {{ else }} 148 148 <div class="bg-amber-50 dark:bg-amber-900 border border-amber-500 rounded drop-shadow-sm p-6 relative flex gap-2 items-center"> 149 149 <a href="/signup" class="btn-create py-0 hover:no-underline hover:text-white flex items-center gap-2"> 150 - sign up 150 + Sign up 151 151 </a> 152 152 <span class="text-gray-500 dark:text-gray-400">or</span> 153 153 <a href="/login" class="underline">login</a>
+1 -1
appview/pages/templates/strings/timeline.html
··· 1 - {{ define "title" }} all strings {{ end }} 1 + {{ define "title" }}All strings &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 {{ block "timeline" $ }}{{ end }}
+1 -1
appview/pages/templates/timeline/fragments/hero.html
··· 21 21 class="py-2 w-full md:w-fit" 22 22 /> 23 23 <button class="btn-create flex items-center gap-2 text-base whitespace-nowrap" type="submit"> 24 - join now 24 + Join now 25 25 {{ i "arrow-right" "size-4" }} 26 26 </button> 27 27 </form>
+2 -2
appview/pages/templates/timeline/fragments/newsletterForm.html
··· 17 17 placeholder="Enter your email" 18 18 class="py-2 w-full" /> 19 19 <button class="btn-create flex items-center gap-2 text-base whitespace-nowrap" type="submit"> 20 - subscribe 20 + Subscribe 21 21 {{ i "arrow-right" "size-4" }} 22 22 </button> 23 23 </span> ··· 37 37 class="flex-1 min-w-0 text-sm py-2" /> 38 38 <button type="submit" class="btn whitespace-nowrap px-4 pb-0 gap-2"> 39 39 {{ i "mail-plus" "size-4 inline" }} 40 - subscribe 40 + Subscribe 41 41 </button> 42 42 </span> 43 43 </form>
+1 -1
appview/pages/templates/timeline/fragments/vouchSuggestions.html
··· 7 7 Suggested 8 8 </h3> 9 9 <a href="/{{ .LoggedInUser.Did }}?tab=vouches" class="text-sm font-normal hover:no-underline no-underline flex items-center gap-1 pb-4 pr-4"> 10 - view all {{ i "arrow-right" "size-3.5" }} 10 + View all {{ i "arrow-right" "size-3.5" }} 11 11 </a> 12 12 </div> 13 13 <div class="flex flex-col gap-4 bg-white dark:bg-gray-800 p-4 rounded-sm border border-gray-200 dark:border-gray-700 shadow-sm">
+3 -3
appview/pages/templates/timeline/home.html
··· 1 - {{ define "title" }}tangled &middot; tightly-knit social coding{{ end }} 1 + {{ define "title" }}Tangled &middot; The next-generation social coding platform{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 4 <!-- Open Graph Meta Tags --> 5 - <meta property="og:title" content="tangled · tightly-knit social coding" /> 5 + <meta property="og:title" content="Tangled · The next-generation social coding platform" /> 6 6 <meta property="og:type" content="website" /> 7 7 <meta property="og:url" content="https://tangled.org" /> 8 8 <meta property="og:description" content="The next-generation social coding platform." /> ··· 17 17 <meta name="twitter:image" content="https://assets.tangled.network/tangled_og.png" /> 18 18 19 19 <!-- Additional SEO --> 20 - <meta name="description" content="The next-generation social coding platform. Host repos on your infrastructure with knots, use stacked pull requests, and run CI with spindles." /> 20 + <meta name="description" content="The next-generation social coding platform. Host repositories on your infrastructure with knots, use stacked pull requests, and run CI with spindles." /> 21 21 <link rel="canonical" href="https://tangled.org" /> 22 22 {{ end }} 23 23
+3 -3
appview/pages/templates/timeline/timeline.html
··· 1 - {{ define "title" }}timeline{{ end }} 1 + {{ define "title" }}Timeline &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 - <meta property="og:title" content="timeline · tangled" /> 4 + <meta property="og:title" content="Timeline · Tangled" /> 5 5 <meta property="og:type" content="object" /> 6 6 <meta property="og:url" content="https://tangled.org" /> 7 - <meta property="og:description" content="tightly-knit social coding" /> 7 + <meta property="og:description" content="The next-generation social coding platform" /> 8 8 {{ end }} 9 9 10 10 {{ define "mainLayout" }}
+5 -5
appview/pages/templates/user/completeSignup.html
··· 1 - {{ define "title" }} complete signup {{ end }} 1 + {{ define "title" }}Complete signup &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <form ··· 8 8 hx-disabled-elt="#complete-signup-button" 9 9 > 10 10 <div class="flex flex-col"> 11 - <label for="code">verification code</label> 11 + <label for="code">Verification code</label> 12 12 <input 13 13 type="text" 14 14 id="code" ··· 23 23 </div> 24 24 25 25 <div class="flex flex-col"> 26 - <label for="username">username</label> 26 + <label for="username">Username</label> 27 27 <input 28 28 type="text" 29 29 id="username" ··· 38 38 </div> 39 39 40 40 <div class="flex flex-col"> 41 - <label for="password">password</label> 41 + <label for="password">Password</label> 42 42 <input 43 43 type="password" 44 44 id="password" ··· 58 58 tabindex="4" 59 59 > 60 60 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 61 - <span class="inline group-[.htmx-request]:hidden">complete signup</span> 61 + <span class="inline group-[.htmx-request]:hidden">Complete signup</span> 62 62 </button> 63 63 </form> 64 64 <p id="signup-error" class="error w-full"></p>
+2 -2
appview/pages/templates/user/followers.html
··· 1 - {{ define "title" }}{{ resolve .Card.UserDid }} · followers {{ end }} 1 + {{ define "title" }}Followers &middot; {{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "profileContent" }} 4 4 <div id="all-followers" class="md:col-span-8 order-2 md:order-2"> ··· 7 7 {{ end }} 8 8 9 9 {{ define "followers" }} 10 - <p class="text-sm font-bold p-2 dark:text-white">ALL FOLLOWERS</p> 10 + <p class="text-base font-medium p-2 dark:text-white">All followers</p> 11 11 <div id="followers" class="grid grid-cols-1 gap-4 mb-6"> 12 12 {{ range .Followers }} 13 13 {{ template "user/fragments/followCard"
+2 -2
appview/pages/templates/user/following.html
··· 1 - {{ define "title" }}{{ resolve .Card.UserDid }} · following {{ end }} 1 + {{ define "title" }}Following &middot; {{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "profileContent" }} 4 4 <div id="all-following" class="md:col-span-8 order-2 md:order-2"> ··· 7 7 {{ end }} 8 8 9 9 {{ define "following" }} 10 - <p class="text-sm font-bold p-2 dark:text-white">ALL FOLLOWING</p> 10 + <p class="text-base font-medium p-2 dark:text-white">All following</p> 11 11 <div id="following" class="grid grid-cols-1 gap-4 mb-6"> 12 12 {{ range .Following }} 13 13 {{ template "user/fragments/followCard"
+5 -5
appview/pages/templates/user/fragments/editAvatar.html
··· 4 4 hx-encoding="multipart/form-data" 5 5 hx-swap="none" 6 6 class="flex flex-col gap-2 group/form"> 7 - <label for="avatar-file" class="uppercase p-0"> 8 - Upload or Remove Avatar 7 + <label for="avatar-file" class="text-lg font-medium p-0"> 8 + Upload or remove avatar 9 9 </label> 10 10 <p class="text-sm text-gray-500 dark:text-gray-400">Upload a new image (PNG or JPEG, max 5MB) or remove your current avatar.</p> 11 11 <input ··· 25 25 <button type="submit" class="btn w-full flex items-center justify-center gap-2"> 26 26 {{ i "upload" "size-4 inline group-[.htmx-request]/form:hidden" }} 27 27 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]/form:inline" }} 28 - upload 28 + Upload 29 29 </button> 30 30 {{ if .Profile.Avatar }} 31 31 <button ··· 36 36 class="btn w-full flex items-center justify-center gap-2 group"> 37 37 {{ i "trash-2" "size-4 inline group-[.htmx-request]:hidden" }} 38 38 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 39 - remove avatar 39 + Remove avatar 40 40 </button> 41 41 {{ end }} 42 42 <button ··· 46 46 popovertargetaction="hide" 47 47 class="btn text-red-500 dark:text-red-400 w-full flex items-center justify-center gap-2"> 48 48 {{ i "x" "size-4" }} 49 - cancel 49 + Cancel 50 50 </button> 51 51 </div> 52 52 <div id="avatar-error" class="text-red-500 dark:text-red-400 text-sm"></div>
+10 -10
appview/pages/templates/user/fragments/editBio.html
··· 10 10 {{ if and .Profile .Profile.Description }} 11 11 {{ $description = .Profile.Description }} 12 12 {{ end }} 13 - <label class="m-0 p-0" for="description">bio</label> 13 + <label class="m-0 p-0" for="description">Bio</label> 14 14 <textarea 15 15 type="text" 16 16 class="p-2 w-full" 17 17 name="description" 18 18 rows="3" 19 - placeholder="write a bio">{{ $description }}</textarea> 19 + placeholder="Write a bio">{{ $description }}</textarea> 20 20 </div> 21 21 22 22 <div class="flex flex-col gap-1"> 23 - <label class="m-0 p-0" for="pronouns">pronouns</label> 23 + <label class="m-0 p-0" for="pronouns">Pronouns</label> 24 24 <div class="flex items-center gap-2 w-full"> 25 25 {{ $pronouns := "" }} 26 26 {{ if and .Profile .Profile.Pronouns }} ··· 38 38 39 39 {{ if gt (len .AlsoKnownAs) 1 }} 40 40 <div class="flex flex-col gap-1"> 41 - <label class="m-0 p-0" for="preferredHandle">preferred handle</label> 41 + <label class="m-0 p-0" for="preferredHandle">Preferred handle</label> 42 42 <div class="flex items-center gap-2 w-full"> 43 43 {{ $preferredHandle := "" }} 44 44 {{ if and .Profile .Profile.PreferredHandle }} ··· 56 56 {{ end }} 57 57 58 58 <div class="flex flex-col gap-1"> 59 - <label class="m-0 p-0" for="location">location</label> 59 + <label class="m-0 p-0" for="location">Location</label> 60 60 <div class="flex items-center gap-2 w-full"> 61 61 {{ $location := "" }} 62 62 {{ if and .Profile .Profile.Location }} ··· 68 68 </div> 69 69 70 70 <div class="flex flex-col gap-1"> 71 - <label class="m-0 p-0">social links</label> 71 + <label class="m-0 p-0">Social links</label> 72 72 <div class="flex items-center gap-2 py-1"> 73 73 {{ $includeBsky := false }} 74 74 {{ if and .Profile .Profile.IncludeBluesky }} ··· 89 89 90 90 <div class="flex items-center gap-2 w-full"> 91 91 <span class="flex-shrink-0">{{ i "link" "size-4" }}</span> 92 - <input type="text" class="py-1 px-1 w-full" name="link{{$idx}}" value="{{ $link }}" placeholder="social link {{add $idx 1}}"> 92 + <input type="text" class="py-1 px-1 w-full" name="link{{$idx}}" value="{{ $link }}" placeholder="Social link {{add $idx 1}}"> 93 93 </div> 94 94 {{ end }} 95 95 </div> 96 96 97 97 <div class="flex flex-col gap-1"> 98 - <label class="m-0 p-0">vanity stats</label> 98 + <label class="m-0 p-0">Vanity stats</label> 99 99 {{ range $idx, $s := (sequence 2) }} 100 100 {{ $stat := "" }} 101 101 {{ if and $profile $profile.Stats }} ··· 111 111 112 112 <div class="flex items-center gap-2 justify-between"> 113 113 <button id="save-btn" type="submit" class="btn p-1 w-full flex items-center gap-2 no-underline text-sm"> 114 - {{ i "check" "size-4" }} save 114 + {{ i "check" "size-4" }} Save 115 115 <span id="spinner" class="group"> 116 116 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 117 117 </span> 118 118 </button> 119 119 <a href="/{{.LoggedInUser.Did}}" class="w-full no-underline hover:no-underline"> 120 120 <button id="cancel-btn" type="button" class="btn p-1 w-full flex items-center gap-2 no-underline text-sm"> 121 - {{ i "x" "size-4" }} cancel 121 + {{ i "x" "size-4" }} Cancel 122 122 </button> 123 123 </a> 124 124 </div>
+3 -3
appview/pages/templates/user/fragments/editPins.html
··· 6 6 hx-swap="none" 7 7 hx-indicator="#spinner"> 8 8 <div class="flex items-center justify-between mb-2"> 9 - <p class="text-sm font-bold p-2 dark:text-white">SELECT PINNED REPOS</p> 9 + <p class="text-lg font-medium p-2 dark:text-white">Select pinned repositories</p> 10 10 <div class="flex items-center gap-2"> 11 11 <button id="save-btn" type="submit" class="btn px-2 flex items-center gap-2 no-underline text-sm"> 12 - {{ i "check" "w-3 h-3" }} save 12 + {{ i "check" "w-3 h-3" }} Save 13 13 <span id="spinner" class="group"> 14 14 {{ i "loader-circle" "w-3 h-3 animate-spin hidden group-[.htmx-request]:inline" }} 15 15 </span> 16 16 </button> 17 17 <a href="/{{.LoggedInUser.Did}}" class="w-full no-underline hover:no-underline"> 18 18 <button id="cancel-btn" type="button" class="btn px-2 w-full flex items-center gap-2 no-underline text-sm"> 19 - {{ i "x" "w-3 h-3" }} cancel 19 + {{ i "x" "w-3 h-3" }} Cancel 20 20 </button> 21 21 </a> 22 22 </div>
+2 -2
appview/pages/templates/user/fragments/follow.html
··· 15 15 {{ if eq .FollowStatus.String "IsNotFollowing" }} 16 16 {{ i "user-round-plus" "size-4 inline group-[.htmx-request]:hidden" }} 17 17 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 18 - follow 18 + Follow 19 19 {{ else }} 20 20 {{ i "user-round-minus" "size-4 inline group-[.htmx-request]:hidden" }} 21 21 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 22 - unfollow 22 + Unfollow 23 23 {{ end }} 24 24 </button> 25 25 {{ end }}
+2 -2
appview/pages/templates/user/fragments/networkVouches.html
··· 19 19 {{ if $denounces }} border-t {{ else }} border-y {{ end }} 20 20 "> 21 21 <a class="text-sm text-green-800 dark:text-green-200 hover:no-underline" href="/{{ .SubjectDid.String }}?tab=vouches"> 22 - vouched for by {{ len $vouches }} {{ if eq (len $vouches) 1 }}user{{ else }}users{{ end }} 22 + Vouched for by {{ len $vouches }} {{ if eq (len $vouches) 1 }}user{{ else }}users{{ end }} 23 23 </a> 24 24 {{ template "fragments/tinyAvatarList" (dict "all" $vouches "classes" "size-6") }} 25 25 </div> ··· 33 33 {{ if $vouches }} border-b {{ else }} border-y {{ end }} 34 34 "> 35 35 <a class="text-sm text-red-800 dark:text-red-200 hover:no-underline" href="/{{ .SubjectDid.String }}?tab=vouches"> 36 - denounced by {{ len $denounces }} {{ if eq (len $denounces) 1 }}user{{ else }}users{{ end }} 36 + Denounced by {{ len $denounces }} {{ if eq (len $denounces) 1 }}user{{ else }}users{{ end }} 37 37 </a> 38 38 {{ template "fragments/tinyAvatarList" (dict "all" $denounces "classes" "size-6") }} 39 39 </div>
+2 -2
appview/pages/templates/user/fragments/profileCard.html
··· 97 97 hx-get="/profile/edit-bio" 98 98 hx-swap="innerHTML"> 99 99 {{ i "pencil" "w-4 h-4" }} 100 - edit 100 + Edit 101 101 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 102 102 </button> 103 103 {{ end }} ··· 158 158 {{ template "repo/fragments/shortTime" .CreatedAt }} 159 159 </div> 160 160 <div class="absolute inset-0 flex items-center gap-1 justify-center opacity-0 group-hover/item:opacity-100 transition-opacity text-xs font-medium text-green-900 dark:text-green-100"> 161 - view {{ i "arrow-right" "size-3" }} 161 + View {{ i "arrow-right" "size-3" }} 162 162 </div> 163 163 </div> 164 164 </div>
+3 -3
appview/pages/templates/user/fragments/vouchButton.html
··· 22 22 popovertargetaction="toggle" 23 23 class="{{ if $isVouched }}btn-create{{else if $isDenounced}}btn-cancel{{else}}btn{{end}} w-full flex gap-2 items-center justify-center"> 24 24 {{ if $isVouched }} 25 - {{ i "shield-check" "size-4" }} vouched 25 + {{ i "shield-check" "size-4" }} Vouched 26 26 {{ else if $isDenounced }} 27 - {{ i "shield-off" "size-4" }} denounced 27 + {{ i "shield-off" "size-4" }} Denounced 28 28 {{ else }} 29 - {{ i "shield-question-mark" "size-4" }} vouch 29 + {{ i "shield-question-mark" "size-4" }} Vouch 30 30 {{ end }} 31 31 </button> 32 32 {{ end }}
+2 -2
appview/pages/templates/user/fragments/vouchPopover.html
··· 141 141 popovertargetaction="hide" 142 142 class="btn flex-1 flex items-center justify-center gap-2"> 143 143 {{ i "x" "size-4" }} 144 - cancel 144 + Cancel 145 145 </button> 146 146 <button 147 147 type="submit" 148 148 class="btn-create flex-1 flex items-center justify-center gap-2 text-white group"> 149 149 {{ i "check" "size-4 inline group-[.htmx-request]:hidden" }} 150 150 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 151 - {{ if and $vr $vr.GetDirectVouch }} update {{ else }} save {{end}} 151 + {{ if and $vr $vr.GetDirectVouch }} Update {{ else }} Save {{end}} 152 152 </button> 153 153 </div> 154 154 </form>
+4 -4
appview/pages/templates/user/login.html
··· 1 - {{ define "title" }} login {{ end }} 1 + {{ define "title" }}Login &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 {{ if .AddAccount }} ··· 14 14 {{ if .Accounts }} 15 15 <div class="my-4 border border-gray-200 dark:border-gray-700 rounded overflow-hidden"> 16 16 <div class="px-3 py-2 bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700"> 17 - <span class="text-xs text-gray-500 dark:text-gray-400 uppercase tracking-wide font-medium">Saved accounts</span> 17 + <span class="text-xs text-gray-500 dark:text-gray-400 tracking-wide font-medium">Saved accounts</span> 18 18 </div> 19 19 <div class="divide-y divide-gray-200 dark:divide-gray-700"> 20 20 {{ range .Accounts }} ··· 57 57 hx-disabled-elt="#login-button" 58 58 > 59 59 <div class="flex flex-col"> 60 - <label for="handle">handle</label> 60 + <label for="handle">Handle</label> 61 61 <input 62 62 autocapitalize="none" 63 63 autocorrect="off" ··· 85 85 tabindex="3" 86 86 > 87 87 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 88 - <span class="inline group-[.htmx-request]:hidden">login</span> 88 + <span class="inline group-[.htmx-request]:hidden">Login</span> 89 89 </button> 90 90 </form> 91 91 {{ if .ErrorCode }}
+13 -13
appview/pages/templates/user/overview.html
··· 1 - {{ define "title" }}{{ resolve .Card.UserDid }}{{ end }} 1 + {{ define "title" }}{{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "profileContent" }} 4 4 <div id="all-repos" class="md:col-span-4 order-2 md:order-2"> ··· 13 13 {{ end }} 14 14 15 15 {{ define "profileTimeline" }} 16 - <p class="text-sm font-bold px-2 pb-4 dark:text-white">ACTIVITY</p> 16 + <p class="text-base font-medium px-2 pb-4 dark:text-white">Activity</p> 17 17 <div class="flex flex-col gap-4 relative"> 18 18 {{ if .ProfileTimeline.IsEmpty }} 19 19 <div class="text-base text-gray-500 flex items-center justify-center italic p-12 border border-gray-200 dark:border-gray-700 rounded"> ··· 30 30 <div class="border border-gray-200 dark:border-gray-700 rounded-sm py-4 px-6"> 31 31 <p class="text-sm font-mono mb-2 text-gray-500 dark:text-gray-400"> 32 32 {{ if eq $idx 0 }} 33 - this month 33 + This month 34 34 {{ else }} 35 35 {{$idx}} month{{if ne $idx 1}}s{{end}} ago 36 36 {{ end }} ··· 54 54 {{ if . }} 55 55 <div class="flex flex-wrap items-center gap-1"> 56 56 {{ i "git-commit-horizontal" "size-5" }} 57 - created {{ scaleFmt . }} commits 57 + Created {{ scaleFmt . }} commits 58 58 </div> 59 59 {{ end }} 60 60 {{ end }} ··· 65 65 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 66 66 <div class="flex flex-wrap items-center gap-2"> 67 67 {{ i "book-plus" "w-4 h-4" }} 68 - created {{ scaleFmt (len .) }} {{if eq (len .) 1 }}repository{{else}}repositories{{end}} 68 + Created {{ scaleFmt (len .) }} {{if eq (len .) 1 }}repository{{else}}repositories{{end}} 69 69 </div> 70 70 </summary> 71 71 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> ··· 110 110 {{ i "circle-dot" "w-4 h-4" }} 111 111 112 112 <div> 113 - created {{ scaleFmt (len $items) }} {{if eq (len $items) 1 }}issue{{else}}issues{{end}} 113 + Created {{ scaleFmt (len $items) }} {{if eq (len $items) 1 }}issue{{else}}issues{{end}} 114 114 </div> 115 115 116 116 {{ if gt $stats.Open 0 }} ··· 146 146 {{ i "git-pull-request" "w-4 h-4" }} 147 147 148 148 <div> 149 - created {{ scaleFmt (len $items) }} {{if eq (len $items) 1 }}pull request{{else}}pull requests{{end}} 149 + Created {{ scaleFmt (len $items) }} {{if eq (len $items) 1 }}pull request{{else}}pull requests{{end}} 150 150 </div> 151 151 152 152 {{ if gt $stats.Open 0 }} ··· 181 181 182 182 {{ define "ownRepos" }} 183 183 <div> 184 - <div class="text-sm font-bold px-2 pb-4 dark:text-white flex items-center gap-2"> 184 + <div class="text-base font-medium px-2 pb-4 dark:text-white flex items-center gap-2"> 185 185 <a href="/{{ resolve $.Card.UserDid }}?tab=repos" 186 186 class="flex text-black dark:text-white items-center gap-2 no-underline hover:no-underline group"> 187 - <span>PINNED REPOS</span> 187 + <span>Pinned repositories</span> 188 188 </a> 189 189 {{ if and .LoggedInUser (eq .LoggedInUser.Did .Card.UserDid) }} 190 190 <button ··· 208 208 <span class="truncate min-w-0">{{ resolve .Did }}/{{ .Name }}</span> 209 209 </div> 210 210 <div class="text-gray-500 dark:text-gray-400 text-sm italic"> 211 - This repo is hosted on a legacy knot that ought to be upgraded. 211 + This repository is hosted on a legacy knot that ought to be upgraded. 212 212 </div> 213 213 </div> 214 214 {{ end }} ··· 216 216 {{ else }} 217 217 <div class="text-base text-gray-500 flex items-center justify-center italic p-12 border border-gray-200 dark:border-gray-700 rounded"> 218 218 <span class="flex items-center gap-2"> 219 - This user does not have any pinned repos. 219 + This user does not have any pinned repositories. 220 220 </span> 221 221 </div> 222 222 {{ end }} ··· 227 227 {{ define "collaboratingRepos" }} 228 228 {{ if gt (len .CollaboratingRepos) 0 }} 229 229 <div> 230 - <p class="text-sm font-bold px-2 pb-4 dark:text-white">COLLABORATING ON</p> 230 + <p class="text-base font-medium px-2 pb-4 dark:text-white">Collaborating on</p> 231 231 <div id="collaborating" class="grid grid-cols-1 gap-4"> 232 232 {{ range .CollaboratingRepos }} 233 233 <div class="border border-gray-200 dark:border-gray-700 rounded-sm"> ··· 240 240 <span class="truncate min-w-0">{{ resolve .Did }}/{{ .Name }}</span> 241 241 </div> 242 242 <div class="text-gray-500 dark:text-gray-400 text-sm italic"> 243 - This repo is hosted on a legacy knot that ought to be upgraded. 243 + This repository is hosted on a legacy knot that ought to be upgraded. 244 244 </div> 245 245 </div> 246 246 {{ end }}
+3 -3
appview/pages/templates/user/repos.html
··· 1 - {{ define "title" }}{{ resolve .Card.UserDid }} · repos {{ end }} 1 + {{ define "title" }}Repositories &middot; {{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "profileContent" }} 4 4 <div id="all-repos" class="md:col-span-8 order-2 md:order-2"> ··· 12 12 type="text" 13 13 name="q" 14 14 value="{{ .FilterQuery }}" 15 - placeholder="search repos..." 15 + placeholder="Search repositories..." 16 16 > 17 17 <a 18 18 {{ if .FilterQuery }}href="?tab=repos"{{ else }}href="#"{{ end }} ··· 56 56 </div> 57 57 {{ else }} 58 58 <div class="text-base text-gray-500 flex items-center justify-center italic p-12 border border-gray-200 dark:border-gray-700 rounded"> 59 - <span>This user does not have any repos yet.</span> 59 + <span>This user does not have any repositories yet.</span> 60 60 </div> 61 61 {{ end }} 62 62 </div>
+8 -8
appview/pages/templates/user/settings/emails.html
··· 1 - {{ define "title" }}{{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 19 19 {{ define "emailSettings" }} 20 20 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 21 21 <div class="col-span-1 md:col-span-2"> 22 - <h2 class="text-sm pb-2 uppercase font-bold">Email Addresses</h2> 22 + <h2 class="text-lg pb-2 font-medium">Email addresses</h2> 23 23 <p class="text-gray-500 dark:text-gray-400"> 24 24 Commits authored using emails listed here will be associated with your Tangled profile. 25 25 </p> ··· 33 33 {{ template "user/settings/fragments/emailListing" (list $ .) }} 34 34 {{ else }} 35 35 <div class="flex items-center justify-center p-2 text-gray-500"> 36 - no emails added yet 36 + No emails added yet 37 37 </div> 38 38 {{ end }} 39 39 </div> ··· 45 45 popovertarget="add-email-modal" 46 46 popovertargetaction="toggle"> 47 47 {{ i "plus" "size-4" }} 48 - add email 48 + Add email 49 49 </button> 50 50 <div 51 51 id="add-email-modal" ··· 62 62 hx-swap="none" 63 63 class="flex flex-col gap-2" 64 64 > 65 - <label for="email-address" class="uppercase p-0"> 66 - add email 65 + <label for="email-address" class="text-lg font-medium p-0"> 66 + Add email 67 67 </label> 68 68 <p class="text-sm text-gray-500 dark:text-gray-400">Commits using this email will be associated with your profile.</p> 69 69 <input ··· 81 81 popovertargetaction="hide" 82 82 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 83 83 > 84 - {{ i "x" "size-4" }} cancel 84 + {{ i "x" "size-4" }} Cancel 85 85 </button> 86 86 <button type="submit" class="btn w-1/2 flex items-center"> 87 - <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} add</span> 87 + <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} Add</span> 88 88 <span id="spinner" class="group"> 89 89 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 90 90 </span>
+6 -6
appview/pages/templates/user/settings/fragments/dangerDeleteToken.html
··· 1 1 {{ define "user/settings/fragments/dangerDeleteToken" }} 2 2 <div id="delete-form-container" hx-swap-oob="innerHTML"> 3 - <label class="uppercase text-sm font-bold p-0 text-red-600 dark:text-red-400">Delete account</label> 3 + <label class="text-lg font-medium p-0 text-red-600 dark:text-red-400">Delete account</label> 4 4 <p class="text-sm text-gray-500 dark:text-gray-400 pt-1">Check your email for an account deletion code.</p> 5 5 <form hx-post="/settings/delete/confirm" hx-swap="none" hx-confirm="This will permanently delete your account. This cannot be undone. Continue?" hx-disabled-elt="find button[type='submit']" class="flex flex-col gap-3 pt-2"> 6 6 <div class="flex flex-col"> 7 - <label for="delete-token">deletion code</label> 7 + <label for="delete-token">Deletion code</label> 8 8 <input type="text" id="delete-token" name="token" required autocomplete="off" placeholder="xxxx-xxxx" /> 9 9 </div> 10 10 <div class="flex flex-col"> 11 - <label for="delete-password-confirm">password</label> 11 + <label for="delete-password-confirm">Password</label> 12 12 <input type="password" id="delete-password-confirm" name="password" required autocomplete="current-password" /> 13 13 </div> 14 14 <div class="flex flex-col"> 15 - <label for="delete-confirmation">confirmation</label> 15 + <label for="delete-confirmation">Confirmation</label> 16 16 <input type="text" id="delete-confirmation" name="confirmation" required autocomplete="off" placeholder="delete my account" /> 17 17 <span class="text-sm text-gray-500 mt-1">Type <strong>delete my account</strong> to confirm.</span> 18 18 </div> 19 19 <div class="flex gap-2 pt-2"> 20 - <button type="button" popovertarget="delete-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300">cancel</button> 21 - <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2 text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300">delete account</button> 20 + <button type="button" popovertarget="delete-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300">Cancel</button> 21 + <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2 text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300">Delete account</button> 22 22 </div> 23 23 <div id="delete-error" class="text-red-500 dark:text-red-400 text-sm empty:hidden"></div> 24 24 </form>
+1 -1
appview/pages/templates/user/settings/fragments/dangerPasswordSuccess.html
··· 1 1 {{ define "user/settings/fragments/dangerPasswordSuccess" }} 2 2 <div id="password-form-container" hx-swap-oob="innerHTML"> 3 - <label class="uppercase text-sm font-bold p-0">Change password</label> 3 + <label class="text-lg font-medium p-0">Change password</label> 4 4 <p class="text-green-500 dark:text-green-400 pt-2">Password changed.</p> 5 5 </div> 6 6 {{ end }}
+6 -6
appview/pages/templates/user/settings/fragments/dangerPasswordToken.html
··· 1 1 {{ define "user/settings/fragments/dangerPasswordToken" }} 2 2 <div id="password-form-container" hx-swap-oob="innerHTML"> 3 - <label class="uppercase text-sm font-bold p-0">Change password</label> 3 + <label class="text-lg font-medium p-0">Change password</label> 4 4 <p class="text-sm text-gray-500 dark:text-gray-400 pt-1">Check your email for a password reset code.</p> 5 5 <form hx-post="/settings/password/reset" hx-swap="none" hx-disabled-elt="find button[type='submit']" class="flex flex-col gap-3 pt-2"> 6 6 <div class="flex flex-col"> 7 - <label for="token">reset code</label> 7 + <label for="token">Reset code</label> 8 8 <input type="text" id="token" name="token" required autocomplete="off" placeholder="xxxx-xxxx" /> 9 9 </div> 10 10 <div class="flex flex-col"> 11 - <label for="new-password">new password</label> 11 + <label for="new-password">New password</label> 12 12 <input type="password" id="new-password" name="new_password" required autocomplete="new-password" /> 13 13 </div> 14 14 <div class="flex flex-col"> 15 - <label for="confirm-password">confirm new password</label> 15 + <label for="confirm-password">Confirm new password</label> 16 16 <input type="password" id="confirm-password" name="confirm_password" required autocomplete="new-password" /> 17 17 </div> 18 18 <div class="flex gap-2 pt-2"> 19 - <button type="button" popovertarget="change-password-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300">cancel</button> 20 - <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2">set new password</button> 19 + <button type="button" popovertarget="change-password-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300">Cancel</button> 20 + <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2">Set new password</button> 21 21 </div> 22 22 <div id="password-error" class="text-red-500 dark:text-red-400 text-sm empty:hidden"></div> 23 23 </form>
+6 -6
appview/pages/templates/user/settings/fragments/emailListing.html
··· 10 10 </span> 11 11 <div class="inline-flex items-center gap-1"> 12 12 {{ if $email.Verified }} 13 - <span class="text-xs bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 px-2 py-1 rounded">verified</span> 13 + <span class="text-xs bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 px-2 py-1 rounded">Verified</span> 14 14 {{ else }} 15 - <span class="text-xs bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 px-2 py-1 rounded">unverified</span> 15 + <span class="text-xs bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200 px-2 py-1 rounded">Unverified</span> 16 16 {{ end }} 17 17 {{ if $email.Primary }} 18 - <span class="text-xs bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200 px-2 py-1 rounded">primary</span> 18 + <span class="text-xs bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200 px-2 py-1 rounded">Primary</span> 19 19 {{ end }} 20 20 </div> 21 21 </div> ··· 31 31 hx-swap="none" 32 32 hx-vals='{"email": "{{ $email.Address }}"}'> 33 33 {{ i "rotate-cw" "w-4 h-4" }} 34 - <span class="hidden md:inline">resend</span> 34 + <span class="hidden md:inline">Resend</span> 35 35 </button> 36 36 {{ end }} 37 37 {{ if and (not $email.Primary) $email.Verified }} ··· 40 40 hx-post="/settings/emails/primary" 41 41 hx-swap="none" 42 42 hx-vals='{"email": "{{ $email.Address }}"}'> 43 - set as primary 43 + Set as primary 44 44 </button> 45 45 {{ end }} 46 46 {{ if not $email.Primary }} ··· 53 53 hx-confirm="Are you sure you want to delete the email {{ $email.Address }}?" 54 54 > 55 55 {{ i "trash-2" "w-5 h-5" }} 56 - <span class="hidden md:inline">delete</span> 56 + <span class="hidden md:inline">Delete</span> 57 57 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 58 58 </button> 59 59 {{ end }}
+1 -1
appview/pages/templates/user/settings/fragments/keyListing.html
··· 24 24 hx-confirm="Are you sure you want to delete the key {{ $key.Name }}?" 25 25 > 26 26 {{ i "trash-2" "w-5 h-5" }} 27 - <span class="hidden md:inline">delete</span> 27 + <span class="hidden md:inline">Delete</span> 28 28 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 29 29 </button> 30 30 </div>
+1 -1
appview/pages/templates/user/settings/fragments/sidebar.html
··· 7 7 <a href="/settings/{{.Name}}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25"> 8 8 <div class="flex gap-3 items-center p-2 {{ if eq .Name $active }} {{ $activeTab }} {{ else }} {{ $inactiveTab }} {{ end }}"> 9 9 {{ i .Icon "size-4" }} 10 - {{ .Name }} 10 + {{ .Label }} 11 11 </div> 12 12 </a> 13 13 {{ end }}
+10 -10
appview/pages/templates/user/settings/keys.html
··· 1 - {{ define "title" }}{{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 19 19 {{ define "sshKeysSettings" }} 20 20 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 21 21 <div class="col-span-1 md:col-span-2"> 22 - <h2 class="text-sm pb-2 uppercase font-bold">SSH Keys</h2> 22 + <h2 class="text-lg pb-2 font-medium">SSH keys</h2> 23 23 <p class="text-gray-500 dark:text-gray-400"> 24 24 SSH public keys added here will be broadcasted to knots that you are a member of, 25 25 allowing you to push to repositories there. ··· 34 34 {{ template "user/settings/fragments/keyListing" (list $ .) }} 35 35 {{ else }} 36 36 <div class="flex items-center justify-center p-2 text-gray-500"> 37 - no keys added yet 37 + No keys added yet 38 38 </div> 39 39 {{ end }} 40 40 </div> ··· 46 46 popovertarget="add-key-modal" 47 47 popovertargetaction="toggle"> 48 48 {{ i "plus" "size-4" }} 49 - add key 49 + Add key 50 50 </button> 51 51 <div 52 52 id="add-key-modal" ··· 63 63 hx-swap="none" 64 64 class="flex flex-col gap-2" 65 65 > 66 - <label for="key-name" class="uppercase p-0"> 67 - add ssh key 68 - </label> 66 + <label for="key-name" class="text-lg font-medium p-0"> 67 + Add SSH key 68 + </label> 69 69 <p class="text-sm text-gray-500 dark:text-gray-400">SSH keys allow you to push to repositories in knots you're a member of.</p> 70 70 <input 71 71 type="text" 72 72 id="key-name" 73 73 name="name" 74 74 required 75 - placeholder="key name" 75 + placeholder="Key name" 76 76 class="w-full dark:bg-gray-800 dark:text-white dark:border-gray-700 dark:placeholder-gray-400" 77 77 /> 78 78 <textarea ··· 89 89 popovertargetaction="hide" 90 90 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300" 91 91 > 92 - {{ i "x" "size-4" }} cancel 92 + {{ i "x" "size-4" }} Cancel 93 93 </button> 94 94 <button type="submit" class="btn w-1/2 flex items-center"> 95 - <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} add</span> 95 + <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} Add</span> 96 96 <span id="spinner" class="group"> 97 97 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 98 98 </span>
+3 -3
appview/pages/templates/user/settings/notifications.html
··· 1 - {{ define "title" }}{{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 19 19 {{ define "notificationSettings" }} 20 20 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 21 21 <div class="col-span-1 md:col-span-2"> 22 - <h2 class="text-sm pb-2 uppercase font-bold">Notification Preferences</h2> 22 + <h2 class="text-lg pb-2 font-medium">Notification preferences</h2> 23 23 <p class="text-gray-500 dark:text-gray-400"> 24 24 Choose which notifications you want to receive when activity happens on your repositories and profile. 25 25 </p> ··· 176 176 class="btn-create flex items-center gap-2 group" 177 177 > 178 178 {{ i "save" "w-4 h-4" }} 179 - save 179 + Save 180 180 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 181 181 </button> 182 182 </div>
+32 -32
appview/pages/templates/user/settings/profile.html
··· 1 - {{ define "title" }}{{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 22 22 23 23 {{ define "profile" }} 24 24 <div> 25 - <h2 class="text-sm uppercase font-bold">Profile</h2> 25 + <h2 class="text-lg font-medium">Profile</h2> 26 26 <p class="text-gray-500 dark:text-gray-400 pb-2"> 27 27 Your account information from your AT Protocol identity. 28 28 </p> ··· 36 36 <button 37 37 popovertarget="change-handle-modal" 38 38 popovertargetaction="toggle" 39 - class="text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 cursor-pointer">change</button> 39 + class="text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 cursor-pointer">Change</button> 40 40 {{ else }} 41 - <a href="/settings/handle" class="text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300">change</a> 41 + <a href="/settings/handle" class="text-xs text-gray-400 hover:text-gray-600 dark:hover:text-gray-300">Change</a> 42 42 {{ end }} 43 43 {{ end }} 44 44 </div> ··· 58 58 popover 59 59 class="bg-white w-full md:w-96 dark:bg-gray-800 p-4 rounded border border-gray-200 dark:border-gray-700 drop-shadow dark:text-white backdrop:bg-gray-400/50 dark:backdrop:bg-gray-800/50"> 60 60 <div id="handle-subdomain" class="flex flex-col gap-3"> 61 - <label class="uppercase text-sm font-bold p-0">Change handle</label> 61 + <label class="text-lg font-medium p-0">Change handle</label> 62 62 <form hx-post="/settings/handle" hx-swap="none" class="flex flex-col gap-3"> 63 63 <input type="hidden" name="type" value="subdomain"> 64 64 <div class="flex items-stretch rounded border border-gray-200 dark:border-gray-600 overflow-hidden focus-within:ring-1 focus-within:ring-blue-500 dark:bg-gray-700"> ··· 67 67 </div> 68 68 <div class="flex gap-2 pt-2"> 69 69 <button type="button" popovertarget="change-handle-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 70 - {{ i "x" "size-4" }} cancel 70 + {{ i "x" "size-4" }} Cancel 71 71 </button> 72 72 <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2"> 73 - {{ i "check" "size-4" }} save 73 + {{ i "check" "size-4" }} Save 74 74 </button> 75 75 </div> 76 76 </form> 77 77 <a href="#" id="switch-to-custom" class="text-sm text-gray-400 underline hover:text-gray-600 dark:hover:text-gray-300">I have my own domain</a> 78 78 </div> 79 79 <div id="handle-custom" style="display: none;" class="flex flex-col gap-3"> 80 - <label class="uppercase text-sm font-bold p-0">Change handle</label> 80 + <label class="text-lg font-medium p-0">Change handle</label> 81 81 <form hx-post="/settings/handle" hx-swap="none" class="flex flex-col gap-3"> 82 82 <input type="hidden" name="type" value="custom"> 83 83 <input id="custom-domain-input" type="text" name="handle" placeholder="mycoolhandle.com" class="w-full dark:bg-gray-800 dark:text-white dark:border-gray-700 dark:placeholder-gray-400 px-2 py-1.5 border border-gray-200 dark:border-gray-600 rounded outline-none focus:ring-1 focus:ring-blue-500" required> ··· 97 97 </div> 98 98 <div class="flex gap-2 pt-2"> 99 99 <button type="button" popovertarget="change-handle-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 100 - {{ i "x" "size-4" }} cancel 100 + {{ i "x" "size-4" }} Cancel 101 101 </button> 102 102 <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2"> 103 - {{ i "check" "size-4" }} verify & save 103 + {{ i "check" "size-4" }} Verify & save 104 104 </button> 105 105 </div> 106 106 </form> ··· 134 134 {{ define "accountActions" }} 135 135 {{ $isDeactivated := (and .IsTnglSh .IsDeactivated) }} 136 136 <div> 137 - <h2 class="text-sm uppercase font-bold">Account</h2> 137 + <h2 class="text-lg font-medium">Account</h2> 138 138 {{ if $isDeactivated }} 139 139 <div class="mt-2 p-3 bg-amber-50 dark:bg-amber-900/20 border border-amber-200 dark:border-amber-700 rounded text-sm text-amber-700 dark:text-amber-300"> 140 140 Your account is deactivated. Your profile and repositories are currently inaccessible. Reactivate to restore access. ··· 146 146 popovertargetaction="toggle" 147 147 class="btn flex items-center gap-2 text-sm cursor-pointer"> 148 148 {{ i "key" "size-4" }} 149 - change password 149 + Change password 150 150 </button> 151 151 {{ if $isDeactivated }} 152 152 <button ··· 154 154 popovertargetaction="toggle" 155 155 class="btn flex items-center gap-2 text-sm text-green-600 hover:text-green-700 dark:text-green-400 dark:hover:text-green-300 border-green-300 dark:border-green-600 cursor-pointer"> 156 156 {{ i "play" "size-4" }} 157 - reactivate account 157 + Reactivate account 158 158 </button> 159 159 {{ else }} 160 160 <button ··· 162 162 popovertargetaction="toggle" 163 163 class="btn flex items-center gap-2 text-sm text-amber-600 hover:text-amber-700 dark:text-amber-400 dark:hover:text-amber-300 cursor-pointer"> 164 164 {{ i "pause" "size-4" }} 165 - deactivate account 165 + Deactivate account 166 166 </button> 167 167 {{ end }} 168 168 <button ··· 170 170 popovertargetaction="toggle" 171 171 class="btn flex items-center gap-2 text-sm text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300 cursor-pointer"> 172 172 {{ i "trash-2" "size-4" }} 173 - delete account 173 + Delete account 174 174 </button> 175 175 </div> 176 176 </div> ··· 180 180 popover 181 181 class="bg-white w-full md:w-96 dark:bg-gray-800 p-4 rounded border border-gray-200 dark:border-gray-700 drop-shadow dark:text-white backdrop:bg-gray-400/50 dark:backdrop:bg-gray-800/50"> 182 182 <div id="password-form-container" class="flex flex-col gap-3"> 183 - <label class="uppercase text-sm font-bold p-0">Change password</label> 183 + <label class="text-lg font-medium p-0">Change password</label> 184 184 <form hx-post="/settings/password/request" hx-swap="none" hx-disabled-elt="find button[type='submit']" class="flex flex-col gap-3"> 185 185 <div class="flex flex-col"> 186 - <label for="current-password">current password</label> 186 + <label for="current-password">Current password</label> 187 187 <input type="password" id="current-password" name="current_password" required autocomplete="current-password" /> 188 188 <span class="text-sm text-gray-500 mt-1">Confirm your identity to proceed.</span> 189 189 </div> 190 190 <div class="flex gap-2 pt-2"> 191 191 <button type="button" popovertarget="change-password-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 192 - {{ i "x" "size-4" }} cancel 192 + {{ i "x" "size-4" }} Cancel 193 193 </button> 194 194 <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2"> 195 - {{ i "key" "size-4" }} send reset code 195 + {{ i "key" "size-4" }} Send reset code 196 196 </button> 197 197 </div> 198 198 </form> ··· 206 206 popover 207 207 class="bg-white w-full md:w-96 dark:bg-gray-800 p-4 rounded border border-green-300 dark:border-green-600 drop-shadow dark:text-white backdrop:bg-gray-400/50 dark:backdrop:bg-gray-800/50"> 208 208 <div class="flex flex-col gap-3"> 209 - <label class="uppercase text-sm font-bold p-0 text-green-600 dark:text-green-400">Reactivate account</label> 209 + <label class="text-lg font-medium p-0 text-green-600 dark:text-green-400">Reactivate account</label> 210 210 <p class="text-sm text-gray-500 dark:text-gray-400">This will restore your profile and repositories, making them accessible again.</p> 211 211 <form hx-post="/settings/reactivate" hx-swap="none" hx-disabled-elt="find button[type='submit']" class="flex flex-col gap-3"> 212 212 <div class="flex flex-col"> 213 - <label for="reactivate-password">password</label> 213 + <label for="reactivate-password">Password</label> 214 214 <input type="password" id="reactivate-password" name="password" required autocomplete="current-password" /> 215 215 <span class="text-sm text-gray-500 mt-1">Confirm your identity to proceed.</span> 216 216 </div> 217 217 <div class="flex gap-2 pt-2"> 218 218 <button type="button" popovertarget="reactivate-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 219 - {{ i "x" "size-4" }} cancel 219 + {{ i "x" "size-4" }} Cancel 220 220 </button> 221 221 <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2 text-green-600 hover:text-green-700 dark:text-green-400 dark:hover:text-green-300"> 222 - {{ i "play" "size-4" }} reactivate 222 + {{ i "play" "size-4" }} Reactivate 223 223 </button> 224 224 </div> 225 225 </form> ··· 232 232 popover 233 233 class="bg-white w-full md:w-96 dark:bg-gray-800 p-4 rounded border border-amber-300 dark:border-amber-600 drop-shadow dark:text-white backdrop:bg-gray-400/50 dark:backdrop:bg-gray-800/50"> 234 234 <div class="flex flex-col gap-3"> 235 - <label class="uppercase text-sm font-bold p-0 text-amber-600 dark:text-amber-400">Deactivate account</label> 235 + <label class="text-lg font-medium p-0 text-amber-600 dark:text-amber-400">Deactivate account</label> 236 236 <p class="text-sm text-gray-500 dark:text-gray-400">Your profile and repositories will become inaccessible. You can reactivate by logging in again.</p> 237 237 <form hx-post="/settings/deactivate" hx-swap="none" hx-confirm="Are you sure you want to deactivate your account?" hx-disabled-elt="find button[type='submit']" class="flex flex-col gap-3"> 238 238 <div class="flex flex-col"> 239 - <label for="deactivate-password">password</label> 239 + <label for="deactivate-password">Password</label> 240 240 <input type="password" id="deactivate-password" name="password" required autocomplete="current-password" /> 241 241 <span class="text-sm text-gray-500 mt-1">Confirm your identity to proceed.</span> 242 242 </div> 243 243 <div class="flex gap-2 pt-2"> 244 244 <button type="button" popovertarget="deactivate-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 245 - {{ i "x" "size-4" }} cancel 245 + {{ i "x" "size-4" }} Cancel 246 246 </button> 247 247 <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2 text-amber-600 hover:text-amber-700 dark:text-amber-400 dark:hover:text-amber-300"> 248 - {{ i "pause" "size-4" }} deactivate 248 + {{ i "pause" "size-4" }} Deactivate 249 249 </button> 250 250 </div> 251 251 </form> ··· 259 259 popover 260 260 class="bg-white w-full md:w-96 dark:bg-gray-800 p-4 rounded border border-red-300 dark:border-red-600 drop-shadow dark:text-white backdrop:bg-gray-400/50 dark:backdrop:bg-gray-800/50"> 261 261 <div id="delete-form-container" class="flex flex-col gap-3"> 262 - <label class="uppercase text-sm font-bold p-0 text-red-600 dark:text-red-400">Delete account</label> 262 + <label class="text-lg font-medium p-0 text-red-600 dark:text-red-400">Delete account</label> 263 263 <p class="text-sm text-gray-500 dark:text-gray-400">This permanently deletes your account and all associated data. This cannot be undone.</p> 264 264 <form hx-post="/settings/delete/request" hx-swap="none" hx-disabled-elt="find button[type='submit']" class="flex flex-col gap-3"> 265 265 <div class="flex flex-col"> 266 - <label for="delete-password">password</label> 266 + <label for="delete-password">Password</label> 267 267 <input type="password" id="delete-password" name="password" required autocomplete="current-password" /> 268 268 <span class="text-sm text-gray-500 mt-1">Confirm your identity to proceed.</span> 269 269 </div> 270 270 <div class="flex gap-2 pt-2"> 271 271 <button type="button" popovertarget="delete-modal" popovertargetaction="hide" class="btn w-1/2 flex items-center gap-2 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"> 272 - {{ i "x" "size-4" }} cancel 272 + {{ i "x" "size-4" }} Cancel 273 273 </button> 274 274 <button type="submit" class="btn w-1/2 flex items-center justify-center gap-2 text-red-600 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 275 - {{ i "trash-2" "size-4" }} send deletion code 275 + {{ i "trash-2" "size-4" }} Send deletion code 276 276 </button> 277 277 </div> 278 278 </form> ··· 283 283 284 284 {{ define "punchcard" }} 285 285 <div> 286 - <h2 class="text-sm uppercase font-bold">Punchcard</h2> 286 + <h2 class="text-lg font-medium">Punchcard</h2> 287 287 <p class="text-gray-500 dark:text-gray-400 pb-2 "> 288 288 Configure punchcard visibility and preferences. 289 289 </p>
+9 -9
appview/pages/templates/user/settings/sites.html
··· 1 - {{ define "title" }}{{ .Tab }} settings{{ end }} 1 + {{ define "title" }}{{ .Tab | capitalize }} settings &middot; Tangled{{ end }} 2 2 3 3 {{ define "content" }} 4 4 <div class="p-6"> ··· 19 19 {{ define "sitesSettings" }} 20 20 <div class="grid grid-cols-1 md:grid-cols-3 gap-4 items-center"> 21 21 <div class="col-span-1 md:col-span-2"> 22 - <h2 class="text-sm pb-2 uppercase font-bold">Git Sites</h2> 22 + <h2 class="text-lg pb-2 font-medium">Git sites</h2> 23 23 {{ if .IsTnglHandle }} 24 24 <p class="text-gray-500 dark:text-gray-400"> 25 25 Since your handle is on <code>tngl.sh</code>, it doubles as your sites domain&mdash;your site will be served from that subdomain automatically. ··· 43 43 {{ template "activeClaim" . }} 44 44 {{ else }} 45 45 <div class="flex items-center justify-center p-2 text-gray-500"> 46 - no domain claimed yet 46 + No domain claimed yet 47 47 </div> 48 48 {{ end }} 49 49 </div> ··· 62 62 {{ i "globe" "size-4 text-gray-400 dark:text-gray-500 flex-shrink-0" }} 63 63 <div class="flex items-center gap-2"> 64 64 <span class="font-mono">{{ .Claim.Domain }}</span> 65 - <span class="inline-flex items-center gap-1 text-xs bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 px-2 py-1 rounded">{{ i "circle-check" "size-3" }} active</span> 65 + <span class="inline-flex items-center gap-1 text-xs bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200 px-2 py-1 rounded">{{ i "circle-check" "size-3" }} Active</span> 66 66 </div> 67 67 </div> 68 68 <form ··· 75 75 type="submit" 76 76 class="btn flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 77 77 {{ i "trash-2" "size-4" }} 78 - release 78 + Release 79 79 </button> 80 80 </form> 81 81 </div> ··· 87 87 popovertarget="claim-domain-modal" 88 88 popovertargetaction="toggle"> 89 89 {{ i "plus" "size-4" }} 90 - claim domain 90 + Claim domain 91 91 </button> 92 92 <div 93 93 id="claim-domain-modal" ··· 104 104 hx-swap="none" 105 105 class="flex flex-col gap-2" 106 106 > 107 - <label class="uppercase p-0">claim a subdomain</label> 107 + <label class="text-lg font-medium p-0">Claim a subdomain</label> 108 108 <p class="text-gray-500 dark:text-gray-400">Choose a subdomain under <code>{{ .SitesDomain }}</code>. Only lowercase letters, digits, and hyphens are allowed.</p> 109 109 <div class="flex items-stretch rounded border border-gray-200 dark:border-gray-600 overflow-hidden focus-within:ring-1 focus-within:ring-blue-500 dark:bg-gray-700"> 110 110 <input ··· 123 123 popovertarget="claim-domain-modal" 124 124 popovertargetaction="hide" 125 125 class="btn w-1/2 flex items-center gap-2 text-red-500 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300"> 126 - {{ i "x" "size-4" }} cancel 126 + {{ i "x" "size-4" }} Cancel 127 127 </button> 128 128 <button type="submit" class="btn w-1/2 flex items-center"> 129 - <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} claim</span> 129 + <span class="inline-flex gap-2 items-center">{{ i "plus" "size-4" }} Claim</span> 130 130 <span id="claim-spinner" class="group"> 131 131 {{ i "loader-circle" "ml-2 w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 132 132 </span>
+3 -3
appview/pages/templates/user/signup.html
··· 1 - {{ define "title" }} signup {{ end }} 1 + {{ define "title" }}Sign up &middot; Tangled{{ end }} 2 2 3 3 {{ define "extrameta" }} 4 4 <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script> ··· 12 12 hx-disabled-elt="#signup-button" 13 13 > 14 14 <div class="flex flex-col mt-2"> 15 - <label for="email">email</label> 15 + <label for="email">Email</label> 16 16 <input 17 17 type="email" 18 18 id="email" ··· 33 33 </div> 34 34 <button class="btn text-base w-full my-2 mt-6" type="submit" id="signup-button" tabindex="7" > 35 35 {{ i "loader-circle" "size-4 animate-spin hidden group-[.htmx-request]:inline" }} 36 - <span class="inline group-[.htmx-request]:hidden">join now</span> 36 + <span class="inline group-[.htmx-request]:hidden">Join now</span> 37 37 </button> 38 38 <p class="text-sm text-gray-500"> 39 39 Already have an AT Protocol account? <a href="/login" class="underline">Login to Tangled</a>.
+2 -2
appview/pages/templates/user/starred.html
··· 1 - {{ define "title" }}{{ resolve .Card.UserDid }} · repos {{ end }} 1 + {{ define "title" }}Starred &middot; {{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "profileContent" }} 4 4 <div id="all-repos" class="md:col-span-8 order-2 md:order-2"> ··· 23 23 </div> 24 24 {{ else }} 25 25 <div class="text-base text-gray-500 flex items-center justify-center italic p-12 border border-gray-200 dark:border-gray-700 rounded"> 26 - <span>This user does not have any starred repos yet.</span> 26 + <span>This user does not have any starred repositories yet.</span> 27 27 </div> 28 28 {{ end }} 29 29 </div>
+1 -1
appview/pages/templates/user/strings.html
··· 1 - {{ define "title" }}{{ resolve .Card.UserDid }} · strings {{ end }} 1 + {{ define "title" }}Strings &middot; {{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "profileContent" }} 4 4 <div id="all-strings" class="md:col-span-8 order-2 md:order-2">
+1 -1
appview/pages/templates/user/vouches.html
··· 1 - {{ define "title" }}{{ resolve .Card.UserDid }} · vouches {{ end }} 1 + {{ define "title" }}Vouches &middot; {{ resolve .Card.UserDid }} &middot; Tangled{{ end }} 2 2 3 3 {{ define "profileContent" }} 4 4 {{ $isSelf := and .LoggedInUser (eq .LoggedInUser.Did .Card.UserDid) }}
+1189 -1082
input.css
··· 2 2 @tailwind components; 3 3 @tailwind utilities; 4 4 @layer base { 5 - @font-face { 6 - font-family: "InterVariable"; 7 - src: url("/static/fonts/InterVariable.woff2") format("woff2"); 8 - font-weight: normal; 9 - font-style: normal; 10 - font-display: swap; 11 - } 5 + @font-face { 6 + font-family: "InterVariable"; 7 + src: url("/static/fonts/InterVariable.woff2") format("woff2-variations"); 8 + font-weight: 100 600; 9 + font-style: normal; 10 + font-display: swap; 11 + } 12 12 13 - @font-face { 14 - font-family: "InterVariable"; 15 - src: url("/static/fonts/InterVariable-Italic.woff2") format("woff2"); 16 - font-weight: normal; 17 - font-style: italic; 18 - font-display: swap; 19 - } 13 + @font-face { 14 + font-family: "InterVariable"; 15 + src: url("/static/fonts/InterVariable-Italic.woff2") 16 + format("woff2-variations"); 17 + font-weight: 100 600; 18 + font-style: italic; 19 + font-display: swap; 20 + } 20 21 21 - @font-face { 22 - font-family: "InterVariable"; 23 - src: url("/static/fonts/InterDisplay-Bold.woff2") format("woff2"); 24 - font-weight: bold; 25 - font-style: normal; 26 - font-display: swap; 27 - } 28 - 29 - @font-face { 30 - font-family: "InterVariable"; 31 - src: url("/static/fonts/InterDisplay-BoldItalic.woff2") format("woff2"); 32 - font-weight: bold; 33 - font-style: italic; 34 - font-display: swap; 35 - } 36 - 37 - @font-face { 38 - font-family: "IBMPlexMono"; 39 - src: url("/static/fonts/IBMPlexMono-Regular.woff2") format("woff2"); 40 - font-weight: normal; 41 - font-style: normal; 42 - font-display: swap; 43 - } 44 - 45 - @font-face { 46 - font-family: "IBMPlexMono"; 47 - src: url("/static/fonts/IBMPlexMono-Italic.woff2") format("woff2"); 48 - font-weight: normal; 49 - font-style: italic; 50 - font-display: swap; 51 - } 52 - 53 - @font-face { 54 - font-family: "IBMPlexMono"; 55 - src: url("/static/fonts/IBMPlexMono-Bold.woff2") format("woff2"); 56 - font-weight: bold; 57 - font-style: normal; 58 - font-display: swap; 59 - } 22 + @font-face { 23 + font-family: "InterVariable"; 24 + src: url("/static/fonts/InterDisplay-Bold.woff2") format("woff2"); 25 + font-weight: bold; 26 + font-style: normal; 27 + font-display: swap; 28 + } 60 29 61 - @font-face { 62 - font-family: "IBMPlexMono"; 63 - src: url("/static/fonts/IBMPlexMono-BoldItalic.woff2") format("woff2"); 64 - font-weight: bold; 65 - font-style: italic; 66 - font-display: swap; 67 - } 30 + @font-face { 31 + font-family: "InterVariable"; 32 + src: url("/static/fonts/InterDisplay-BoldItalic.woff2") format("woff2"); 33 + font-weight: bold; 34 + font-style: italic; 35 + font-display: swap; 36 + } 68 37 69 - ::selection { 70 - @apply bg-yellow-400 text-black bg-opacity-30 dark:bg-yellow-600 dark:bg-opacity-50 dark:text-white; 71 - } 38 + @font-face { 39 + font-family: "IBMPlexMono"; 40 + src: url("/static/fonts/IBMPlexMono-Regular.woff2") format("woff2"); 41 + font-weight: normal; 42 + font-style: normal; 43 + font-display: swap; 44 + } 72 45 73 - @layer base { 74 - html { 75 - font-size: 14px; 76 - scrollbar-gutter: stable; 46 + @font-face { 47 + font-family: "IBMPlexMono"; 48 + src: url("/static/fonts/IBMPlexMono-Italic.woff2") format("woff2"); 49 + font-weight: normal; 50 + font-style: italic; 51 + font-display: swap; 77 52 } 78 - @supports (font-variation-settings: normal) { 79 - html { 80 - font-feature-settings: 81 - "kern" 1, 82 - "liga" 1, 83 - "cv05" 1, 84 - "tnum" 1; 85 - } 53 + 54 + @font-face { 55 + font-family: "IBMPlexMono"; 56 + src: url("/static/fonts/IBMPlexMono-Bold.woff2") format("woff2"); 57 + font-weight: bold; 58 + font-style: normal; 59 + font-display: swap; 86 60 } 87 61 88 - a { 89 - @apply no-underline text-black hover:underline hover:text-gray-800 dark:text-white dark:hover:text-gray-300; 62 + @font-face { 63 + font-family: "IBMPlexMono"; 64 + src: url("/static/fonts/IBMPlexMono-BoldItalic.woff2") format("woff2"); 65 + font-weight: bold; 66 + font-style: italic; 67 + font-display: swap; 90 68 } 91 69 92 - label { 93 - @apply block text-gray-900 text-sm py-2 dark:text-gray-100; 70 + ::selection { 71 + @apply bg-yellow-400 text-black bg-opacity-30 dark:bg-yellow-600 dark:bg-opacity-50 dark:text-white; 94 72 } 95 73 96 - input, 97 - textarea { 98 - @apply block rounded p-3 74 + @layer base { 75 + html { 76 + font-size: 14px; 77 + scrollbar-gutter: stable; 78 + } 79 + @supports (font-variation-settings: normal) { 80 + html { 81 + font-feature-settings: 82 + "kern" 1, 83 + "liga" 1, 84 + "cv05" 1, 85 + "tnum" 1; 86 + } 87 + } 88 + 89 + a { 90 + @apply no-underline text-black hover:underline hover:text-gray-800 dark:text-white dark:hover:text-gray-300; 91 + } 92 + 93 + label { 94 + @apply block text-gray-900 text-sm py-2 dark:text-gray-100; 95 + } 96 + 97 + input, 98 + textarea { 99 + @apply block rounded p-3 99 100 bg-gray-50 dark:bg-gray-800 dark:text-white 100 101 border border-gray-300 dark:border-gray-600 101 102 focus:outline-none focus:ring-1 focus:ring-gray-400 dark:focus:ring-gray-500; 102 - } 103 + } 103 104 104 - input[type="checkbox"] { 105 - @apply appearance-none size-4 p-0 rounded 105 + input[type="checkbox"] { 106 + @apply appearance-none size-4 p-0 rounded 106 107 bg-transparent border border-gray-200 107 108 hover:bg-gray-100 108 109 checked:bg-gray-900 checked:border-transparent ··· 121 122 dark:disabled:checked:bg-gray-500 dark:disabled:checked:border-transparent 122 123 dark:disabled:indeterminate:bg-gray-700 dark:disabled:indeterminate:border-gray-600 123 124 focus:outline-none focus:ring-1 focus:ring-gray-400 dark:focus:ring-gray-500; 124 - background-position: center; 125 - background-repeat: no-repeat; 126 - background-size: 12px; 127 - } 128 - input[type="checkbox"]:checked { 129 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M10 3 4.5 8.5 2 6' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>"); 130 - } 131 - input[type="checkbox"]:indeterminate { 132 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='white' stroke-width='1.5' stroke-linecap='round'/></svg>"); 133 - } 134 - input[type="checkbox"]:disabled:indeterminate { 135 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(156,163,175)' stroke-width='1.5' stroke-linecap='round'/></svg>"); 136 - } 137 - @media (prefers-color-scheme: dark) { 138 - input[type="checkbox"]:checked { 139 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M10 3 4.5 8.5 2 6' stroke='rgb(17,24,39)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>"); 140 - } 141 - input[type="checkbox"]:indeterminate { 142 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(17,24,39)' stroke-width='1.5' stroke-linecap='round'/></svg>"); 143 - } 144 - input[type="checkbox"]:disabled:indeterminate { 145 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(107,114,128)' stroke-width='1.5' stroke-linecap='round'/></svg>"); 146 - } 147 - } 125 + background-position: center; 126 + background-repeat: no-repeat; 127 + background-size: 12px; 128 + } 129 + input[type="checkbox"]:checked { 130 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M10 3 4.5 8.5 2 6' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>"); 131 + } 132 + input[type="checkbox"]:indeterminate { 133 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='white' stroke-width='1.5' stroke-linecap='round'/></svg>"); 134 + } 135 + input[type="checkbox"]:disabled:indeterminate { 136 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(156,163,175)' stroke-width='1.5' stroke-linecap='round'/></svg>"); 137 + } 138 + @media (prefers-color-scheme: dark) { 139 + input[type="checkbox"]:checked { 140 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M10 3 4.5 8.5 2 6' stroke='rgb(17,24,39)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>"); 141 + } 142 + input[type="checkbox"]:indeterminate { 143 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(17,24,39)' stroke-width='1.5' stroke-linecap='round'/></svg>"); 144 + } 145 + input[type="checkbox"]:disabled:indeterminate { 146 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none'><path d='M2.5 6h7' stroke='rgb(107,114,128)' stroke-width='1.5' stroke-linecap='round'/></svg>"); 147 + } 148 + } 148 149 149 - input[type="radio"] { 150 - @apply appearance-none size-4 p-0 rounded-full bg-transparent border 151 - 150 + input[type="radio"] { 151 + @apply appearance-none size-4 p-0 rounded-full bg-transparent border 152 + 152 153 border-gray-400 hover:border-gray-900 153 154 hover:bg-gray-200 154 - 155 + 155 156 disabled:cursor-not-allowed 156 157 disabled:border-gray-300 157 158 disabled:checked:border-gray-300 158 159 disabled:hover:bg-inherit 159 - 160 + 160 161 dark:border-gray-400 dark:hover:border-gray-100 161 - 162 + 162 163 dark:hover:bg-gray-600 163 - 164 + 164 165 dark:checked:border-gray-400 165 - 166 + 166 167 dark:disabled:border-gray-500 167 168 dark:disabled:checked:border-gray-500 168 - 169 + 169 170 focus:outline-none focus:ring-1 170 171 focus:ring-gray-400 dark:focus:ring-gray-500; 171 172 172 - background-position: center; 173 - background-repeat: no-repeat; 174 - background-size: 8px; 175 - } 176 - input[type="radio"]:checked { 177 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(17,24,39)'/></svg>"); 178 - } 179 - input[type="radio"]:disabled:checked { 180 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(209,213,219)'/></svg>"); 181 - } 182 - @media (prefers-color-scheme: dark) { 183 - input[type="radio"]:checked { 184 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(243,244,246)'/></svg>"); 185 - } 186 - input[type="radio"]:disabled:checked { 187 - background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(107,114,128)'/></svg>"); 188 - } 189 - } 173 + background-position: center; 174 + background-repeat: no-repeat; 175 + background-size: 8px; 176 + } 177 + input[type="radio"]:checked { 178 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(17,24,39)'/></svg>"); 179 + } 180 + input[type="radio"]:disabled:checked { 181 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(209,213,219)'/></svg>"); 182 + } 183 + @media (prefers-color-scheme: dark) { 184 + input[type="radio"]:checked { 185 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(243,244,246)'/></svg>"); 186 + } 187 + input[type="radio"]:disabled:checked { 188 + background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><circle cx='6' cy='6' r='4.5' fill='rgb(107,114,128)'/></svg>"); 189 + } 190 + } 190 191 191 - details summary::-webkit-details-marker { 192 - display: none; 193 - } 192 + details summary::-webkit-details-marker { 193 + display: none; 194 + } 194 195 195 - code { 196 - @apply font-mono rounded bg-gray-100 dark:bg-gray-700 text-black dark:text-white; 196 + code { 197 + @apply font-mono rounded bg-gray-100 dark:bg-gray-700 text-black dark:text-white; 198 + } 197 199 } 198 - } 199 200 200 - @layer components { 201 - .btn { 202 - @apply relative z-10 inline-flex overflow-hidden items-center justify-center 201 + @layer components { 202 + .btn { 203 + @apply relative z-10 inline-flex overflow-hidden items-center justify-center 203 204 min-h-[32px] px-2 py-[6px] 204 205 rounded border border-gray-200 dark:border-gray-700 205 206 bg-white dark:bg-gray-800 ··· 208 209 outline-transparent cursor-pointer 209 210 focus-visible:outline focus-visible:outline-2 focus-visible:outline-gray-400 dark:focus-visible:outline-gray-600; 210 211 211 - @apply before:absolute before:inset-0 before:-z-10 before:block before:rounded-sm before:content-[''] 212 + @apply before:absolute before:inset-0 before:-z-10 before:block before:rounded-sm before:content-[''] 212 213 before:transition-all before:duration-150 before:ease-in-out 213 214 before:shadow-[inset_0_-2px_0_0_theme(colors.gray.200)] dark:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900)]; 214 215 215 - @apply hover:bg-gray-50 dark:hover:bg-gray-700 216 + @apply hover:bg-gray-50 dark:hover:bg-gray-700 216 217 hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.300)] dark:hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.800)] 217 218 active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.200)] dark:active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.900)] 218 219 disabled:cursor-not-allowed disabled:opacity-50; 219 - } 220 + } 220 221 221 - .btn-flat { 222 - @apply inline-flex items-center justify-center 222 + .btn-flat { 223 + @apply inline-flex items-center justify-center 223 224 min-h-7 px-2 py-[6px] 224 225 rounded 225 226 text-sm text-gray-900 dark:text-gray-100 cursor-pointer ··· 229 230 hover:bg-gray-100 230 231 dark:hover:text-gray-100 dark:hover:bg-gray-700 231 232 disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:text-inherit disabled:hover:bg-inherit; 232 - } 233 + } 233 234 234 - .btn-create { 235 - @apply btn text-white 235 + .btn-create { 236 + @apply btn text-white 236 237 bg-green-600 hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-800 237 238 border border-green-700 hover:border-green-800 238 239 focus-visible:outline-green-500 ··· 240 241 before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)] 241 242 hover:before:shadow-[inset_0_-2px_0_0_theme(colors.gray.900/25%)] 242 243 active:before:shadow-[inset_0_2px_2px_0_theme(colors.gray.900/50%)]; 243 - } 244 - 245 - .btn-create-flat { 246 - @apply btn-create 244 + } 245 + 246 + .btn-create-flat { 247 + @apply btn-create 247 248 before:shadow-none 248 249 hover:before:shadow-none 249 250 active:before:shadow-none; 250 - } 251 + } 251 252 252 - .btn-cancel { 253 - @apply btn text-white 253 + .btn-cancel { 254 + @apply btn text-white 254 255 bg-red-600 hover:bg-red-700 dark:bg-red-700 dark:hover:bg-red-800 255 256 border border-red-700 hover:border-red-800 256 257 focus-visible:outline-red-500 257 258 disabled:bg-red-400 dark:disabled:bg-red-600; 258 - } 259 + } 259 260 260 - .btn-cancel-flat { 261 - @apply btn-cancel 261 + .btn-cancel-flat { 262 + @apply btn-cancel 262 263 before:shadow-none 263 264 hover:before:shadow-none 264 265 active:before:shadow-none; 265 - } 266 + } 266 267 267 - .btn-group { 268 - @apply inline-flex items-stretch 268 + .btn-group { 269 + @apply inline-flex items-stretch 269 270 max-h-[32px] 270 271 rounded border border-gray-200 dark:border-gray-700 271 272 divide-x divide-gray-200 dark:divide-gray-700 272 273 overflow-hidden; 273 - } 274 + } 274 275 275 - .btn-group-item { 276 - @apply btn-flat min-h-[30px] gap-1.5 276 + .btn-group-item { 277 + @apply btn-flat min-h-[30px] gap-1.5 277 278 bg-gray-50 dark:bg-gray-900 278 279 rounded-none border-y-0 279 280 no-underline hover:no-underline 280 281 hover:text-gray-600 dark:hover:text-gray-400; 281 - } 282 + } 282 283 283 - .btn-group-item.active { 284 - @apply btn min-h-[30px] rounded-none border-y-0 284 + .btn-group-item.active { 285 + @apply btn min-h-[30px] rounded-none border-y-0 285 286 before:border-none before:rounded-none before:bg-inherit; 286 287 287 - &:first-child { 288 - @apply border-none before:rounded-l-sm; 289 - } 290 - &:last-child { 291 - @apply border-y-0 border-r-0 border-l before:rounded-r-sm; 292 - } 293 - } 288 + &:first-child { 289 + @apply border-none before:rounded-l-sm; 290 + } 291 + &:last-child { 292 + @apply border-y-0 border-r-0 border-l before:rounded-r-sm; 293 + } 294 + } 294 295 295 - .prose { 296 - overflow-wrap: anywhere; 297 - } 296 + .prose { 297 + overflow-wrap: anywhere; 298 + } 298 299 299 - .prose td, 300 - .prose th { 301 - overflow-wrap: normal; 302 - } 300 + .prose td, 301 + .prose th { 302 + overflow-wrap: normal; 303 + } 303 304 304 - .prose hr { 305 - @apply my-2; 306 - } 305 + .prose hr { 306 + @apply my-2; 307 + } 307 308 308 - .prose li:has(input) { 309 - @apply list-none; 310 - } 309 + .prose li:has(input) { 310 + @apply list-none; 311 + } 311 312 312 - .prose ul:has(input) { 313 - @apply pl-2; 314 - } 313 + .prose ul:has(input) { 314 + @apply pl-2; 315 + } 315 316 316 - .prose .heading .anchor { 317 - @apply no-underline mx-2 opacity-0; 318 - } 317 + .prose .heading .anchor { 318 + @apply no-underline mx-2 opacity-0; 319 + } 319 320 320 - .prose .heading:hover .anchor { 321 - @apply opacity-70; 322 - } 321 + .prose .heading:hover .anchor { 322 + @apply opacity-70; 323 + } 323 324 324 - .prose .heading .anchor:hover { 325 - @apply opacity-70; 326 - } 325 + .prose .heading .anchor:hover { 326 + @apply opacity-70; 327 + } 327 328 328 - .prose h1:target, 329 - .prose h2:target, 330 - .prose h3:target, 331 - .prose h4:target, 332 - .prose h5:target, 333 - .prose h6:target { 334 - @apply bg-yellow-200/30 dark:bg-yellow-600/30; 335 - } 329 + .prose h1:target, 330 + .prose h2:target, 331 + .prose h3:target, 332 + .prose h4:target, 333 + .prose h5:target, 334 + .prose h6:target { 335 + @apply bg-yellow-200/30 dark:bg-yellow-600/30; 336 + } 336 337 337 - .prose a.footnote-backref { 338 - @apply no-underline; 339 - } 338 + .prose a.footnote-backref { 339 + @apply no-underline; 340 + } 340 341 341 - .prose a.mention { 342 - @apply no-underline hover:underline font-bold; 343 - } 342 + .prose a.mention { 343 + @apply no-underline hover:underline font-bold; 344 + } 344 345 345 - .prose li { 346 - @apply my-0 py-0; 347 - } 346 + .prose li { 347 + @apply my-0 py-0; 348 + } 348 349 349 - .prose ul, 350 - .prose ol { 351 - @apply my-1 py-0; 352 - } 350 + .prose ul, 351 + .prose ol { 352 + @apply my-1 py-0; 353 + } 353 354 354 - .prose img { 355 - display: inline; 356 - margin: 0; 357 - vertical-align: middle; 358 - } 355 + .prose img { 356 + display: inline; 357 + margin: 0; 358 + vertical-align: middle; 359 + } 359 360 360 - .prose input { 361 - @apply inline-block my-0 mt-1 mx-1; 362 - } 361 + .prose input { 362 + @apply inline-block my-0 mt-1 mx-1; 363 + } 363 364 364 - /* Mermaid diagrams */ 365 - .prose pre.mermaid { 366 - @apply flex justify-center my-4 overflow-x-auto bg-transparent border-0; 367 - } 365 + /* Mermaid diagrams */ 366 + .prose pre.mermaid { 367 + @apply flex justify-center my-4 overflow-x-auto bg-transparent border-0; 368 + } 368 369 369 - /* Base callout */ 370 - details[data-callout] { 371 - @apply border-l-4 pl-3 py-2 text-gray-800 dark:text-gray-200 my-4; 372 - } 370 + /* Base callout */ 371 + details[data-callout] { 372 + @apply border-l-4 pl-3 py-2 text-gray-800 dark:text-gray-200 my-4; 373 + } 373 374 374 - details[data-callout] > summary { 375 - @apply font-bold cursor-pointer mb-1; 376 - } 375 + details[data-callout] > summary { 376 + @apply font-bold cursor-pointer mb-1; 377 + } 377 378 378 - details[data-callout] > .callout-content { 379 - @apply text-sm leading-snug; 380 - } 379 + details[data-callout] > .callout-content { 380 + @apply text-sm leading-snug; 381 + } 381 382 382 - /* Note (blue) */ 383 - details[data-callout="note" i] { 384 - @apply border-blue-400 dark:border-blue-500; 385 - } 386 - details[data-callout="note" i] > summary { 387 - @apply text-blue-700 dark:text-blue-400; 388 - } 383 + /* Note (blue) */ 384 + details[data-callout="note" i] { 385 + @apply border-blue-400 dark:border-blue-500; 386 + } 387 + details[data-callout="note" i] > summary { 388 + @apply text-blue-700 dark:text-blue-400; 389 + } 389 390 390 - /* Important (purple) */ 391 - details[data-callout="important" i] { 392 - @apply border-purple-400 dark:border-purple-500; 393 - } 394 - details[data-callout="important" i] > summary { 395 - @apply text-purple-700 dark:text-purple-400; 396 - } 391 + /* Important (purple) */ 392 + details[data-callout="important" i] { 393 + @apply border-purple-400 dark:border-purple-500; 394 + } 395 + details[data-callout="important" i] > summary { 396 + @apply text-purple-700 dark:text-purple-400; 397 + } 397 398 398 - /* Warning (yellow) */ 399 - details[data-callout="warning" i] { 400 - @apply border-yellow-400 dark:border-yellow-500; 401 - } 402 - details[data-callout="warning" i] > summary { 403 - @apply text-yellow-700 dark:text-yellow-400; 404 - } 399 + /* Warning (yellow) */ 400 + details[data-callout="warning" i] { 401 + @apply border-yellow-400 dark:border-yellow-500; 402 + } 403 + details[data-callout="warning" i] > summary { 404 + @apply text-yellow-700 dark:text-yellow-400; 405 + } 405 406 406 - /* Caution (red) */ 407 - details[data-callout="caution" i] { 408 - @apply border-red-400 dark:border-red-500; 409 - } 410 - details[data-callout="caution" i] > summary { 411 - @apply text-red-700 dark:text-red-400; 412 - } 407 + /* Caution (red) */ 408 + details[data-callout="caution" i] { 409 + @apply border-red-400 dark:border-red-500; 410 + } 411 + details[data-callout="caution" i] > summary { 412 + @apply text-red-700 dark:text-red-400; 413 + } 413 414 414 - /* Tip (green) */ 415 - details[data-callout="tip" i] { 416 - @apply border-green-400 dark:border-green-500; 417 - } 418 - details[data-callout="tip" i] > summary { 419 - @apply text-green-700 dark:text-green-400; 420 - } 415 + /* Tip (green) */ 416 + details[data-callout="tip" i] { 417 + @apply border-green-400 dark:border-green-500; 418 + } 419 + details[data-callout="tip" i] > summary { 420 + @apply text-green-700 dark:text-green-400; 421 + } 421 422 422 - /* Optional: hide the disclosure arrow like GitHub */ 423 - details[data-callout] > summary::-webkit-details-marker { 424 - display: none; 425 - } 426 - } 427 - @layer utilities { 428 - .error { 429 - @apply py-1 text-red-400 dark:text-red-300; 430 - } 431 - .success { 432 - @apply py-1 text-gray-900 dark:text-gray-100; 423 + /* Optional: hide the disclosure arrow like GitHub */ 424 + details[data-callout] > summary::-webkit-details-marker { 425 + display: none; 426 + } 433 427 } 428 + @layer utilities { 429 + .error { 430 + @apply py-1 text-red-400 dark:text-red-300; 431 + } 432 + .success { 433 + @apply py-1 text-gray-900 dark:text-gray-100; 434 + } 434 435 435 - @keyframes scroll { 436 - 0% { 437 - transform: translateX(0); 438 - } 439 - 100% { 440 - transform: translateX(-50%); 441 - } 442 - } 436 + @keyframes scroll { 437 + 0% { 438 + transform: translateX(0); 439 + } 440 + 100% { 441 + transform: translateX(-50%); 442 + } 443 + } 443 444 444 - .animate-marquee { 445 - animation: scroll 60s linear infinite; 446 - } 445 + .animate-marquee { 446 + animation: scroll 60s linear infinite; 447 + } 447 448 448 - .animate-marquee:hover { 449 - animation-play-state: paused; 450 - } 449 + .animate-marquee:hover { 450 + animation-play-state: paused; 451 + } 451 452 452 - @media (prefers-reduced-motion: reduce) { 453 - .animate-marquee { 454 - animation: none; 455 - transform: none; 456 - } 457 - } 453 + @media (prefers-reduced-motion: reduce) { 454 + .animate-marquee { 455 + animation: none; 456 + transform: none; 457 + } 458 + } 458 459 459 - @keyframes progress { 460 - from { 461 - width: 0%; 462 - } 463 - to { 464 - width: 100%; 465 - } 466 - } 460 + @keyframes progress { 461 + from { 462 + width: 0%; 463 + } 464 + to { 465 + width: 100%; 466 + } 467 + } 467 468 468 - .animate-progress { 469 - animation: progress 10s linear forwards; 470 - } 469 + .animate-progress { 470 + animation: progress 10s linear forwards; 471 + } 471 472 472 - @keyframes fadeIn { 473 - from { 474 - opacity: 0; 475 - } 476 - to { 477 - opacity: 1; 478 - } 479 - } 473 + @keyframes fadeIn { 474 + from { 475 + opacity: 0; 476 + } 477 + to { 478 + opacity: 1; 479 + } 480 + } 480 481 481 - @keyframes fadeOut { 482 - from { 483 - opacity: 1; 484 - } 485 - to { 486 - opacity: 0; 487 - } 488 - } 482 + @keyframes fadeOut { 483 + from { 484 + opacity: 1; 485 + } 486 + to { 487 + opacity: 0; 488 + } 489 + } 489 490 490 - .animate-fadein { 491 - animation: fadeIn 0.25s ease-in forwards; 492 - } 491 + .animate-fadein { 492 + animation: fadeIn 0.25s ease-in forwards; 493 + } 493 494 494 - .animate-fadeout { 495 - animation: fadeOut 0.25s ease-out forwards; 495 + .animate-fadeout { 496 + animation: fadeOut 0.25s ease-out forwards; 497 + } 496 498 } 497 - } 498 499 } 499 500 500 501 /* Background */ 501 502 .bg { 502 - color: #4c4f69; 503 - background-color: #eff1f5; 503 + color: #4c4f69; 504 + background-color: #eff1f5; 504 505 } 505 506 /* PreWrapper */ 506 507 .chroma { 507 - color: #4c4f69; 508 + color: #4c4f69; 508 509 } 509 510 /* Error */ 510 511 .chroma .err { 511 - color: #d20f39; 512 + color: #d20f39; 512 513 } 513 514 /* LineLink */ 514 515 .chroma .lnlinks { 515 - outline: none; 516 - text-decoration: none; 517 - color: inherit; 516 + outline: none; 517 + text-decoration: none; 518 + color: inherit; 518 519 } 519 520 /* LineTableTD */ 520 521 .chroma .lntd { 521 - vertical-align: top; 522 - padding: 0; 523 - margin: 0; 524 - border: 0; 522 + vertical-align: top; 523 + padding: 0; 524 + margin: 0; 525 + border: 0; 525 526 } 526 527 /* LineTable */ 527 528 .chroma .lntable { 528 - border-spacing: 0; 529 - padding: 0; 530 - margin: 0; 531 - border: 0; 529 + border-spacing: 0; 530 + padding: 0; 531 + margin: 0; 532 + border: 0; 532 533 } 533 534 /* LineHighlight */ 534 535 .chroma .hl { 535 - @apply bg-amber-400/30 dark:bg-amber-500/20; 536 + @apply bg-amber-400/30 dark:bg-amber-500/20; 536 537 } 537 538 538 539 .line-quote-hl, 539 540 .line-range-hl { 540 - @apply !bg-yellow-200/30 dark:!bg-yellow-700/30; 541 + @apply !bg-yellow-200/30 dark:!bg-yellow-700/30; 541 542 } 542 543 543 544 :is(.line-quote-hl, .line-range-hl) > .min-w-\[3\.5rem\] { 544 - @apply !bg-yellow-200/30 dark:!bg-yellow-700/30; 545 + @apply !bg-yellow-200/30 dark:!bg-yellow-700/30; 545 546 } 546 547 547 548 :is(.line-quote-hl, .line-range-hl) > .min-w-\[3\.5rem\] a { 548 - @apply !text-black dark:!text-white; 549 + @apply !text-black dark:!text-white; 549 550 } 550 551 551 552 /* LineNumbersTable */ 552 553 .chroma .lnt { 553 - white-space: pre; 554 - -webkit-user-select: none; 555 - user-select: none; 556 - margin-right: 0.4em; 557 - padding: 0 0.4em 0 0.4em; 558 - color: #8c8fa1; 554 + white-space: pre; 555 + -webkit-user-select: none; 556 + user-select: none; 557 + margin-right: 0.4em; 558 + padding: 0 0.4em 0 0.4em; 559 + color: #8c8fa1; 559 560 } 560 561 /* LineNumbers */ 561 562 .chroma .ln { 562 - white-space: pre; 563 - -webkit-user-select: none; 564 - user-select: none; 565 - margin-right: 0.4em; 566 - padding: 0 0.4em 0 0.4em; 567 - color: #8c8fa1; 563 + white-space: pre; 564 + -webkit-user-select: none; 565 + user-select: none; 566 + margin-right: 0.4em; 567 + padding: 0 0.4em 0 0.4em; 568 + color: #8c8fa1; 568 569 } 569 570 /* Line */ 570 571 .chroma .line { 571 - display: flex; 572 + display: flex; 572 573 } 573 574 /* Keyword */ 574 575 .chroma .k { 575 - color: #8839ef; 576 + color: #8839ef; 576 577 } 577 578 /* KeywordConstant */ 578 579 .chroma .kc { 579 - color: #fe640b; 580 + color: #fe640b; 580 581 } 581 582 /* KeywordDeclaration */ 582 583 .chroma .kd { 583 - color: #d20f39; 584 + color: #d20f39; 584 585 } 585 586 /* KeywordNamespace */ 586 587 .chroma .kn { 587 - color: #179299; 588 + color: #179299; 588 589 } 589 590 /* KeywordPseudo */ 590 591 .chroma .kp { 591 - color: #8839ef; 592 + color: #8839ef; 592 593 } 593 594 /* KeywordReserved */ 594 595 .chroma .kr { 595 - color: #8839ef; 596 + color: #8839ef; 596 597 } 597 598 /* KeywordType */ 598 599 .chroma .kt { 599 - color: #d20f39; 600 + color: #d20f39; 600 601 } 601 602 /* NameAttribute */ 602 603 .chroma .na { 603 - color: #1e66f5; 604 + color: #1e66f5; 604 605 } 605 606 /* NameBuiltin */ 606 607 .chroma .nb { 607 - color: #04a5e5; 608 + color: #04a5e5; 608 609 } 609 610 /* NameBuiltinPseudo */ 610 611 .chroma .bp { 611 - color: #04a5e5; 612 + color: #04a5e5; 612 613 } 613 614 /* NameClass */ 614 615 .chroma .nc { 615 - color: #df8e1d; 616 + color: #df8e1d; 616 617 } 617 618 /* NameConstant */ 618 619 .chroma .no { 619 - color: #df8e1d; 620 + color: #df8e1d; 620 621 } 621 622 /* NameDecorator */ 622 623 .chroma .nd { 623 - color: #1e66f5; 624 - font-weight: bold; 624 + color: #1e66f5; 625 + font-weight: bold; 625 626 } 626 627 /* NameEntity */ 627 628 .chroma .ni { 628 - color: #179299; 629 + color: #179299; 629 630 } 630 631 /* NameException */ 631 632 .chroma .ne { 632 - color: #fe640b; 633 + color: #fe640b; 633 634 } 634 635 /* NameFunction */ 635 636 .chroma .nf { 636 - color: #1e66f5; 637 + color: #1e66f5; 637 638 } 638 639 /* NameFunctionMagic */ 639 640 .chroma .fm { 640 - color: #1e66f5; 641 + color: #1e66f5; 641 642 } 642 643 /* NameLabel */ 643 644 .chroma .nl { 644 - color: #04a5e5; 645 + color: #04a5e5; 645 646 } 646 647 /* NameNamespace */ 647 648 .chroma .nn { 648 - color: #fe640b; 649 + color: #fe640b; 649 650 } 650 651 /* NameProperty */ 651 652 .chroma .py { 652 - color: #fe640b; 653 + color: #fe640b; 653 654 } 654 655 /* NameTag */ 655 656 .chroma .nt { 656 - color: #8839ef; 657 + color: #8839ef; 657 658 } 658 659 /* NameVariable */ 659 660 .chroma .nv { 660 - color: #dc8a78; 661 + color: #dc8a78; 661 662 } 662 663 /* NameVariableClass */ 663 664 .chroma .vc { 664 - color: #dc8a78; 665 + color: #dc8a78; 665 666 } 666 667 /* NameVariableGlobal */ 667 668 .chroma .vg { 668 - color: #dc8a78; 669 + color: #dc8a78; 669 670 } 670 671 /* NameVariableInstance */ 671 672 .chroma .vi { 672 - color: #dc8a78; 673 + color: #dc8a78; 673 674 } 674 675 /* NameVariableMagic */ 675 676 .chroma .vm { 676 - color: #dc8a78; 677 + color: #dc8a78; 677 678 } 678 679 /* LiteralString */ 679 680 .chroma .s { 680 - color: #40a02b; 681 + color: #40a02b; 681 682 } 682 683 /* LiteralStringAffix */ 683 684 .chroma .sa { 684 - color: #d20f39; 685 + color: #d20f39; 685 686 } 686 687 /* LiteralStringBacktick */ 687 688 .chroma .sb { 688 - color: #40a02b; 689 + color: #40a02b; 689 690 } 690 691 /* LiteralStringChar */ 691 692 .chroma .sc { 692 - color: #40a02b; 693 + color: #40a02b; 693 694 } 694 695 /* LiteralStringDelimiter */ 695 696 .chroma .dl { 696 - color: #1e66f5; 697 + color: #1e66f5; 697 698 } 698 699 /* LiteralStringDoc */ 699 700 .chroma .sd { 700 - color: #9ca0b0; 701 + color: #9ca0b0; 701 702 } 702 703 /* LiteralStringDouble */ 703 704 .chroma .s2 { 704 - color: #40a02b; 705 + color: #40a02b; 705 706 } 706 707 /* LiteralStringEscape */ 707 708 .chroma .se { 708 - color: #1e66f5; 709 + color: #1e66f5; 709 710 } 710 711 /* LiteralStringHeredoc */ 711 712 .chroma .sh { 712 - color: #9ca0b0; 713 + color: #9ca0b0; 713 714 } 714 715 /* LiteralStringInterpol */ 715 716 .chroma .si { 716 - color: #40a02b; 717 + color: #40a02b; 717 718 } 718 719 /* LiteralStringOther */ 719 720 .chroma .sx { 720 - color: #40a02b; 721 + color: #40a02b; 721 722 } 722 723 /* LiteralStringRegex */ 723 724 .chroma .sr { 724 - color: #179299; 725 + color: #179299; 725 726 } 726 727 /* LiteralStringSingle */ 727 728 .chroma .s1 { 728 - color: #40a02b; 729 + color: #40a02b; 729 730 } 730 731 /* LiteralStringSymbol */ 731 732 .chroma .ss { 732 - color: #40a02b; 733 + color: #40a02b; 733 734 } 734 735 /* LiteralNumber */ 735 736 .chroma .m { 736 - color: #fe640b; 737 + color: #fe640b; 737 738 } 738 739 /* LiteralNumberBin */ 739 740 .chroma .mb { 740 - color: #fe640b; 741 + color: #fe640b; 741 742 } 742 743 /* LiteralNumberFloat */ 743 744 .chroma .mf { 744 - color: #fe640b; 745 + color: #fe640b; 745 746 } 746 747 /* LiteralNumberHex */ 747 748 .chroma .mh { 748 - color: #fe640b; 749 + color: #fe640b; 749 750 } 750 751 /* LiteralNumberInteger */ 751 752 .chroma .mi { 752 - color: #fe640b; 753 + color: #fe640b; 753 754 } 754 755 /* LiteralNumberIntegerLong */ 755 756 .chroma .il { 756 - color: #fe640b; 757 + color: #fe640b; 757 758 } 758 759 /* LiteralNumberOct */ 759 760 .chroma .mo { 760 - color: #fe640b; 761 + color: #fe640b; 761 762 } 762 763 /* Operator */ 763 764 .chroma .o { 764 - color: #04a5e5; 765 - font-weight: bold; 765 + color: #04a5e5; 766 + font-weight: bold; 766 767 } 767 768 /* OperatorWord */ 768 769 .chroma .ow { 769 - color: #04a5e5; 770 - font-weight: bold; 770 + color: #04a5e5; 771 + font-weight: bold; 771 772 } 772 773 /* Comment */ 773 774 .chroma .c { 774 - color: #9ca0b0; 775 - font-style: italic; 775 + color: #9ca0b0; 776 + font-style: italic; 776 777 } 777 778 /* CommentHashbang */ 778 779 .chroma .ch { 779 - color: #9ca0b0; 780 - font-style: italic; 780 + color: #9ca0b0; 781 + font-style: italic; 781 782 } 782 783 /* CommentMultiline */ 783 784 .chroma .cm { 784 - color: #9ca0b0; 785 - font-style: italic; 785 + color: #9ca0b0; 786 + font-style: italic; 786 787 } 787 788 /* CommentSingle */ 788 789 .chroma .c1 { 789 - color: #9ca0b0; 790 - font-style: italic; 790 + color: #9ca0b0; 791 + font-style: italic; 791 792 } 792 793 /* CommentSpecial */ 793 794 .chroma .cs { 794 - color: #9ca0b0; 795 - font-style: italic; 795 + color: #9ca0b0; 796 + font-style: italic; 796 797 } 797 798 /* CommentPreproc */ 798 799 .chroma .cp { 799 - color: #9ca0b0; 800 - font-style: italic; 800 + color: #9ca0b0; 801 + font-style: italic; 801 802 } 802 803 /* CommentPreprocFile */ 803 804 .chroma .cpf { 804 - color: #9ca0b0; 805 - font-weight: bold; 806 - font-style: italic; 805 + color: #9ca0b0; 806 + font-weight: bold; 807 + font-style: italic; 807 808 } 808 809 /* GenericDeleted */ 809 810 .chroma .gd { 810 - color: #d20f39; 811 - background-color: oklch(93.6% 0.032 17.717); 811 + color: #d20f39; 812 + background-color: oklch(93.6% 0.032 17.717); 812 813 } 813 814 /* GenericEmph */ 814 815 .chroma .ge { 815 - font-style: italic; 816 + font-style: italic; 816 817 } 817 818 /* GenericError */ 818 819 .chroma .gr { 819 - color: #d20f39; 820 + color: #d20f39; 820 821 } 821 822 /* GenericHeading */ 822 823 .chroma .gh { 823 - color: #fe640b; 824 - font-weight: bold; 824 + color: #fe640b; 825 + font-weight: bold; 825 826 } 826 827 /* GenericInserted */ 827 828 .chroma .gi { 828 - color: #40a02b; 829 - background-color: oklch(96.2% 0.044 156.743); 829 + color: #40a02b; 830 + background-color: oklch(96.2% 0.044 156.743); 830 831 } 831 832 /* GenericStrong */ 832 833 .chroma .gs { 833 - font-weight: bold; 834 + font-weight: bold; 834 835 } 835 836 /* GenericSubheading */ 836 837 .chroma .gu { 837 - color: #fe640b; 838 - font-weight: bold; 838 + color: #fe640b; 839 + font-weight: bold; 839 840 } 840 841 /* GenericTraceback */ 841 842 .chroma .gt { 842 - color: #d20f39; 843 + color: #d20f39; 843 844 } 844 845 /* GenericUnderline */ 845 846 .chroma .gl { 846 - text-decoration: underline; 847 + text-decoration: underline; 847 848 } 848 849 849 850 @media (prefers-color-scheme: dark) { 850 - /* Background */ 851 - .bg { 852 - color: #cad3f5; 853 - background-color: #24273a; 854 - } 855 - /* PreWrapper */ 856 - .chroma { 857 - color: #cad3f5; 858 - } 859 - /* Error */ 860 - .chroma .err { 861 - color: #ed8796; 862 - } 863 - /* LineLink */ 864 - .chroma .lnlinks { 865 - outline: none; 866 - text-decoration: none; 867 - color: inherit; 868 - } 869 - /* LineTableTD */ 870 - .chroma .lntd { 871 - vertical-align: top; 872 - padding: 0; 873 - margin: 0; 874 - border: 0; 875 - } 876 - /* LineTable */ 877 - .chroma .lntable { 878 - border-spacing: 0; 879 - padding: 0; 880 - margin: 0; 881 - border: 0; 882 - } 883 - /* LineHighlight */ 884 - .chroma .hl { 885 - background-color: #494d64; 886 - } 887 - /* LineNumbersTable */ 888 - .chroma .lnt { 889 - white-space: pre; 890 - -webkit-user-select: none; 891 - user-select: none; 892 - margin-right: 0.4em; 893 - padding: 0 0.4em 0 0.4em; 894 - color: #8087a2; 895 - } 896 - /* LineNumbers */ 897 - .chroma .ln { 898 - white-space: pre; 899 - -webkit-user-select: none; 900 - user-select: none; 901 - margin-right: 0.4em; 902 - padding: 0 0.4em 0 0.4em; 903 - color: #8087a2; 904 - } 905 - /* Line */ 906 - .chroma .line { 907 - display: flex; 908 - } 909 - /* Keyword */ 910 - .chroma .k { 911 - color: #c6a0f6; 912 - } 913 - /* KeywordConstant */ 914 - .chroma .kc { 915 - color: #f5a97f; 916 - } 917 - /* KeywordDeclaration */ 918 - .chroma .kd { 919 - color: #ed8796; 920 - } 921 - /* KeywordNamespace */ 922 - .chroma .kn { 923 - color: #8bd5ca; 924 - } 925 - /* KeywordPseudo */ 926 - .chroma .kp { 927 - color: #c6a0f6; 928 - } 929 - /* KeywordReserved */ 930 - .chroma .kr { 931 - color: #c6a0f6; 932 - } 933 - /* KeywordType */ 934 - .chroma .kt { 935 - color: #ed8796; 936 - } 937 - /* NameAttribute */ 938 - .chroma .na { 939 - color: #8aadf4; 940 - } 941 - /* NameBuiltin */ 942 - .chroma .nb { 943 - color: #91d7e3; 944 - } 945 - /* NameBuiltinPseudo */ 946 - .chroma .bp { 947 - color: #91d7e3; 948 - } 949 - /* NameClass */ 950 - .chroma .nc { 951 - color: #eed49f; 952 - } 953 - /* NameConstant */ 954 - .chroma .no { 955 - color: #eed49f; 956 - } 957 - /* NameDecorator */ 958 - .chroma .nd { 959 - color: #8aadf4; 960 - font-weight: bold; 961 - } 962 - /* NameEntity */ 963 - .chroma .ni { 964 - color: #8bd5ca; 965 - } 966 - /* NameException */ 967 - .chroma .ne { 968 - color: #f5a97f; 969 - } 970 - /* NameFunction */ 971 - .chroma .nf { 972 - color: #8aadf4; 973 - } 974 - /* NameFunctionMagic */ 975 - .chroma .fm { 976 - color: #8aadf4; 977 - } 978 - /* NameLabel */ 979 - .chroma .nl { 980 - color: #91d7e3; 981 - } 982 - /* NameNamespace */ 983 - .chroma .nn { 984 - color: #f5a97f; 985 - } 986 - /* NameProperty */ 987 - .chroma .py { 988 - color: #f5a97f; 989 - } 990 - /* NameTag */ 991 - .chroma .nt { 992 - color: #c6a0f6; 993 - } 994 - /* NameVariable */ 995 - .chroma .nv { 996 - color: #f4dbd6; 997 - } 998 - /* NameVariableClass */ 999 - .chroma .vc { 1000 - color: #f4dbd6; 1001 - } 1002 - /* NameVariableGlobal */ 1003 - .chroma .vg { 1004 - color: #f4dbd6; 1005 - } 1006 - /* NameVariableInstance */ 1007 - .chroma .vi { 1008 - color: #f4dbd6; 1009 - } 1010 - /* NameVariableMagic */ 1011 - .chroma .vm { 1012 - color: #f4dbd6; 1013 - } 1014 - /* LiteralString */ 1015 - .chroma .s { 1016 - color: #a6da95; 1017 - } 1018 - /* LiteralStringAffix */ 1019 - .chroma .sa { 1020 - color: #ed8796; 1021 - } 1022 - /* LiteralStringBacktick */ 1023 - .chroma .sb { 1024 - color: #a6da95; 1025 - } 1026 - /* LiteralStringChar */ 1027 - .chroma .sc { 1028 - color: #a6da95; 1029 - } 1030 - /* LiteralStringDelimiter */ 1031 - .chroma .dl { 1032 - color: #8aadf4; 1033 - } 1034 - /* LiteralStringDoc */ 1035 - .chroma .sd { 1036 - color: #6e738d; 1037 - } 1038 - /* LiteralStringDouble */ 1039 - .chroma .s2 { 1040 - color: #a6da95; 1041 - } 1042 - /* LiteralStringEscape */ 1043 - .chroma .se { 1044 - color: #8aadf4; 1045 - } 1046 - /* LiteralStringHeredoc */ 1047 - .chroma .sh { 1048 - color: #6e738d; 1049 - } 1050 - /* LiteralStringInterpol */ 1051 - .chroma .si { 1052 - color: #a6da95; 1053 - } 1054 - /* LiteralStringOther */ 1055 - .chroma .sx { 1056 - color: #a6da95; 1057 - } 1058 - /* LiteralStringRegex */ 1059 - .chroma .sr { 1060 - color: #8bd5ca; 1061 - } 1062 - /* LiteralStringSingle */ 1063 - .chroma .s1 { 1064 - color: #a6da95; 1065 - } 1066 - /* LiteralStringSymbol */ 1067 - .chroma .ss { 1068 - color: #a6da95; 1069 - } 1070 - /* LiteralNumber */ 1071 - .chroma .m { 1072 - color: #f5a97f; 1073 - } 1074 - /* LiteralNumberBin */ 1075 - .chroma .mb { 1076 - color: #f5a97f; 1077 - } 1078 - /* LiteralNumberFloat */ 1079 - .chroma .mf { 1080 - color: #f5a97f; 1081 - } 1082 - /* LiteralNumberHex */ 1083 - .chroma .mh { 1084 - color: #f5a97f; 1085 - } 1086 - /* LiteralNumberInteger */ 1087 - .chroma .mi { 1088 - color: #f5a97f; 1089 - } 1090 - /* LiteralNumberIntegerLong */ 1091 - .chroma .il { 1092 - color: #f5a97f; 1093 - } 1094 - /* LiteralNumberOct */ 1095 - .chroma .mo { 1096 - color: #f5a97f; 1097 - } 1098 - /* Operator */ 1099 - .chroma .o { 1100 - color: #91d7e3; 1101 - font-weight: bold; 1102 - } 1103 - /* OperatorWord */ 1104 - .chroma .ow { 1105 - color: #91d7e3; 1106 - font-weight: bold; 1107 - } 1108 - /* Comment */ 1109 - .chroma .c { 1110 - color: #6e738d; 1111 - font-style: italic; 1112 - } 1113 - /* CommentHashbang */ 1114 - .chroma .ch { 1115 - color: #6e738d; 1116 - font-style: italic; 1117 - } 1118 - /* CommentMultiline */ 1119 - .chroma .cm { 1120 - color: #6e738d; 1121 - font-style: italic; 1122 - } 1123 - /* CommentSingle */ 1124 - .chroma .c1 { 1125 - color: #6e738d; 1126 - font-style: italic; 1127 - } 1128 - /* CommentSpecial */ 1129 - .chroma .cs { 1130 - color: #6e738d; 1131 - font-style: italic; 1132 - } 1133 - /* CommentPreproc */ 1134 - .chroma .cp { 1135 - color: #6e738d; 1136 - font-style: italic; 1137 - } 1138 - /* CommentPreprocFile */ 1139 - .chroma .cpf { 1140 - color: #6e738d; 1141 - font-weight: bold; 1142 - font-style: italic; 1143 - } 1144 - /* GenericDeleted */ 1145 - .chroma .gd { 1146 - color: #ed8796; 1147 - background-color: oklch(44.4% 0.177 26.899 / 0.5); 1148 - } 1149 - /* GenericEmph */ 1150 - .chroma .ge { 1151 - font-style: italic; 1152 - } 1153 - /* GenericError */ 1154 - .chroma .gr { 1155 - color: #ed8796; 1156 - } 1157 - /* GenericHeading */ 1158 - .chroma .gh { 1159 - color: #f5a97f; 1160 - font-weight: bold; 1161 - } 1162 - /* GenericInserted */ 1163 - .chroma .gi { 1164 - color: #a6da95; 1165 - background-color: oklch(44.8% 0.119 151.328 / 0.5); 1166 - } 1167 - /* GenericStrong */ 1168 - .chroma .gs { 1169 - font-weight: bold; 1170 - } 1171 - /* GenericSubheading */ 1172 - .chroma .gu { 1173 - color: #f5a97f; 1174 - font-weight: bold; 1175 - } 1176 - /* GenericTraceback */ 1177 - .chroma .gt { 1178 - color: #ed8796; 1179 - } 1180 - /* GenericUnderline */ 1181 - .chroma .gl { 1182 - text-decoration: underline; 1183 - } 851 + /* Background */ 852 + .bg { 853 + color: #cad3f5; 854 + background-color: #24273a; 855 + } 856 + /* PreWrapper */ 857 + .chroma { 858 + color: #cad3f5; 859 + } 860 + /* Error */ 861 + .chroma .err { 862 + color: #ed8796; 863 + } 864 + /* LineLink */ 865 + .chroma .lnlinks { 866 + outline: none; 867 + text-decoration: none; 868 + color: inherit; 869 + } 870 + /* LineTableTD */ 871 + .chroma .lntd { 872 + vertical-align: top; 873 + padding: 0; 874 + margin: 0; 875 + border: 0; 876 + } 877 + /* LineTable */ 878 + .chroma .lntable { 879 + border-spacing: 0; 880 + padding: 0; 881 + margin: 0; 882 + border: 0; 883 + } 884 + /* LineHighlight */ 885 + .chroma .hl { 886 + background-color: #494d64; 887 + } 888 + /* LineNumbersTable */ 889 + .chroma .lnt { 890 + white-space: pre; 891 + -webkit-user-select: none; 892 + user-select: none; 893 + margin-right: 0.4em; 894 + padding: 0 0.4em 0 0.4em; 895 + color: #8087a2; 896 + } 897 + /* LineNumbers */ 898 + .chroma .ln { 899 + white-space: pre; 900 + -webkit-user-select: none; 901 + user-select: none; 902 + margin-right: 0.4em; 903 + padding: 0 0.4em 0 0.4em; 904 + color: #8087a2; 905 + } 906 + /* Line */ 907 + .chroma .line { 908 + display: flex; 909 + } 910 + /* Keyword */ 911 + .chroma .k { 912 + color: #c6a0f6; 913 + } 914 + /* KeywordConstant */ 915 + .chroma .kc { 916 + color: #f5a97f; 917 + } 918 + /* KeywordDeclaration */ 919 + .chroma .kd { 920 + color: #ed8796; 921 + } 922 + /* KeywordNamespace */ 923 + .chroma .kn { 924 + color: #8bd5ca; 925 + } 926 + /* KeywordPseudo */ 927 + .chroma .kp { 928 + color: #c6a0f6; 929 + } 930 + /* KeywordReserved */ 931 + .chroma .kr { 932 + color: #c6a0f6; 933 + } 934 + /* KeywordType */ 935 + .chroma .kt { 936 + color: #ed8796; 937 + } 938 + /* NameAttribute */ 939 + .chroma .na { 940 + color: #8aadf4; 941 + } 942 + /* NameBuiltin */ 943 + .chroma .nb { 944 + color: #91d7e3; 945 + } 946 + /* NameBuiltinPseudo */ 947 + .chroma .bp { 948 + color: #91d7e3; 949 + } 950 + /* NameClass */ 951 + .chroma .nc { 952 + color: #eed49f; 953 + } 954 + /* NameConstant */ 955 + .chroma .no { 956 + color: #eed49f; 957 + } 958 + /* NameDecorator */ 959 + .chroma .nd { 960 + color: #8aadf4; 961 + font-weight: bold; 962 + } 963 + /* NameEntity */ 964 + .chroma .ni { 965 + color: #8bd5ca; 966 + } 967 + /* NameException */ 968 + .chroma .ne { 969 + color: #f5a97f; 970 + } 971 + /* NameFunction */ 972 + .chroma .nf { 973 + color: #8aadf4; 974 + } 975 + /* NameFunctionMagic */ 976 + .chroma .fm { 977 + color: #8aadf4; 978 + } 979 + /* NameLabel */ 980 + .chroma .nl { 981 + color: #91d7e3; 982 + } 983 + /* NameNamespace */ 984 + .chroma .nn { 985 + color: #f5a97f; 986 + } 987 + /* NameProperty */ 988 + .chroma .py { 989 + color: #f5a97f; 990 + } 991 + /* NameTag */ 992 + .chroma .nt { 993 + color: #c6a0f6; 994 + } 995 + /* NameVariable */ 996 + .chroma .nv { 997 + color: #f4dbd6; 998 + } 999 + /* NameVariableClass */ 1000 + .chroma .vc { 1001 + color: #f4dbd6; 1002 + } 1003 + /* NameVariableGlobal */ 1004 + .chroma .vg { 1005 + color: #f4dbd6; 1006 + } 1007 + /* NameVariableInstance */ 1008 + .chroma .vi { 1009 + color: #f4dbd6; 1010 + } 1011 + /* NameVariableMagic */ 1012 + .chroma .vm { 1013 + color: #f4dbd6; 1014 + } 1015 + /* LiteralString */ 1016 + .chroma .s { 1017 + color: #a6da95; 1018 + } 1019 + /* LiteralStringAffix */ 1020 + .chroma .sa { 1021 + color: #ed8796; 1022 + } 1023 + /* LiteralStringBacktick */ 1024 + .chroma .sb { 1025 + color: #a6da95; 1026 + } 1027 + /* LiteralStringChar */ 1028 + .chroma .sc { 1029 + color: #a6da95; 1030 + } 1031 + /* LiteralStringDelimiter */ 1032 + .chroma .dl { 1033 + color: #8aadf4; 1034 + } 1035 + /* LiteralStringDoc */ 1036 + .chroma .sd { 1037 + color: #6e738d; 1038 + } 1039 + /* LiteralStringDouble */ 1040 + .chroma .s2 { 1041 + color: #a6da95; 1042 + } 1043 + /* LiteralStringEscape */ 1044 + .chroma .se { 1045 + color: #8aadf4; 1046 + } 1047 + /* LiteralStringHeredoc */ 1048 + .chroma .sh { 1049 + color: #6e738d; 1050 + } 1051 + /* LiteralStringInterpol */ 1052 + .chroma .si { 1053 + color: #a6da95; 1054 + } 1055 + /* LiteralStringOther */ 1056 + .chroma .sx { 1057 + color: #a6da95; 1058 + } 1059 + /* LiteralStringRegex */ 1060 + .chroma .sr { 1061 + color: #8bd5ca; 1062 + } 1063 + /* LiteralStringSingle */ 1064 + .chroma .s1 { 1065 + color: #a6da95; 1066 + } 1067 + /* LiteralStringSymbol */ 1068 + .chroma .ss { 1069 + color: #a6da95; 1070 + } 1071 + /* LiteralNumber */ 1072 + .chroma .m { 1073 + color: #f5a97f; 1074 + } 1075 + /* LiteralNumberBin */ 1076 + .chroma .mb { 1077 + color: #f5a97f; 1078 + } 1079 + /* LiteralNumberFloat */ 1080 + .chroma .mf { 1081 + color: #f5a97f; 1082 + } 1083 + /* LiteralNumberHex */ 1084 + .chroma .mh { 1085 + color: #f5a97f; 1086 + } 1087 + /* LiteralNumberInteger */ 1088 + .chroma .mi { 1089 + color: #f5a97f; 1090 + } 1091 + /* LiteralNumberIntegerLong */ 1092 + .chroma .il { 1093 + color: #f5a97f; 1094 + } 1095 + /* LiteralNumberOct */ 1096 + .chroma .mo { 1097 + color: #f5a97f; 1098 + } 1099 + /* Operator */ 1100 + .chroma .o { 1101 + color: #91d7e3; 1102 + font-weight: bold; 1103 + } 1104 + /* OperatorWord */ 1105 + .chroma .ow { 1106 + color: #91d7e3; 1107 + font-weight: bold; 1108 + } 1109 + /* Comment */ 1110 + .chroma .c { 1111 + color: #6e738d; 1112 + font-style: italic; 1113 + } 1114 + /* CommentHashbang */ 1115 + .chroma .ch { 1116 + color: #6e738d; 1117 + font-style: italic; 1118 + } 1119 + /* CommentMultiline */ 1120 + .chroma .cm { 1121 + color: #6e738d; 1122 + font-style: italic; 1123 + } 1124 + /* CommentSingle */ 1125 + .chroma .c1 { 1126 + color: #6e738d; 1127 + font-style: italic; 1128 + } 1129 + /* CommentSpecial */ 1130 + .chroma .cs { 1131 + color: #6e738d; 1132 + font-style: italic; 1133 + } 1134 + /* CommentPreproc */ 1135 + .chroma .cp { 1136 + color: #6e738d; 1137 + font-style: italic; 1138 + } 1139 + /* CommentPreprocFile */ 1140 + .chroma .cpf { 1141 + color: #6e738d; 1142 + font-weight: bold; 1143 + font-style: italic; 1144 + } 1145 + /* GenericDeleted */ 1146 + .chroma .gd { 1147 + color: #ed8796; 1148 + background-color: oklch(44.4% 0.177 26.899 / 0.5); 1149 + } 1150 + /* GenericEmph */ 1151 + .chroma .ge { 1152 + font-style: italic; 1153 + } 1154 + /* GenericError */ 1155 + .chroma .gr { 1156 + color: #ed8796; 1157 + } 1158 + /* GenericHeading */ 1159 + .chroma .gh { 1160 + color: #f5a97f; 1161 + font-weight: bold; 1162 + } 1163 + /* GenericInserted */ 1164 + .chroma .gi { 1165 + color: #a6da95; 1166 + background-color: oklch(44.8% 0.119 151.328 / 0.5); 1167 + } 1168 + /* GenericStrong */ 1169 + .chroma .gs { 1170 + font-weight: bold; 1171 + } 1172 + /* GenericSubheading */ 1173 + .chroma .gu { 1174 + color: #f5a97f; 1175 + font-weight: bold; 1176 + } 1177 + /* GenericTraceback */ 1178 + .chroma .gt { 1179 + color: #ed8796; 1180 + } 1181 + /* GenericUnderline */ 1182 + .chroma .gl { 1183 + text-decoration: underline; 1184 + } 1184 1185 } 1185 1186 1186 1187 actor-typeahead { 1187 - --color-background: #ffffff; 1188 - --color-border: #d1d5db; 1189 - --color-shadow: #000000; 1190 - --color-hover: #f9fafb; 1191 - --color-avatar-fallback: #e5e7eb; 1192 - --radius: 0; 1193 - --padding-menu: 0rem; 1194 - z-index: 1000; 1188 + --color-background: #ffffff; 1189 + --color-border: #d1d5db; 1190 + --color-shadow: #000000; 1191 + --color-hover: #f9fafb; 1192 + --color-avatar-fallback: #e5e7eb; 1193 + --radius: 0; 1194 + --padding-menu: 0rem; 1195 + z-index: 1000; 1195 1196 } 1196 1197 1197 1198 actor-typeahead::part(handle) { 1198 - color: #111827; 1199 + color: #111827; 1199 1200 } 1200 1201 1201 1202 actor-typeahead::part(menu) { 1202 - box-shadow: 1203 - 0 4px 6px -1px rgb(0 0 0 / 0.1), 1204 - 0 2px 4px -2px rgb(0 0 0 / 0.1); 1203 + box-shadow: 1204 + 0 4px 6px -1px rgb(0 0 0 / 0.1), 1205 + 0 2px 4px -2px rgb(0 0 0 / 0.1); 1205 1206 } 1206 1207 1207 1208 @media (prefers-color-scheme: dark) { 1208 - actor-typeahead { 1209 - --color-background: #1f2937; 1210 - --color-border: #4b5563; 1211 - --color-shadow: #000000; 1212 - --color-hover: #374151; 1213 - --color-avatar-fallback: #4b5563; 1214 - } 1209 + actor-typeahead { 1210 + --color-background: #1f2937; 1211 + --color-border: #4b5563; 1212 + --color-shadow: #000000; 1213 + --color-hover: #374151; 1214 + --color-avatar-fallback: #4b5563; 1215 + } 1215 1216 1216 - actor-typeahead::part(handle) { 1217 - color: #f9fafb; 1218 - } 1217 + actor-typeahead::part(handle) { 1218 + color: #f9fafb; 1219 + } 1219 1220 } 1220 1221 1221 1222 @layer utilities { 1222 - .hit-area { 1223 - position: relative; 1224 - } 1223 + .hit-area { 1224 + position: relative; 1225 + } 1225 1226 1226 - .hit-area::before { 1227 - content: ""; 1228 - position: absolute; 1229 - top: var(--hit-area-t, 0px); 1230 - right: var(--hit-area-r, 0px); 1231 - bottom: var(--hit-area-b, 0px); 1232 - left: var(--hit-area-l, 0px); 1233 - pointer-events: inherit; 1234 - } 1227 + .hit-area::before { 1228 + content: ""; 1229 + position: absolute; 1230 + top: var(--hit-area-t, 0px); 1231 + right: var(--hit-area-r, 0px); 1232 + bottom: var(--hit-area-b, 0px); 1233 + left: var(--hit-area-l, 0px); 1234 + pointer-events: inherit; 1235 + } 1235 1236 1236 - .hit-area-debug { 1237 - position: relative; 1238 - } 1237 + .hit-area-debug { 1238 + position: relative; 1239 + } 1239 1240 1240 - .hit-area-debug::before { 1241 - content: ""; 1242 - position: absolute; 1243 - top: var(--hit-area-t, 0px); 1244 - right: var(--hit-area-r, 0px); 1245 - bottom: var(--hit-area-b, 0px); 1246 - left: var(--hit-area-l, 0px); 1247 - pointer-events: inherit; 1248 - border: 1px dashed #3b82f6; 1249 - background-color: rgba(59, 130, 246, 0.1); 1250 - } 1241 + .hit-area-debug::before { 1242 + content: ""; 1243 + position: absolute; 1244 + top: var(--hit-area-t, 0px); 1245 + right: var(--hit-area-r, 0px); 1246 + bottom: var(--hit-area-b, 0px); 1247 + left: var(--hit-area-l, 0px); 1248 + pointer-events: inherit; 1249 + border: 1px dashed #3b82f6; 1250 + background-color: rgba(59, 130, 246, 0.1); 1251 + } 1251 1252 1252 - .hit-area-debug:hover::before { 1253 - border-color: #22c55e; 1254 - background-color: rgba(34, 197, 94, 0.1); 1255 - } 1253 + .hit-area-debug:hover::before { 1254 + border-color: #22c55e; 1255 + background-color: rgba(34, 197, 94, 0.1); 1256 + } 1256 1257 1257 - .hit-area-1 { 1258 - --hit-area-t: -0.25rem; 1259 - --hit-area-r: -0.25rem; 1260 - --hit-area-b: -0.25rem; 1261 - --hit-area-l: -0.25rem; 1262 - } 1263 - .hit-area-2 { 1264 - --hit-area-t: -0.5rem; 1265 - --hit-area-r: -0.5rem; 1266 - --hit-area-b: -0.5rem; 1267 - --hit-area-l: -0.5rem; 1268 - } 1269 - .hit-area-4 { 1270 - --hit-area-t: -1rem; 1271 - --hit-area-r: -1rem; 1272 - --hit-area-b: -1rem; 1273 - --hit-area-l: -1rem; 1274 - } 1275 - .hit-area-6 { 1276 - --hit-area-t: -1.5rem; 1277 - --hit-area-r: -1.5rem; 1278 - --hit-area-b: -1.5rem; 1279 - --hit-area-l: -1.5rem; 1280 - } 1281 - .hit-area-8 { 1282 - --hit-area-t: -2rem; 1283 - --hit-area-r: -2rem; 1284 - --hit-area-b: -2rem; 1285 - --hit-area-l: -2rem; 1286 - } 1287 - .hit-area-10 { 1288 - --hit-area-t: -2.5rem; 1289 - --hit-area-r: -2.5rem; 1290 - --hit-area-b: -2.5rem; 1291 - --hit-area-l: -2.5rem; 1292 - } 1293 - .hit-area-12 { 1294 - --hit-area-t: -3rem; 1295 - --hit-area-r: -3rem; 1296 - --hit-area-b: -3rem; 1297 - --hit-area-l: -3rem; 1298 - } 1258 + .hit-area-1 { 1259 + --hit-area-t: -0.25rem; 1260 + --hit-area-r: -0.25rem; 1261 + --hit-area-b: -0.25rem; 1262 + --hit-area-l: -0.25rem; 1263 + } 1264 + .hit-area-2 { 1265 + --hit-area-t: -0.5rem; 1266 + --hit-area-r: -0.5rem; 1267 + --hit-area-b: -0.5rem; 1268 + --hit-area-l: -0.5rem; 1269 + } 1270 + .hit-area-4 { 1271 + --hit-area-t: -1rem; 1272 + --hit-area-r: -1rem; 1273 + --hit-area-b: -1rem; 1274 + --hit-area-l: -1rem; 1275 + } 1276 + .hit-area-6 { 1277 + --hit-area-t: -1.5rem; 1278 + --hit-area-r: -1.5rem; 1279 + --hit-area-b: -1.5rem; 1280 + --hit-area-l: -1.5rem; 1281 + } 1282 + .hit-area-8 { 1283 + --hit-area-t: -2rem; 1284 + --hit-area-r: -2rem; 1285 + --hit-area-b: -2rem; 1286 + --hit-area-l: -2rem; 1287 + } 1288 + .hit-area-10 { 1289 + --hit-area-t: -2.5rem; 1290 + --hit-area-r: -2.5rem; 1291 + --hit-area-b: -2.5rem; 1292 + --hit-area-l: -2.5rem; 1293 + } 1294 + .hit-area-12 { 1295 + --hit-area-t: -3rem; 1296 + --hit-area-r: -3rem; 1297 + --hit-area-b: -3rem; 1298 + --hit-area-l: -3rem; 1299 + } 1299 1300 1300 - .hit-area-l-1 { 1301 - --hit-area-l: -0.25rem; 1302 - } 1303 - .hit-area-l-2 { 1304 - --hit-area-l: -0.5rem; 1305 - } 1306 - .hit-area-l-4 { 1307 - --hit-area-l: -1rem; 1308 - } 1309 - .hit-area-l-6 { 1310 - --hit-area-l: -1.5rem; 1311 - } 1312 - .hit-area-l-8 { 1313 - --hit-area-l: -2rem; 1314 - } 1315 - .hit-area-l-10 { 1316 - --hit-area-l: -2.5rem; 1317 - } 1318 - .hit-area-l-12 { 1319 - --hit-area-l: -3rem; 1320 - } 1301 + .hit-area-l-1 { 1302 + --hit-area-l: -0.25rem; 1303 + } 1304 + .hit-area-l-2 { 1305 + --hit-area-l: -0.5rem; 1306 + } 1307 + .hit-area-l-4 { 1308 + --hit-area-l: -1rem; 1309 + } 1310 + .hit-area-l-6 { 1311 + --hit-area-l: -1.5rem; 1312 + } 1313 + .hit-area-l-8 { 1314 + --hit-area-l: -2rem; 1315 + } 1316 + .hit-area-l-10 { 1317 + --hit-area-l: -2.5rem; 1318 + } 1319 + .hit-area-l-12 { 1320 + --hit-area-l: -3rem; 1321 + } 1321 1322 1322 - .hit-area-r-1 { 1323 - --hit-area-r: -0.25rem; 1324 - } 1325 - .hit-area-r-2 { 1326 - --hit-area-r: -0.5rem; 1327 - } 1328 - .hit-area-r-4 { 1329 - --hit-area-r: -1rem; 1330 - } 1331 - .hit-area-r-6 { 1332 - --hit-area-r: -1.5rem; 1333 - } 1334 - .hit-area-r-8 { 1335 - --hit-area-r: -2rem; 1336 - } 1337 - .hit-area-r-10 { 1338 - --hit-area-r: -2.5rem; 1339 - } 1340 - .hit-area-r-12 { 1341 - --hit-area-r: -3rem; 1342 - } 1323 + .hit-area-r-1 { 1324 + --hit-area-r: -0.25rem; 1325 + } 1326 + .hit-area-r-2 { 1327 + --hit-area-r: -0.5rem; 1328 + } 1329 + .hit-area-r-4 { 1330 + --hit-area-r: -1rem; 1331 + } 1332 + .hit-area-r-6 { 1333 + --hit-area-r: -1.5rem; 1334 + } 1335 + .hit-area-r-8 { 1336 + --hit-area-r: -2rem; 1337 + } 1338 + .hit-area-r-10 { 1339 + --hit-area-r: -2.5rem; 1340 + } 1341 + .hit-area-r-12 { 1342 + --hit-area-r: -3rem; 1343 + } 1343 1344 1344 - .hit-area-t-1 { 1345 - --hit-area-t: -0.25rem; 1346 - } 1347 - .hit-area-t-2 { 1348 - --hit-area-t: -0.5rem; 1349 - } 1350 - .hit-area-t-4 { 1351 - --hit-area-t: -1rem; 1352 - } 1353 - .hit-area-t-6 { 1354 - --hit-area-t: -1.5rem; 1355 - } 1356 - .hit-area-t-8 { 1357 - --hit-area-t: -2rem; 1358 - } 1359 - .hit-area-t-10 { 1360 - --hit-area-t: -2.5rem; 1361 - } 1362 - .hit-area-t-12 { 1363 - --hit-area-t: -3rem; 1364 - } 1345 + .hit-area-t-1 { 1346 + --hit-area-t: -0.25rem; 1347 + } 1348 + .hit-area-t-2 { 1349 + --hit-area-t: -0.5rem; 1350 + } 1351 + .hit-area-t-4 { 1352 + --hit-area-t: -1rem; 1353 + } 1354 + .hit-area-t-6 { 1355 + --hit-area-t: -1.5rem; 1356 + } 1357 + .hit-area-t-8 { 1358 + --hit-area-t: -2rem; 1359 + } 1360 + .hit-area-t-10 { 1361 + --hit-area-t: -2.5rem; 1362 + } 1363 + .hit-area-t-12 { 1364 + --hit-area-t: -3rem; 1365 + } 1365 1366 1366 - .hit-area-b-1 { 1367 - --hit-area-b: -0.25rem; 1368 - } 1369 - .hit-area-b-2 { 1370 - --hit-area-b: -0.5rem; 1371 - } 1372 - .hit-area-b-4 { 1373 - --hit-area-b: -1rem; 1374 - } 1375 - .hit-area-b-6 { 1376 - --hit-area-b: -1.5rem; 1377 - } 1378 - .hit-area-b-8 { 1379 - --hit-area-b: -2rem; 1380 - } 1381 - .hit-area-b-10 { 1382 - --hit-area-b: -2.5rem; 1383 - } 1384 - .hit-area-b-12 { 1385 - --hit-area-b: -3rem; 1386 - } 1367 + .hit-area-b-1 { 1368 + --hit-area-b: -0.25rem; 1369 + } 1370 + .hit-area-b-2 { 1371 + --hit-area-b: -0.5rem; 1372 + } 1373 + .hit-area-b-4 { 1374 + --hit-area-b: -1rem; 1375 + } 1376 + .hit-area-b-6 { 1377 + --hit-area-b: -1.5rem; 1378 + } 1379 + .hit-area-b-8 { 1380 + --hit-area-b: -2rem; 1381 + } 1382 + .hit-area-b-10 { 1383 + --hit-area-b: -2.5rem; 1384 + } 1385 + .hit-area-b-12 { 1386 + --hit-area-b: -3rem; 1387 + } 1387 1388 1388 - .hit-area-x-1 { 1389 - --hit-area-l: -0.25rem; 1390 - --hit-area-r: -0.25rem; 1391 - } 1392 - .hit-area-x-2 { 1393 - --hit-area-l: -0.5rem; 1394 - --hit-area-r: -0.5rem; 1395 - } 1396 - .hit-area-x-4 { 1397 - --hit-area-l: -1rem; 1398 - --hit-area-r: -1rem; 1399 - } 1400 - .hit-area-x-6 { 1401 - --hit-area-l: -1.5rem; 1402 - --hit-area-r: -1.5rem; 1403 - } 1404 - .hit-area-x-8 { 1405 - --hit-area-l: -2rem; 1406 - --hit-area-r: -2rem; 1407 - } 1408 - .hit-area-x-10 { 1409 - --hit-area-l: -2.5rem; 1410 - --hit-area-r: -2.5rem; 1411 - } 1412 - .hit-area-x-12 { 1413 - --hit-area-l: -3rem; 1414 - --hit-area-r: -3rem; 1415 - } 1389 + .hit-area-x-1 { 1390 + --hit-area-l: -0.25rem; 1391 + --hit-area-r: -0.25rem; 1392 + } 1393 + .hit-area-x-2 { 1394 + --hit-area-l: -0.5rem; 1395 + --hit-area-r: -0.5rem; 1396 + } 1397 + .hit-area-x-4 { 1398 + --hit-area-l: -1rem; 1399 + --hit-area-r: -1rem; 1400 + } 1401 + .hit-area-x-6 { 1402 + --hit-area-l: -1.5rem; 1403 + --hit-area-r: -1.5rem; 1404 + } 1405 + .hit-area-x-8 { 1406 + --hit-area-l: -2rem; 1407 + --hit-area-r: -2rem; 1408 + } 1409 + .hit-area-x-10 { 1410 + --hit-area-l: -2.5rem; 1411 + --hit-area-r: -2.5rem; 1412 + } 1413 + .hit-area-x-12 { 1414 + --hit-area-l: -3rem; 1415 + --hit-area-r: -3rem; 1416 + } 1416 1417 1417 - .hit-area-y-1 { 1418 - --hit-area-t: -0.25rem; 1419 - --hit-area-b: -0.25rem; 1420 - } 1421 - .hit-area-y-2 { 1422 - --hit-area-t: -0.5rem; 1423 - --hit-area-b: -0.5rem; 1424 - } 1425 - .hit-area-y-4 { 1426 - --hit-area-t: -1rem; 1427 - --hit-area-b: -1rem; 1428 - } 1429 - .hit-area-y-6 { 1430 - --hit-area-t: -1.5rem; 1431 - --hit-area-b: -1.5rem; 1432 - } 1433 - .hit-area-y-8 { 1434 - --hit-area-t: -2rem; 1435 - --hit-area-b: -2rem; 1436 - } 1437 - .hit-area-y-10 { 1438 - --hit-area-t: -2.5rem; 1439 - --hit-area-b: -2.5rem; 1440 - } 1441 - .hit-area-y-12 { 1442 - --hit-area-t: -3rem; 1443 - --hit-area-b: -3rem; 1444 - } 1418 + .hit-area-y-1 { 1419 + --hit-area-t: -0.25rem; 1420 + --hit-area-b: -0.25rem; 1421 + } 1422 + .hit-area-y-2 { 1423 + --hit-area-t: -0.5rem; 1424 + --hit-area-b: -0.5rem; 1425 + } 1426 + .hit-area-y-4 { 1427 + --hit-area-t: -1rem; 1428 + --hit-area-b: -1rem; 1429 + } 1430 + .hit-area-y-6 { 1431 + --hit-area-t: -1.5rem; 1432 + --hit-area-b: -1.5rem; 1433 + } 1434 + .hit-area-y-8 { 1435 + --hit-area-t: -2rem; 1436 + --hit-area-b: -2rem; 1437 + } 1438 + .hit-area-y-10 { 1439 + --hit-area-t: -2.5rem; 1440 + --hit-area-b: -2.5rem; 1441 + } 1442 + .hit-area-y-12 { 1443 + --hit-area-t: -3rem; 1444 + --hit-area-b: -3rem; 1445 + } 1445 1446 1446 - /* terminal-to-html: catpuccin colors */ 1447 - .term-fg30 { color: #6c6f85; } /* black */ 1448 - .term-fg31 { color: #d20f39; } /* red */ 1449 - .term-fg32 { color: #40a02b; } /* green */ 1450 - .term-fg33 { color: #df8e1d; } /* yellow */ 1451 - .term-fg34 { color: #1e66f5; } /* blue */ 1452 - .term-fg35 { color: #8839ef; } /* magenta */ 1453 - .term-fg36 { color: #179299; } /* cyan */ 1454 - .term-fg37 { color: #4c4f69; } /* white */ 1455 - .term-fgi90 { color: #8c8fa1; } /* bright-black */ 1456 - .term-fgi91 { color: #e64553; } /* bright-red */ 1457 - .term-fgi92 { color: #40a02b; } /* bright-green */ 1458 - .term-fgi93 { color: #e5c890; } /* bright-yellow */ 1459 - .term-fgi94 { color: #209fb5; } /* bright-blue */ 1460 - .term-fgi95 { color: #ea76cb; } /* bright-magenta */ 1461 - .term-fgi96 { color: #04a5e5; } /* bright-cyan */ 1462 - .term-fgi97 { color: #bcc0cc; } /* bright-white */ 1463 - .term-bg40 { background-color: #6c6f85; } /* black */ 1464 - .term-bg41 { background-color: #d20f39; } /* red */ 1465 - .term-bg42 { background-color: #40a02b; } /* green */ 1466 - .term-bg43 { background-color: #df8e1d; } /* yellow */ 1467 - .term-bg44 { background-color: #1e66f5; } /* blue */ 1468 - .term-bg45 { background-color: #8839ef; } /* magenta */ 1469 - .term-bg46 { background-color: #179299; } /* cyan */ 1470 - .term-bg47 { background-color: #dce0e8; } /* white */ 1471 - .term-fg1 { @apply font-bold; } 1472 - .term-fg2 { @apply opacity-60; } 1473 - .term-fg3 { @apply italic; } 1474 - .term-fg4 { @apply underline; } 1475 - .term-fg9 { @apply line-through; } 1447 + /* terminal-to-html: catpuccin colors */ 1448 + .term-fg30 { 1449 + color: #6c6f85; 1450 + } /* black */ 1451 + .term-fg31 { 1452 + color: #d20f39; 1453 + } /* red */ 1454 + .term-fg32 { 1455 + color: #40a02b; 1456 + } /* green */ 1457 + .term-fg33 { 1458 + color: #df8e1d; 1459 + } /* yellow */ 1460 + .term-fg34 { 1461 + color: #1e66f5; 1462 + } /* blue */ 1463 + .term-fg35 { 1464 + color: #8839ef; 1465 + } /* magenta */ 1466 + .term-fg36 { 1467 + color: #179299; 1468 + } /* cyan */ 1469 + .term-fg37 { 1470 + color: #4c4f69; 1471 + } /* white */ 1472 + .term-fgi90 { 1473 + color: #8c8fa1; 1474 + } /* bright-black */ 1475 + .term-fgi91 { 1476 + color: #e64553; 1477 + } /* bright-red */ 1478 + .term-fgi92 { 1479 + color: #40a02b; 1480 + } /* bright-green */ 1481 + .term-fgi93 { 1482 + color: #e5c890; 1483 + } /* bright-yellow */ 1484 + .term-fgi94 { 1485 + color: #209fb5; 1486 + } /* bright-blue */ 1487 + .term-fgi95 { 1488 + color: #ea76cb; 1489 + } /* bright-magenta */ 1490 + .term-fgi96 { 1491 + color: #04a5e5; 1492 + } /* bright-cyan */ 1493 + .term-fgi97 { 1494 + color: #bcc0cc; 1495 + } /* bright-white */ 1496 + .term-bg40 { 1497 + background-color: #6c6f85; 1498 + } /* black */ 1499 + .term-bg41 { 1500 + background-color: #d20f39; 1501 + } /* red */ 1502 + .term-bg42 { 1503 + background-color: #40a02b; 1504 + } /* green */ 1505 + .term-bg43 { 1506 + background-color: #df8e1d; 1507 + } /* yellow */ 1508 + .term-bg44 { 1509 + background-color: #1e66f5; 1510 + } /* blue */ 1511 + .term-bg45 { 1512 + background-color: #8839ef; 1513 + } /* magenta */ 1514 + .term-bg46 { 1515 + background-color: #179299; 1516 + } /* cyan */ 1517 + .term-bg47 { 1518 + background-color: #dce0e8; 1519 + } /* white */ 1520 + .term-fg1 { 1521 + @apply font-bold; 1522 + } 1523 + .term-fg2 { 1524 + @apply opacity-60; 1525 + } 1526 + .term-fg3 { 1527 + @apply italic; 1528 + } 1529 + .term-fg4 { 1530 + @apply underline; 1531 + } 1532 + .term-fg9 { 1533 + @apply line-through; 1534 + } 1476 1535 1477 - @media (prefers-color-scheme: dark) { 1478 - .term-fg30 { color: #a5adcb; } /* black */ 1479 - .term-fg31 { color: #ed8796; } /* red */ 1480 - .term-fg32 { color: #a6da95; } /* green */ 1481 - .term-fg33 { color: #eed49f; } /* yellow */ 1482 - .term-fg34 { color: #8aadf4; } /* blue */ 1483 - .term-fg35 { color: #c6a0f6; } /* magenta */ 1484 - .term-fg36 { color: #8bd5ca; } /* cyan */ 1485 - .term-fg37 { color: #cad3f5; } /* white */ 1486 - .term-fgi90 { color: #8087a2; } /* bright-black */ 1487 - .term-fgi91 { color: #f5bde6; } /* bright-red */ 1488 - .term-fgi92 { color: #a6da95; } /* bright-green */ 1489 - .term-fgi93 { color: #f5a97f; } /* bright-yellow */ 1490 - .term-fgi94 { color: #7dc4e4; } /* bright-blue */ 1491 - .term-fgi95 { color: #f4dbd6; } /* bright-magenta */ 1492 - .term-fgi96 { color: #91d7e3; } /* bright-cyan */ 1493 - .term-fgi97 { color: #f0c6c6; } /* bright-white */ 1494 - .term-bg40 { background-color: #a5adcb; } /* black */ 1495 - .term-bg41 { background-color: #ed8796; } /* red */ 1496 - .term-bg42 { background-color: #a6da95; } /* green */ 1497 - .term-bg43 { background-color: #eed49f; } /* yellow */ 1498 - .term-bg44 { background-color: #8aadf4; } /* blue */ 1499 - .term-bg45 { background-color: #c6a0f6; } /* magenta */ 1500 - .term-bg46 { background-color: #8bd5ca; } /* cyan */ 1501 - .term-bg47 { background-color: #494d64; } /* white */ 1502 - } 1536 + @media (prefers-color-scheme: dark) { 1537 + .term-fg30 { 1538 + color: #a5adcb; 1539 + } /* black */ 1540 + .term-fg31 { 1541 + color: #ed8796; 1542 + } /* red */ 1543 + .term-fg32 { 1544 + color: #a6da95; 1545 + } /* green */ 1546 + .term-fg33 { 1547 + color: #eed49f; 1548 + } /* yellow */ 1549 + .term-fg34 { 1550 + color: #8aadf4; 1551 + } /* blue */ 1552 + .term-fg35 { 1553 + color: #c6a0f6; 1554 + } /* magenta */ 1555 + .term-fg36 { 1556 + color: #8bd5ca; 1557 + } /* cyan */ 1558 + .term-fg37 { 1559 + color: #cad3f5; 1560 + } /* white */ 1561 + .term-fgi90 { 1562 + color: #8087a2; 1563 + } /* bright-black */ 1564 + .term-fgi91 { 1565 + color: #f5bde6; 1566 + } /* bright-red */ 1567 + .term-fgi92 { 1568 + color: #a6da95; 1569 + } /* bright-green */ 1570 + .term-fgi93 { 1571 + color: #f5a97f; 1572 + } /* bright-yellow */ 1573 + .term-fgi94 { 1574 + color: #7dc4e4; 1575 + } /* bright-blue */ 1576 + .term-fgi95 { 1577 + color: #f4dbd6; 1578 + } /* bright-magenta */ 1579 + .term-fgi96 { 1580 + color: #91d7e3; 1581 + } /* bright-cyan */ 1582 + .term-fgi97 { 1583 + color: #f0c6c6; 1584 + } /* bright-white */ 1585 + .term-bg40 { 1586 + background-color: #a5adcb; 1587 + } /* black */ 1588 + .term-bg41 { 1589 + background-color: #ed8796; 1590 + } /* red */ 1591 + .term-bg42 { 1592 + background-color: #a6da95; 1593 + } /* green */ 1594 + .term-bg43 { 1595 + background-color: #eed49f; 1596 + } /* yellow */ 1597 + .term-bg44 { 1598 + background-color: #8aadf4; 1599 + } /* blue */ 1600 + .term-bg45 { 1601 + background-color: #c6a0f6; 1602 + } /* magenta */ 1603 + .term-bg46 { 1604 + background-color: #8bd5ca; 1605 + } /* cyan */ 1606 + .term-bg47 { 1607 + background-color: #494d64; 1608 + } /* white */ 1609 + } 1503 1610 }