feat(landing): rework — es default, 2-step join, roster + account polish
- Default language Spanish at root /, English moves to /en/ (eu unchanged):
getStaticPaths {lang:undefined}->es + LANG_*_PATH maps swapped in ui.ts.
- Section order: hero -> join -> status -> members -> mods -> features.
- Join flow 3 -> 2 steps (drop the Connect/IP step; launcher handles the
address). Remove the hero IP CopyChip. Header CTA renamed Play/Jugar/Jolastu
and gains Register + Login links on all four pages.
- Account page: hide the whole login block once authenticated (not just the
form), add an avatar Refresh button (cache-busted NMSR re-fetch), flatten the
avatar (no bevel). New i18n key account.refresh.
- Register page: new REGISTRATION_SHOW_INVITE env (default false/hidden) toggles
the invite-code field independently of the REGISTRATION_MODE backend gate.
- Members roster: drop the `admin` account, render full-body via a new
ROSTER_AVATAR_MODE (default fullbodyiso); portrait tiles.
- Style: flatten emboss on feature icons (.picon) + player tiles (.roster-tile).
PixelIcon gains optional image support (/icons/<name>.png|svg).
- Favicon now /favicon.png (committed) on all pages.
- Docs: plan/09-landing.md Assets section (logo/favicon/features-icons drop
points) + default-language note; .env.example documents the two new vars.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
c233b1bfbc
commit
c8a6c77a8e
12 files changed
+267
-207
No files matched your search
@@ -1,10 +1,13 @@
|
||||
---
|
||||
// 7x7 feature glyphs — styled by .picon in main.css.
|
||||
// Feature icon. Default: a 7x7 procedural glyph (styled by .picon in main.css).
|
||||
// Optional: pass `img` (an absolute path like "/icons/foo.png|svg" under
|
||||
// landing/public/) to render a custom image instead of a glyph.
|
||||
interface Props {
|
||||
glyph: "shield" | "diamond" | "orb" | "heart";
|
||||
gold?: boolean;
|
||||
img?: string; // custom icon path in /public/icons/ — overrides the glyph
|
||||
}
|
||||
const { glyph, gold = false } = Astro.props;
|
||||
const { glyph, gold = false, img } = Astro.props;
|
||||
|
||||
const GLYPHS: Record<Props["glyph"], string[]> = {
|
||||
shield: ["0111110", "1111111", "1111111", "1111111", "0111110", "0011100", "0001000"],
|
||||
@@ -15,6 +18,10 @@ const GLYPHS: Record<Props["glyph"], string[]> = {
|
||||
const cells = GLYPHS[glyph].join("").split("");
|
||||
const onClass = gold ? "go" : "on";
|
||||
---
|
||||
<div class="picon" aria-hidden="true">
|
||||
{cells.map((c) => <i class={c === "1" ? onClass : undefined} />)}
|
||||
</div>
|
||||
{img ? (
|
||||
<img class="picon-img" src={img} alt="" aria-hidden="true" width="52" height="52" />
|
||||
) : (
|
||||
<div class="picon" aria-hidden="true">
|
||||
{cells.map((c) => <i class={c === "1" ? onClass : undefined} />)}
|
||||
</div>
|
||||
)}
|
||||
Reference in new issue
Block a user