diff --git a/docs/.vitepress/components/api-docs/method.vue b/docs/.vitepress/components/api-docs/method.vue
index 56fcb3492ce..db98657aa4f 100644
--- a/docs/.vitepress/components/api-docs/method.vue
+++ b/docs/.vitepress/components/api-docs/method.vue
@@ -1,12 +1,13 @@
diff --git a/docs/.vitepress/shared/utils/slugify.ts b/docs/.vitepress/shared/utils/slugify.ts
new file mode 100644
index 00000000000..11dd77cc53a
--- /dev/null
+++ b/docs/.vitepress/shared/utils/slugify.ts
@@ -0,0 +1,16 @@
+export function slugify(value: string): string {
+ // Copied from https://github.com/vuejs/docs/blob/b392b068fb893e3ac6079710fe34decbde7a3be3/src/api/ApiIndex.vue#L50-L65
+ return (
+ value
+ // Replace special characters
+ .replace(/[\s~`!@#$%^&*()\-_+=[\]{}|\\;:"'<>,.?/]+/g, '-')
+ // Remove continuous separators
+ .replace(/\-{2,}/g, '-')
+ // Remove prefixing and trailing separators
+ .replace(/^\-+|\-+$/g, '')
+ // ensure it doesn't start with a number (like #123)
+ .replace(/^(\d)/, '_$1')
+ // lowercase
+ .toLowerCase()
+ );
+}
diff --git a/docs/api/ApiIndex.vue b/docs/api/ApiIndex.vue
index ec9c752e981..882c4a69e14 100644
--- a/docs/api/ApiIndex.vue
+++ b/docs/api/ApiIndex.vue
@@ -2,6 +2,7 @@