From 88f0d349ee4e8c42bd38adc01031edf4c7b92342 Mon Sep 17 00:00:00 2001 From: HiDeoo Date: Mon, 14 Jul 2025 13:14:08 +0200 Subject: Fix slug override with `/` value (#3293) Co-authored-by: Armand Philippot --- .changeset/popular-planets-whisper.md | 5 +++++ packages/starlight/__tests__/basics/slugs.test.ts | 3 +++ packages/starlight/utils/slugs.ts | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/popular-planets-whisper.md diff --git a/.changeset/popular-planets-whisper.md b/.changeset/popular-planets-whisper.md new file mode 100644 index 00000000..85dd9fa3 --- /dev/null +++ b/.changeset/popular-planets-whisper.md @@ -0,0 +1,5 @@ +--- +'@astrojs/starlight': patch +--- + +Fixes an issue preventing to override the slug of a page with the [`slug` frontmatter property](https://starlight.astro.build/reference/frontmatter/#slug) using the `/` value. diff --git a/packages/starlight/__tests__/basics/slugs.test.ts b/packages/starlight/__tests__/basics/slugs.test.ts index a3f8f399..0a42b957 100644 --- a/packages/starlight/__tests__/basics/slugs.test.ts +++ b/packages/starlight/__tests__/basics/slugs.test.ts @@ -31,6 +31,9 @@ describe('slugToParam', () => { test('returns undefined for root index', () => { expect(slugToParam('index')).toBeUndefined(); }); + test('returns undefined for /', () => { + expect(slugToParam('/')).toBeUndefined(); + }); test('strips index from end of nested slug', () => { expect(slugToParam('dir/index')).toBe('dir'); expect(slugToParam('dir/index/sub-dir/index')).toBe('dir/index/sub-dir'); diff --git a/packages/starlight/utils/slugs.ts b/packages/starlight/utils/slugs.ts index c54e095d..996a624a 100644 --- a/packages/starlight/utils/slugs.ts +++ b/packages/starlight/utils/slugs.ts @@ -40,7 +40,7 @@ function localeToDir(locale: string | undefined): 'ltr' | 'rtl' { } export function slugToParam(slug: string): string | undefined { - return slug === 'index' || slug === '' + return slug === 'index' || slug === '' || slug === '/' ? undefined : slug.endsWith('/index') ? slug.slice(0, -6) -- cgit