@@ -7,7 +7,7 @@ import { CheckmarkStamp } from "../../../components/icons/CheckmarkStamp.tsx";
7
7
import { WarningTriangle } from "../../../components/icons/WarningTriangle.tsx" ;
8
8
import { Tooltip } from "../../../components/Tooltip.tsx" ;
9
9
import twas from "$twas" ;
10
- import { parse } from "$std/semver/mod.ts" ;
10
+ import { gt , parse } from "$std/semver/mod.ts" ;
11
11
12
12
interface PackageHeaderProps {
13
13
package : Package ;
@@ -20,8 +20,14 @@ export function PackageHeader(
20
20
const runtimeCompat = (
21
21
< RuntimeCompatIndicator runtimeCompat = { pkg . runtimeCompat } />
22
22
) ;
23
- const isPrerelease = selectedVersion &&
24
- parse ( selectedVersion . version ) . prerelease . length !== 0 ;
23
+ const isYanked = selectedVersion && selectedVersion . yanked ;
24
+
25
+ const selectedVersionSemver = selectedVersion &&
26
+ parse ( selectedVersion . version ) ;
27
+ const isNewerPrerelease = selectedVersionSemver &&
28
+ selectedVersionSemver . prerelease . length !== 0 &&
29
+ ( pkg . latestVersion === null ||
30
+ gt ( selectedVersionSemver , parse ( pkg . latestVersion ) ) ) ;
25
31
26
32
return (
27
33
< div class = "space-y-6 mt-0 md:mt-4" >
@@ -31,19 +37,26 @@ export function PackageHeader(
31
37
< div class = "text-sm md:text-base flex items-center justify-center gap-4 md:gap-2" >
32
38
< WarningTriangle class = "text-jsr-yellow-400 flex-none" />
33
39
< span class = "font-medium" >
34
- This release is{ " " }
35
- { isPrerelease && selectedVersion . newerVersionsCount == 0
40
+ This release { selectedVersion . yanked
41
+ ? (
42
+ < >
43
+ was yanked — the latest version of @{ pkg
44
+ . scope } /{ pkg . name } is { pkg . latestVersion } .
45
+ </ >
46
+ )
47
+ : isNewerPrerelease
36
48
? (
37
49
< >
38
- a pre-release — the latest stable version of @{ pkg
50
+ is a pre-release — the latest non-prerelease version of
51
+ @{ pkg
39
52
. scope } /{ pkg . name } is { pkg . latestVersion } .
40
53
</ >
41
54
)
42
55
: (
43
56
< >
44
57
< span class = "bold" >
45
- { selectedVersion . newerVersionsCount } { " " }
46
- version{ selectedVersion . newerVersionsCount > 1 && "s" }
58
+ is { selectedVersion . newerVersionsCount } { " " }
59
+ version{ selectedVersion . newerVersionsCount !== 1 && "s" }
47
60
{ " " }
48
61
behind { pkg . latestVersion }
49
62
</ span > { " " }
@@ -54,9 +67,7 @@ export function PackageHeader(
54
67
class = "link font-medium whitespace-nowrap"
55
68
href = { `/@${ pkg . scope } /${ pkg . name } ` }
56
69
>
57
- Jump to latest{ " " }
58
- { isPrerelease && selectedVersion . newerVersionsCount == 0 &&
59
- "stable" }
70
+ Jump to { isNewerPrerelease ? "this version " : "latest" }
60
71
</ a >
61
72
</ span >
62
73
</ div >
0 commit comments