diff --git a/docs/.vuepress/notes.ts b/docs/.vuepress/notes.ts
index 4dc04907..cfc2f91c 100644
--- a/docs/.vuepress/notes.ts
+++ b/docs/.vuepress/notes.ts
@@ -62,7 +62,7 @@ export const zhNotes = definePlumeNotesConfig({
text: '自定义',
icon: 'material-symbols:dashboard-customize-outline-rounded',
collapsed: false,
- items: ['自定义首页', '自定义样式'],
+ items: ['自定义首页', '自定义样式', '布局插槽', '组件覆写'],
},
{
text: 'API',
@@ -97,7 +97,7 @@ export const zhNotes = definePlumeNotesConfig({
text: '内置插件',
dir: 'plugins',
collapsed: false,
- items: ['', '代码高亮', '搜索', '阅读统计', 'markdown增强', 'markdownPower', '百度统计'],
+ items: ['', '代码高亮', '搜索', '阅读统计', 'markdown增强', 'markdownPower', '百度统计', '水印'],
},
],
},
diff --git a/docs/notes/theme/config/frontmatter/basic.md b/docs/notes/theme/config/frontmatter/basic.md
index 1779995a..96052ff0 100644
--- a/docs/notes/theme/config/frontmatter/basic.md
+++ b/docs/notes/theme/config/frontmatter/basic.md
@@ -22,60 +22,114 @@ permalink: /config/frontmatter/basic/
## 配置
+### pageLayout
+
+- 类型: `false | 'home' | 'doc' | 'custom' | 'page' | 'friends' | string`
+- 默认值: `doc`
+- 详情:
+
+ 页面布局方式。
+
+ - `'home'`: 主页布局
+ - `'doc'`: 文章页布局,包括左侧侧边栏、文章内容、右侧侧边栏、导航栏、评论等
+ - `'page'`: 仅包含导航栏 和 MD 文件内容,可以使用此布局方式自定义页面内容
+ - `'friends'`: 友链页布局
+ - `'custom'`: 仅包含 MD 文件内容,可以使用此布局方式完全自定义页面内容
+ - `false`: 等同于 `custom`
+ - `string`: 可以传入一个全局组件组件名,该组件将被应用为布局组件
+
+### pageClass
+
+- 类型: `string`
+- 默认值: `''`
+- 详情:
+
+ 自定义页面额外的 类名。
+
### title
-文章标题。
+- 类型: `string`
+- 默认值: `''`
+- 详情:
-主题会在文件创建时,自动填充 当前文件名作为 文章标题。
+ 文章标题。
+
+ 主题会在文件创建时,自动填充 当前文件名作为 文章标题。
### author
-文章作者。
+- 类型: `string`
+- 默认值: `''`
+- 详情:
-主题会在文件创建时,自动填充 `avatar.name || packageJson.author` 作为 文章作者。
+ 文章作者。
+
+ 主题会在文件创建时,自动填充 `avatar.name || packageJson.author` 作为 文章作者。
### createTime
-文章创建时间。
+- 类型: `string`
+- 默认值: `''`
+- 详情:
-主题会在文件创建时,自动填充 当前时间作为 文章创建时间。
+ 文章创建时间。
+
+ 主题会在文件创建时,自动填充 当前时间作为 文章创建时间。
### permalink
-文章永久链接。
+- 类型: `string`
+- 默认值: `''`
+- 详情:
-主题会在文件创建时:
+ 文章永久链接。
-- 博客类型的文章,自动填充 `/article/` + `nanoid 生成的 6 位随机字符串` 作为 文章永久链接
-- notes 目录下的文章,会根据 notes 的配置,自动填充 文章永久链接
+ 主题会在文件创建时:
-### externalLink
+ - 博客类型的文章,自动填充 `/article/` + `nanoid 生成的 6 位随机字符串` 作为 文章永久链接
+ - notes 目录下的文章,会根据 notes 的配置,自动填充 文章永久链接
+
+### externalLinkIcon
- 类型: `boolean`
- 默认值: `true`
+- 详情:
-当前文章内的 外部链接是否显示 外部链接图标。
+ 当前文章内的 外部链接是否显示 外部链接图标。
### backToTop
- 类型: `boolean`
- 默认值: `true`
+- 详情:
-当前文章是否 显示 回到顶部 的按钮。
+ 当前文章是否 显示 回到顶部 的按钮。
### comments
- 类型: `boolean`
- 默认值: `true`
+- 详情:
-当前文章是否 可评论。 仅在启用了评论功能的情况下生效。
+ 当前文章是否 可评论。 仅在启用了评论功能的情况下生效。
### aside
+- 类型: `boolean | 'left'`
+- 默认值: `true`
+- 详情:
+
+ 当前文章是否 显示 右侧边栏。
+
+ 当设置为 `'left'` 时,右侧边栏将显示在左侧。
+
+### navbar
+
- 类型: `boolean`
- 默认值: `true`
+- 详情:
-当前文章是否 显示 右侧边栏。
+ 当前文章是否 显示 导航栏。
### outline
@@ -95,69 +149,65 @@ permalink: /config/frontmatter/basic/
- 类型: `string | { text: string, link: string, icon?: string }`
- 默认值: `''`
+- 详情:
-自定义当前文章的上一篇文章。
+ 自定义当前文章的上一篇文章。
-- 博客类型的文章,主题根据时间排序,自动填充上一篇文章的标题和链接。
-- notes 类型的文章,主题根据 note sidebar 配置,自动填充上一篇文章的标题和链接。
+ - 博客类型的文章,主题根据时间排序,自动填充上一篇文章的标题和链接。
+ - notes 类型的文章,主题根据 note sidebar 配置,自动填充上一篇文章的标题和链接。
### next
- 类型: `string | { text: string, link: string, icon?: string }`
- 默认值: `''`
+- 详情:
-自定义当前文章的下一篇文章。
+ 自定义当前文章的下一篇文章。
-- 博客类型的文章,主题根据时间排序,自动填充下一篇文章的标题和链接。
-- notes 类型的文章,主题根据 note sidebar 配置,自动填充下一篇文章的标题和链接。
+ - 博客类型的文章,主题根据时间排序,自动填充下一篇文章的标题和链接。
+ - notes 类型的文章,主题根据 note sidebar 配置,自动填充下一篇文章的标题和链接。
### readingTime
- 类型: `boolean`
- 默认值: `true`
+- 详情:
-当前文章是否 显示 阅读时长。
+ 当前文章是否 显示 阅读时长。
### lastUpdated
- 类型: `boolean`
- 默认值: `true`
+- 详情:
-当前文章是否 显示 最后更新时间。 最后更新时间 根据 git 提交时间自动填充。
+ 当前文章是否 显示 最后更新时间。 最后更新时间 根据 git 提交时间自动填充。
### contributors
- 类型: `boolean`
- 默认值: `true`
+- 详情:
-当前文章是否 显示 贡献者。 贡献者 根据 git 提交者自动填充。
+ 当前文章是否 显示 贡献者。 贡献者 根据 git 提交者自动填充。
### editLink
- 类型: `boolean`
- 默认值: `true`
+- 详情:
-当前文章是否 显示 文章编辑 按钮。
+ 当前文章是否 显示 文章编辑 按钮。
### watermark
-- 类型: `boolean | WatermarkConfig`
+- 类型: `boolean | WatermarkOptions`
- 默认值: `undefined` 主题不启用水印,或不启用全局水印时,默认值为 `false`,启用全局水印则为 `true`。
+- 详情:
+ 配置当前文章 水印。
-配置当前文章 水印。
+ 当类型为 boolean 时,表示是否启用水印。
-```ts
-interface WatermarkConfig {
- content?: string // 水印文字内容,可传入 html 内容
- textColor?: string // 水印文本颜色
- image?: string // 水印图片路径,优先于 content
- opacity?: number // 水印透明度
- rotate?: number // 水印旋转角度
- width?: number // 水印宽度
- height?: number // 水印高度
- gapX?: number // 水印横向间距
- gapY?: number // 水印纵向间距
- fullPage?: boolean // 是否全屏
- onlyPrint?: boolean // 是否仅在打印时显示
-}
-```
+ 当类型为 WatermarkOptions 时,表示当前页面水印配置。
+
+ 可以参考 [watermark-js-plus](https://zhensherlock.github.io/watermark-js-plus/zh/config/) 。
diff --git a/docs/notes/theme/config/frontmatter/friend.md b/docs/notes/theme/config/frontmatter/friend.md
index 900192ce..755d516c 100644
--- a/docs/notes/theme/config/frontmatter/friend.md
+++ b/docs/notes/theme/config/frontmatter/friend.md
@@ -13,7 +13,7 @@ permalink: /config/frontmatter/friends/
```md
---
-friends: true
+pageLayout: friends
title: 友情链接
list:
-
@@ -26,12 +26,20 @@ list:
## 配置
-### friends
+### friends
- 类型: `boolean`
- 默认值: `false`
+- 详情:
-当前页面是否为友情链接页。
+ 当前页面是否为友情链接页。
+
+### pageLayout
+
+- 类型:`'friends'`
+- 详情:
+
+ 声明当前页面为 友情链接页。
### title
diff --git a/docs/notes/theme/config/frontmatter/home.md b/docs/notes/theme/config/frontmatter/home.md
index c43062e5..d2447537 100644
--- a/docs/notes/theme/config/frontmatter/home.md
+++ b/docs/notes/theme/config/frontmatter/home.md
@@ -22,11 +22,21 @@ config:
## 配置
-### home
+### home
- 类型: `boolean`
+- 详情:
-声明是否为 首页
+ 声明是否为 首页。
+
+ 已弃用,请使用 `pageLayout: 'home'` 代替。
+
+### pageLayout
+
+- 类型:`'home'`
+- 详情:
+
+ 声明当前页面为 首页。
### config
diff --git a/docs/notes/theme/config/plugins/代码高亮.md b/docs/notes/theme/config/plugins/代码高亮.md
index e16cc4fe..3a0e22d3 100644
--- a/docs/notes/theme/config/plugins/代码高亮.md
+++ b/docs/notes/theme/config/plugins/代码高亮.md
@@ -25,7 +25,7 @@ Shiki 支持多种编程语言。
- [代码对比差异](/guide/markdown/extensions/#代码块中的颜色差异)
- [代码高亮“错误”和“警告”](/guide/markdown/extensions/#高亮-错误-和-警告)
- [代码词高亮](/guide/markdown/extensions/#代码块中-词高亮)
-- [twoslash](/guide/markdown/experiment/#twoslash) ,在代码块内提供内联类型提示。
+- [twoslash](/guide/markdown/experiment/#twoslash) ,在代码块内提供内联类型提示。
默认配置:
diff --git a/docs/notes/theme/config/plugins/搜索.md b/docs/notes/theme/config/plugins/搜索.md
index 2e446a47..e2da8505 100644
--- a/docs/notes/theme/config/plugins/搜索.md
+++ b/docs/notes/theme/config/plugins/搜索.md
@@ -73,7 +73,7 @@ interface SearchBoxLocale {
使用 [Algolia DocSearch](https://docsearch.algolia.com/) 提供支持的网站内容搜索插件
-关联插件:[@vuepress/plugin-docsearch](https://ecosystem.vuejs.press/zh/plugins/docsearch.html)
+关联插件:[@vuepress/plugin-docsearch](https://ecosystem.vuejs.press/zh/plugins/search/docsearch.html)
查看 [Algolia DocSearch 参考](/guide/features/content-search/#algolia-docsearch) 获取更多信息。
diff --git a/docs/notes/theme/config/plugins/水印.md b/docs/notes/theme/config/plugins/水印.md
new file mode 100644
index 00000000..83931748
--- /dev/null
+++ b/docs/notes/theme/config/plugins/水印.md
@@ -0,0 +1,80 @@
+---
+title: 水印
+author: Plume Theme
+createTime: 2024/06/17 15:37:18
+permalink: /config/watermark/
+---
+
+## 概述
+
+主题内置的 水印插件,为 全站,或者 单个页面 添加水印。
+
+关联插件:[@vuepress/plugin-watermark](https://ecosystem.vuejs.press/zh/plugins/features/watermark.html)
+
+## 配置项
+
+### enabled
+
+- 类型: `boolean | ((page: Page) => boolean)`
+
+- 默认值: `false`
+
+- 详情:
+
+ 指定哪些页面需要添加水印。
+
+ 拥有 `true` 值的页面将会被添加水印。
+
+### watermarkOptions
+
+- 类型: `WatermarkOptions`
+
+- 默认值: `undefined`
+
+- 详情: 配置项请参考 [watermark-js-plus](https://zhensherlock.github.io/watermark-js-plus/zh/config/)。
+
+#### watermarkOptions.parent
+
+- 类型: `string`
+
+- 默认值: `body`
+
+- 详情:添加水印的父元素选择器。
+
+ 默认插入到 body 中,可以指定插入到页面的某个元素中。
+
+### delay
+
+- 类型: `number`
+
+- 默认值: `500`
+
+- 详情:添加水印的延时。以毫秒为单位。
+
+ 延迟时间取决于页面过渡动画时间,可以根据实际情况调整。
+
+ 如果水印的父元素在切换页面时被重新渲染,那么延迟时间应该比页面过渡时间长一些。
+
+## Frontmatter
+
+### watermark
+
+- 类型: `boolean | WatermarkOptions`
+
+- 详情:
+
+ 当类型为 `boolean` 时,表示是否启用水印。
+
+ 当类型为 `WatermarkOptions` 时,表示当前页面水印配置。
+
+ 可以参考 [watermark-js-plus](https://zhensherlock.github.io/watermark-js-plus/zh/config/) 。
+
+```md
+---
+watermark:
+ width: 200
+ height: 200
+ content: Your content
+ opacity: 0.5
+---
+```
diff --git a/docs/notes/theme/config/plugins/阅读统计.md b/docs/notes/theme/config/plugins/阅读统计.md
index 9c513054..a6fa23d4 100644
--- a/docs/notes/theme/config/plugins/阅读统计.md
+++ b/docs/notes/theme/config/plugins/阅读统计.md
@@ -1,6 +1,6 @@
---
title: 阅读统计
-author: pengzhan
+author: pengzhanbo
createTime: 2024/03/06 15:23:39
permalink: /config/plugins/reading-time/
---
@@ -9,7 +9,7 @@ permalink: /config/plugins/reading-time/
为每个页面生成字数统计与预计阅读时间。
-关联插件: [@vuepress/plugin-reading-time](https://ecosystem.vuejs.press/zh/plugins/reading-time.html)
+关联插件: [@vuepress/plugin-reading-time](https://ecosystem.vuejs.press/zh/plugins/search/docsearch.html)
默认配置:
diff --git a/docs/notes/theme/config/主题配置.md b/docs/notes/theme/config/主题配置.md
index e461269c..ef07513e 100644
--- a/docs/notes/theme/config/主题配置.md
+++ b/docs/notes/theme/config/主题配置.md
@@ -142,25 +142,29 @@ interface BlogOptions {
- 默认值: `'Appearance'`
- 详情: 导航栏中的主题切换按钮的文本。
-### avatar
+### avatar
-- 类型: `PlumeThemeAvatar`
+弃用,请使用 [profile](#profile)。
+
+### profile
+
+- 类型: `PlumeThemeProfile`
- 默认值: `{}`
- 详情:配置站点博主的个人信息
- - `avatar.url`: 头像地址,用于右侧博主信息展示
- - `avatar.name`: 名称, 用于右侧博主信息展示
- - `avatar.description`: 个人描述,用于右侧博主信息展示
- - `avatar.circle`: 是否为圆形头像
- - `avatar.location`: 用户地理位置
- - `avatar.organization`: 用户所在组织/公司
+ - `profile.avatar`: 头像地址,用于右侧博主信息展示
+ - `profile.name`: 名称, 用于右侧博主信息展示
+ - `profile.description`: 个人描述,用于右侧博主信息展示
+ - `profile.circle`: 是否为圆形头像
+ - `profile.location`: 用户地理位置
+ - `profile.organization`: 用户所在组织/公司
示例:
``` ts
export default {
theme: themePlume({
- avatar: {
- url: '/avatar.jpg',
+ profile: {
+ avatar: '/avatar.jpg',
name: '张三',
description: '此处无银三百两,隔壁王二不曾偷',
circle: true,
@@ -400,12 +404,6 @@ type NavItem = string | {
移动设备下的导航栏中大纲标题的文字
-### repo
-
-- 类型: `string`
-- 默认值: `''`
-- 详情: 仓库配置
-
### editLink
- 类型: `boolean`
@@ -509,78 +507,3 @@ interface NotFound {
linkText?: string
}
```
-
-### watermark
-
-- 类型: `boolean | WatermarkOptions`
-- 默认值: `false`
-- 详情: 文章水印配置
-
-```ts
-interface WatermarkOptions {
- /**
- * 是否全局启用, 在不全局启用时,可以通过 `frontmatter.watermark` 为当前页面启用
- * @default false
- */
- global?: boolean
- /**
- * 非全局启用时,可以通过该字段根据文件路径或页面链接 进行匹配, 来启用水印。
- * 以 `^` 的将被认为为类似于正则表达式进行匹配。
- */
- matches?: string | string[]
- /**
- * 水印之间的水平间隔
- * @default 0
- */
- gapX?: number
- /**
- * 水印之间的垂直间隔
- * @default 0
- */
- gapY?: number
-
- /**
- * 图片水印的内容,如果与 content 同时传入,优先使用图片水印
- */
- image?: PlumeThemeImage
- /**
- * 水印宽度
- * @default 100
- */
- width?: number
- /**
- * 水印高度
- * @default 100
- */
- height?: number
- /**
- * 水印旋转角度
- * @default -22
- */
- rotate?: number
- /**
- * 水印的内容,如果与 image 同时传入,优先使用图片水印
- */
- content?: string
- /**
- * 水印是否全屏显示
- */
- fullPage?: boolean
- /**
- * 水印透明度
- * @default 0.1
- */
- opacity?: number
-
- /**
- * 水印的文本颜色
- */
- textColor?: string | { dark: string, light: string }
-
- /**
- * 是否只在打印时显示
- * @default false
- */
- onlyPrint?: boolean
-}
-```
diff --git a/docs/notes/theme/guide/api-客户端.md b/docs/notes/theme/guide/api-客户端.md
index 5710bcec..7c62ba35 100644
--- a/docs/notes/theme/guide/api-客户端.md
+++ b/docs/notes/theme/guide/api-客户端.md
@@ -9,32 +9,119 @@ permalink: /guide/api/client/
## 使用
```ts
-import { useDarkMode } from 'vuepress-theme-plume/client'
+import { Layout } from 'vuepress-theme-plume/client'
```
-## `useDarkMode()`
+## 布局组件
-- 类型: `() => Ref`
-
-Composable `useDarkMode()` 用于获取当前的 `dark` 状态。
+- ``: 页面布局组件
+- `` : 404 页面布局组件
```ts
-import { useDarkMode } from 'vuepress-theme-plume/client'
-
-const isDark = useDarkMode()
+import { Layout, NotFound } from 'vuepress-theme-plume/client'
```
-## ``
+## 通用组件
-- 类型:`Component`
+- `` : 链接组件
+- ``: 按钮组件
+- ``: 图标组件
+- ``: 徽标组件
+- ``: 图片组件
+- ``: 首页布局组件
-自定义首页时,提供给 区域 的 包装容器。
+更多其他组件请查看 [源代码](https://github.com/pengzhanbo/vuepress-theme-plume/tree/main/theme/src/client/components)
-### Props
+```ts
+import VPLink from 'vuepress-theme-plume/components/VPLink.vue'
+import VPButton from 'vuepress-theme-plume/components/VPButton.vue'
+```
-| 名称 | 类型 | 默认值 | 说明 |
-| --------------------- | ------------------ | --------- | ---------------- |
-| type | string | `''` | 区域类型 |
-| full | boolean | `false` | 是否全屏 |
-| background-image | string | `''` | 区域背景图片 |
-| background-attachment | `'fixed'\|'local'` | `'local'` | 区域背景定位方式 |
+## 组合式 API
+
+### `useDarkMode()`
+
+- 类型: `() => Ref`
+- 详情:
+
+ 获取 是否是深色模式的响应式数据。
+
+```ts
+import { useDarkMode } from 'vuepress-theme-plume/composables'
+
+const isDark = useDarkMode()
+
+// 切换为深色模式
+isDark.value = true
+// 切换为浅色模式
+isDark.value = false
+```
+
+### `useData()`
+
+- 类型: `() => Data`
+- 详情:
+
+ 获取 主题 的各项响应式数据。
+
+```ts
+interface Data {
+ // 主题配置
+ theme: ThemeLocaleDataRef
+ // 当前页面数据
+ page: PageDataRef
+ // 当前 页面 frontmatter
+ frontmatter: PageFrontmatterRef>
+ // 当前语言
+ lang: Ref
+ // 站点数据
+ site: SiteLocaleDataRef
+ // 是否是深色模式
+ isDark: Ref
+}
+```
+
+```ts
+import { useData } from 'vuepress-theme-plume/composables'
+
+const { site, page, frontmatter, isDark, lang } = useData()
+
+// 当前页面标题
+console.log(frontmatter.value.title)
+```
+
+### `useLocalePostList()`
+
+- 类型: `() => Ref`
+- 详情:
+
+ 获取 文章列表的响应式数据。
+
+```ts
+interface PostItem {
+ path: string
+ title: string
+ excerpt: string
+ tags: string[]
+ sticky: boolean
+ categoryList: CategoryItem[]
+ createTime: string
+ lang: string
+ encrypt?: boolean
+}
+
+interface CategoryItem {
+ type: string | number
+ name: string
+}
+```
+
+```ts
+import { useLocalePostList } from 'vuepress-theme-plume/composables'
+
+const postList = useLocalePostList()
+```
+
+### 更多
+
+其它 组合式 API 请查看 [源代码](https://github.com/pengzhanbo/vuepress-theme-plume/tree/main/theme/src/client/composables) 。
diff --git a/docs/notes/theme/guide/功能/组件.md b/docs/notes/theme/guide/功能/组件.md
index 459e1df0..05d10baa 100644
--- a/docs/notes/theme/guide/功能/组件.md
+++ b/docs/notes/theme/guide/功能/组件.md
@@ -3,6 +3,7 @@ title: 组件
author: pengzhanbo
icon: radix-icons:component-2
createTime: 2024/03/06 09:42:42
+outline: 2
permalink: /guide/features/component/
---
@@ -16,12 +17,10 @@ permalink: /guide/features/component/
### Props
-- `type`
- - 类型: `'info' | 'tip' | 'warning' | 'danger'`
- - 默认值:`'tip'`
-- `text`
- - 类型:`string`
- - 默认值:`''`
+| 名称 | 类型 | 默认值 | 说明 |
+| ---- | ------------------------------------------ | ------- | ---- |
+| type | `'info' \| 'tip' \| 'warning' \| 'danger'` | `'tip'` | 类型 |
+| text | `string` | `''` | 文本 |
**输入:**
@@ -47,15 +46,11 @@ permalink: /guide/features/component/
### Props
-- `name`
- - 类型:`string`
- - 默认值:`''`
-- `color`
- - 类型:`string`
- - 默认值:`'currentColor'`
-- `size`
- - 类型:`string`
- - 默认值:`'1em'`
+| 名称 | 类型 | 默认值 | 说明 |
+| ----- | ------ | ---------------- | ---------- |
+| name | string | `''` | icon name |
+| color | string | `'currentcolor'` | icon color |
+| size | string | `'1em'` | icon size |
**输入:**
@@ -96,20 +91,11 @@ export default defineUserConfig({
### Props
-- `trigger`
- - 类型:`'hover' | 'click'`
- - 默认值:`'hover'`
- - 描述:鼠标悬停触发,或者点击触发
-
-- `mask`
- - 类型:`string | { light: string, dark: string }`
- - 默认值:`#000`
- - 描述:遮罩颜色
-
-- `color`
- - 类型:`string | { light: string, dark: string }`
- - 默认值:`#fff`
- - 描述:文本颜色
+| 名称 | 类型 | 默认值 | 说明 |
+| ------- | ------------------------------------------- | --------- | -------------------------- |
+| trigger | `'hover' \| 'click'` | `'hover'` | 鼠标悬停触发,或者点击触发 |
+| mask | `string \| { light: string, dark: string }` | `#000` | 遮罩颜色 |
+| color | `string \| { light: string, dark: string }` | `#fff` | 文本颜色 |
输入:
@@ -122,3 +108,18 @@ export default defineUserConfig({
- 鼠标悬停 - 悬停时可见
- 点击 - 点击时可见
+
+## ``
+
+- 类型:`Component`
+
+自定义首页时,提供给 区域 的 包装容器。
+
+### Props
+
+| 名称 | 类型 | 默认值 | 说明 |
+| --------------------- | ------------------ | --------- | ---------------- |
+| type | string | `''` | 区域类型 |
+| full | boolean | `false` | 是否全屏 |
+| background-image | string | `''` | 区域背景图片 |
+| background-attachment | `'fixed'\|'local'` | `'local'` | 区域背景定位方式 |
diff --git a/docs/notes/theme/guide/博客.md b/docs/notes/theme/guide/博客.md
index 474872a9..c529b4a0 100644
--- a/docs/notes/theme/guide/博客.md
+++ b/docs/notes/theme/guide/博客.md
@@ -6,6 +6,10 @@ createTime: 2024/03/04 19:16:40
permalink: /guide/blog/
---
+
+
## 概述
主题默认启用 博客功能,通常您无需进行额外的配置。
@@ -23,15 +27,18 @@ permalink: /guide/blog/
## 博主信息
-主题允许你展示博主的基本信息。
+主题支持展示博主的基本信息。
-::: center
-{style="max-width:250px;"}
-:::
+
+
+
### 配置
-你可以通过 `avatar` 属性来设置博主头像等相关信息。
+你可以通过 `profile` 属性来设置博主头像等相关信息。
::: code-tabs
@tab .vuepress/config.ts
@@ -39,10 +46,10 @@ permalink: /guide/blog/
```ts
export default defineUserConfig({
theme: plumeTheme({
- avatar: {
- url: '/blogger.png',
- name: 'Your name',
- description: 'Your description',
+ profile: {
+ name: '你的名字',
+ description: '描述文字',
+ avatar: '/blogger.png',
circle: true, // 是否为圆形头像
}
})
diff --git a/docs/notes/theme/guide/安装与使用.md b/docs/notes/theme/guide/安装与使用.md
index 7c412da4..030fc3d9 100644
--- a/docs/notes/theme/guide/安装与使用.md
+++ b/docs/notes/theme/guide/安装与使用.md
@@ -95,7 +95,7 @@ npm i -D vuepress-theme-plume @vuepress/bundler-vite@next
:::
:::warning
-主题当前版本 已适配至 `vuepress@2.0.0-rc.9`,你应该安装这个版本的 VuePress。
+主题当前版本 已适配至 `vuepress@2.0.0-rc.13`,你应该安装这个版本的 VuePress。
高于或低于这个版本,可能会存在潜在的兼容性问题。
:::
diff --git a/docs/notes/theme/guide/布局插槽.md b/docs/notes/theme/guide/布局插槽.md
new file mode 100644
index 00000000..10add777
--- /dev/null
+++ b/docs/notes/theme/guide/布局插槽.md
@@ -0,0 +1,127 @@
+---
+title: 布局插槽
+icon: ph:layout-duotone
+author: Plume Theme
+createTime: 2024/06/17 16:19:43
+permalink: /guide/layout-slots/
+---
+
+## 概述
+
+主题通过 `` 提供了 丰富的 布局插槽,可以通过这些插槽,在 页面 的不同位置注入内容。
+以便用户可以个性化的使用主题。
+
+## 使用
+
+首先,需要创建一个 客户端配置文件: `.vuepress/client.ts`:
+
+```ts
+import { defineClientConfig } from 'vuepress/client'
+import Layout from './layouts/Layout.vue'
+
+export default defineClientConfig({
+ layouts: {
+ Layout,
+ },
+})
+```
+
+然后,创建一个 `.vuepress/layouts/Layout.vue`,作为布局插槽的默认组件,在该组件中引入 当前主题的 `` 组件。
+
+```vue
+
+
+
+
+
+
+ 自定义内容
+
+
+
+
+
+
+```
+
+也可以使用 渲染函数 实现注入内容,在 `.vuepress/client.ts` 中:
+
+```ts
+import { defineClientConfig } from 'vuepress/client'
+import { h } from 'vue'
+import { Layout } from 'vuepress-theme-plume/client'
+import CustomContent from './components/CustomContent.vue'
+
+export default defineClientConfig({
+ layouts: {
+ Layout: () => h(Layout, null, {
+ 'page-bottom': () => h(CustomContent),
+ }),
+ },
+})
+```
+
+## 插槽
+
+主题支持以下插槽:
+
+- 当 `pageLayout: doc` 时:
+
+ - `doc-top`
+ - `doc-bottom`
+ - `doc-footer-before`
+ - `doc-before`
+ - `doc-after`
+ - `sidebar-nav-before`
+ - `sidebar-nav-after`
+ - `aside-top`
+ - `aside-bottom`
+ - `aside-outline-before`
+ - `aside-outline-after`
+
+- 当 `pageLayout: page` 时:
+
+ - `page-top`
+ - `page-bottom`
+
+- 在 博客页 中 (包括 文章列表页、标签页、归档页 均适用):
+
+ - `blog-top`
+ - `blog-bottom`
+ - `blog-aside-top`
+ - `blog-aside-bottom`
+ - `blog-extract-before`
+ - `blog-extract-after`
+
+- 在 博客文章列表页 中:
+
+ - `blog-post-list-before`
+ - `blog-post-list-after`
+ - `blog-post-list-pagination-after`
+
+- 在 博客标签页 中:
+
+ - `blog-tags-before`
+ - `blog-tags-after`
+
+- 在 博客归档页 中:
+
+ - `blog-archives-before`
+ - `blog-archives-after`
+
+- 总是启用:
+
+ - `layout-top`
+ - `layout-bottom`
+ - `nav-bar-title-before`
+ - `nav-bar-title-after`
+ - `nav-bar-content-before`
+ - `nav-bar-content-after`
+ - `nav-screen-content-before`
+ - `nav-screen-content-after`
diff --git a/docs/notes/theme/guide/组件覆写.md b/docs/notes/theme/guide/组件覆写.md
new file mode 100644
index 00000000..a32da440
--- /dev/null
+++ b/docs/notes/theme/guide/组件覆写.md
@@ -0,0 +1,43 @@
+---
+title: 组件覆写
+icon: carbon:cics-sit-overrides
+author: Plume Theme
+createTime: 2024/06/17 16:20:15
+permalink: /guide/component-overrides/
+---
+
+## 概述
+
+布局插槽十分实用,但有时候你可能会觉得它不够灵活。主题同样提供了单个组件覆写的能力。
+
+::: warning
+在使用此功能前,你应该首先熟悉本主题的源代码,了解 主题内置的各个组件,以便 安全的 覆写他们。
+
+主题的组件源代码托管在 [GitHub](https://github.com/pengzhanbo/vuepress-theme-plume/tree/main/theme/src/client/components),遵循 MIT 协议。
+:::
+
+## 使用
+
+主题将所有 非全局的组件 都注册了一个带 `@theme` 前缀的 [alias](https://v2.vuepress.vuejs.org/zh/reference/plugin-api.html#alias) 。
+例如,`VPFooter.vue` 的别名是 `@theme/VPFooter.vue` 。
+
+如果你想要覆写 `VPFooter.vue` 组件,只需要在配置文件 `.vuepress/config.ts` 中覆盖这个别名即可:
+
+```ts
+import { plumeTheme } from 'vuepress-theme-plume'
+import { getDirname, path } from 'vuepress/utils'
+import { defineUserConfig } from 'vuepress'
+
+const __dirname = getDirname(import.meta.url)
+
+export default defineUserConfig({
+ theme: plumeTheme(),
+
+ alias: {
+ '@theme/VPFooter.vue': path.resolve(
+ __dirname,
+ './components/MyFooter.vue',
+ ),
+ },
+})
+```
diff --git a/docs/notes/theme/guide/自定义首页.md b/docs/notes/theme/guide/自定义首页.md
index 4a6dda50..68746677 100644
--- a/docs/notes/theme/guide/自定义首页.md
+++ b/docs/notes/theme/guide/自定义首页.md
@@ -250,6 +250,21 @@ config:
进行可视化操作,生成配置内容,你可以直接复制它们用于自己的项目中。
:::
+主题还支持自定义 `name`, `tagline`, `text` 的颜色。
+
+通过 `CSS Vars` 进行配置。
+
+```css
+/* 默认设置,可以在 `index.css` 中覆盖 */
+:root {
+ /* home hero name 背景色,通过背景色裁剪的方式定义文本颜色,
+ 因此,可以设置渐变背景的方式使文本根据表现力 */
+ --vp-bg-home-hero-name: linear-gradient(315deg, var(--vp-c-purple-1) 15%, var(--vp-c-brand-2) 65%, var(--vp-c-brand-2) 100%);
+ --vp-c-home-hero-tagline: var(--vp-c-text-2);
+ --vp-c-home-hero-text: var(--vp-c-text-3);
+}
+```
+
### features
- 类型: `PlumeThemeHomeFeatures`