Repository navigation
feat(ui): add theme-aware native scrollbars - #332
samheutmaker wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 25dfcc1. Configure here.
| <div | ||
| ref={viewport} | ||
| {...stylex.props(styles.viewport, chatFollow ? styles.chatEdges : styles.topEdge)} | ||
| {...stylex.props(styles.viewport, scrollbarStyles.native, chatFollow ? styles.chatEdges : styles.topEdge)} |
There was a problem hiding this comment.
Mask fades chat scrollbar thumb
Medium Severity
scrollbarStyles.native is applied on the same ReadingList viewport as maskImage / WebkitMaskImage. Those fades clip the element’s painted output, including classic ::-webkit-scrollbar thumbs. In chat-follow mode the thumb sits in the bottom 40px fade, so the new control is weakest at the default pinned position.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 25dfcc1. Configure here.


Summary
Validation
Remaining manual check
Native thumb dragging on macOS: synthetic drags did not scroll even an unstyled native control in this environment, so manual validation is still needed. Keyboard/wheel behavior is covered. No new dependency or custom scrollbar DOM was introduced.
Note
Low Risk
Presentation-only CSS on native scroll containers; scroll behavior, virtualization, and touch/forced-color fallbacks are explicitly preserved and regression-tested.
Overview
Adds shared theme-aware native scrollbar styling via
@whip/ui/scrollbar.stylex(scrollbarStyles.native): 9px WebKit thumbs with rounded transparent insets, foreground-basedcolor-mixcolors, and stronger hover on fine-pointer desktops; Firefox getsscrollbar-width/scrollbar-coloronly when WebKit pseudo-elements are unsupported. Touch and forced-colors keep platform defaults.Applies the style to existing scroll owners—
ScrollArea, dialog/alert viewports, workspace pane content, chat reading list, and session sidebar—without new wrappers or scroll logic. The sidebar drops its ad hocscrollbarWidth: 'thin'.Adds package export
scrollbar.stylex,npm run test:scrollbars, a Playwright regression across Chromium/Firefox/WebKit (geometry, themes, keyboard/wheel, CSP), StorybookWHIP/Scrollbars, and docs infeatures.md/frontend.md.Reviewed by Cursor Bugbot for commit 25dfcc1. Bugbot is set up for automated code reviews on this repo. Configure here.