Skip to content

Commit 6d94477

Browse files
committed
Merge PR_26175_ALFA_001-002 toolbox status bar
# Conflicts: # docs_build/dev/reports/codex_changed_files.txt # docs_build/dev/reports/codex_review.diff
2 parents aefb4eb + 3557b13 commit 6d94477

14 files changed

Lines changed: 1545 additions & 195 deletions

assets/theme-v2/css/status.css

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,119 @@
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: flex;
58+
align-items: center;
59+
flex-wrap: wrap;
60+
gap: var(--space-14);
61+
text-align: left
62+
}
63+
64+
.toolbox-status-bar__field {
65+
min-width: var(--space-0);
66+
display: grid;
67+
gap: var(--space-3)
68+
}
69+
70+
.toolbox-status-bar__label {
71+
color: var(--muted);
72+
font-size: var(--font-size-xs);
73+
font-weight: var(--font-weight-heavy);
74+
letter-spacing: var(--letter-spacing-kicker);
75+
text-transform: uppercase
76+
}
77+
78+
.toolbox-status-bar__game-name {
79+
color: var(--text);
80+
font-size: var(--font-size-base);
81+
overflow-wrap: anywhere
82+
}
83+
84+
.toolbox-status-bar__purpose {
85+
color: var(--muted);
86+
font-size: var(--font-size-sm);
87+
overflow-wrap: anywhere
88+
}
89+
90+
.toolbox-status-bar__center {
91+
min-width: var(--space-0);
92+
display: flex;
93+
align-items: center;
94+
justify-content: center;
95+
flex-wrap: wrap;
96+
gap: var(--space-10);
97+
text-align: center
98+
}
99+
100+
.toolbox-status-bar__context-type {
101+
flex: 0 0 auto
102+
}
103+
104+
.toolbox-status-bar__message {
105+
margin: var(--space-0);
106+
max-width: var(--measure-lg);
107+
overflow-wrap: anywhere
108+
}
109+
110+
.toolbox-status-bar__action {
111+
flex: 0 0 auto
112+
}
113+
114+
.toolbox-status-bar[data-selected-game-state="active"] {
115+
border-color: color-mix(in srgb, var(--green) 52%, var(--line))
116+
}
117+
118+
.toolbox-status-bar[data-selected-game-state="missing"] {
119+
border-color: var(--gold-border-muted)
120+
}
121+
122+
.toolbox-status-bar[data-selected-game-state="error"] {
123+
border-color: color-mix(in srgb, var(--red) 52%, var(--line))
124+
}
125+
126+
.toolbox-status-bar[data-toolbox-status-context-kind="error"] .toolbox-status-bar__context-type {
127+
border-color: color-mix(in srgb, var(--red) 62%, var(--line));
128+
color: var(--red)
129+
}
130+
131+
.toolbox-status-bar[data-toolbox-status-context-kind="warning"] .toolbox-status-bar__context-type,
132+
.toolbox-status-bar[data-toolbox-status-context-kind="validation"] .toolbox-status-bar__context-type {
133+
border-color: var(--gold-border-muted);
134+
color: var(--gold)
135+
}
136+
137+
.toolbox-status-bar[data-toolbox-status-context-kind="save"] .toolbox-status-bar__context-type {
138+
border-color: color-mix(in srgb, var(--green) 62%, var(--line));
139+
color: var(--green)
140+
}
141+
142+
body.tool-focus-mode .toolbox-status-bar {
143+
position: fixed;
144+
inset-block-end: var(--space-0);
145+
inset-inline: var(--space-0);
146+
z-index: var(--z-index-lg);
147+
border-block-end: var(--space-0);
148+
box-shadow: var(--shadow-md)
149+
}
150+
38151
.platform-banner {
39152
width: 100%;
40153
border-bottom: var(--border-standard);
@@ -144,3 +257,16 @@
144257
color: var(--bg);
145258
text-shadow: none
146259
}
260+
261+
@media (max-width: 720px) {
262+
.toolbox-status-bar__inner {
263+
width: var(--container-width);
264+
grid-template-columns: 1fr;
265+
text-align: center
266+
}
267+
268+
.toolbox-status-bar__game {
269+
justify-content: center;
270+
text-align: center
271+
}
272+
}

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)