Unify NetX module pages on a classic slate chrome UI.

Align NE, UME, system, topology, and WebCRT with shared list styling, and set the browser tab title to NetX.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
oliver 2026-08-01 17:47:08 +08:00
parent a0bef49e1e
commit fce6e2cc9e
11 changed files with 1439 additions and 743 deletions

View file

@ -77,32 +77,42 @@ export function AppLayout({ connections, children }: Props) {
) : null}
</div>
<div className="app-brand__actions">
<span className={`conn-pill conn-pill--on-brand conn-pill--${connections.netxApi}`}>
{t("layout.netxApi")}: {connections.netxApi}
{netxSuffix}
</span>
<span
className={`conn-pill conn-pill--on-brand conn-pill--${connections.oclawBridge}`}
title={oclawTitle}
>
{t("layout.oclawBridge")}: {connections.oclawBridge}
{oclawSuffix}
</span>
{user ? (
<span className="conn-pill conn-pill--on-brand conn-pill--up" title={user.role}>
{user.username}
<div className="app-brand__actions-group">
<span className={`conn-pill conn-pill--on-brand conn-pill--${connections.netxApi}`}>
{t("layout.netxApi")}: {connections.netxApi}
{netxSuffix}
</span>
) : null}
{user ? (
<button
type="button"
className="header-menu__trigger header-menu__trigger--on-brand"
onClick={() => void logout()}
<span
className={`conn-pill conn-pill--on-brand conn-pill--${connections.oclawBridge}`}
title={oclawTitle}
>
{t("auth.logout")}
</button>
) : null}
<HeaderMenu />
{t("layout.oclawBridge")}: {connections.oclawBridge}
{oclawSuffix}
</span>
</div>
{user ? (
<>
<span className="app-brand__actions-sep" aria-hidden />
<div className="app-brand__actions-group">
<span
className="conn-pill conn-pill--on-brand conn-pill--user"
title={user.role}
>
{user.username}
</span>
<button
type="button"
className="header-menu__trigger header-menu__trigger--on-brand"
onClick={() => void logout()}
>
{t("auth.logout")}
</button>
<HeaderMenu />
</div>
</>
) : (
<HeaderMenu />
)}
</div>
</header>