feat(branding): use Ulicraft goat logo in header, ServerCard, and server icon
- landing header + footer brand: swap the Creeper pixel-art for the ulicraft-logo-mini.svg goat mark. - ServerCard fallback icon: same logo (real SLP favicon still overrides on a successful ping). - minecraft: set ICON=/extras/server-icon.png + OVERRIDE_ICON so the in-game server-list entry and the SLP favicon use the goat logo. PNG ships in ./runtime (mounted /extras). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,6 @@
|
||||
// Live labels are passed as data-* so copy stays translatable from the page
|
||||
// (defaults are English). Heads use /headiso. Promo/placeholder players with
|
||||
// the all-zero UUID are filtered out.
|
||||
import Creeper from "./Creeper.astro";
|
||||
import { site } from "../data/site";
|
||||
|
||||
interface Props {
|
||||
@@ -47,9 +46,9 @@ const { status, avatarUrl, avatarMode } = site;
|
||||
>
|
||||
<div class="sc-top">
|
||||
<div class="sc-icon">
|
||||
<!-- Replaced by the real server favicon on success; Creeper otherwise. -->
|
||||
<!-- Replaced by the real server favicon on success; Ulicraft logo otherwise. -->
|
||||
<img class="sc-favicon" alt="" hidden />
|
||||
<span class="sc-creeper"><Creeper /></span>
|
||||
<span class="sc-creeper"><img src="/ulicraft-logo-mini.svg" alt="" width="56" height="56" /></span>
|
||||
</div>
|
||||
|
||||
<div class="sc-meta">
|
||||
@@ -102,7 +101,7 @@ const { status, avatarUrl, avatarMode } = site;
|
||||
box-shadow: inset 2px 2px 0 var(--bevel-lo), inset -2px -2px 0 var(--bevel-hi);
|
||||
}
|
||||
.sc-favicon { width: 64px; height: 64px; image-rendering: pixelated; }
|
||||
.sc-creeper :global(.creeper) { width: 48px; height: 48px; }
|
||||
.sc-creeper img { width: 56px; height: 56px; }
|
||||
|
||||
.sc-meta { flex: 1; min-width: 0; }
|
||||
.sc-row1 { display: flex; align-items: baseline; gap: 12px; }
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
---
|
||||
import { site, HEAD_FONTS } from "../data/site";
|
||||
import { ui, LANGS, LANG_LABEL, LANG_PATH, LANG_REGISTER_PATH, LANG_ACCOUNT_PATH, type Lang } from "../i18n/ui";
|
||||
import Creeper from "../components/Creeper.astro";
|
||||
import PixelIcon from "../components/PixelIcon.astro";
|
||||
import ServerCard from "../components/ServerCard.astro";
|
||||
import PlayerRoster from "../components/PlayerRoster.astro";
|
||||
@@ -66,7 +65,7 @@ const dustBits = Array.from({ length: 16 }, (_, i) => {
|
||||
<header class="nav">
|
||||
<div class="wrap nav-in">
|
||||
<a class="brand" href="#top">
|
||||
<Creeper />
|
||||
<img class="brand-logo" src="/ulicraft-logo-mini.svg" alt="" width="34" height="34" />
|
||||
<span class="name">ULICRAFT</span>
|
||||
</a>
|
||||
<nav class="nav-links">
|
||||
@@ -252,7 +251,7 @@ const dustBits = Array.from({ length: 16 }, (_, i) => {
|
||||
<footer class="footer">
|
||||
<div class="wrap footer-in">
|
||||
<a class="brand" href="#top">
|
||||
<Creeper />
|
||||
<img class="brand-logo" src="/ulicraft-logo-mini.svg" alt="" width="34" height="34" />
|
||||
<span class="name">ULICRAFT</span>
|
||||
</a>
|
||||
<div class="footer-links">
|
||||
|
||||
@@ -295,6 +295,7 @@ section { position: relative; z-index: 1; }
|
||||
height: 68px;
|
||||
}
|
||||
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--text); }
|
||||
.brand-logo { width: 34px; height: 34px; flex-shrink: 0; }
|
||||
.brand .name {
|
||||
font-family: var(--font-head);
|
||||
font-weight: 600;
|
||||
|
||||
Reference in New Issue
Block a user