From 3bf1ff1e7ad116fdf517a6580e225b912eee9618 Mon Sep 17 00:00:00 2001 From: ShroXd Date: Fri, 13 Mar 2026 16:26:15 +0800 Subject: [PATCH 01/27] feat: add basic version page with mock data --- app/components/Package/Versions.vue | 37 ++- app/pages/package/[[org]]/[name].vue | 6 +- app/pages/package/[[org]]/[name]/versions.vue | 299 ++++++++++++++++++ 3 files changed, 331 insertions(+), 11 deletions(-) create mode 100644 app/pages/package/[[org]]/[name]/versions.vue diff --git a/app/components/Package/Versions.vue b/app/components/Package/Versions.vue index c6df34a7e4..6f802d541a 100644 --- a/app/components/Package/Versions.vue +++ b/app/components/Package/Versions.vue @@ -95,6 +95,14 @@ function versionRoute(version: string): RouteLocationRaw { return packageRoute(props.packageName, version) } +// Route to the full versions history page +const versionsPageRoute = computed((): RouteLocationRaw => { + const [org, name = ''] = props.packageName.startsWith('@') + ? props.packageName.split('/') + : ['', props.packageName] + return { name: 'package-versions', params: { org, name } } +}) + // Version to tags lookup (supports multiple tags per version) const versionToTags = computed(() => buildVersionToTagsMap(props.distTags)) @@ -521,15 +529,26 @@ function majorGroupContainsCurrent(group: (typeof otherMajorGroups.value)[0]): b id="versions" >
diff --git a/app/pages/package/[[org]]/[name].vue b/app/pages/package/[[org]]/[name].vue index 3af5415e5f..65f3c02440 100644 --- a/app/pages/package/[[org]]/[name].vue +++ b/app/pages/package/[[org]]/[name].vue @@ -207,6 +207,7 @@ const { diff: sizeDiff } = useInstallSizeDiff(packageName, resolvedVersion, pkg, // → Preserve the server-rendered DOM, don't flash to skeleton. const nuxtApp = useNuxtApp() const route = useRoute() +const isVersionsRoute = computed(() => route.name === 'package-versions') const hasEmptyPayload = import.meta.client && nuxtApp.payload.serverRendered && @@ -516,7 +517,8 @@ const showSkeleton = shallowRef(false)