...vibing UI and fixing doc links

This commit is contained in:
2026-06-17 22:11:06 -04:00
parent 1d05e18306
commit 512f739d4c
5 changed files with 39 additions and 27 deletions
+6 -7
View File
@@ -6,15 +6,18 @@
main { main {
flex: 1; flex: 1;
background: #0f0f0f;
min-height: 100vh;
} }
.sidebar { .sidebar {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%); background: #141414;
border-right: 1px solid #222;
} }
.top-row { .top-row {
background-color: #f7f7f7; background-color: #1a1a1a;
border-bottom: 1px solid #d6d5d5; border-bottom: 1px solid #2a2a2a;
justify-content: flex-end; justify-content: flex-end;
height: 3.5rem; height: 3.5rem;
display: flex; display: flex;
@@ -40,10 +43,6 @@ main {
.top-row { .top-row {
justify-content: space-between; justify-content: space-between;
} }
.top-row ::deep a, .top-row ::deep .btn-link {
margin-left: 0;
}
} }
@media (min-width: 641px) { @media (min-width: 641px) {
+9 -10
View File
@@ -1,14 +1,15 @@
.navbar-toggler { .navbar-toggler {
background-color: rgba(255, 255, 255, 0.1); background-color: rgba(255, 255, 255, 0.05);
} }
.top-row { .top-row {
min-height: 3.5rem; min-height: 3.5rem;
background-color: rgba(0, 0, 0, 0.4); background-color: rgba(0, 0, 0, 0.3);
} }
.navbar-brand { .navbar-brand {
font-size: 1.1rem; font-size: 1.1rem;
color: #e0e0e0 !important;
} }
.bi { .bi {
@@ -33,8 +34,8 @@
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-keyboard' viewBox='0 0 16 16'%3E%3Cpath d='M14 5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h12zM2 4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2z'/%3E%3Cpath d='M4 8a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm3 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm3 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm-6 2a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm3 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm3 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm-4.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z'/%3E%3C/svg%3E"); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-keyboard' viewBox='0 0 16 16'%3E%3Cpath d='M14 5a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h12zM2 4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2H2z'/%3E%3Cpath d='M4 8a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm3 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm3 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm-6 2a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm3 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm3 0a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1zm-4.5 1a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z'/%3E%3C/svg%3E");
} }
.bi-list-nested-nav-menu { .bi-book-nav-menu {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E"); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-book' viewBox='0 0 16 16'%3E%3Cpath d='M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811V2.828zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492V2.687zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z'/%3E%3C/svg%3E");
} }
.nav-item { .nav-item {
@@ -51,7 +52,7 @@
} }
.nav-item ::deep a { .nav-item ::deep a {
color: #d7d7d7; color: #b0b0b0;
border-radius: 4px; border-radius: 4px;
height: 3rem; height: 3rem;
display: flex; display: flex;
@@ -60,13 +61,13 @@
} }
.nav-item ::deep a.active { .nav-item ::deep a.active {
background-color: rgba(255, 255, 255, 0.37); background-color: rgba(255, 255, 255, 0.08);
color: white; color: white;
} }
.nav-item ::deep a:hover { .nav-item ::deep a:hover {
background-color: rgba(255, 255, 255, 0.1); background-color: rgba(255, 255, 255, 0.05);
color: white; color: #e0e0e0;
} }
@media (min-width: 641px) { @media (min-width: 641px) {
@@ -75,12 +76,10 @@
} }
.collapse { .collapse {
/* Never collapse the sidebar for wide screens */
display: block; display: block;
} }
.nav-scrollable { .nav-scrollable {
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem); height: calc(100vh - 3.5rem);
overflow-y: auto; overflow-y: auto;
} }
+8 -2
View File
@@ -1,5 +1,6 @@
@page "/docs" @page "/docs"
@using System.Text.RegularExpressions @using System.Text.RegularExpressions
@inject IJSRuntime JS
<PageTitle>Fellowship Docs</PageTitle> <PageTitle>Fellowship Docs</PageTitle>
@@ -31,12 +32,12 @@
{ {
var groupId = GetGroupId(group.Key); var groupId = GetGroupId(group.Key);
<div class="sidebar-group"> <div class="sidebar-group">
<a class="sidebar-group-title" href="@($"#{groupId}")">@group.Key</a> <a class="sidebar-group-title" href="@($"#{groupId}")" @onclick:preventDefault @onclick="() => ScrollTo(groupId)">@group.Key</a>
<div class="sidebar-items"> <div class="sidebar-items">
@foreach (var doc in group) @foreach (var doc in group)
{ {
var docId = GetDocId(doc); var docId = GetDocId(doc);
<a class="sidebar-item" href="@($"#{docId}")" title="@doc.FileName"> <a class="sidebar-item" href="@($"#{docId}")" @onclick:preventDefault @onclick="() => ScrollTo(docId)" title="@doc.FileName">
<span class="sidebar-item-badge @GetTypeClass(doc)"></span> <span class="sidebar-item-badge @GetTypeClass(doc)"></span>
@GetDisplayName(doc) @GetDisplayName(doc)
</a> </a>
@@ -184,6 +185,11 @@
activeFilter = null; activeFilter = null;
} }
private async Task ScrollTo(string id)
{
await JS.InvokeVoidAsync("scrollToFragment", id);
}
private void FilterAll() { activeFilter = null; } private void FilterAll() { activeFilter = null; }
private void FilterSkills() { activeFilter = activeFilter == "Skill" ? null : "Skill"; } private void FilterSkills() { activeFilter = activeFilter == "Skill" ? null : "Skill"; }
private void FilterDebuffs() { activeFilter = activeFilter == "Debuff" ? null : "Debuff"; } private void FilterDebuffs() { activeFilter = activeFilter == "Debuff" ? null : "Debuff"; }
+8 -6
View File
@@ -1,5 +1,7 @@
html, body { html, body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
background: #0f0f0f;
color: #e0e0e0;
} }
h1:focus { h1:focus {
@@ -7,7 +9,7 @@ h1:focus {
} }
a, .btn-link { a, .btn-link {
color: #0071c1; color: #7799ff;
} }
.btn-primary { .btn-primary {
@@ -38,9 +40,9 @@ a, .btn-link {
#blazor-error-ui { #blazor-error-ui {
color-scheme: light only; color-scheme: light only;
background: lightyellow; background: #1a1a1a;
bottom: 0; bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.4);
box-sizing: border-box; box-sizing: border-box;
display: none; display: none;
left: 0; left: 0;
@@ -78,14 +80,14 @@ a, .btn-link {
.loading-progress circle { .loading-progress circle {
fill: none; fill: none;
stroke: #e0e0e0; stroke: #2a2a2a;
stroke-width: 0.6rem; stroke-width: 0.6rem;
transform-origin: 50% 50%; transform-origin: 50% 50%;
transform: rotate(-90deg); transform: rotate(-90deg);
} }
.loading-progress circle:last-child { .loading-progress circle:last-child {
stroke: #1b6ec2; stroke: #5588ff;
stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%; stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%;
transition: stroke-dasharray 0.05s ease-in-out; transition: stroke-dasharray 0.05s ease-in-out;
} }
@@ -102,7 +104,7 @@ a, .btn-link {
} }
code { code {
color: #c02d76; color: #7799ff;
} }
.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder { .form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
+7 -1
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en" data-bs-theme="dark">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
@@ -29,6 +29,12 @@
<span class="dismiss">🗙</span> <span class="dismiss">🗙</span>
</div> </div>
<script src="_framework/blazor.webassembly#[.{fingerprint}].js"></script> <script src="_framework/blazor.webassembly#[.{fingerprint}].js"></script>
<script>
window.scrollToFragment = function (id) {
var el = document.getElementById(id);
if (el) el.scrollIntoView({ behavior: 'smooth', block: 'start' });
};
</script>
</body> </body>
</html> </html>