diff --git a/src/client/theme-default/components/VPMenuLink.vue b/src/client/theme-default/components/VPMenuLink.vue
index a4cebc10..249b7eee 100644
--- a/src/client/theme-default/components/VPMenuLink.vue
+++ b/src/client/theme-default/components/VPMenuLink.vue
@@ -1,15 +1,22 @@
@@ -20,11 +27,11 @@ defineOptions({ inheritAttrs: false })
:class="{
active: isActive(
page.relativePath,
- item.activeMatch || item.link,
+ item.activeMatch || href,
!!item.activeMatch
)
}"
- :href="item.link"
+ :href
:target="item.target"
:rel="item.rel"
:no-icon="item.noIcon"
diff --git a/src/client/theme-default/components/VPNavBarMenuGroup.vue b/src/client/theme-default/components/VPNavBarMenuGroup.vue
index 12e8cf6f..76cd42c5 100644
--- a/src/client/theme-default/components/VPNavBarMenuGroup.vue
+++ b/src/client/theme-default/components/VPNavBarMenuGroup.vue
@@ -17,7 +17,7 @@ const isChildActive = (navItem: DefaultTheme.NavItem) => {
if ('link' in navItem) {
return isActive(
page.value.relativePath,
- navItem.link,
+ typeof navItem.link === "function" ? navItem.link(page.value) : navItem.link,
!!props.item.activeMatch
)
}
diff --git a/src/client/theme-default/components/VPNavBarMenuLink.vue b/src/client/theme-default/components/VPNavBarMenuLink.vue
index 6f504791..e9869e1f 100644
--- a/src/client/theme-default/components/VPNavBarMenuLink.vue
+++ b/src/client/theme-default/components/VPNavBarMenuLink.vue
@@ -1,14 +1,21 @@
@@ -17,11 +24,11 @@ const { page } = useData()
VPNavBarMenuLink: true,
active: isActive(
page.relativePath,
- item.activeMatch || item.link,
+ item.activeMatch || href,
!!item.activeMatch
)
}"
- :href="item.link"
+ :href
:target="item.target"
:rel="item.rel"
:no-icon="item.noIcon"
diff --git a/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue b/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue
index 7633a8bb..32e97c83 100644
--- a/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue
+++ b/src/client/theme-default/components/VPNavScreenMenuGroupLink.vue
@@ -1,20 +1,29 @@