Skip to content

Commit c887a5f

Browse files
agamyo168ghostdevv
andauthored
feat: add copy button for package versions (#1447)
Co-authored-by: Willow (GHOST) <git@willow.sh>
1 parent 295520c commit c887a5f

File tree

5 files changed

+34
-2
lines changed

5 files changed

+34
-2
lines changed

app/pages/package/[[org]]/[name].vue

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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
251257
const { 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 -->

i18n/locales/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
"view_permalink": "View permalink for this version",
152152
"navigation": "Package",
153153
"copy_name": "Copy package name",
154+
"copy_version": "Copy package version",
154155
"deprecation": {
155156
"package": "This package has been deprecated.",
156157
"version": "This version has been deprecated.",

i18n/schema.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,9 @@
457457
"copy_name": {
458458
"type": "string"
459459
},
460+
"copy_version": {
461+
"type": "string"
462+
},
460463
"deprecation": {
461464
"type": "object",
462465
"properties": {

lunaria/files/en-GB.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@
150150
"view_permalink": "View permalink for this version",
151151
"navigation": "Package",
152152
"copy_name": "Copy package name",
153+
"copy_version": "Copy package version",
153154
"deprecation": {
154155
"package": "This package has been deprecated.",
155156
"version": "This version has been deprecated.",

lunaria/files/en-US.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@
150150
"view_permalink": "View permalink for this version",
151151
"navigation": "Package",
152152
"copy_name": "Copy package name",
153+
"copy_version": "Copy package version",
153154
"deprecation": {
154155
"package": "This package has been deprecated.",
155156
"version": "This version has been deprecated.",

0 commit comments

Comments
 (0)