feat(ui): the topbar avatar becomes the user menu — language, identity, session - #737
Merged
Conversation
Closes #725. A details disclosure like the tenant and version selectors, working without JavaScript: identity block (photo, then initials, then a generic user icon; /ui carries no principal yet, so the local-operator state renders), the language selector moved out of the topbar as real ?lang= links with aria-current, and a Sign out row gated on a session existing, which it cannot yet (#320). Status::user_* is the seam where the IdP profile claims (#724) surface. Decisions recorded: the theme toggle stays in the topbar (one-click, instant-feedback control - a click deeper would slow the most common adjustment), and the signed-out state shows a Local user row rather than a Sign in affordance that would dead-end without a browser login flow. The inline lang-switcher nav and its CSS are gone; the nojs spec drives the switch through the open menu.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Proposal B, as decided on #725: centered 56px avatar over the name and secondary line, the language selector as a segmented EN/ES/DE row (full names stay on aria-label), Sign out as a full-width row - still gated on a session existing.
angela-helios
marked this pull request as ready for review
August 27, 2026 19:49
smunini
approved these changes
Aug 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #725 — proposal B (account card), as decided on the issue.
The topbar avatar is a
<details class="menu">disclosure (tenant/version-selector idiom, works without JavaScript): a centered 56px avatar over the signed-in name and secondary line, the language selector as a segmented EN/ES/DE row of real?lang=links (full language names ride aria-label), and a full-width Sign out row gated on a session existing — which it cannot yet (#320), so today the local-operator state renders.The avatar fallback chain (IdP photo → initials → generic
user.svg) sits in the template behindStatus::user_*— the seam where the claim inventory (#724) plugs in; #738 tracks that wiring plus/ui/logout.Decisions recorded on the issue: theme toggle stays in the topbar; signed-out shows a Local user row rather than a dead-end Sign in.
Also: the inline
lang-switchernav and its CSS are removed;user.svg/logout.svgjoin the icon set; new catalog keys in all three locales; the nojs spec drives the language switch through the open menu; a router test pins the menu structure and the absence of Sign out while signed out. Fullhelios-uiring plus design-system, a11y (light/dark), theme, and nojs Playwright projects green.