diff --git a/theme/src/client/components/BackToTop.vue b/theme/src/client/components/BackToTop.vue
new file mode 100644
index 00000000..e1a71c34
--- /dev/null
+++ b/theme/src/client/components/BackToTop.vue
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
diff --git a/theme/src/client/components/icons/IconBackToTop.vue b/theme/src/client/components/icons/IconBackToTop.vue
new file mode 100644
index 00000000..0151adb6
--- /dev/null
+++ b/theme/src/client/components/icons/IconBackToTop.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/theme/src/client/layouts/Layout.vue b/theme/src/client/layouts/Layout.vue
index 67806821..bc841307 100644
--- a/theme/src/client/layouts/Layout.vue
+++ b/theme/src/client/layouts/Layout.vue
@@ -14,6 +14,7 @@ import Page from '../components/Page.vue'
import Sidebar from '../components/Sidebar.vue'
import SkipLink from '../components/SkipLink.vue'
import VFooter from '../components/VFooter.vue'
+import BackToTop from '../components/BackToTop.vue'
import {
useCloseSidebarOnEscape,
useSidebar,
@@ -56,6 +57,7 @@ provide('is-sidebar-open', isSidebarOpen)
+
diff --git a/theme/src/shared/frontmatter.ts b/theme/src/shared/frontmatter.ts
index fed67553..04c537b0 100644
--- a/theme/src/shared/frontmatter.ts
+++ b/theme/src/shared/frontmatter.ts
@@ -26,6 +26,7 @@ export interface PlumeThemePageFrontmatter {
contributors?: boolean
prev?: string | NavItemWithLink
next?: string | NavItemWithLink
+ backToTop?: boolean
}
export interface PlumeThemePostFrontmatter extends PlumeThemePageFrontmatter {