feat(landing): link files. share from nav + hero
Read-only file browse was only reachable by typing the URL. Add
site.filesUrl (files.${BASE_DOMAIN}) plus nav/hero labels in en/es/eu,
and surface it as a nav link and a secondary hero CTA beside "Cómo entrar".
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
16523e4f62
commit
6b317d179a
3 files changed
+14
-4
No files matched your search
@@ -161,6 +161,10 @@ export const site = {
|
|||||||
// Uptime Kuma status page (external link in footer).
|
// Uptime Kuma status page (external link in footer).
|
||||||
statusUrl: `https://status.${BASE_DOMAIN}`,
|
statusUrl: `https://status.${BASE_DOMAIN}`,
|
||||||
|
|
||||||
|
// Public read-only file share (caddy file_server browse of FILES_DATA_DIR).
|
||||||
|
// Linked from the nav + hero. Uploads live at upload.${BASE_DOMAIN} (auth'd).
|
||||||
|
filesUrl: `https://files.${BASE_DOMAIN}`,
|
||||||
|
|
||||||
// Live server card (ServerCard.astro). `slots` is the SSG fallback cap shown
|
// Live server card (ServerCard.astro). `slots` is the SSG fallback cap shown
|
||||||
// before/without JS; live data comes from our SELF-HOSTED mc-status service
|
// before/without JS; live data comes from our SELF-HOSTED mc-status service
|
||||||
// (docker/mc-status, mcutil wrapper) reverse-proxied same-origin at the apex
|
// (docker/mc-status, mcutil wrapper) reverse-proxied same-origin at the apex
|
||||||
|
|||||||
@@ -35,13 +35,14 @@ export const LANG_ACCOUNT_PATH: Record<Lang, string> = {
|
|||||||
export interface UI {
|
export interface UI {
|
||||||
htmlLang: string;
|
htmlLang: string;
|
||||||
copied: string; // transient copy-button feedback
|
copied: string; // transient copy-button feedback
|
||||||
nav: { status: string; members: string; features: string; mods: string; join: string; play: string; register: string; login: string };
|
nav: { status: string; members: string; features: string; mods: string; join: string; files: string; play: string; register: string; login: string };
|
||||||
hero: {
|
hero: {
|
||||||
eyebrow: string; // "Modded LAN · NeoForge" — version appended at render
|
eyebrow: string; // "Modded LAN · NeoForge" — version appended at render
|
||||||
tagline: string;
|
tagline: string;
|
||||||
sub: string;
|
sub: string;
|
||||||
copyIp: string;
|
copyIp: string;
|
||||||
howToJoin: string;
|
howToJoin: string;
|
||||||
|
files: string;
|
||||||
metaModpack: string;
|
metaModpack: string;
|
||||||
};
|
};
|
||||||
status: {
|
status: {
|
||||||
@@ -182,7 +183,7 @@ export const ui: Record<Lang, UI> = {
|
|||||||
en: {
|
en: {
|
||||||
htmlLang: "en",
|
htmlLang: "en",
|
||||||
copied: "Copied!",
|
copied: "Copied!",
|
||||||
nav: { status: "Status", members: "Members", features: "Features", mods: "Mods", join: "How to Join", play: "Play", register: "Register", login: "Account" },
|
nav: { status: "Status", members: "Members", features: "Features", mods: "Mods", join: "How to Join", files: "Files", play: "Play", register: "Register", login: "Account" },
|
||||||
hero: {
|
hero: {
|
||||||
eyebrow: "Modded LAN · NeoForge",
|
eyebrow: "Modded LAN · NeoForge",
|
||||||
tagline: "Kitchen-sink survival, built to outlast the weekend.",
|
tagline: "Kitchen-sink survival, built to outlast the weekend.",
|
||||||
@@ -192,6 +193,7 @@ export const ui: Record<Lang, UI> = {
|
|||||||
"import the pack, dig in.",
|
"import the pack, dig in.",
|
||||||
copyIp: "Copy IP",
|
copyIp: "Copy IP",
|
||||||
howToJoin: "How to Join",
|
howToJoin: "How to Join",
|
||||||
|
files: "Files",
|
||||||
metaModpack: "NeoForge modpack",
|
metaModpack: "NeoForge modpack",
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
@@ -363,7 +365,7 @@ export const ui: Record<Lang, UI> = {
|
|||||||
es: {
|
es: {
|
||||||
htmlLang: "es",
|
htmlLang: "es",
|
||||||
copied: "¡Copiado!",
|
copied: "¡Copiado!",
|
||||||
nav: { status: "Estado", members: "Miembros", features: "Características", mods: "Mods", join: "Cómo entrar", play: "Jugar", register: "Registro", login: "Cuenta" },
|
nav: { status: "Estado", members: "Miembros", features: "Características", mods: "Mods", join: "Cómo entrar", files: "Archivos", play: "Jugar", register: "Registro", login: "Cuenta" },
|
||||||
hero: {
|
hero: {
|
||||||
eyebrow: "LAN con mods · NeoForge",
|
eyebrow: "LAN con mods · NeoForge",
|
||||||
tagline: "Supervivencia todo incluido, para durar más que el finde.",
|
tagline: "Supervivencia todo incluido, para durar más que el finde.",
|
||||||
@@ -373,6 +375,7 @@ export const ui: Record<Lang, UI> = {
|
|||||||
"clic. Copia la dirección, importa el pack y a cavar.",
|
"clic. Copia la dirección, importa el pack y a cavar.",
|
||||||
copyIp: "Copiar IP",
|
copyIp: "Copiar IP",
|
||||||
howToJoin: "Cómo entrar",
|
howToJoin: "Cómo entrar",
|
||||||
|
files: "Archivos",
|
||||||
metaModpack: "Pack NeoForge",
|
metaModpack: "Pack NeoForge",
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
@@ -544,7 +547,7 @@ export const ui: Record<Lang, UI> = {
|
|||||||
eu: {
|
eu: {
|
||||||
htmlLang: "eu",
|
htmlLang: "eu",
|
||||||
copied: "Kopiatuta!",
|
copied: "Kopiatuta!",
|
||||||
nav: { status: "Egoera", members: "Kideak", features: "Ezaugarriak", mods: "Mods", join: "Nola sartu", play: "Jolastu", register: "Erregistroa", login: "Kontua" },
|
nav: { status: "Egoera", members: "Kideak", features: "Ezaugarriak", mods: "Mods", join: "Nola sartu", files: "Fitxategiak", play: "Jolastu", register: "Erregistroa", login: "Kontua" },
|
||||||
hero: {
|
hero: {
|
||||||
eyebrow: "Mod-dun LANa · NeoForge",
|
eyebrow: "Mod-dun LANa · NeoForge",
|
||||||
tagline: "Mod ugariko biziraupena, irauteko egina.",
|
tagline: "Mod ugariko biziraupena, irauteko egina.",
|
||||||
@@ -554,6 +557,7 @@ export const ui: Record<Lang, UI> = {
|
|||||||
"Hartu helbidea, inportatu packa eta hasi zulatzen.",
|
"Hartu helbidea, inportatu packa eta hasi zulatzen.",
|
||||||
copyIp: "Kopiatu IPa",
|
copyIp: "Kopiatu IPa",
|
||||||
howToJoin: "Nola sartu",
|
howToJoin: "Nola sartu",
|
||||||
|
files: "Fitxategiak",
|
||||||
metaModpack: "NeoForge packa",
|
metaModpack: "NeoForge packa",
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ const dustBits = Array.from({ length: 16 }, (_, i) => {
|
|||||||
</a>
|
</a>
|
||||||
<nav class="nav-links">
|
<nav class="nav-links">
|
||||||
<a href="#join">{t.nav.join}</a>
|
<a href="#join">{t.nav.join}</a>
|
||||||
|
<a href={site.filesUrl} target="_blank" rel="noopener">{t.nav.files}</a>
|
||||||
<a href="#status">{t.nav.status}</a>
|
<a href="#status">{t.nav.status}</a>
|
||||||
</nav>
|
</nav>
|
||||||
<span class="nav-spacer"></span>
|
<span class="nav-spacer"></span>
|
||||||
@@ -106,6 +107,7 @@ const dustBits = Array.from({ length: 16 }, (_, i) => {
|
|||||||
<p class="hero-sub">{t.hero.sub}</p>
|
<p class="hero-sub">{t.hero.sub}</p>
|
||||||
<div class="hero-ip-row">
|
<div class="hero-ip-row">
|
||||||
<a class="mc-btn primary" href="#join">{t.hero.howToJoin}</a>
|
<a class="mc-btn primary" href="#join">{t.hero.howToJoin}</a>
|
||||||
|
<a class="mc-btn" href={site.filesUrl} target="_blank" rel="noopener">{t.hero.files}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="hero-meta">
|
<div class="hero-meta">
|
||||||
<span>Java {site.mcVersion}</span>
|
<span>Java {site.mcVersion}</span>
|
||||||
|
|||||||
Reference in new issue
Block a user