Show static shimmer outline with reduced motion

What does this MR do and why?

Follow-up to !246440 (merged).

In that MR the entire ::before pseudo-element carrying the "More features" shimmer was nested inside @media (prefers-reduced-motion: no-preference), including the static inset outline. The outline is not motion-dependent, so scoping it that way meant users who prefer reduced motion saw a completely plain nav item, visually identical to one where the feature does not exist. The same applies to browsers that do not support the media feature, since no-preference does not match.

Honoring prefers-reduced-motion should mean removing the motion, not removing the affordance. This MR splits the treatment so there is a motion-free equivalent:

  • The static inset outline is now drawn for everyone.
  • The content layering (z-index on the icon and label) moves out of the query too, since the pseudo-element now exists in all cases.
  • Only the gradient sweep and animation remain inside @media (prefers-reduced-motion: no-preference).

No markup, behavior, or dismissal logic changes. The callout still removes the treatment once the user opens the feature library modal.

References

Screenshots or screen recordings

Reduced motion: On

Before After
CleanShot_2026-07-30_at_14.55.01_2x CleanShot_2026-07-30_at_14.43.19_2x

How to set up and validate locally

  1. Enable the feature flag at https://gdk.test:3000/rails/features/feature_library_modal
  2. Go to a page with the sidebar, for example https://gdk.test:3000/flightjs/Flight/-/merge_requests
  3. In DevTools, open Rendering and set Emulate CSS prefers-reduced-motion to reduce. Reload and confirm the "More features" nav item shows a static themed outline with no animation.
  4. Set it back to no-preference. Reload and confirm the gradient sweep still plays and fades out as before.
  5. Open the modal and reload to confirm the treatment no longer appears in either mode.

To replay after dismissal, remove the callout in the Rails console:

User.find_by_username('root').callouts.where(feature_name: :feature_library_shimmer_seen).delete_all

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

Merge request reports

Loading