From a1f61b72f31c1039d1e3be3ae582c76fbf1a4d8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Bl=C3=A4ttermann?= Date: Mon, 9 Feb 2026 18:59:22 +0100 Subject: [PATCH 01/10] refactor: extract reusable function --- .../v/[version]/[...filePath].vue | 587 ++++++++++++++++++ app/pages/package-code/[...path].vue | 36 +- 2 files changed, 611 insertions(+), 12 deletions(-) create mode 100644 app/pages/package-code/@[[org]]/[packageName]/v/[version]/[...filePath].vue diff --git a/app/pages/package-code/@[[org]]/[packageName]/v/[version]/[...filePath].vue b/app/pages/package-code/@[[org]]/[packageName]/v/[version]/[...filePath].vue new file mode 100644 index 000000000..fc99399d1 --- /dev/null +++ b/app/pages/package-code/@[[org]]/[packageName]/v/[version]/[...filePath].vue @@ -0,0 +1,587 @@ + + + diff --git a/app/pages/package-code/[...path].vue b/app/pages/package-code/[...path].vue index b3b4a02bd..29b0b6600 100644 --- a/app/pages/package-code/[...path].vue +++ b/app/pages/package-code/[...path].vue @@ -45,14 +45,23 @@ const version = computed(() => parsedRoute.value.version) const filePathOrig = computed(() => parsedRoute.value.filePath) const filePath = computed(() => parsedRoute.value.filePath?.replace(/\/$/, '')) +// Navigation helper - build URL for a path +function getCodeUrl(args: { packageName: string; version: string; filePath?: string }): string { + const base = `/package-code/${args.packageName}/v/${args.version}` + return args.filePath ? `${base}/${args.filePath}` : base +} + // Fetch package data for version list const { data: pkg } = usePackage(packageName) // URL pattern for version selector - includes file path if present -const versionUrlPattern = computed(() => { - const base = `/package-code/${packageName.value}/v/{version}` - return filePath.value ? `${base}/${filePath.value}` : base -}) +const versionUrlPattern = computed(() => + getCodeUrl({ + packageName: packageName.value, + version: '{version}', + filePath: filePath.value, + }), +) // Fetch file tree const { data: fileTree, status: treeStatus } = useFetch( @@ -192,9 +201,12 @@ const breadcrumbs = computed(() => { }) // Navigation helper - build URL for a path -function getCodeUrl(path?: string): string { - const base = `/package-code/${packageName.value}/v/${version.value}` - return path ? `${base}/${path}` : base +function getCurrentCodeUrl(path?: string): string { + return getCodeUrl({ + packageName: packageName.value, + version: version.value!, + filePath: path, + }) } // Base path segments for route objects (e.g., ['nuxt', 'v', '4.2.0'] or ['@nuxt', 'kit', 'v', '1.0.0']) @@ -350,7 +362,7 @@ defineOgImageComponent('Default', { > {{ $t('code.root') }} @@ -360,7 +372,7 @@ defineOgImageComponent('Default', { / {{ crumb.name }} @@ -402,7 +414,7 @@ defineOgImageComponent('Default', { @@ -558,7 +570,7 @@ defineOgImageComponent('Default', { @@ -572,7 +584,7 @@ defineOgImageComponent('Default', { v-if="fileTree" :tree="fileTree.tree" :current-path="filePath ?? ''" - :base-url="getCodeUrl()" + :base-url="getCurrentCodeUrl()" :base-path="basePath" /> From 58ae1e12c9f0629a27370c85cd28dae470457ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Bl=C3=A4ttermann?= Date: Mon, 9 Feb 2026 21:52:29 +0100 Subject: [PATCH 02/10] Rename file --- app/pages/package-code/[...path].vue | 593 --------------------------- 1 file changed, 593 deletions(-) delete mode 100644 app/pages/package-code/[...path].vue diff --git a/app/pages/package-code/[...path].vue b/app/pages/package-code/[...path].vue deleted file mode 100644 index 29b0b6600..000000000 --- a/app/pages/package-code/[...path].vue +++ /dev/null @@ -1,593 +0,0 @@ - - - From 771b3d0bac231bbe6a580a4372437bf243f426f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Bl=C3=A4ttermann?= Date: Mon, 9 Feb 2026 23:06:15 +0100 Subject: [PATCH 03/10] refactor: use proper route segments for code editor --- app/components/Code/DirectoryListing.vue | 15 +++--- app/components/Code/FileTree.vue | 14 +++-- app/components/Code/MobileTreeDrawer.vue | 6 +-- .../v/[version]/[...filePath].vue | 53 ++++++++----------- app/pages/package/[[org]]/[name].vue | 29 +++++++--- test/nuxt/a11y.spec.ts | 20 +++++-- 6 files changed, 79 insertions(+), 58 deletions(-) diff --git a/app/components/Code/DirectoryListing.vue b/app/components/Code/DirectoryListing.vue index 95e894a1e..d913d9e9c 100644 --- a/app/components/Code/DirectoryListing.vue +++ b/app/components/Code/DirectoryListing.vue @@ -1,14 +1,14 @@