@@ -33,18 +33,24 @@ const router = useRouter()
3333
3434const header = useTemplateRef (' header' )
3535const isHeaderPinned = shallowRef (false )
36+ const readmeHeader = useTemplateRef (' readmeHeader' )
37+ const isReadmeHeaderPinned = shallowRef (false )
3638const navExtraOffset = shallowRef (0 )
3739const isMobile = useMediaQuery (' (max-width: 639.9px)' )
3840
39- function checkHeaderPosition() {
40- const el = header .value
41- if (! el ) return
41+ function isStickyPinned(el : HTMLElement | null ): boolean {
42+ if (! el ) return false
4243
4344 const style = getComputedStyle (el )
4445 const top = parseFloat (style .top ) || 0
4546 const rect = el .getBoundingClientRect ()
4647
47- isHeaderPinned .value = Math .abs (rect .top - top ) < 1
48+ return Math .abs (rect .top - top ) < 1
49+ }
50+
51+ function checkHeaderPosition() {
52+ isHeaderPinned .value = isStickyPinned (header .value )
53+ isReadmeHeaderPinned .value = isStickyPinned (readmeHeader .value )
4854}
4955
5056useEventListener (' scroll' , checkHeaderPosition , { passive: true })
@@ -1392,7 +1398,11 @@ const showSkeleton = shallowRef(false)
13921398
13931399 <!-- README -->
13941400 <section id =" readme" class =" min-w-0 scroll-mt-20" :class =" $style.areaReadme" >
1395- <div class =" flex flex-wrap items-center justify-between mb-3 px-1" >
1401+ <div
1402+ ref =" readmeHeader"
1403+ class =" flex sticky top-34 z-10 flex-wrap items-center justify-between mb-3 py-1 -mx-1 px-2 rounded-md transition-shadow duration-200"
1404+ :class =" { 'bg-bg shadow-sm': isReadmeHeaderPinned }"
1405+ >
13961406 <h2 id =" readme-heading" class =" group text-xs text-fg-subtle uppercase tracking-wider" >
13971407 <LinkBase to =" #readme" >
13981408 {{ $t('package.readme.title') }}
0 commit comments