Skip to content

Commit 359d48c

Browse files
committed
PR_26175_ALFA_001 toolbox selected game status bar
1 parent 982cc85 commit 359d48c

9 files changed

Lines changed: 759 additions & 21 deletions

assets/theme-v2/css/status.css

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,93 @@
3535
line-height: var(--line-height-copy)
3636
}
3737

38+
.toolbox-status-bar {
39+
width: 100%;
40+
border-block: var(--border-standard);
41+
background: var(--panel-overlay-strong);
42+
color: var(--text)
43+
}
44+
45+
.toolbox-status-bar__inner {
46+
width: var(--container-width);
47+
margin: var(--space-0) auto;
48+
padding: var(--space-10) var(--space-0);
49+
display: grid;
50+
grid-template-columns: minmax(var(--space-0), 1fr) minmax(var(--space-0), 2fr);
51+
gap: var(--space-16);
52+
align-items: center
53+
}
54+
55+
.toolbox-status-bar__game {
56+
min-width: var(--space-0);
57+
display: grid;
58+
gap: var(--space-3);
59+
text-align: left
60+
}
61+
62+
.toolbox-status-bar__label {
63+
color: var(--muted);
64+
font-size: var(--font-size-xs);
65+
font-weight: var(--font-weight-heavy);
66+
letter-spacing: var(--letter-spacing-kicker);
67+
text-transform: uppercase
68+
}
69+
70+
.toolbox-status-bar__game-name {
71+
color: var(--text);
72+
font-size: var(--font-size-base);
73+
overflow-wrap: anywhere
74+
}
75+
76+
.toolbox-status-bar__meta {
77+
color: var(--muted);
78+
font-size: var(--font-size-sm);
79+
overflow-wrap: anywhere
80+
}
81+
82+
.toolbox-status-bar__center {
83+
min-width: var(--space-0);
84+
display: flex;
85+
align-items: center;
86+
justify-content: center;
87+
flex-wrap: wrap;
88+
gap: var(--space-10);
89+
text-align: center
90+
}
91+
92+
.toolbox-status-bar__message {
93+
margin: var(--space-0);
94+
max-width: var(--measure-lg);
95+
overflow-wrap: anywhere
96+
}
97+
98+
.toolbox-status-bar__action {
99+
flex: 0 0 auto
100+
}
101+
102+
.toolbox-status-bar[data-selected-game-state="active"] {
103+
border-color: color-mix(in srgb, var(--green) 52%, var(--line))
104+
}
105+
106+
.toolbox-status-bar[data-selected-game-state="missing"] {
107+
border-color: var(--gold-border-muted);
108+
background: var(--gold-soft)
109+
}
110+
111+
.toolbox-status-bar[data-selected-game-state="error"] {
112+
border-color: color-mix(in srgb, var(--red) 52%, var(--line));
113+
background: color-mix(in srgb, var(--red) 14%, var(--panel))
114+
}
115+
116+
body.tool-focus-mode .toolbox-status-bar {
117+
position: fixed;
118+
inset-block-end: var(--space-0);
119+
inset-inline: var(--space-0);
120+
z-index: var(--z-index-lg);
121+
border-block-end: var(--space-0);
122+
box-shadow: var(--shadow-md)
123+
}
124+
38125
.platform-banner {
39126
width: 100%;
40127
border-bottom: var(--border-standard);
@@ -144,3 +231,15 @@
144231
color: var(--bg);
145232
text-shadow: none
146233
}
234+
235+
@media (max-width: 720px) {
236+
.toolbox-status-bar__inner {
237+
width: var(--container-width);
238+
grid-template-columns: 1fr;
239+
text-align: center
240+
}
241+
242+
.toolbox-status-bar__game {
243+
text-align: center
244+
}
245+
}

assets/theme-v2/js/gamefoundry-partials.js

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,6 +1048,32 @@
10481048
}
10491049
}
10501050

1051+
async function renderToolboxStatusBar() {
1052+
const pagePath = currentPagePath() || "";
1053+
if (pagePath.indexOf("toolbox/") !== 0) {
1054+
return;
1055+
}
1056+
try {
1057+
const module = await import(assetUrl("js/toolbox-status-bar.js"));
1058+
if (typeof module.mountToolboxStatusBar === "function") {
1059+
module.mountToolboxStatusBar({
1060+
gameHubHref: routeHref("game-hub"),
1061+
pagePath
1062+
});
1063+
}
1064+
} catch (error) {
1065+
console.warn("[toolbox/status] Shared status bar could not be loaded.", error);
1066+
}
1067+
}
1068+
1069+
function refreshSharedSurfaces() {
1070+
renderPlatformBanner()
1071+
.then(renderToolboxStatusBar)
1072+
.catch(function (error) {
1073+
console.error(error);
1074+
});
1075+
}
1076+
10511077
enforcePageProtection();
10521078
document.addEventListener("DOMContentLoaded", function () {
10531079
enforcePageProtection();
@@ -1056,11 +1082,11 @@
10561082
replaceExisting("header-nav", "header.site-header"),
10571083
replaceExisting("footer", "footer.footer")
10581084
];
1059-
Promise.all(tasks).then(renderPlatformBanner).catch(function (error) {
1085+
Promise.all(tasks).then(refreshSharedSurfaces).catch(function (error) {
10601086
console.error(error);
10611087
});
10621088
});
10631089
window.addEventListener("gamefoundry:session-user-changed", refreshHeaderLoginState);
10641090
window.addEventListener("gamefoundry:data-changed", refreshHeaderOnly);
1065-
window.addEventListener("gamefoundry:platform-settings-changed", renderPlatformBanner);
1091+
window.addEventListener("gamefoundry:platform-settings-changed", refreshSharedSurfaces);
10661092
}());

0 commit comments

Comments
 (0)