Add launcher editor backdrop

This commit is contained in:
Andraxion 2026-06-26 21:24:08 -04:00
parent 56b2331968
commit 58977f6025
2 changed files with 53 additions and 7 deletions

View file

@ -1,9 +1,11 @@
import type { CSSProperties } from "react";
import { useEffect, useState } from "react";
import {
buildWorldshaperStudioUrl,
openWorldshaperStudioWindow,
} from "./worldshaperStudio/windowing";
import { CHANGELOG_SECTIONS, CHANGELOG_SPLASH_VERSION } from "./worldshaperStudio/changelogData";
import launcherBackground from "../background.png";
type WorldDefaultPayload = {
worldId?: string;
@ -196,7 +198,10 @@ function WorldshaperLauncher() {
const showFallbackActions = launchState === "blocked" || launchState === "opened" || launchState === "error";
return (
<main className="launcher-shell">
<main
className="launcher-shell"
style={{ "--launcher-background-image": `url(${launcherBackground})` } as CSSProperties}
>
<section className="launcher-card">
<p className="launcher-eyebrow">New RPG</p>
<h1 className="launcher-title">Worldshaper Studio</h1>

View file

@ -8,6 +8,7 @@
--danger: #ff7b72;
--editor-bg: #0d121b;
--editor-ink: #dce6f4;
--launcher-background-image: none;
}
* {
@ -19,7 +20,7 @@ body {
color: var(--ink);
font-family: "Segoe UI", "Trebuchet MS", sans-serif;
background:
linear-gradient(160deg, #0f1115 0%, #141a24 100%);
linear-gradient(180deg, #080b11 0%, #101724 100%);
}
#root {
@ -27,22 +28,52 @@ body {
}
.launcher-shell {
position: relative;
isolation: isolate;
overflow: hidden;
min-height: 100dvh;
display: grid;
place-items: center;
padding: 24px;
padding: 48px 24px;
}
.launcher-shell::before,
.launcher-shell::after {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
}
.launcher-shell::before {
z-index: -2;
background-image: var(--launcher-background-image);
background-position: center top;
background-repeat: no-repeat;
background-size: cover;
opacity: 0.34;
filter: saturate(0.9) blur(2px);
transform: scale(1.02);
}
.launcher-shell::after {
z-index: -1;
background:
radial-gradient(circle at center, rgba(12, 18, 28, 0.16) 0%, rgba(7, 10, 16, 0.54) 56%, rgba(5, 7, 11, 0.78) 100%),
linear-gradient(180deg, rgba(8, 11, 17, 0.36) 0%, rgba(8, 11, 17, 0.52) 36%, rgba(7, 10, 15, 0.84) 72%, rgba(5, 7, 11, 0.96) 100%);
}
.launcher-card {
width: min(560px, 100%);
width: min(620px, 100%);
padding: 28px 30px;
border: 1px solid rgba(120, 170, 230, 0.2);
border-radius: 20px;
background:
radial-gradient(circle at top left, rgba(92, 200, 255, 0.12), transparent 38%),
linear-gradient(180deg, rgba(24, 31, 44, 0.96) 0%, rgba(18, 24, 35, 0.96) 100%);
radial-gradient(circle at top left, rgba(92, 200, 255, 0.13), transparent 38%),
linear-gradient(180deg, rgba(18, 24, 35, 0.86) 0%, rgba(12, 17, 26, 0.94) 100%);
backdrop-filter: blur(12px);
box-shadow:
0 24px 60px rgba(0, 0, 0, 0.34),
0 28px 80px rgba(0, 0, 0, 0.46),
inset 0 1px 0 rgba(255, 255, 255, 0.04);
}
@ -1265,6 +1296,16 @@ button.danger:not(:disabled):hover {
}
@media (max-width: 720px) {
.launcher-shell {
padding: 24px 16px;
}
.launcher-shell::before {
background-position: 62% top;
opacity: 0.26;
filter: saturate(0.82) blur(1.5px);
}
.launcher-card {
padding: 22px 20px;
border-radius: 16px;