@@ -246,6 +246,12 @@ const { copied: copiedPkgName, copy: copyPkgName } = useClipboard({
246246 copiedDuring: 2000 ,
247247})
248248
249+ // copy version name
250+ const { copied : copiedVersion, copy : copyVersion } = useClipboard ({
251+ source: resolvedVersion .value ?? ' ' ,
252+ copiedDuring: 2000 ,
253+ })
254+
249255// Fetch dependency analysis (lazy, client-side)
250256// This is the same composable used by PackageVulnerabilityTree and PackageDeprecatedTree
251257const { data : vulnTree, status : vulnTreeStatus } = useDependencyAnalysis (
@@ -680,7 +686,7 @@ const showSkeleton = shallowRef(false)
680686 </span >
681687 </h1 >
682688
683- <!-- Floating copy button -->
689+ <!-- Floating copy name button -->
684690 <button
685691 type =" button"
686692 @click =" copyPkgName()"
@@ -699,9 +705,10 @@ const showSkeleton = shallowRef(false)
699705 {{ copiedPkgName ? $t('common.copied') : $t('package.copy_name') }}
700706 </button >
701707 </div >
708+
702709 <span
703710 v-if =" resolvedVersion"
704- class =" inline-flex items-baseline gap-1.5 font-mono text-base sm:text-lg text-fg-muted shrink-0"
711+ class =" inline-flex items-baseline gap-1.5 font-mono text-base sm:text-lg text-fg-muted shrink-0 relative group "
705712 >
706713 <!-- Version resolution indicator (e.g., "latest → 4.2.0") -->
707714 <template v-if =" requestedVersion && resolvedVersion !== requestedVersion " >
@@ -744,6 +751,25 @@ const showSkeleton = shallowRef(false)
744751 class =" text-fg-subtle text-sm shrink-0"
745752 >{{ $t('package.not_latest') }}</span
746753 >
754+
755+ <!-- Floating copy version button -->
756+ <button
757+ type =" button"
758+ @click =" copyVersion()"
759+ class =" absolute z-20 inset-is-0 top-full inline-flex items-center gap-1 px-2 py-1 rounded border text-xs font-mono whitespace-nowrap transition-all duration-150 opacity-0 -translate-y-1 pointer-events-none group-hover:opacity-100 group-hover:translate-y-0 group-hover:pointer-events-auto focus-visible:opacity-100 focus-visible:translate-y-0 focus-visible:pointer-events-auto"
760+ :class =" [
761+ $style.copyButton,
762+ copiedVersion ? 'text-accent bg-accent/10' : 'text-fg-muted bg-bg border-border',
763+ ]"
764+ :aria-label =" copiedVersion ? $t('common.copied') : $t('package.copy_version')"
765+ >
766+ <span
767+ :class =" copiedVersion ? 'i-carbon:checkmark' : 'i-carbon:copy'"
768+ class =" w-3.5 h-3.5"
769+ aria-hidden =" true"
770+ />
771+ {{ copiedVersion ? $t('common.copied') : $t('package.copy_version') }}
772+ </button >
747773 </span >
748774
749775 <!-- Docs + Code + Compare — inline on desktop, floating bottom bar on mobile -->
0 commit comments