diff --git a/app/assets/scss/_scrollbar.scss b/app/assets/scss/_scrollbar.scss new file mode 100644 index 00000000..8d4f0c38 --- /dev/null +++ b/app/assets/scss/_scrollbar.scss @@ -0,0 +1,37 @@ +@mixin scrollbars { + $target: ':where(*)'; + + #{$target} { + scrollbar-width: thin; + scrollbar-color: transparent transparent; + } + + #{$target}:is(:hover, .gp-scrollbar-active) { + scrollbar-color: var(--gitpulse-scrollbar-thumb) transparent; + } + + #{$target}::-webkit-scrollbar { + width: 6px; + height: 6px; + } + + #{$target}::-webkit-scrollbar-track { + background: transparent; + } + + #{$target}::-webkit-scrollbar-thumb { + background-color: transparent; + border-radius: 3px; + transition: background-color 0.3s ease; + } + + #{$target}:is(:hover, .gp-scrollbar-active)::-webkit-scrollbar-thumb { + background-color: var(--gitpulse-scrollbar-thumb); + } + + @media (prefers-reduced-motion: reduce) { + #{$target}::-webkit-scrollbar-thumb { + transition: none; + } + } +} diff --git a/app/assets/scss/main.scss b/app/assets/scss/main.scss index ffd7c23d..8979dfae 100644 --- a/app/assets/scss/main.scss +++ b/app/assets/scss/main.scss @@ -1,4 +1,5 @@ @use 'variables' as *; +@use 'scrollbar' as scrollbar; :root { color-scheme: light; @@ -700,3 +701,5 @@ hr { transform: rotate(360deg); } } + +@include scrollbar.scrollbars; diff --git a/app/components/dashboard/SearchResultPreview.vue b/app/components/dashboard/SearchResultPreview.vue index 993f1185..ab42f319 100644 --- a/app/components/dashboard/SearchResultPreview.vue +++ b/app/components/dashboard/SearchResultPreview.vue @@ -259,19 +259,6 @@ const getStateIcon = (item: SearchResultItem) => { overflow-y: auto; padding-right: 0.25rem; flex: 1; - - &::-webkit-scrollbar { - width: 4px; - } - - &::-webkit-scrollbar-track { - background: transparent; - } - - &::-webkit-scrollbar-thumb { - background: color-mix(in srgb, var(--gitpulse-accent) 25%, transparent); - border-radius: 4px; - } } .srp-card { diff --git a/app/components/dashboard/detail/DiscussionDetail.vue b/app/components/dashboard/detail/DiscussionDetail.vue index db3b2145..53a6845a 100644 --- a/app/components/dashboard/detail/DiscussionDetail.vue +++ b/app/components/dashboard/detail/DiscussionDetail.vue @@ -38,7 +38,6 @@ const EMPTY_PAGE_INFO: DiscussionPageInfo = { const { t } = useI18n(); const apiFetch = useGitPulseApiFetch(); -const { isScrolling: isSidebarScrolling, onScroll: onSidebarScroll } = useAutoHideScrollState(); const discussionState = shallowRef(cloneDiscussion(props.discussion)); const comments = shallowRef([]); @@ -455,11 +454,7 @@ watch(
-