Files
buzz/desktop/src/shared/styles/globals/scrollbars.css
klopez4212 b0c6d6f744 Add channel activity hover menu (#3935)
## Summary
- show relevant unread threads and active agents when hovering a channel
- keep channel-level unread emphasis separate from thread activity dots
- make activity rows navigate to the thread and remove demo-only data

## Test plan
- `just ci` (all stages passed except the final duplicate native check,
which ran out of disk after its earlier clippy pass)
- `cd desktop && pnpm exec playwright test
tests/e2e/channel-activity-popover.spec.ts --project=smoke`

---------

Signed-off-by: kenny lopez <klopez4212@gmail.com>
2026-08-03 09:26:06 -07:00

100 lines
2.9 KiB
CSS

.buzz-sidebar-scrollbar {
scrollbar-color: transparent transparent;
}
.buzz-sidebar-scrollbar:hover {
scrollbar-color: var(
--buzz-sidebar-scrollbar-thumb,
hsl(var(--sidebar-border) / 0.8)
)
transparent;
}
.buzz-sidebar-scrollbar::-webkit-scrollbar {
height: 10px;
width: 10px;
}
.buzz-sidebar-scrollbar::-webkit-scrollbar-track {
background: transparent;
}
.buzz-sidebar-scrollbar::-webkit-scrollbar-thumb {
background-clip: content-box;
background-color: transparent;
border: 3px solid transparent;
border-radius: 999px;
}
.buzz-sidebar-scrollbar:hover::-webkit-scrollbar-thumb {
background-color: var(
--buzz-sidebar-scrollbar-thumb,
hsl(var(--sidebar-border) / 0.8)
);
}
/* Channel activity keeps its chrome outside the scrolling surface. The slim,
* low-contrast thumb belongs only to the activity list beneath the header. */
.buzz-channel-activity-scrollbar {
scrollbar-gutter: stable;
}
.buzz-channel-activity-scrollbar::-webkit-scrollbar {
width: 8px;
}
.buzz-channel-activity-scrollbar::-webkit-scrollbar-track {
background: transparent;
}
.buzz-channel-activity-scrollbar::-webkit-scrollbar-thumb {
background-clip: content-box;
background-color: hsl(var(--foreground) / 0.15);
border: 2px solid transparent;
border-radius: 999px;
}
/*
* Main-content scroll areas that have sticky blurred chrome inside them.
* Native overlay scrollbars paint UNDER composited descendants
* (backdrop-filter + z-index) in WKWebView, so the thumb looks cut off
* behind the blur bar. A custom scrollbar occupies its own gutter outside
* the content box, so sticky children can no longer cover it.
*/
/*
* NOTE: no `scrollbar-color` here on purpose — when the standard property is
* set, engines ignore the `::-webkit-scrollbar` pseudo styles and fall back
* to overlay scrollbars, which reintroduces the bug.
*/
.buzz-content-scrollbar {
scrollbar-gutter: stable;
}
.buzz-content-scrollbar::-webkit-scrollbar {
height: 10px;
width: 10px;
}
.buzz-content-scrollbar::-webkit-scrollbar-track {
background: transparent;
}
/* The native thumb stays permanently transparent (but grabbable — the hit
* area is real). Visibility while scrolling is handled by a separate overlay
* indicator element positioned over the gutter, because WebKit does not
* re-resolve `::-webkit-scrollbar` styles when classes/attributes on the
* scroller change dynamically. */
.buzz-content-scrollbar::-webkit-scrollbar-thumb {
background-clip: content-box;
background-color: transparent;
border: 3px solid transparent;
border-radius: 999px;
}
/* Scrollbar-part pseudo-classes are resolved by the scrollbar itself, so
* these DO update dynamically — keep the thumb visible under the pointer. */
.buzz-content-scrollbar::-webkit-scrollbar-thumb:hover,
.buzz-content-scrollbar::-webkit-scrollbar-thumb:active {
background-color: hsl(var(--border) / 0.9);
}