From 8ed5b851ce77fd08e0fa1cbe947ee535ffd85fa1 Mon Sep 17 00:00:00 2001 From: preethipantangi Date: Wed, 29 Apr 2026 21:03:44 -0700 Subject: [PATCH 1/3] Added feature to copy version number by hovering on the version --- app/components/Package/Header.vue | 45 ++++++++++++++++++++++++------- i18n/locales/en.json | 3 ++- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/app/components/Package/Header.vue b/app/components/Package/Header.vue index 571dff4264..758d4607b7 100644 --- a/app/components/Package/Header.vue +++ b/app/components/Package/Header.vue @@ -2,6 +2,7 @@ import type { RouteLocationRaw } from 'vue-router' import type { CommandPaletteContextCommandInput } from '~/types/command-palette' import { SCROLL_TO_TOP_THRESHOLD } from '~/composables/useScrollToTop' +import { useClipboard } from '@vueuse/core' const props = defineProps<{ pkg?: Pick | null @@ -61,6 +62,7 @@ const { y: scrollY } = useScroll(window) const showScrollToTop = computed(() => scrollY.value > SCROLL_TO_TOP_THRESHOLD) const packageName = computed(() => props.pkg?.name ?? '') +const resolvedVersionDisplay = computed(() => props.resolvedVersion ?? '') const fundingUrl = computed(() => { let funding = props.displayVersion?.funding if (Array.isArray(funding)) funding = funding[0] @@ -75,6 +77,11 @@ const { copied: copiedPkgName, copy: copyPkgName } = useClipboard({ copiedDuring: 2000, }) +const { copied: copiedPkgVersion, copy: copyPkgVersion } = useClipboard({ + source: resolvedVersionDisplay, + copiedDuring: 2000, +}) + function hasProvenance(version: PackumentVersion | null): boolean { if (!version?.dist) return false return !!(version.dist as { attestations?: unknown }).attestations @@ -98,6 +105,17 @@ useCommandPaletteContextCommands( announce($t('command_palette.announcements.copied_to_clipboard')) }, }, + { + id: 'package-copy-version', + group: 'package', + label: $t('package.versions.copy_version'), + keywords: [props.resolvedVersion], + iconClass: 'i-lucide:copy', + action: () => { + copyPkgVersion() + announce($t('command_palette.announcements.copied_to_clipboard')) + }, + }, ] if (fundingUrl.value) { @@ -287,16 +305,23 @@ useShortcuts({