From c0c312259291d364f7ce93519316b13a536d3a7a Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Sun, 31 Dec 2023 00:12:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20back-to-top?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- theme/src/client/components/BackToTop.vue | 174 ++++++++++++++++++ .../client/components/icons/IconBackToTop.vue | 3 + theme/src/client/layouts/Layout.vue | 2 + theme/src/shared/frontmatter.ts | 1 + 4 files changed, 180 insertions(+) create mode 100644 theme/src/client/components/BackToTop.vue create mode 100644 theme/src/client/components/icons/IconBackToTop.vue diff --git a/theme/src/client/components/BackToTop.vue b/theme/src/client/components/BackToTop.vue new file mode 100644 index 000000000..e1a71c340 --- /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 000000000..0151adb65 --- /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 678068213..bc8413077 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 fed67553e..04c537b02 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 {