@@ -667,10 +667,19 @@ defineOgImageComponent('Package', {
667667 />
668668
669669 <!-- Install command with package manager selector -->
670- <section aria-labelledby =" install-heading" class =" area-install" >
670+ <section id = " install " aria-labelledby =" install-heading" class =" area-install scroll-mt-20 " >
671671 <div class =" flex flex-wrap items-center justify-between mb-3" >
672- <h2 id =" install-heading" class =" text-xs text-fg-subtle uppercase tracking-wider" >
672+ <h2
673+ id =" install-heading"
674+ class =" group inline-flex items-center gap-1.5 text-xs text-fg-subtle uppercase tracking-wider"
675+ >
673676 {{ $t('package.install.title') }}
677+ <a
678+ href =" #install"
679+ class =" opacity-0 group-hover:opacity-100 text-fg-subtle hover:text-fg-muted transition-opacity duration-200 no-underline"
680+ >
681+ <span class =" i-carbon-link w-3 h-3 block" aria-hidden =" true" />
682+ </a >
674683 </h2 >
675684 <!-- Package manager tabs -->
676685 <div
@@ -769,9 +778,22 @@ defineOgImageComponent('Package', {
769778 </section >
770779
771780 <!-- README -->
772- <section id =" readme" aria-labelledby =" readme-heading" class =" area-readme min-w-0" >
773- <h2 id =" readme-heading" class =" text-xs text-fg-subtle uppercase tracking-wider mb-4" >
781+ <section
782+ id =" readme"
783+ aria-labelledby =" readme-heading"
784+ class =" area-readme min-w-0 scroll-mt-20"
785+ >
786+ <h2
787+ id =" readme-heading"
788+ class =" group inline-flex items-center gap-1.5 text-xs text-fg-subtle uppercase tracking-wider mb-4"
789+ >
774790 {{ $t('package.readme.title') }}
791+ <a
792+ href =" #readme"
793+ class =" opacity-0 group-hover:opacity-100 text-fg-subtle hover:text-fg-muted transition-opacity duration-200 no-underline"
794+ >
795+ <span class =" i-carbon-link w-3 h-3 block" aria-hidden =" true" />
796+ </a >
775797 </h2 >
776798 <!-- eslint-disable vue/no-v-html -- HTML is sanitized server-side -->
777799 <div
@@ -799,9 +821,23 @@ defineOgImageComponent('Package', {
799821 </ClientOnly >
800822
801823 <!-- Keywords -->
802- <section v-if =" displayVersion?.keywords?.length" aria-labelledby =" keywords-heading" >
803- <h2 id =" keywords-heading" class =" text-xs text-fg-subtle uppercase tracking-wider mb-3" >
824+ <section
825+ id =" keywords"
826+ v-if =" displayVersion?.keywords?.length"
827+ aria-labelledby =" keywords-heading"
828+ class =" scroll-mt-20"
829+ >
830+ <h2
831+ id =" keywords-heading"
832+ class =" group inline-flex items-center gap-1.5 text-xs text-fg-subtle uppercase tracking-wider mb-3"
833+ >
804834 {{ $t('package.keywords_title') }}
835+ <a
836+ href =" #keywords"
837+ class =" opacity-0 group-hover:opacity-100 text-fg-subtle hover:text-fg-muted transition-opacity duration-200 no-underline"
838+ >
839+ <span class =" i-carbon-link w-3 h-3 block" aria-hidden =" true" />
840+ </a >
805841 </h2 >
806842 <ul class =" flex flex-wrap gap-1.5 list-none m-0 p-0" >
807843 <li v-for =" keyword in displayVersion.keywords.slice(0, 15)" :key =" keyword" >
@@ -822,16 +858,24 @@ defineOgImageComponent('Package', {
822858 />
823859
824860 <section
861+ id =" compatibility"
825862 v-if ="
826863 displayVersion?.engines && (displayVersion.engines.node || displayVersion.engines.npm)
827864 "
828865 aria-labelledby =" compatibility-heading"
866+ class =" scroll-mt-20"
829867 >
830868 <h2
831869 id =" compatibility-heading"
832- class =" text-xs text-fg-subtle uppercase tracking-wider mb-3"
870+ class =" group inline-flex items-center gap-1.5 text-xs text-fg-subtle uppercase tracking-wider mb-3"
833871 >
834872 {{ $t('package.compatibility') }}
873+ <a
874+ href =" #compatibility"
875+ class =" opacity-0 group-hover:opacity-100 text-fg-subtle hover:text-fg-muted transition-opacity duration-200 no-underline"
876+ >
877+ <span class =" i-carbon-link w-3 h-3 block" aria-hidden =" true" />
878+ </a >
835879 </h2 >
836880 <dl class =" space-y-2" >
837881 <div v-if =" displayVersion.engines.node" class =" flex justify-between gap-4 py-1" >
0 commit comments