feat: refine branded operator experience

Add the MBN-branded startup intro, semantic sidebar icons, and refined card-based operator visuals. Strengthen packaged UI and input smoke coverage for the updated experience.
This commit is contained in:
2026-07-24 01:26:13 +09:00
parent f43483533a
commit b050f2f06c
25 changed files with 2316 additions and 164 deletions

View File

@@ -13,6 +13,7 @@
const settingsWorkspace = document.getElementById("settings-workspace");
const marketTabs = document.getElementById("market-tabs");
const title = document.getElementById("workspace-title");
const titleIcon = document.querySelector(".workspace-heading-icon");
const shell = document.querySelector(".operator-shell");
const splitter = document.getElementById("workspace-splitter");
const playlistPanel = document.querySelector(".playlist-panel");
@@ -102,6 +103,15 @@
return null;
}
function syncHeadingIcon(button) {
const source = button && button.querySelector("svg.workspace-nav-icon[data-icon]");
if (!titleIcon || !source) return;
const next = source.cloneNode(true);
next.removeAttribute("aria-hidden");
titleIcon.dataset.icon = source.dataset.icon || "";
titleIcon.replaceChildren(next);
}
function refreshCurrentMenu() {
const selected = selectedMenuButton(activeWorkspace);
Array.from(navigation.querySelectorAll(".workspace-nav-item")).forEach(function (button) {
@@ -143,6 +153,7 @@
activeWorkspace = name;
refreshCurrentMenu();
syncHeadingIcon(selectedButton);
title.textContent = name === "catalog"
? marketLabel(selectedMenuButton(name))
: selected.title;
@@ -306,6 +317,7 @@
region.dataset.activeMarketTab = tabId;
if (activeWorkspace === "catalog") {
refreshCurrentMenu();
syncHeadingIcon(button);
title.textContent = marketLabel(button);
}
const authoritativeNativeRender = options &&