Theme fixes: wiki index shift (#30), Inter/Poppins fonts (sow-nodebb#13), unread badge (#33) #32

Merged
archvillainette merged 2 commits from fix/wiki-index-shift-and-inter-font into main 2026-07-18 12:33:57 +00:00
4 changed files with 48 additions and 5 deletions
-2
View File
@@ -20,8 +20,6 @@
"../client/account/theme.js": "../nodebb-theme-harmony/public/settings.js"
},
"staticDirs": {
"inter": "node_modules/@fontsource/inter/files",
"poppins": "node_modules/@fontsource/poppins/files",
"fonts": "public/fonts",
"game-icons": "public/game-icons",
"images": "public/images"
+28
View File
@@ -125,3 +125,31 @@
background: rgba(194, 163, 90, 0.32);
color: #fff4dd;
}
/* Harmony base-theme font correction.
Harmony generates @font-face for Inter/Poppins at our asset path and points
$font-family-sans-serif -> "Inter" and $font-family-secondary -> "Poppins"
in its own overrides.scss. We ship Jost + Cinzel, not those families, and do
not declare @fontsource/inter|poppins as deps -- so any element that resolves
to Inter/Poppins 404s in production on /assets/plugins/nodebb-theme-westgate/
inter/... (it only happens to resolve in dev via npm hoisting). Our BS-variable
override already keeps the current cascade on Jost, but that hinges on subtle
import order; pin the handful of Harmony rules that read those SCSS variables
directly (.ff-sans, .ff-secondary, the breadcrumb divider) to our own fonts so
nothing can request Inter/Poppins even if a Harmony bump flips the order. The
now-pointless inter/poppins staticDirs are removed from plugin.json alongside. */
.ff-sans {
font-family: var(--wg-font-ui) !important;
}
.ff-secondary {
font-family: var(--wg-font-display);
}
.breadcrumb .breadcrumb-item {
font-family: var(--wg-font-display);
}
.breadcrumb .breadcrumb-item::before {
font-family: var(--wg-font-ui);
}
+15
View File
@@ -232,6 +232,21 @@
text-align: justify;
}
/* The namespace index / section listing card reuses .wiki-article-prose for
its card chrome, but its body is a directory listing, not reading prose.
Opt it out of the centered reading measure: the wiki plugin caps prose
children at --wiki-prose-measure and the rule above margin-inline:autos
them, which pins the heading, lead, and page list into a narrow centered
column with a big left gutter (#30). Let the listing run full-width, left. */
.westgate-wiki .wiki-namespace-index :where(p, ul, ol, h1, h2, h3, h4, h5, h6) {
margin-inline: 0;
max-width: none;
}
.westgate-wiki .wiki-namespace-index :where(p, li, blockquote) {
text-align: start;
}
.westgate-wiki .card.wiki-card:hover,
.westgate-wiki .card.wiki-topic-card:hover {
background: var(--wg-velvet-panel-hover) !important;
+4 -2
View File
@@ -1,6 +1,8 @@
<a class="nav-link dropdown-toggle d-flex gap-2 align-items-center" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="[[unread:title]]">
<a class="nav-link dropdown-toggle d-flex align-items-center justify-content-center" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="[[unread:title]]">
<span class="position-relative">
<i class="fa fa-fw fa-inbox" aria-hidden="true"></i>
<span component="unread/count" class="badge rounded-1 bg-primary {{{ if !unreadCount.topic }}}hidden{{{ end }}}">{unreadCount.topic}</span>
<span component="unread/count" class="position-absolute top-0 start-100 translate-middle badge rounded-1 bg-primary {{{ if !unreadCount.topic }}}hidden{{{ end }}}">{unreadCount.topic}</span>
</span>
</a>
<ul class="dropdown-menu wg-topbar__dropdown unread-dropdown p-1 shadow" role="menu" data-wg-unread-menu>
<li data-wg-unread-loading class="dropdown-item disabled"><i class="fa fa-fw fa-spinner fa-spin" aria-hidden="true"></i> [[unread:title]]</li>