summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHiDeoo2025-07-14 13:14:08 +0200
committerGitHub2025-07-14 13:14:08 +0200
commit88f0d349ee4e8c42bd38adc01031edf4c7b92342 (patch)
treeeb8789518238d51efb38b4446078b73a89e4d4d9
parent5cba9fe7d0b335ffc1c0bf34d35ccad39c277923 (diff)
downloadIT.starlight-88f0d349ee4e8c42bd38adc01031edf4c7b92342.tar.gz
IT.starlight-88f0d349ee4e8c42bd38adc01031edf4c7b92342.tar.bz2
IT.starlight-88f0d349ee4e8c42bd38adc01031edf4c7b92342.zip
Fix slug override with `/` value (#3293)
Co-authored-by: Armand Philippot <git@armand.philippot.eu>
-rw-r--r--.changeset/popular-planets-whisper.md5
-rw-r--r--packages/starlight/__tests__/basics/slugs.test.ts3
-rw-r--r--packages/starlight/utils/slugs.ts2
3 files changed, 9 insertions, 1 deletions
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)