SIGN IN SIGN UP

scrollbar: improve visibility animation (#2737)

## Description

Improve scrollbar appearance and disappearance motion across the shared
`gpui-base` implementation.

- slide vertical scrollbars in from the right and horizontal scrollbars
up from the bottom
- use a visible 300 ms linear fade-in with eased position, followed by
the existing 2-second hold
- slide and fade out over 500 ms with cubic ease-in
- reverse interrupted animations from their current opacity and position
- keep layout and hitboxes stationary, disable hidden track/thumb
interactions, and respect reduced motion
- preserve the full idle hold after hover and only end active thumb
drags

This implementation was AI-assisted, then reviewed, visually tested in
the Scrollbar story, and covered with test-first regression tests.

## Screenshot

The change is temporal rather than a static layout change. It was
manually exercised in the Scrollbar story across Scrolling, Hover, and
Always modes.

## How to Test

```bash
cargo fmt --all -- --check
cargo test -p gpui-base
cargo run -p gpui-component-story -- Scrollbar
```

In the story, switch between Scrolling, Hover, and Always and verify the
entrance/exit directions, visible fade, interruption reversal, and
stationary Always behavior.

## Checklist

- [x] I have read the [CONTRIBUTING](../CONTRIBUTING.md) document and
followed the guidelines.
- [x] Reviewed the changes in this PR and confirmed AI generated code is
accurate.
- [x] Passed `cargo run` for story tests related to the changes.
- [ ] Tested macOS, Windows and Linux platforms performance (not
platform-specific; manually tested on Linux).

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Codex <codex@openai.com>
J
Jason Lee committed
2a1335d50fa99c4a64a4ccb4f25ce2bb5cb87e4d
Parent: b29ee13
Committed by GitHub <noreply@github.com> on 8/17/2026, 8:27:39 AM