Move user popover busy badge onto the avatar
What does this MR do and why?
The profile header shows the Busy badge overlapping the bottom of the avatar, but the user popover still rendered it inline beside the name. Anchor the badge to the bottom center of the popover avatar so the two surfaces match.
GlAvatarLabeled renders its avatar internally with no slot for an overlay, so the badge becomes an absolutely positioned sibling of the avatar block: gl-left-7/gl-top-11 (32px/64px) are the horizontal center and bottom edge of the 64px avatar, and the translate utilities center the badge and lift it flush with the avatar's bottom edge. Variant, text, and the white ring reuse the profile header's badge classes from app/views/users/show.html.haml.
Design fidelity
Against the design in Update user popover to match profile changes (#438435):
| Design | This MR | Match |
|---|---|---|
| Busy badge horizontally centered on the avatar | gl-left-7 + -gl-translate-x-1/2 center it on the 64px avatar |
Yes |
| Badge sits on the avatar's bottom edge, inside the circle | gl-top-11 + -gl-translate-y-full put its bottom edge flush with the avatar's |
Yes |
| Warning-variant pill with a white ring against the photo | variant="warning" with gl-border gl-border-white, the header's own classes |
Yes |
| Name and @username unchanged beside the avatar, nothing inline in the name row | Badge leaves the #meta slot; pronouns stay beside the name |
Yes |
References
- Closes #438435 (closed)
- Matches the profile header redesign from Update user profile page layout (!137024), which the issue follows up.
- A previous attempt, Draft: Move busy badge below avatar in user popover (!242265) (closed), placed the badge on its own row below the whole avatar block instead of overlaying the avatar as the design shows; this MR anchors it to the avatar itself.
Screenshots or screen recordings
| State | Before | After |
|---|---|---|
| User popover, light | ![]() |
![]() |
| User popover, dark | ![]() |
![]() |
| Profile header (reference) | ![]() |
![]() |
The profile header row is the unchanged reference surface the popover now matches; its before and after are identical by design.
How to set up and validate locally
- As one user, set a Busy status: avatar menu, then Set status, then check Set yourself as busy.
- As another user, hover that user's name or avatar where it links to their profile, for example an issue or merge request author byline.
- The popover shows the Busy badge centered on the bottom edge of the avatar, matching the user's profile page header.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.





