// Section components // ====== NAV ====== function Nav() { const { t } = useLang(); return ( Black Craft {t.nav.game} {t.nav.team} {t.nav.devlog} ); } // ====== HERO ====== function Hero() { const { t } = useLang(); return ( {/* Eyes scattered around the hero, each blinking on its own clock */} Dimension Disrupt {t.hero.subtitle} {t.hero.tags.map((tag, i) => {tag} )} {t.hero.ctaWishlist} {t.hero.ctaSee} ); } // ====== GAME ====== function GameSection() { const { t } = useLang(); const pillarMeta = [ { n: "I", color: "p-green", icon: }, { n: "II", color: "p-violet", icon: }, { n: "III", color: "p-magenta", icon: }]; const pillars = pillarMeta.map((m, i) => ({ ...m, ...t.game.pillars[i] })); const features = t.game.features; return ( {t.game.label} {t.game.title1} {t.game.title2} {t.game.lede} {pillars.map((p, i) => {t.game.pillarWord} {p.n} {p.icon} {p.title} {p.copy} )} {t.game.featuresLabel} {features.map((f, i) => 0{i + 1} {f.t} {f.c} )} KEY ART [ HERO + DUNGEON MAW ] 2400 × 3000 ); } // ====== STUDIO ====== function StudioSection() { const { t } = useLang(); const [m0, m1] = t.studio.members; return ( {t.studio.label} {t.studio.title1} {t.studio.title2} {t.studio.lede} PORTRAIT — CHARLIE 1200 × 1600 Charlie {m0.role} {m0.bio} {t.studio.mainsK} {m0.mains} {t.studio.fearsK} {m0.fears} PORTRAIT — MABU 1200 × 1600 Mabu {m1.role} {m1.bio} {t.studio.mainsK} {m1.mains} {t.studio.fearsK} {m1.fears} ); } // ====== DEVLOG ====== function DevlogSection() { const { t } = useLang(); const postMeta = [ { featured: true, date: "12 · 05 · 26", thumb: "DEVLOG IMG · DUNGEON TILES" }, { date: "03 · 05 · 26", thumb: "DEVLOG IMG · SLIME ANIM" }, { date: "21 · 04 · 26", thumb: "DEVLOG IMG · SANITY UI" }]; const posts = postMeta.map((m, i) => ({ ...m, ...t.devlog.posts[i] })); return ( {t.devlog.label} {t.devlog.title1}{t.devlog.title2} {t.devlog.all} {posts.map((p, i) => {p.thumb} {i === 0 && <> > } {i === 1 && } {p.date} {p.tag} {p.title} {p.excerpt} )} ); } // ====== FOOTER ====== function Footer() { const { t } = useLang(); return ( ); } Object.assign(window, { Nav, Hero, GameSection, StudioSection, DevlogSection, Footer });
{t.hero.subtitle}
{t.game.lede}
{p.copy}
{f.c}
{t.studio.lede}
{m0.bio}
{m1.bio}
{p.excerpt}