diff --git a/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue b/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue
index 12207764..c286640b 100644
--- a/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue
+++ b/__tests__/e2e/.vitepress/theme/components/ApiPreference.vue
@@ -30,7 +30,7 @@ function removeSpaces(str: string) {
diff --git a/docs/en/reference/default-theme-config.md b/docs/en/reference/default-theme-config.md
index c8afc554..8f71d4af 100644
--- a/docs/en/reference/default-theme-config.md
+++ b/docs/en/reference/default-theme-config.md
@@ -457,3 +457,38 @@ Can be used to customize the label of the skip to content link. This link is sho
- Default: `false`
Whether to show an external link icon next to external links in markdown.
+
+## `useLayout`
+
+Returns layout-related data. The returned object has the following type:
+
+```ts
+interface {
+ isHome: ComputedRef
+
+ sidebar: ComputedRef
+ sidebarGroups: ComputedRef
+ hasSidebar: ComputedRef
+ isSidebarEnabled: ComputedRef
+
+ hasAside: ComputedRef
+ leftAside: ComputedRef
+
+ headers: ShallowRef
+ hasLocalNav: ComputedRef
+}
+```
+
+**Example:**
+
+```vue
+
+
+
+
-
-```
diff --git a/docs/en/reference/default-theme-team-page.md b/docs/en/reference/default-theme-team-page.md
index 29b071ff..6c37c6a7 100644
--- a/docs/en/reference/default-theme-team-page.md
+++ b/docs/en/reference/default-theme-team-page.md
@@ -53,12 +53,12 @@ const members = [
Say hello to our awesome team.
-
+
```
The above will display a team member in card looking element. It should display something similar to below.
-
+
`` component comes in 2 different sizes, `small` and `medium`. While it boils down to your preference, usually `small` size should fit better when used in doc page. Also, you may add more properties to each member such as adding "description" or "sponsor" button. Learn more about it in [``](#vpteammembers).
@@ -107,9 +107,7 @@ const members = [
team, some of whom have chosen to be featured below.
-
+
```
diff --git a/docs/en/reference/frontmatter-config.md b/docs/en/reference/frontmatter-config.md
index 955d4ad7..4d6f86c0 100644
--- a/docs/en/reference/frontmatter-config.md
+++ b/docs/en/reference/frontmatter-config.md
@@ -225,3 +225,16 @@ Then you can customize styles of this specific page in `.vitepress/theme/custom.
/* page-specific styles */
}
```
+
+### isHome
+
+- Type: `boolean`
+
+The default theme relies on checks like `frontmatter.layout === 'home'` to determine if the current page is the home page.\
+This is useful when you want to force show the home page elements in a custom layout.
+
+```yaml
+---
+isHome: true
+---
+```
diff --git a/docs/es/reference/default-theme-sidebar.md b/docs/es/reference/default-theme-sidebar.md
index cf2af04b..41cd5cac 100644
--- a/docs/es/reference/default-theme-sidebar.md
+++ b/docs/es/reference/default-theme-sidebar.md
@@ -181,36 +181,3 @@ export default {
}
}
```
-
-## `useSidebar`
-
-Devuelve datos relacionados con la barra lateral. El objeto devuelto tiene el siguiente tipo:
-
-```ts
-export interface DocSidebar {
- isOpen: Ref
- sidebar: ComputedRef
- sidebarGroups: ComputedRef
- hasSidebar: ComputedRef
- hasAside: ComputedRef
- leftAside: ComputedRef
- isSidebarEnabled: ComputedRef
- open: () => void
- close: () => void
- toggle: () => void
-}
-```
-
-**Exemplo:**
-
-```vue
-
-
-
-
Sólo visible cuando existe la barra lateral
-
-```
diff --git a/docs/es/reference/default-theme-team-page.md b/docs/es/reference/default-theme-team-page.md
index 1f6492a8..996e8f18 100644
--- a/docs/es/reference/default-theme-team-page.md
+++ b/docs/es/reference/default-theme-team-page.md
@@ -53,12 +53,12 @@ const members = [
Saluda a nuestro increible equipo.
-
+
```
El código anterior mostrará a un miembro del equipo en un elemento similar a una tarjeta. Debería mostrar algo similar a lo siguiente.
-
+
El componente `` viene en dos tamaños diferentes, pequeño `small` y médio `medium`. Si bien es una cuestión de preferencia, generalmente el tamaño `small` debería encajar mejor cuando se use en la página del documento. Además, puede agregar más propiedades a cada miembro, como agregar el botón "descripción" o "patrocinador". Obtenga más información sobre en [``](#vpteammembers).
@@ -107,9 +107,7 @@ const members = [
Algunos de los miembros han elegido aparecer a continuación.
-
+
```
diff --git a/docs/fa/reference/default-theme-sidebar.md b/docs/fa/reference/default-theme-sidebar.md
index cba65dff..96433c2d 100644
--- a/docs/fa/reference/default-theme-sidebar.md
+++ b/docs/fa/reference/default-theme-sidebar.md
@@ -178,38 +178,3 @@ export default {
}
}
```
-
-## `useSidebar` {#usesidebar}
-
-دادههای مربوط به نوار کناری را برمیگرداند. شیء برگردانده شده دارای نوعهای زیر است:
-
-```ts
-export interface DocSidebar {
- isOpen: Ref
- sidebar: ComputedRef
- sidebarGroups: ComputedRef
- hasSidebar: ComputedRef
- hasAside: ComputedRef
- leftAside: ComputedRef
- isSidebarEnabled: ComputedRef
- open: () => void
- close: () => void
- toggle: () => void
-}
-```
-
-**مثال:**
-
-```vue
-
-
-
-
فقط ن
-
-مایش داده شود زمانی که نوار کناری وجود دارد
-
-```
diff --git a/docs/fa/reference/default-theme-team-page.md b/docs/fa/reference/default-theme-team-page.md
index ccd9738d..57fc2814 100644
--- a/docs/fa/reference/default-theme-team-page.md
+++ b/docs/fa/reference/default-theme-team-page.md
@@ -53,12 +53,12 @@ const members = [
با سلام به تیم فوقالعادهی ما خوش آمدید.
-
+
```
بالا به صورت عنصری با شکل کارتی اعضای تیم را نمایش میدهد. باید به شکل زیر نمایش داده شود.
-
+
کامپوننت `` دارای دو اندازه مختلف، `small` و `medium` است. معمولاً اندازه `small` برای استفاده در صفحات مستندات مناسبتر است. همچنین میتوانید ویژگیهای بیشتری برای هر عضو اضافه کنید مانند "توضیحات" یا "دکمه حامی". جهت کسب اطلاعات بیشتر به [``](#vpteammembers) مراجعه کنید.
@@ -106,9 +106,7 @@ const members = [
توسعه ویتپرس توسط تیمی بینالمللی راهنمایی میشود، برخی از اعضا که انتخاب کردهاند تا در زیر نمایش داده شوند.
-
+
```
diff --git a/docs/ko/reference/default-theme-sidebar.md b/docs/ko/reference/default-theme-sidebar.md
index 21e19ccc..8e4709cd 100644
--- a/docs/ko/reference/default-theme-sidebar.md
+++ b/docs/ko/reference/default-theme-sidebar.md
@@ -180,36 +180,3 @@ export default {
}
}
```
-
-## `useSidebar`
-
-사이드바 관련 데이터를 반환합니다. 반환된 객체는 다음과 같은 타입을 가집니다:
-
-```ts
-export interface DocSidebar {
- isOpen: Ref
- sidebar: ComputedRef
- sidebarGroups: ComputedRef
- hasSidebar: ComputedRef
- hasAside: ComputedRef
- leftAside: ComputedRef
- isSidebarEnabled: ComputedRef
- open: () => void
- close: () => void
- toggle: () => void
-}
-```
-
-**예제:**
-
-```vue
-
-
-
-
사이드바가 있을 때만 보여줍니다
-
-```
diff --git a/docs/ko/reference/default-theme-team-page.md b/docs/ko/reference/default-theme-team-page.md
index 2123f349..b4fddb0f 100644
--- a/docs/ko/reference/default-theme-team-page.md
+++ b/docs/ko/reference/default-theme-team-page.md
@@ -53,12 +53,12 @@ const members = [
Say hello to our awesome team.
-
+
```
위 코드는 카드 형태의 엘리먼트로 팀 구성원을 표시합니다. 아래와 비슷한 형태로 표시됩니다.
-
+
`` 컴포넌트는 `small`과 `medium` 두 가지 크기로 제공됩니다. 개인의 선호도에 따라 선택할 수 있지만, 일반적으로 `small` 사이즈가 문서 페이지에 더 적합합니다. 또한, 각 구성원에 "설명"이나 "후원" 버튼과 같은 프로퍼티를 추가할 수도 있습니다. 자세한 내용은 [``](#vpteammembers)에서 확인할 수 있습니다.
@@ -107,9 +107,7 @@ const members = [
team, some of whom have chosen to be featured below.
-
+
```
diff --git a/docs/pt/reference/default-theme-sidebar.md b/docs/pt/reference/default-theme-sidebar.md
index 62c3b3b1..0d8baf8d 100644
--- a/docs/pt/reference/default-theme-sidebar.md
+++ b/docs/pt/reference/default-theme-sidebar.md
@@ -180,36 +180,3 @@ export default {
}
}
```
-
-## `useSidebar`
-
-Retorna dados relacionados à barra lateral. O objeto retornado tem o seguinte tipo:
-
-```ts
-export interface DocSidebar {
- isOpen: Ref
- sidebar: ComputedRef
- sidebarGroups: ComputedRef
- hasSidebar: ComputedRef
- hasAside: ComputedRef
- leftAside: ComputedRef
- isSidebarEnabled: ComputedRef
- open: () => void
- close: () => void
- toggle: () => void
-}
-```
-
-**Exemplo:**
-
-```vue
-
-
-
-
Visível apenas quando a barra lateral existe
-
-```
diff --git a/docs/pt/reference/default-theme-team-page.md b/docs/pt/reference/default-theme-team-page.md
index 1daa47a5..32a9db0d 100644
--- a/docs/pt/reference/default-theme-team-page.md
+++ b/docs/pt/reference/default-theme-team-page.md
@@ -53,12 +53,12 @@ const members = [
Diga olá à nossa equipe incrível.
-
+
```
O código acima exibirá um membro da equipe em um elemento tipo cartão. Ele deve exibir algo semelhante ao abaixo.
-
+
O componente `` vem em 2 tamanhos diferentes, pequeno `small` e médio `medium`. Enquanto é uma questão de preferência, geralmente o tamanho `small` deve encaixar melhor quando usado na página de documento. Além disso, você pode adicionar mais propriedades a cada membro, como adicionar o botão "descrição" ou "patrocinador". Saiba mais sobre em [``](#vpteammembers).
@@ -107,9 +107,7 @@ const members = [
alguns dos membros escolheram ser apresentados abaixo.
-
+
```
diff --git a/docs/ru/reference/default-theme-sidebar.md b/docs/ru/reference/default-theme-sidebar.md
index 92fd89c1..bdc6e338 100644
--- a/docs/ru/reference/default-theme-sidebar.md
+++ b/docs/ru/reference/default-theme-sidebar.md
@@ -178,36 +178,3 @@ export default {
}
}
```
-
-## `useSidebar` {#usesidebar}
-
-Возвращает данные, связанные с сайдбаром. Возвращаемый объект имеет следующий тип:
-
-```ts
-export interface DocSidebar {
- isOpen: Ref
- sidebar: ComputedRef
- sidebarGroups: ComputedRef
- hasSidebar: ComputedRef
- hasAside: ComputedRef
- leftAside: ComputedRef
- isSidebarEnabled: ComputedRef
- open: () => void
- close: () => void
- toggle: () => void
-}
-```
-
-**Пример:**
-
-```vue
-
-
-
-
Показывать только при наличии сайдбара
-
-```
diff --git a/docs/ru/reference/default-theme-team-page.md b/docs/ru/reference/default-theme-team-page.md
index 0eebaa24..615692bb 100644
--- a/docs/ru/reference/default-theme-team-page.md
+++ b/docs/ru/reference/default-theme-team-page.md
@@ -51,12 +51,12 @@ const members = [
# Поприветствуйте нашу замечательную команду
-
+
```
Вышеуказанное отобразит члена команды в виде карточки. Должно отобразиться что-то похожее на то, что показано ниже.
-
+
Компонент `` поставляется в двух различных размерах, `small` и `medium`. Хотя это зависит от ваших предпочтений, обычно размер `small` лучше подходит для использования на странице с макетом `doc`. Кроме того, вы можете добавить дополнительные свойства для карточки члена команды, например, добавить «описание» или кнопку «спонсировать». Подробнее об этом в секции [``](#vpteammembers).
@@ -104,7 +104,7 @@ layout: page
которой представлены ниже.
-
+
```
diff --git a/docs/zh/reference/default-theme-sidebar.md b/docs/zh/reference/default-theme-sidebar.md
index ba9a9adc..e353ef78 100644
--- a/docs/zh/reference/default-theme-sidebar.md
+++ b/docs/zh/reference/default-theme-sidebar.md
@@ -178,36 +178,3 @@ export default {
}
}
```
-
-## `useSidebar`
-
-返回侧边栏相关数据。返回的对象具有以下类型:
-
-```ts
-export interface DocSidebar {
- isOpen: Ref
- sidebar: ComputedRef
- sidebarGroups: ComputedRef
- hasSidebar: ComputedRef
- hasAside: ComputedRef
- leftAside: ComputedRef
- isSidebarEnabled: ComputedRef
- open: () => void
- close: () => void
- toggle: () => void
-}
-```
-
-**示例:**
-
-```vue
-
-
-
-
Only show when sidebar exists
-
-```
diff --git a/docs/zh/reference/default-theme-team-page.md b/docs/zh/reference/default-theme-team-page.md
index 0341f0f2..9f155cf2 100644
--- a/docs/zh/reference/default-theme-team-page.md
+++ b/docs/zh/reference/default-theme-team-page.md
@@ -53,12 +53,12 @@ const members = [
Say hello to our awesome team.
-
+
```
以上将在卡片外观元素中显示团队成员。它应该显示类似于下面的内容。
-
+
`` 组件有 2 种不同的尺寸,`small` 和 `medium`。虽然它取决于你的偏好,但通常尺寸在文档页面中使用时 `small` 应该更适合。此外,你可以为每个成员添加更多属性,例如添加“描述”或“赞助”按钮。在 [``](#vpteammembers) 中了解更多信息。
@@ -107,9 +107,7 @@ const members = [
team, some of whom have chosen to be featured below.
-
+
```
diff --git a/src/client/app/utils.ts b/src/client/app/utils.ts
index 53ef6e51..b734179c 100644
--- a/src/client/app/utils.ts
+++ b/src/client/app/utils.ts
@@ -1,10 +1,5 @@
-import {
- h,
- onMounted,
- onUnmounted,
- shallowRef,
- type AsyncComponentLoader
-} from 'vue'
+import { tryOnUnmounted } from '@vueuse/core'
+import { h, onMounted, shallowRef, type AsyncComponentLoader } from 'vue'
import {
EXTERNAL_URL_RE,
inBrowser,
@@ -81,7 +76,7 @@ export let contentUpdatedCallbacks: (() => any)[] = []
*/
export function onContentUpdated(fn: () => any) {
contentUpdatedCallbacks.push(fn)
- onUnmounted(() => {
+ tryOnUnmounted(() => {
contentUpdatedCallbacks = contentUpdatedCallbacks.filter((f) => f !== fn)
})
}
diff --git a/src/client/theme-default/Layout.vue b/src/client/theme-default/Layout.vue
index 69284148..30ebe491 100644
--- a/src/client/theme-default/Layout.vue
+++ b/src/client/theme-default/Layout.vue
@@ -1,6 +1,5 @@
-