Loading
Present the feature catalog trigger as an action
What does this MR do and why?
The sidebar's feature catalog trigger looked like every other nav item, so it read as another destination in the list rather than a control that opens a chooser. This MR gives it a treatment and a name that match what it does.
Three changes, all scoped to that one button:
- Text. The label becomes Browse all features instead of Feature catalog, so it names the action rather than the thing it opens. The modal keeps its own "Feature catalog" title (
FeatureLibrary|Feature catalog), which is untouched. - UI treatment. A new
.super-sidebar-feature-library-triggerrule outlines the button with a 1px inset border, so it reads as an action without competing with the selected nav item for attention — this is a tertiary action. The border borrows--super-sidebar-hr-border-color, which the sidebar already uses for its own dividers;--gl-border-color-subtlewas the obvious choice but resolves to the same color as the sidebar background in light mode, leaving nothing visible. The rule is skipped while:focus-visible, becauseGlNavItemdraws its focus ring as an insetbox-shadowat the same specificity and our stylesheet loads later, so an unguardedbox-shadowwould hide the ring — which matters here, as this button takes focus after an unpin. It stays aGlNavItem, so its size, icon, and keyboard behaviour are unchanged, and the existing shimmer class still composes on top. - Label alignment. The trigger passed bare text into
GlNavItem's default slot. That slot's.gl-nav-item-labelwrapper is onlyflex-grow: 1— the padding and line-height that vertically center a nav item's text actually live on a span inside the slot innav_item.vue. Without it the label inherited a taller line-height and lost its symmetric padding, so it sat low in the samemin-heightbox. The trigger now wraps its label in that same span.
References
we should also adjust the
Feature catalogstyling. Have it as an action at the end of the pin list like+ Browse all features
Screenshots or screen recordings
Dark
| Before | After |
|---|---|
![]() |
![]() |
![]() |
![]() |
Light
| Before | After |
|---|---|
![]() |
![]() |
![]() |
![]() |
How to set up and validate locally
No feature flag is needed.
- Visit any project or group.
- Find the catalog trigger at the bottom of the pinned section. Confirm it reads Browse all features and is outlined with a subtle border, so it reads as an action rather than another nav link.
- Confirm its label sits at the same height as the labels of the nav items above it, rather than low in its row.
- Select it and confirm the modal still opens and is titled Feature catalog.
- Collapse the sidebar to icon-only. Confirm the button becomes icon-only and its tooltip reads Browse all features.
- Unpin an item from the pinned section and confirm focus lands on the Browse all features button, as before, and that its focus ring is clearly visible — the border rule is deliberately skipped while focused so it can't paint over the ring.
- Check both light and dark mode, and ideally a non-default sidebar theme, since the border color is themed.
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.
Edited by Austin Regnery







