Merge pull request #24 from pengzhanbo/rc-2

RC-2
This commit is contained in:
pengzhanbo 2023-12-24 02:23:30 +08:00 committed by GitHub
commit bb68f998a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 1407 additions and 880 deletions

View File

@ -31,6 +31,10 @@ export default defineUserConfig({
theme: themePlume({
logo: 'https://pengzhanbo.cn/g.gif',
hostname: 'https://pengzhanbo.cn',
repo: 'https://github.com/pengzhanbo/vuepress-theme-plume',
docsDir: 'docs',
editLink: true,
editLinkText: 'Edit this page on GitHub',
appearance: true,
avatar: {
url: '/images/blogger.jpg',

View File

@ -1,6 +1,8 @@
---
home: true
banner: /images/bg-home.jpg
bannerMask:
dark: 0.2
hero:
name: 鹏展博
tagline: 前端开发工程师

View File

@ -55,7 +55,7 @@ npm i @vuepress-plume/vuepress-theme-plume
// .vuepress/config.ts
import { defineUserConfig } from 'vuepress'
import { themePlume } from '@vuepress-plume/vuepress-theme-plume'
export default defineUserConfig({ // [!code focus]
export default defineUserConfig({
theme: themePlume({
// more...
})

View File

@ -58,6 +58,17 @@ markdown 增强 由 [vuepress-plugin-md-enhance](https://vuepress-theme-hope.git
警告内容
:::
- 危险
``` md
::: danger 危险
危险内容
:::
```
::: danger 危险
危险内容
`markdown`
:::
- 详情
``` md
::: details 详情
@ -68,6 +79,17 @@ markdown 增强 由 [vuepress-plugin-md-enhance](https://vuepress-theme-hope.git
详情信息
:::
- 重要
``` md
::: important 重要
重要内容
:::
```
::: important 重要
重要内容
:::
## 自定义对齐
- 左对齐

View File

@ -76,3 +76,18 @@ permalink: /note/vuepress-theme-plume/basis-power/
## 文章评论
支持文章评论。
## Badge
- <Badge type="info" text="info" />
- <Badge type="tip" text="Tip" />
- <Badge type="warning" text="Warning" />
- <Badge type="danger" text="Danger" />
````md
```js
export default function foo() {
console.log('foo'); // [\!code ++]
}
```
````

View File

@ -67,7 +67,7 @@
"husky": "^8.0.3",
"lint-staged": "^15.2.0",
"minimist": "^1.2.8",
"ora": "^7.0.1",
"ora": "^8.0.0",
"pnpm": "^8.12.1",
"prettier": "^3.1.1",
"prettier-config-vuepress": "^4.4.0",

View File

@ -1,4 +1,4 @@
# `@vuepress-plume/plugin-netlify-functions`
# `vuepress-plugin-netlify-functions`
If your vuepress site is deployed on `netlify` and you want to be able to use `netlify functions` for ` serverless`.
@ -24,7 +24,7 @@ You may need this plugin to provide support.
## Install
```
yarn add @vuepress-plume/plugin-netlify-functions
yarn add vuepress-plugin-netlify-functions
```
## Usage
@ -33,7 +33,7 @@ yarn add @vuepress-plume/plugin-netlify-functions
在 vuepress 项目中,或者在一个 vuepress 主题中
``` js
// .vuepress/config.js
import { netlifyFunctionsPlugin } from '@vuepress-plume/plugin-netlify-functions'
import { netlifyFunctionsPlugin } from 'vuepress-plugin-netlify-functions'
module.exports = {
//...
plugins: [
@ -47,7 +47,7 @@ yarn add @vuepress-plume/plugin-netlify-functions
在 vuepress plugin 中:
``` js
import { useNetlifyFunctionsPlugin } from '@vuepress-plume/plugin-netlify-functions'
import { useNetlifyFunctionsPlugin } from 'vuepress-plugin-netlify-functions'
const myPlugin = (): Plugin => {
return (app: App) => {

View File

@ -1,5 +1,5 @@
{
"name": "@vuepress-plume/plugin-netlify-functions",
"name": "vuepress-plugin-netlify-functions",
"version": "1.0.0-rc.1",
"description": "The Plugin for VuePres 2, Support Netlify Functions",
"keywords": [
@ -8,7 +8,7 @@
"netlify",
"netlify functions",
"netlifyFunctions",
"vuepress-plugin-plugin-netlify-functions"
"vuepress-plugin-netlify-functions"
],
"homepage": "https://github.com/pengzhanbo/vuepress-theme-plume#readme",
"bugs": {

View File

@ -78,7 +78,7 @@ export const netlifyFunctionsPlugin = (
let server: NetlifyServe
cache.options = opts
return {
name: '@vuepress-plume/plugin-netlify-functions',
name: 'vuepress-plugin-netlify-functions',
onInitialized: async (app) => {
// 启动netlify functions server

View File

@ -35,7 +35,7 @@ export const useNetlifyFunctionsPlugin = (
if (
!plugins.some(
(plugin: PluginObject) =>
plugin.name === '@vuepress-plume/plugin-netlify-functions'
plugin.name === 'vuepress-plugin-netlify-functions'
)
) {
app.use(netlifyFunctionsPlugin())

View File

@ -1,5 +1,5 @@
{
"name": "@vuepress-plume/plugin-page-collection",
"name": "plugin-page-collection",
"version": "1.0.0-rc.1",
"private": true,
"description": "The Plugin for VuePres 2",
@ -32,14 +32,14 @@
},
"dependencies": {
"@netlify/functions": "^2.4.1",
"@vuepress-plume/plugin-netlify-functions": "workspace:*",
"@vuepress/client": "2.0.0-rc.0",
"@vuepress/core": "2.0.0-rc.0",
"@vuepress/shared": "2.0.0-rc.0",
"@vuepress/utils": "2.0.0-rc.0",
"leancloud-storage": "^4.15.2",
"vue": "^3.3.13",
"vue-router": "4.2.5"
"vue-router": "4.2.5",
"vuepress-plugin-netlify-functions": "workspace:*"
},
"publishConfig": {
"access": "public"

View File

@ -4,11 +4,11 @@
*
*/
// 通过引入 '@vuepress-plume/plugin-netlify-functions' 插件,来为本插件提供
// 通过引入 'vuepress-plugin-netlify-functions' 插件,来为本插件提供
// netlify functions 开发时支持
import type { App, Plugin } from '@vuepress/core'
import { getDirname, path } from '@vuepress/utils'
import { useNetlifyFunctionsPlugin } from '@vuepress-plume/plugin-netlify-functions'
import { useNetlifyFunctionsPlugin } from 'vuepress-plugin-netlify-functions'
import type { PageCollectionOptions } from '../shared/index.js'
const __dirname = getDirname(import.meta.url)

View File

@ -116,7 +116,7 @@ export async function highlight(
return s.replace(
/(<span class="line highlighted">)(<\/span>)/g,
'$1<wbr>$2'
) + '\n'
).replace(/(\/\/\s*?\[)\\(!code.*?\])/g, '$1$2') + '\n'
}
str = removeMustache(str).trimEnd()
@ -125,13 +125,6 @@ export async function highlight(
lang,
transformers: [
...transformers,
// transformerCompactLineOptions(lineOptions),
// {
// name: 'vitepress:v-pre',
// pre(node) {
// if (vPre) node.properties['v-pre'] = ''
// }
// },
...userTransformers
],
meta: {

487
pnpm-lock.yaml generated
View File

@ -72,8 +72,8 @@ importers:
specifier: ^1.2.8
version: 1.2.8
ora:
specifier: ^7.0.1
version: 7.0.1
specifier: ^8.0.0
version: 8.0.0
pnpm:
specifier: ^8.12.1
version: 8.12.1
@ -345,9 +345,6 @@ importers:
'@netlify/functions':
specifier: ^2.4.1
version: 2.4.1
'@vuepress-plume/plugin-netlify-functions':
specifier: workspace:*
version: link:../plugin-netlify-functions
'@vuepress/client':
specifier: 2.0.0-rc.0
version: 2.0.0-rc.0(typescript@5.3.3)
@ -369,6 +366,9 @@ importers:
vue-router:
specifier: 4.2.5
version: 4.2.5(vue@3.3.13)
vuepress-plugin-netlify-functions:
specifier: workspace:*
version: link:../plugin-netlify-functions
plugins/plugin-shikiji:
dependencies:
@ -490,8 +490,8 @@ importers:
specifier: ^10.7.0
version: 10.7.0(vue@3.3.13)
date-fns:
specifier: ^3.0.5
version: 3.0.5
specifier: ^3.0.6
version: 3.0.6
lodash.merge:
specifier: ^4.6.2
version: 4.6.2
@ -508,20 +508,17 @@ importers:
specifier: 4.2.5
version: 4.2.5(vue@3.3.13)
vuepress-plugin-comment2:
specifier: 2.0.0-rc.0
version: 2.0.0-rc.0(typescript@5.3.3)
specifier: 2.0.0-rc.5
version: 2.0.0-rc.5(typescript@5.3.3)
vuepress-plugin-md-enhance:
specifier: 2.0.0-rc.0
version: 2.0.0-rc.0(@types/js-yaml@4.0.9)(typescript@5.3.3)
specifier: 2.0.0-rc.5
version: 2.0.0-rc.5(markdown-it@13.0.2)(typescript@5.3.3)
vuepress-plugin-seo2:
specifier: 2.0.0-rc.0
version: 2.0.0-rc.0(typescript@5.3.3)
specifier: 2.0.0-rc.5
version: 2.0.0-rc.5(typescript@5.3.3)
vuepress-plugin-sitemap2:
specifier: 2.0.0-rc.0
version: 2.0.0-rc.0(typescript@5.3.3)
windicss:
specifier: ^3.5.6
version: 3.5.6
specifier: 2.0.0-rc.5
version: 2.0.0-rc.5(typescript@5.3.3)
devDependencies:
'@types/lodash.merge':
specifier: ^4.6.9
@ -672,14 +669,6 @@ packages:
'@algolia/requester-common': 4.20.0
dev: false
/@ampproject/remapping@2.2.0:
resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==}
engines: {node: '>=6.0.0'}
dependencies:
'@jridgewell/gen-mapping': 0.1.1
'@jridgewell/trace-mapping': 0.3.18
dev: false
/@antfu/ni@0.21.12:
resolution: {integrity: sha512-2aDL3WUv8hMJb2L3r/PIQWsTLyq7RQr3v9xD16fiz6O8ys1xEyLhhTOv8gxtZvJiTzjTF5pHoArvRdesGL1DMQ==}
hasBin: true
@ -702,110 +691,6 @@ packages:
'@babel/highlight': 7.22.5
dev: true
/@babel/compat-data@7.22.9:
resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==}
engines: {node: '>=6.9.0'}
dev: false
/@babel/core@7.23.3:
resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==}
engines: {node: '>=6.9.0'}
dependencies:
'@ampproject/remapping': 2.2.0
'@babel/code-frame': 7.22.13
'@babel/generator': 7.23.3
'@babel/helper-compilation-targets': 7.22.15
'@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3)
'@babel/helpers': 7.23.2
'@babel/parser': 7.23.6
'@babel/template': 7.22.15
'@babel/traverse': 7.23.3
'@babel/types': 7.23.5
convert-source-map: 2.0.0
debug: 4.3.4(supports-color@9.2.2)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
dev: false
/@babel/generator@7.23.3:
resolution: {integrity: sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.5
'@jridgewell/gen-mapping': 0.3.2
'@jridgewell/trace-mapping': 0.3.18
jsesc: 2.5.2
dev: false
/@babel/helper-compilation-targets@7.22.15:
resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/compat-data': 7.22.9
'@babel/helper-validator-option': 7.22.15
browserslist: 4.22.1
lru-cache: 5.1.1
semver: 6.3.1
dev: false
/@babel/helper-environment-visitor@7.22.20:
resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
engines: {node: '>=6.9.0'}
dev: false
/@babel/helper-function-name@7.23.0:
resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/template': 7.22.15
'@babel/types': 7.23.5
dev: false
/@babel/helper-hoist-variables@7.22.5:
resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.5
dev: false
/@babel/helper-module-imports@7.22.15:
resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.5
dev: false
/@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3):
resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.23.3
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-module-imports': 7.22.15
'@babel/helper-simple-access': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/helper-validator-identifier': 7.22.20
dev: false
/@babel/helper-simple-access@7.22.5:
resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.5
dev: false
/@babel/helper-split-export-declaration@7.22.6:
resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/types': 7.23.5
dev: false
/@babel/helper-string-parser@7.23.4:
resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
engines: {node: '>=6.9.0'}
@ -820,22 +705,6 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/@babel/helper-validator-option@7.22.15:
resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==}
engines: {node: '>=6.9.0'}
dev: false
/@babel/helpers@7.23.2:
resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/template': 7.22.15
'@babel/traverse': 7.23.3
'@babel/types': 7.23.5
transitivePeerDependencies:
- supports-color
dev: false
/@babel/highlight@7.22.20:
resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==}
engines: {node: '>=6.9.0'}
@ -875,33 +744,6 @@ packages:
dependencies:
regenerator-runtime: 0.13.11
/@babel/template@7.22.15:
resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.22.13
'@babel/parser': 7.23.6
'@babel/types': 7.23.5
dev: false
/@babel/traverse@7.23.3:
resolution: {integrity: sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/code-frame': 7.22.13
'@babel/generator': 7.23.3
'@babel/helper-environment-visitor': 7.22.20
'@babel/helper-function-name': 7.23.0
'@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.6
'@babel/types': 7.23.5
debug: 4.3.4(supports-color@9.2.2)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
dev: false
/@babel/types@7.23.4:
resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==}
engines: {node: '>=6.9.0'}
@ -1994,14 +1836,6 @@ packages:
chalk: 4.1.2
dev: false
/@jridgewell/gen-mapping@0.1.1:
resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==}
engines: {node: '>=6.0.0'}
dependencies:
'@jridgewell/set-array': 1.1.2
'@jridgewell/sourcemap-codec': 1.4.15
dev: false
/@jridgewell/gen-mapping@0.3.2:
resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==}
engines: {node: '>=6.0.0'}
@ -2215,8 +2049,20 @@ packages:
resolution: {integrity: sha512-xeF5+sHLzRNF7plbksywKCph4qli20l72of2fMlZQQ7RECvXYrRkE9+bjRFQCyULC7B8ydUYbpbkux5xJlVWyw==}
dev: false
/@mdit/plugin-align@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-Grg8LuEaJpY74Imd7HEVUTQc8qaq9FM9ntuNILkikguyodBoz1UYEYH6iULaoKbp8N5HphoQh74jq9rTbPjdYQ==}
/@mdit/plugin-alert@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-Z+/bHBDniCz/Q+TMa3M6f47KG4tUKvJI8FHXhDwgbKLzDLn045ZBHcOTeqvuWrrjCIKBEo4fVAlYszYcehxmfg==}
peerDependencies:
markdown-it: ^13.0.2
peerDependenciesMeta:
markdown-it:
optional: true
dependencies:
'@types/markdown-it': 13.0.7
markdown-it: 13.0.2
dev: false
/@mdit/plugin-align@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-NYGrsnX1c84dtY1tugDVX71zxxfcGSIjWANzQ0/od4B0+N31eXkq3SXdAjCXOWUUHSa6phfvtok+x4V9ExQwHA==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2224,13 +2070,13 @@ packages:
markdown-it:
optional: true
dependencies:
'@mdit/plugin-container': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-container': 0.7.6(markdown-it@13.0.2)
'@types/markdown-it': 13.0.7
markdown-it: 13.0.2
dev: false
/@mdit/plugin-attrs@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-53CMAw/DJ7/bpDG4VVfB6Pq5wm77W6Suv1dFMb0WyfcM8u4nWbd0tCrIXlf0Gj4X/4C8oM5bGtOOLU/xxxgLUA==}
/@mdit/plugin-attrs@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-vTSsqZUXglZRQ4cLNou6N2cTLudHS01Tir+HPtrWkN+VB4VAIRlCKV3hf0vzKRM+HR3DSe+vQMrWzfnQdD0o4A==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2242,8 +2088,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-container@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-OEZv3vPzAGxH6OYHI1QVbn+yHdYap3T0ryG1Lzvd498Y4JHUGmHj69LWsKfSDmqKtVq/k4o/XbFwafxwQ/OFxQ==}
/@mdit/plugin-container@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-egEYoJLkar4hxrBfFf6tO3IfoLzeUHYChGRI3FA2fxiMwwyclPvBMMQTtG2rY3sjPy497Z86QiqYwjRM0qA8Mw==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2255,8 +2101,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-demo@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-lUx8fONmZYPg56UnEZjznPHaK/sTL5haY9uOjWCM+42WTKCVQrnsJcCMnJIKd88BROBSP+BdyHzrUxWR9ZSS2g==}
/@mdit/plugin-demo@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-pybxLVpIKYlxt7fgjHK4Zd6f/IMCjACB6eZmIIlow0eOnijRnikHdRDVkoyDOxcFuQvP0yvT6LWcQlhHF+CGwQ==}
peerDependencies:
markdown-it: ^13.0.2
peerDependenciesMeta:
@ -2267,8 +2113,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-figure@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-bwgOB3noaJ9CEWdQkIdpkCbxVdv+amS/KkmzeGxK/ut3vflyppeVSif/aiFX9Jo3Y3RZqe3xXajQ7E7bs9DGjQ==}
/@mdit/plugin-figure@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-ysH5O3WWuDrfxLWQO4wYXYGdo8oi+EbMQFgbaSTxhoPKTFf3HTovCn3RANn7qATBqmGP26zf0hY55mX9BFUu5A==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2280,8 +2126,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-footnote@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-71zsfKwI90NVmbBv4I1cD4alyFFuW46NLgx06rKTETOseLX5fkGxC4tta2KdZcY0Bd7dvFdZVtUv91in2I3rcg==}
/@mdit/plugin-footnote@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-fQvbi3+/Hm+k4GJptXCc5i0n9/+ZpQx4yqpjOTGGSUz1k22XU07YaK3wpL9w+nPAfcBfzD06D72Y+eDIG5wi8w==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2290,8 +2136,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-img-lazyload@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-Bed8x88W3boXEOtWDvADqLeJ4rbTxJgpHt882eycGbYGHD6Q4mtJnZOfT1GYrxiPpHtZTpxtGR1AkOV5gW3X0A==}
/@mdit/plugin-img-lazyload@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-BBgxlXCOO7+9TMHJXtUyvi48jlH4ZYQtC9lNfgu1rvmq56iblZ7etOzg61/CmXmLgMHNvCbb/Kx7gRLkOBhv6A==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2303,8 +2149,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-img-mark@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-qlD/9Kd6EJRdP4pRkg24RffMWsbBOGbwIJiDwFoDtSYO/z0UN3NEZTC603TjufP2lAb4Vqgkq4X1pkV14/28kw==}
/@mdit/plugin-img-mark@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-IhbkmTLbxr+c04ZQcSV2IFq8n1GeRFO08qQagkONUijI1O2G/RE2y6QvCVBUy0gB1Hc8c1i9vEyK1F0e4GpheQ==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2316,8 +2162,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-img-size@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-rPHt7dr/rlCxzGbBlL2hf8OtCT1F8nZw4MRXB971EX8gAjw1svrZKQBSwSppZt7MHzwPYRH1wRbO8kjhUh+7JQ==}
/@mdit/plugin-img-size@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-GZGEbuR0l4+ENXDG1Y2HsrNO2JuEmjI6PPe7pgsolk5yveWOiqzcEV4ushrWnpvwNal3Acuj+dpFDmZFOtm42g==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2329,8 +2175,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-include@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-2IJV+nhrLxMRKl4QcbyMrK1i8Yp4KfDXiadMJrxSSyZwHu9PP49a4DAbzaE2J2aVI0AvTkg/LLQRZqQkWKtCCA==}
/@mdit/plugin-include@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-4Pu0SdD2IOONLor/3GtQOYOBDv1xZ1LWByXLhht0kqEioX5D+aDZ5KD5MZ0AxH0xoNUGMynMEn/ak4/D9LLI7Q==}
peerDependencies:
markdown-it: ^13.0.2
peerDependenciesMeta:
@ -2342,8 +2188,8 @@ packages:
upath: 2.0.1
dev: false
/@mdit/plugin-katex@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-viAovlZhZTske9GqDEyMbibCebdykASJt0Yx182w6GjM4XNuuvsfDqWFe3yANQN7CMTNfYxfaJ/ZSO2UnEc5Lg==}
/@mdit/plugin-katex@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-ZbPIks1SlgzS5R6YOL5s0J5vk20ROl5hF+Yj9o6CiEljodK2ln0ewpX36qM6POVrS/cu6E4Lx4X0fc5JTI6nAQ==}
engines: {node: '>= 18'}
peerDependencies:
katex: ^0.16.9
@ -2354,14 +2200,14 @@ packages:
markdown-it:
optional: true
dependencies:
'@mdit/plugin-tex': 0.6.5(markdown-it@13.0.2)
'@types/katex': 0.16.6
'@mdit/plugin-tex': 0.7.6(markdown-it@13.0.2)
'@types/katex': 0.16.7
'@types/markdown-it': 13.0.7
markdown-it: 13.0.2
dev: false
/@mdit/plugin-mark@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-sXIDGlEqoH4iByXMmSW+kg/E/KO4bOv3lHbztu9MGBIIrdOtoZ6PcBNYTNEBynlCIMvLrwa3g7HKxAQT59fHkQ==}
/@mdit/plugin-mark@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-D9gv+ebVORa4r69t0JeJg3NW9gCR/NOGYa1DKYDEQOJoZ1WwjZVuhdxd3wCpLKtqDLnyHTFWd3cnV/HHrmca3w==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2373,8 +2219,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-mathjax@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-c2bslbe+z/cRd46aRzD/EumCdUejP49sCwwTAxB7JWjwiDCWO882q/OICrrqjWk+j7qxBFe0lFQwRXWHthCPGg==}
/@mdit/plugin-mathjax@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-Sn3nYbkPftAF5tgemIJ1aClxgU4NnElHPV5PIgkMxwusaSsN4RB+GZ1NmTKrPUqVoIZi0pO1oYxy08TlIHcrPg==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2385,14 +2231,14 @@ packages:
mathjax-full:
optional: true
dependencies:
'@mdit/plugin-tex': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-tex': 0.7.6(markdown-it@13.0.2)
'@types/markdown-it': 13.0.7
markdown-it: 13.0.2
upath: 2.0.1
dev: false
/@mdit/plugin-stylize@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-qQJAzY4FpNeYZk9Wqb0qjtAaJd4aqllmXRts9TpfqGlpdH1HPiSPy+qAq4hs1OnMwimerlJ0tLtn1vFcc1CayQ==}
/@mdit/plugin-stylize@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-dhhYxo4KdnB66g1080qeuz8X/80q3h4Cpmwnwi2rCbQfl29Nv26H5tz5pp15NKQfdfVgrZnXXLsDskJeg5IcaQ==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2404,8 +2250,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-sub@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-ktzYk0eVHQ1pnZMELKuiI2AEFdCCjHgZNHO/rR2VOsF9OGWiLwtzUM0e+S6pbuY66ui/UxWpyXbZIpSnGhsBdA==}
/@mdit/plugin-sub@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-jo60gUC2KwnG4SqtyrbyI16hOcxb+Y1LwUKxXKfZRbZbcPcOfrzjE8q7XEq4MhmU51mfqY6EvCoB0yo49Zh2QA==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2417,8 +2263,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-sup@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-KYCz0PBdVRZn+ke1wiwNZV4ofJvUgad95/T5epwNNi7yW+CbVGVbKkEMVu0pxfNbFCokIy3J6MIWNUqXcacd5Q==}
/@mdit/plugin-sup@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-bCR1DxNuPAyYOaTtl3VkrRc7dMsJjrqt9HnM9T1ZiprW08uciaT37fLXF7DeUHWhGpcklI9dFtaU5cQkjUosTg==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2430,8 +2276,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-tab@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-QoyW3rUw3DBBjeoqp5bLsBzNXuqhZ+zY02MC7mKHqUrACgt+Ui3QKmCSwjbO0fL2k3eDERa85QeIFYjXoS/7iA==}
/@mdit/plugin-tab@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-kWwWmhv+PeeA9aC5InGyY4eJeIsCDDMhi1tbzyKW/wJ1eeFp+rpWpSfWwUe6QyTy/ZOhQ1nGXz0/uXI4xWz4Xw==}
peerDependencies:
markdown-it: ^13.0.2
peerDependenciesMeta:
@ -2442,8 +2288,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-tasklist@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-Eh5946hQrR+rOhvbOKN3lmFYK77R4UuLkE8NwZeyGrqaKvbZzdTKkPAr+Use87Fnxm7xOhcJiQuC62wQ+k+AKg==}
/@mdit/plugin-tasklist@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-ZsPHqQv/Cd9TUG3JfmrPOMRFR/SOG3/menWTz2kwE1HtJ1CUfBmoCRtfq2Sm7Rlqg/P6ZfWAd1t9bOwGkxD/5w==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2455,8 +2301,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-tex@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-Le8XCodPiN9+gH2dtWH1CKrH7/dMQuz0M8hAZk/2j2w7TTaMb0x622ELCvIgSlnq8xk0mdBphVa3iZ2AyS9evg==}
/@mdit/plugin-tex@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-TZfIJp98n7NI0TxDSxPs4Il1fqyJ/1GE3v8UZHA1DbfAdiVMxno/Dun9381ZxoJYibl+dnX3Kz7Ej3BDOceGGA==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -2468,8 +2314,8 @@ packages:
markdown-it: 13.0.2
dev: false
/@mdit/plugin-uml@0.6.5(markdown-it@13.0.2):
resolution: {integrity: sha512-xWB03mUnzrHE13Rv7ke6Mlw6b33hTB/GNqb+Z5L6vYFHSM3tAbxhZQIlxJ69hQuAh/mJkrY59JYKSxIbk2u6XA==}
/@mdit/plugin-uml@0.7.6(markdown-it@13.0.2):
resolution: {integrity: sha512-P/aRntMnMfvtAEcLCkg6vhzNFEidj6jIno7VXr3HZNLitonr9ihnksM6jgrqG1rrMo4okBWUGFFGqsR8hHJk6g==}
engines: {node: '>= 18'}
peerDependencies:
markdown-it: ^13.0.2
@ -4252,10 +4098,6 @@ packages:
'@types/istanbul-lib-report': 3.0.0
dev: false
/@types/js-yaml@4.0.9:
resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==}
dev: false
/@types/json-schema@7.0.12:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
@ -4269,8 +4111,8 @@ packages:
'@types/node': 20.10.5
dev: false
/@types/katex@0.16.6:
resolution: {integrity: sha512-rZYO1HInM99rAFYNwGqbYPxHZHxu2IwZYKj4bJ4oh6edVrm1UId8mmbHIZLBtG253qU6y3piag0XYe/joNnwzQ==}
/@types/katex@0.16.7:
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
dev: false
/@types/linkify-it@3.0.2:
@ -6006,6 +5848,7 @@ packages:
buffer: 6.0.3
inherits: 2.0.4
readable-stream: 3.6.0
dev: false
/blueimp-md5@2.19.0:
resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==}
@ -6126,6 +5969,7 @@ packages:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
dev: false
/bufrw@1.3.0:
resolution: {integrity: sha512-jzQnSbdJqhIltU9O5KUiTtljP9ccw2u5ix59McQy4pV2xGhVLhRZIndY8GIrgh5HjXa6+QJ9AQhOd2QWQizJFQ==}
@ -6526,6 +6370,11 @@ packages:
resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==}
engines: {node: '>=6'}
/cli-spinners@2.9.2:
resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
engines: {node: '>=6'}
dev: true
/cli-truncate@3.1.0:
resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@ -7196,10 +7045,6 @@ packages:
split2: 4.1.0
dev: true
/convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
dev: false
/cookie-es@1.0.0:
resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==}
dev: false
@ -7535,8 +7380,8 @@ packages:
'@babel/runtime': 7.21.5
dev: true
/date-fns@3.0.5:
resolution: {integrity: sha512-Q4Tq5c5s/Zl/zbgdWf6pejn9ru7UwdIlLfvEEg1hVsQNQ7LKt76qIduagIT9OPK7+JCv1mAKherdU6bOqGYDnw==}
/date-fns@3.0.6:
resolution: {integrity: sha512-W+G99rycpKMMF2/YD064b2lE7jJGUe+EjOES7Q8BIGY8sbNdbgcs9XFTZwvzc9Jx1f3k7LB7gZaZa7f8Agzljg==}
dev: false
/date-time@3.1.0:
@ -7999,6 +7844,7 @@ packages:
/emoji-regex@10.2.1:
resolution: {integrity: sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==}
dev: false
/emoji-regex@10.3.0:
resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
@ -9451,11 +9297,6 @@ packages:
wide-align: 1.1.5
dev: true
/gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
dev: false
/get-amd-module-type@5.0.0:
resolution: {integrity: sha512-9mUVPLcOJ8n6VvW+9QOCdYC350Rmqg/hK2I+mFrqoV4KtBkZVGZDnINzN8Zo3s5VoxWk8/isVC48W02+auxDaQ==}
engines: {node: '>=14'}
@ -9764,11 +9605,6 @@ packages:
which: 1.3.1
dev: true
/globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
dev: false
/globals@13.19.0:
resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==}
engines: {node: '>=8'}
@ -10917,6 +10753,11 @@ packages:
resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
engines: {node: '>=12'}
/is-unicode-supported@2.0.0:
resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==}
engines: {node: '>=18'}
dev: true
/is-url-superb@4.0.0:
resolution: {integrity: sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA==}
engines: {node: '>=10'}
@ -11063,12 +10904,6 @@ packages:
dependencies:
argparse: 2.0.1
/jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
hasBin: true
dev: false
/json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: false
@ -11613,6 +11448,15 @@ packages:
dependencies:
chalk: 5.3.0
is-unicode-supported: 1.3.0
dev: false
/log-symbols@6.0.0:
resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==}
engines: {node: '>=18'}
dependencies:
chalk: 5.3.0
is-unicode-supported: 1.3.0
dev: true
/log-update@5.0.1:
resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==}
@ -11690,12 +11534,6 @@ packages:
dependencies:
semver: 7.5.4
/lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
dependencies:
yallist: 3.1.1
dev: false
/lru-cache@6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
@ -13065,6 +12903,22 @@ packages:
stdin-discarder: 0.1.0
string-width: 6.1.0
strip-ansi: 7.1.0
dev: false
/ora@8.0.0:
resolution: {integrity: sha512-RUI+M9AFI9f0h+iPBxBIok+tWHSQYiMpp+NCdEOPFWrSGxl+IIJ4iCiXetSEoiP0AnNv1EcER6l/7t4mfkZjew==}
engines: {node: '>=18'}
dependencies:
chalk: 5.3.0
cli-cursor: 4.0.0
cli-spinners: 2.9.2
is-interactive: 2.0.0
is-unicode-supported: 2.0.0
log-symbols: 6.0.0
stdin-discarder: 0.2.0
string-width: 7.0.0
strip-ansi: 7.1.0
dev: true
/os-locale@1.4.0:
resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==}
@ -15163,6 +15017,12 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
bl: 5.1.0
dev: false
/stdin-discarder@0.2.0:
resolution: {integrity: sha512-ZWOBlQfhYyLvTDu8BneHv0UZA2FhNEIyiwrzMjWahPNzdCeLsfN0ScqTZoAXFeUEmx/X/sHd7SW3x7WBV+f51A==}
engines: {node: '>=18'}
dev: true
/streamx@2.15.0:
resolution: {integrity: sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==}
@ -15219,6 +15079,7 @@ packages:
eastasianwidth: 0.2.0
emoji-regex: 10.2.1
strip-ansi: 7.1.0
dev: false
/string-width@7.0.0:
resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==}
@ -16512,14 +16373,14 @@ packages:
typescript: 5.3.3
dev: false
/vuepress-plugin-comment2@2.0.0-rc.0(typescript@5.3.3):
resolution: {integrity: sha512-axgBwfMp1cd28S+PMKBnIPPCtuZqeUUu0ww6Sl29NB3QXyKWYfr+64TtVMkMTw5MrR3Cqhm2kOYdhqF3YU0/jQ==}
/vuepress-plugin-comment2@2.0.0-rc.5(typescript@5.3.3):
resolution: {integrity: sha512-EVYsUIIWLFUQoxrALdVcBPnSDPJfXWrsrpbryuWUFDkpjstm7gMHgNGJr6vkaqmP92BkysXcwJ2EuN4OweMtcA==}
engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
peerDependencies:
'@waline/client': ^2.15.8
'@waline/client': ^2.15.8 || ^3.0.0-alpha.7
artalk: ^2.6.4
sass-loader: ^13.3.2
twikoo: ^1.6.25
twikoo: ^1.6.26
vuepress: 2.0.0-rc.0
vuepress-vite: 2.0.0-rc.0
vuepress-webpack: 2.0.0-rc.0
@ -16545,25 +16406,28 @@ packages:
giscus: 1.3.0
vue: 3.3.13(typescript@5.3.3)
vue-router: 4.2.5(vue@3.3.13)
vuepress-plugin-sass-palette: 2.0.0-rc.0(typescript@5.3.3)
vuepress-shared: 2.0.0-rc.0(typescript@5.3.3)
vuepress-plugin-sass-palette: 2.0.0-rc.5(typescript@5.3.3)
vuepress-shared: 2.0.0-rc.5(typescript@5.3.3)
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- typescript
dev: false
/vuepress-plugin-md-enhance@2.0.0-rc.0(@types/js-yaml@4.0.9)(typescript@5.3.3):
resolution: {integrity: sha512-sDP7gEp62phCkPuTtJaLwzKI53b94zqLQ2zajlPkDGTswPyxjOOvCdt2M3bcYM2gnSAV6szZhWuh7VCs1i5D7g==}
/vuepress-plugin-md-enhance@2.0.0-rc.5(markdown-it@13.0.2)(typescript@5.3.3):
resolution: {integrity: sha512-e7xiodPfKLIG8vVHZ9Guk97sc+7w4t0FzBlye6YYKTOd1Csm40hRqvBMp69WmDgzmp6zYdprifw1mC9do17dhw==}
engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
peerDependencies:
'@types/js-yaml': ^4.0.9
'@types/reveal.js': ^4.4.5
'@vue/repl': ^2.7.0
'@vue/repl': ^3.0.0
chart.js: ^4.4.0
echarts: ^5.4.3
flowchart.ts: ^1.0.1
flowchart.ts: ^2.0.0
katex: ^0.16.9
kotlin-playground: ^1.29.0
markmap-lib: ^0.15.7
markmap-toolbar: ^0.15.6
markmap-view: ^0.15.6
mathjax-full: ^3.2.2
mermaid: ^10.6.1
reveal.js: ^5.0.2
@ -16584,6 +16448,14 @@ packages:
optional: true
katex:
optional: true
kotlin-playground:
optional: true
markmap-lib:
optional: true
markmap-toolbar:
optional: true
markmap-view:
optional: true
mathjax-full:
optional: true
mermaid:
@ -16599,28 +16471,27 @@ packages:
vuepress-webpack:
optional: true
dependencies:
'@babel/core': 7.23.3
'@mdit/plugin-align': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-attrs': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-container': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-demo': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-figure': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-footnote': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-img-lazyload': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-img-mark': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-img-size': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-include': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-katex': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-mark': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-mathjax': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-stylize': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-sub': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-sup': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-tab': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-tasklist': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-tex': 0.6.5(markdown-it@13.0.2)
'@mdit/plugin-uml': 0.6.5(markdown-it@13.0.2)
'@types/js-yaml': 4.0.9
'@mdit/plugin-alert': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-align': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-attrs': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-container': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-demo': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-figure': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-footnote': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-img-lazyload': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-img-mark': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-img-size': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-include': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-katex': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-mark': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-mathjax': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-stylize': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-sub': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-sup': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-tab': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-tasklist': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-tex': 0.7.6(markdown-it@13.0.2)
'@mdit/plugin-uml': 0.7.6(markdown-it@13.0.2)
'@types/markdown-it': 13.0.7
'@vuepress/client': 2.0.0-rc.0(typescript@5.3.3)
'@vuepress/shared': 2.0.0-rc.0
@ -16628,19 +16499,19 @@ packages:
'@vueuse/core': 10.7.0(vue@3.3.13)
balloon-css: 1.2.0
js-yaml: 4.1.0
markdown-it: 13.0.2
vue: 3.3.13(typescript@5.3.3)
vue-router: 4.2.5(vue@3.3.13)
vuepress-plugin-sass-palette: 2.0.0-rc.0(typescript@5.3.3)
vuepress-shared: 2.0.0-rc.0(typescript@5.3.3)
vuepress-plugin-sass-palette: 2.0.0-rc.5(typescript@5.3.3)
vuepress-shared: 2.0.0-rc.5(typescript@5.3.3)
transitivePeerDependencies:
- '@vue/composition-api'
- markdown-it
- supports-color
- typescript
dev: false
/vuepress-plugin-sass-palette@2.0.0-rc.0(typescript@5.3.3):
resolution: {integrity: sha512-dgvwBdUaAmuNwCnHdOcZ4LBA+W2RUP7zprz1rQWAn16YhgARTkXIkTO69r3AXT2QxrjKKH5r6fC7L1Zq6DMPrA==}
/vuepress-plugin-sass-palette@2.0.0-rc.5(typescript@5.3.3):
resolution: {integrity: sha512-ovAv5xGSu5T2+VlszjZpstDKKVH0wedVm13Vvt6RI6VJujh1fpQy+/g4yNK09U+HNd+sDMZoYCY7epF8CWXOXA==}
engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
peerDependencies:
sass-loader: ^13.3.2
@ -16661,15 +16532,15 @@ packages:
'@vuepress/utils': 2.0.0-rc.0
chokidar: 3.5.3
sass: 1.69.5
vuepress-shared: 2.0.0-rc.0(typescript@5.3.3)
vuepress-shared: 2.0.0-rc.5(typescript@5.3.3)
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- typescript
dev: false
/vuepress-plugin-seo2@2.0.0-rc.0(typescript@5.3.3):
resolution: {integrity: sha512-V0jMT/Lv2ktOoe2wssMG/zip07wd0GKxJyXY9qEc9B5OOw8KZRYO9frD85YprUCOHEYjwu+sHbI+kUQRaSb+eg==}
/vuepress-plugin-seo2@2.0.0-rc.5(typescript@5.3.3):
resolution: {integrity: sha512-VwnBF1zuIjwrIQzAKQQm2l0QucZ/MqEnm3l5Hdg/katGuSna4AjEnhVDswwr4plHliNYWNzcu9V2o0tqEaRouw==}
engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
peerDependencies:
vuepress: 2.0.0-rc.0
@ -16685,15 +16556,15 @@ packages:
dependencies:
'@vuepress/shared': 2.0.0-rc.0
'@vuepress/utils': 2.0.0-rc.0
vuepress-shared: 2.0.0-rc.0(typescript@5.3.3)
vuepress-shared: 2.0.0-rc.5(typescript@5.3.3)
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- typescript
dev: false
/vuepress-plugin-sitemap2@2.0.0-rc.0(typescript@5.3.3):
resolution: {integrity: sha512-TyG4PzuYnEVV4hQVRzJYYWMmvknJz3+bJ2aoEEYvNfGXxMgi4H2FvVlMunRO/Tkh8qC7QKg8vz/ArEzxG4HwuQ==}
/vuepress-plugin-sitemap2@2.0.0-rc.5(typescript@5.3.3):
resolution: {integrity: sha512-b1ylNdPLsmhQ+R0NzyaIXHaAybFf0sB47TnYc43X9O8Ql+O8TI6jpBcF8DID7pWp5scQIdf3BIQ1yd/Q0wQgnw==}
engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
peerDependencies:
vuepress: 2.0.0-rc.0
@ -16710,15 +16581,15 @@ packages:
'@vuepress/shared': 2.0.0-rc.0
'@vuepress/utils': 2.0.0-rc.0
sitemap: 7.1.1
vuepress-shared: 2.0.0-rc.0(typescript@5.3.3)
vuepress-shared: 2.0.0-rc.5(typescript@5.3.3)
transitivePeerDependencies:
- '@vue/composition-api'
- supports-color
- typescript
dev: false
/vuepress-shared@2.0.0-rc.0(typescript@5.3.3):
resolution: {integrity: sha512-Rr5n/A1o8qnyvZEWkrI8is9ktQhTc+6P56QjHM3bCI2XRDFfwnUNi8hCSl4KA0/MQOESMHmWnL4izRD7Jprh5A==}
/vuepress-shared@2.0.0-rc.5(typescript@5.3.3):
resolution: {integrity: sha512-J+N3/sb966uI5wSs4k6QLrwxSE78Z77hBRdNKNN9HrhTXQX5SqIV5gqqnS24OfI5GxEWrl4Eba40ECwJk9hKlA==}
engines: {node: '>=18.16.0', npm: '>=8', pnpm: '>=7', yarn: '>=2'}
peerDependencies:
vuepress: 2.0.0-rc.0
@ -17225,10 +17096,6 @@ packages:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
/yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
dev: false
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}

View File

@ -67,17 +67,16 @@
"@vuepress/shared": "2.0.0-rc.0",
"@vuepress/utils": "2.0.0-rc.0",
"@vueuse/core": "^10.7.0",
"date-fns": "^3.0.5",
"date-fns": "^3.0.6",
"lodash.merge": "^4.6.2",
"nanoid": "^5.0.4",
"ts-debounce": "^4.0.0",
"vue": "^3.3.13",
"vue-router": "4.2.5",
"vuepress-plugin-comment2": "2.0.0-rc.0",
"vuepress-plugin-md-enhance": "2.0.0-rc.0",
"vuepress-plugin-seo2": "2.0.0-rc.0",
"vuepress-plugin-sitemap2": "2.0.0-rc.0",
"windicss": "^3.5.6"
"vuepress-plugin-comment2": "2.0.0-rc.5",
"vuepress-plugin-md-enhance": "2.0.0-rc.5",
"vuepress-plugin-seo2": "2.0.0-rc.5",
"vuepress-plugin-sitemap2": "2.0.0-rc.5"
},
"devDependencies": {
"@types/lodash.merge": "^4.6.9"

View File

@ -48,11 +48,11 @@ const page = usePageData()
}
.link:hover {
color: var(--vp-c-brand);
background-color: var(--vp-c-bg-elv-mute);
color: var(--vp-c-brand-1);
background-color: var(--vp-c-default-soft);
}
.link.active {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
</style>

View File

@ -69,7 +69,7 @@ export default {
}
.flyout-wrapper:hover {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
transition: color 0.25s;
}
@ -82,11 +82,11 @@ export default {
}
.flyout-wrapper.active .text {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
.flyout-wrapper.active:hover .text {
color: var(--vp-c-brand-dark);
color: var(--vp-c-brand-2);
}
.flyout-wrapper:hover .menu,

View File

@ -72,6 +72,7 @@ const classes = computed(() => {
display: flex;
justify-content: space-between;
align-items: center;
border-top: 1px solid var(--vp-c-gutter);
border-bottom: 1px solid var(--vp-c-gutter);
padding-top: var(--vp-layout-top-height, 0px);
width: 100%;

View File

@ -120,7 +120,7 @@ function scrollToTop() {
right: 16px;
left: 16px;
display: grid;
/* gap: 1px; */
gap: 1px;
border: 1px solid var(--vp-c-border);
border-radius: 8px;
background-color: var(--vp-c-gutter);

View File

@ -42,10 +42,10 @@ const page = usePageData()
}
.navbar-menu-link.active {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
.navbar-menu-link:hover {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
</style>

View File

@ -24,7 +24,7 @@
}
.DocSearch {
--docsearch-primary-color: var(--vp-c-brand);
--docsearch-primary-color: var(--vp-c-brand-1);
--docsearch-highlight-color: var(--docsearch-primary-color);
--docsearch-text-color: var(--vp-c-text-1);
--docsearch-muted-color: var(--vp-c-text-2);
@ -41,7 +41,7 @@
--docsearch-modal-shadow: none;
--docsearch-footer-shadow: none;
--docsearch-logo-color: var(--vp-c-text-2);
--docsearch-hit-background: var(--vp-c-bg-soft-mute);
--docsearch-hit-background: var(--vp-c-default-soft);
--docsearch-hit-color: var(--vp-c-text-2);
--docsearch-hit-shadow: none;
}
@ -83,7 +83,7 @@
}
.DocSearch-Button:hover {
border-color: var(--vp-c-brand);
border-color: var(--vp-c-brand-1);
background: var(--vp-c-bg-alt);
}
}
@ -200,11 +200,11 @@
}
.DocSearch-Form {
border: 1px solid var(--vp-c-brand);
border: 1px solid var(--vp-c-brand-1);
background-color: var(--vp-c-white);
}
.dark .DocSearch-Form {
background-color: var(--vp-c-bg-soft-mute);
background-color: var(--vp-c-bg-soft);
}
</style>

View File

@ -81,7 +81,7 @@ function toggle() {
.nav-screen-menu-group.open .button {
padding-bottom: 6px;
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
.nav-screen-menu-group.open .button-icon {
@ -103,7 +103,7 @@ function toggle() {
}
.button:hover {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
.button-text i {

View File

@ -34,6 +34,6 @@ const closeScreen = inject('close-screen') as () => void
}
.nav-screen-menu-group-link:hover {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
</style>

View File

@ -31,6 +31,6 @@ const closeScreen = inject('close-screen') as () => void
}
.nav-screen-menu-link:hover {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
</style>

View File

@ -3,6 +3,7 @@ import { usePageData } from '@vuepress/client'
import type { PlumeThemePageData } from '../../shared/index.js'
import { useDarkMode, useSidebar } from '../composables/index.js'
import PageAside from './PageAside.vue'
import PageFooter from './PageFooter.vue'
import PageMeta from './PageMeta.vue'
const { hasSidebar, hasAside } = useSidebar()
@ -32,6 +33,7 @@ const page = usePageData<PlumeThemePageData>()
<main class="main">
<PageMeta />
<Content class="plume-content" />
<PageFooter />
<PageComment :darkmode="isDark" />
</main>
</div>

View File

@ -81,7 +81,7 @@ function handleClick({ target: el }: Event) {
opacity: 0;
width: 1px;
height: 18px;
background-color: var(--vp-c-brand);
background-color: var(--vp-c-brand-1);
transition: top 0.25s cubic-bezier(0, 1, 0.5, 1), background-color 0.5s,
opacity 0.25s;
}

View File

@ -0,0 +1,190 @@
<script lang="ts" setup>
import { computed } from 'vue'
import { useContributors, useEditNavLink, useLastUpdated, usePageNav, useThemeLocaleData } from '../composables/index.js'
import AutoLink from './AutoLink.vue'
import IconEdit from './icons/IconEdit.vue'
const themeLocale = useThemeLocaleData()
const editNavLink = useEditNavLink()
const lastUpdated = useLastUpdated()
const contributors = useContributors()
const { prev, next } = usePageNav()
const showFooter = computed(() => {
return editNavLink.value || lastUpdated.value || contributors.value || prev.value || next.value
})
</script>
<template>
<footer v-if="showFooter" class="page-footer">
<div v-if="editNavLink || lastUpdated" class="edit-info">
<div v-if="editNavLink" class="edit-link">
<AutoLink class="edit-link-button" :href="editNavLink.link" :no-icon="true">
<IconEdit class="edit-link-icon" aria-label="edit icon"/>
{{ editNavLink.text }}
</AutoLink>
</div>
<div v-if="lastUpdated" class="last-updated">
<p class="last-updated-text">
{{ themeLocale.lastUpdatedText || 'Last updated' }}:
<time :datetime="lastUpdated" class="last-updated-time">{{ lastUpdated }}</time>
</p>
</div>
</div>
<div v-if="contributors && contributors.length" class="contributors">
<span class="contributors-label">{{ themeLocale.contributorsText || 'Contributors' }}:</span>
<span class="contributors-info">
<template v-for="(contributor, index) in contributors" :key="contributor">
<span class="contributor" :title="`email: ${contributor.email}`">
{{ contributor.name }}
</span>
<template v-if="index !== contributors.length - 1">, </template>
</template>
</span>
</div>
<nav v-if="prev?.link || next?.link" class="prev-next">
<div class="pager">
<AutoLink v-if="prev?.link" class="pager-link prev" :href="prev.link">
<!--eslint-disable-next-line vue/no-v-html-->
<span class="desc" v-html="themeLocale.prevPageLabel || 'Previous page'"></span>
<!--eslint-disable-next-line vue/no-v-html-->
<span class="title" v-html="prev.text"></span>
</AutoLink>
</div>
<div class="pager">
<AutoLink v-if="next?.link" class="pager-link next" :href="next.link">
<!--eslint-disable-next-line vue/no-v-html-->
<span class="desc" v-html="themeLocale.nextPageLabel || 'Next page'"></span>
<!--eslint-disable-next-line vue/no-v-html-->
<span class="title" v-html="next.text"></span>
</AutoLink>
</div>
</nav>
</footer>
</template>
<style lang="scss" scoped>
.page-footer {
margin-top: 96px;
}
@media (min-width: 640px) {
.edit-info {
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 6px;
}
}
.edit-link-button {
display: flex;
align-items: center;
border: 0;
line-height: 32px;
font-size: 14px;
font-weight: 500;
color: var(--vp-c-brand-1);
transition: color 0.25s;
}
.edit-link-button:hover {
color: var(--vp-c-brand-2);
}
.edit-link-icon {
margin-right: 8px;
width: 14px;
height: 14px;
fill: currentColor;
}
.last-updated-text {
line-height: 24px;
font-size: 14px;
font-weight: 500;
color: var(--vp-c-text-2);
}
@media (min-width: 640px) {
.last-updated-text {
line-height: 32px;
font-size: 14px;
font-weight: 500;
}
}
.contributors {
padding-bottom: 6px;
line-height: 32px;
font-size: 14px;
}
.contributors-label {
padding-right: 10px;
font-weight: 500;
color: var(--vp-c-text-2);
}
.contributors-info {
color: var(--vp-c-text-2);
.contributor {
color: var(--vp-c-brand-2);
}
}
.prev-next {
border-top: 1px solid var(--vp-c-divider);
margin-top: 10px;
padding-top: 24px;
display: grid;
grid-row-gap: 8px;
}
@media (min-width: 640px) {
.prev-next {
grid-template-columns: repeat(2, 1fr);
grid-column-gap: 16px;
}
}
.pager-link {
display: block;
border: 1px solid var(--vp-c-divider);
border-radius: 8px;
padding: 11px 16px 13px;
width: 100%;
height: 100%;
transition: border-color 0.25s;
}
.pager-link:hover {
border-color: var(--vp-c-brand-1);
}
.pager-link.next {
margin-left: auto;
text-align: right;
}
.desc {
display: block;
line-height: 20px;
font-size: 12px;
font-weight: 500;
color: var(--vp-c-text-2);
}
.title {
display: block;
line-height: 20px;
font-size: 14px;
font-weight: 500;
color: var(--vp-c-brand-1);
transition: color 0.25s;
}
</style>

View File

@ -65,7 +65,7 @@ const hasMeta = computed(() => tags.value.length || createTime.value)
font-size: 16px;
font-weight: 400;
margin-bottom: 2rem;
border-left: solid 4px var(--vp-c-brand);
border-left: solid 4px var(--vp-c-brand-1);
padding-left: 1rem;
}
@ -75,7 +75,7 @@ const hasMeta = computed(() => tags.value.length || createTime.value)
}
.page-category-wrapper .category:hover {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
.page-category-wrapper .dot {

View File

@ -78,7 +78,7 @@ const createTime = computed(() => {
}
h3:hover {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
.sticky {
color: var(--vp-c-text-2);
@ -100,7 +100,7 @@ const createTime = computed(() => {
line-height: 1;
font-size: 13px;
color: var(--vp-c-text-2);
background-color: var(--vp-c-bg-soft-mute);
background-color: var(--vp-c-default-soft);
}
}

View File

@ -137,7 +137,7 @@ function onCaretClick() {
.sidebar-item.level-3.is-active > .item > .indicator,
.sidebar-item.level-4.is-active > .item > .indicator,
.sidebar-item.level-5.is-active > .item > .indicator {
background-color: var(--vp-c-brand);
background-color: var(--vp-c-brand-1);
}
.link {
@ -173,7 +173,7 @@ function onCaretClick() {
.sidebar-item.level-3.is-link > .item > .link:hover .text,
.sidebar-item.level-4.is-link > .item > .link:hover .text,
.sidebar-item.level-5.is-link > .item > .link:hover .text {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
.sidebar-item.level-0.has-active > .item > .link > .text,
@ -191,7 +191,7 @@ function onCaretClick() {
.sidebar-item.level-3.is-active > .item .link > .text,
.sidebar-item.level-4.is-active > .item .link > .text,
.sidebar-item.level-5.is-active > .item .link > .text {
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
}
.caret {

View File

@ -50,7 +50,7 @@ function focusOnTargetAnchor({ target }: Event) {
font-size: 12px;
font-weight: bold;
text-decoration: none;
color: var(--vp-c-brand);
color: var(--vp-c-brand-1);
box-shadow: var(--vp-shadow-3);
background-color: var(--vp-c-bg);
}

View File

@ -22,7 +22,7 @@
}
.switch-wrapper:hover {
border-color: var(--vp-input-hover-border-color);
border-color: var(--vp-c-brand-1);
}
.check {

View File

@ -28,18 +28,24 @@ withDefaults(defineProps<Props>(), {
transform: translateY(-2px);
}
h1 .badge-view,
h2 .badge-view,
h3 .badge-view,
h1 .badge-view {
margin-top: 4px;
vertical-align: top;
}
h2 .badge-view {
margin-top: 3px;
padding: 0 8px;
vertical-align: top;
}
h3 .badge-view {
vertical-align: middle;
}
h4 .badge-view,
h5 .badge-view,
h6 .badge-view {
vertical-align: top;
}
h2 .badge-view {
border-radius: 11px;
line-height: 20px;
vertical-align: middle;
line-height: 18px;
}
.badge-view.info {

View File

@ -4,3 +4,4 @@ export * from './themeData.js'
export * from './useResolveRouteWithRedirect.js'
export * from './sidebar.js'
export * from './aside.js'
export * from './page.js'

View File

@ -0,0 +1,215 @@
import { usePageData, usePageFrontmatter, usePageLang } from '@vuepress/client'
import { isArray, isPlainObject, isString } from '@vuepress/shared'
import { useBlogPostData } from '@vuepress-plume/plugin-blog-data/client'
import type { NotesSidebarItem } from '@vuepress-plume/plugin-notes-data'
import { computed } from 'vue'
import type { ComputedRef, Ref } from 'vue'
import { useRoute } from 'vue-router'
import type {
NavItemWithLink,
PlumeThemeBlogPostItem,
PlumeThemePageData,
PlumeThemePageFrontmatter,
} from '../../shared/index.js'
import { useNavLink, useSidebar, useThemeLocaleData } from '../composables/index.js'
import { resolveEditLink } from '../utils/index.js'
export const useEditNavLink = (): ComputedRef<null | NavItemWithLink> => {
const themeLocale = useThemeLocaleData()
const page = usePageData<PlumeThemePageData>()
const frontmatter = usePageFrontmatter<PlumeThemePageFrontmatter>()
return computed(() => {
const showEditLink =
frontmatter.value.editLink ?? themeLocale.value.editLink ?? true
if (!showEditLink) {
return null
}
const {
repo,
docsRepo = repo,
docsBranch = 'main',
docsDir = '',
editLinkText,
} = themeLocale.value
if (!docsRepo) return null
const editLink = resolveEditLink({
docsRepo,
docsBranch,
docsDir,
filePathRelative: page.value.filePathRelative,
editLinkPattern:
frontmatter.value.editLinkPattern ?? themeLocale.value.editLinkPattern,
})
if (!editLink) return null
return {
text: editLinkText ?? 'Edit this page',
link: editLink,
}
})
}
export const useLastUpdated = (): ComputedRef<null | string> => {
const themeLocale = useThemeLocaleData()
const page = usePageData<PlumeThemePageData>()
const frontmatter = usePageFrontmatter<PlumeThemePageFrontmatter>()
return computed(() => {
const showLastUpdated =
frontmatter.value.lastUpdated ?? themeLocale.value.lastUpdated ?? true
if (!showLastUpdated) return null
if (!page.value.git?.updatedTime) return null
const updatedDate = new Date(page.value.git?.updatedTime)
return updatedDate.toLocaleString()
})
}
export const useContributors = (): ComputedRef<
null | Required<PlumeThemePageData['git']>['contributors']
> => {
const themeLocale = useThemeLocaleData()
const page = usePageData<PlumeThemePageData>()
const frontmatter = usePageFrontmatter<PlumeThemePageFrontmatter>()
return computed(() => {
const showContributors =
frontmatter.value.contributors ?? themeLocale.value.contributors ?? true
if (!showContributors) return null
return page.value.git?.contributors ?? null
})
}
/**
* Resolve `prev` or `next` config from frontmatter
*/
const resolveFromFrontmatterConfig = (
conf: unknown,
): null | false | NavItemWithLink => {
if (conf === false) {
return null
}
if (isString(conf)) {
return useNavLink(conf)
}
if (isPlainObject<NavItemWithLink>(conf)) {
return conf
}
return false
}
const flatSidebar = (
sidebar: NotesSidebarItem[],
res: NavItemWithLink[] = []
): NavItemWithLink[] => {
for (const item of sidebar) {
if (item.link) {
res.push({ link: item.link, text: item.text || item.dir || '' })
}
if (isArray(item.items) && item.items.length) {
flatSidebar(item.items as NotesSidebarItem[], res)
}
}
return res
}
/**
* Resolve `prev` or `next` config from sidebar items
*/
const resolveFromSidebarItems = (
sidebarItems: NavItemWithLink[],
currentPath: string,
offset: number,
): null | NavItemWithLink => {
const index = sidebarItems.findIndex((item) => item.link === currentPath)
if (index !== -1) {
const targetItem = sidebarItems[index + offset]
if (targetItem?.link) {
return {
link: targetItem.link,
text: targetItem.text,
}
}
}
return null
}
const resolveFromBlogPostData = (
postList: PlumeThemeBlogPostItem[],
currentPath: string,
offset: number,
): null | NavItemWithLink => {
const index = postList.findIndex((item) => item.path === currentPath)
if (index !== -1) {
const targetItem = postList[index + offset]
if (!targetItem?.path) {
return null
}
return {
link: targetItem.path,
text: targetItem.title,
}
}
return null
}
export const usePageNav = () => {
const route = useRoute()
const page = usePageData<PlumeThemePageData>()
const frontmatter = usePageFrontmatter<PlumeThemePageFrontmatter>()
const { sidebar } = useSidebar()
const postList = useBlogPostData() as unknown as Ref<PlumeThemeBlogPostItem[]>
const locale = usePageLang()
const prevNavList = computed(() => {
const prevConfig = resolveFromFrontmatterConfig(frontmatter.value.prev)
if (prevConfig !== false) {
return prevConfig
}
if (page.value.isBlogPost) {
return resolveFromBlogPostData(
postList.value.filter(item => item.lang === locale.value),
route.path,
-1
)
} else {
return resolveFromSidebarItems(flatSidebar(sidebar.value), route.path, -1)
}
})
const nextNavList = computed(() => {
const nextConfig = resolveFromFrontmatterConfig(frontmatter.value.next)
if (nextConfig !== false) {
return nextConfig
}
if (page.value.isBlogPost) {
return resolveFromBlogPostData(
postList.value.filter(item => item.lang === locale.value),
route.path,
1
)
} else {
return resolveFromSidebarItems(flatSidebar(sidebar.value), route.path, 1)
}
})
return {
prev: prevNavList,
next: nextNavList,
}
}

View File

@ -1,6 +1,13 @@
import { isFunction, isString } from '@vuepress/shared'
import { useRouter } from 'vue-router'
import type { Router } from 'vue-router'
import type { NavItemWithLink } from '../../shared/index.js'
declare module 'vue-router' {
interface RouteMeta {
title?: string
}
}
/**
* Resolve a route with redirection
@ -26,3 +33,21 @@ export const useResolveRouteWithRedirect = (
...resolvedRedirectObj,
})
}
/**
* Resolve NavLink props from string
*
* @example
* - Input: '/README.md'
* - Output: { text: 'Home', link: '/' }
*/
export const useNavLink = (item: string): NavItemWithLink => {
// the route path of vue-router is url-encoded, and we expect users are using
// non-url-encoded string in theme config, so we need to url-encode it first to
// resolve the route correctly
const resolved = useResolveRouteWithRedirect(encodeURI(item))
return {
text: resolved.meta.title || item,
link: resolved.name === '404' ? item : resolved.fullPath,
}
}

View File

@ -6,7 +6,7 @@
}
html:not(.dark) .vp-code span {
color: var(--shiki-light, rgba(60, 60, 67, 0.92));
color: var(--shiki-light, rgba(60, 60, 67, 0.78));
}
code[class*='language-'],
@ -65,20 +65,6 @@ pre[class*='language-'] {
scrollbar-color: var(--c-brand) var(--c-border);
font-size: 14px;
&::-webkit-scrollbar {
width: 7px;
height: 7px;
}
&::-webkit-scrollbar-track {
background-color: var(--vp-code-block-bg);
}
&::-webkit-scrollbar-thumb {
background-color: rgba(220, 220, 220, 0.35);
border-radius: 3px;
}
code {
color: #fff;
padding: 0;
@ -139,7 +125,7 @@ div[class*='language-'] {
line-height: 1.5;
.highlight-line {
background-color: rgba(142, 150, 170, 0.14);
background-color: var(--vp-c-default-soft);
}
}

View File

@ -26,7 +26,6 @@
letter-spacing: -0.02em;
line-height: 32px;
font-size: 24px;
transition: all var(--t-color);
}
.plume-content h2:first-of-type {
@ -116,13 +115,16 @@
.plume-content a {
font-weight: 500;
color: var(--vp-c-brand);
text-decoration-style: dotted;
transition: color 0.25s;
color: var(--vp-c-brand-1);
text-decoration: underline;
text-underline-offset: 2px;
transition:
color 0.25s,
opacity 0.25s;
}
.plume-content a:hover {
color: var(--vp-c-brand-dark);
color: var(--vp-c-brand-2);
}
.plume-content strong {
@ -168,6 +170,7 @@
}
.plume-content tr {
background-color: var(--vp-c-bg);
border-top: 1px solid var(--vp-c-divider);
transition: background-color 0.5s;
}
@ -254,15 +257,15 @@
/* inline code */
.plume-content :not(pre, h1, h2, h3, h4, h5, h6) > code {
font-size: var(--vp-code-font-size);
color: var(--vp-code-color);
}
.plume-content :not(pre) > code {
border-radius: 4px;
padding: 3px 6px;
color: var(--vp-c-text-code);
background-color: var(--vp-c-mute);
background-color: var(--vp-code-bg);
transition:
color 0.5s,
color 0.25s,
background-color 0.5s;
}
@ -273,254 +276,13 @@
}
.plume-content a > code {
color: var(--vp-c-brand);
transition: color 0.25s;
color: var(--vp-code-link-color);
}
.plume-content a:hover > code {
color: var(--vp-c-brand-dark);
color: var(--vp-code-link-hover-color);
}
.plume-content .vp-code-tabs-nav {
margin: 0.85rem 0 0;
}
// .plume-content div[class*='language-'] {
// position: relative;
// margin: 16px -24px;
// background-color: var(--vp-code-block-bg);
// overflow-x: auto;
// transition: background-color 0.5s;
// }
// @media (min-width: 640px) {
// .plume-content div[class*='language-'] {
// border-radius: 8px;
// margin: 16px 0;
// }
// }
// @media (max-width: 639px) {
// .plume-content li div[class*='language-'] {
// border-radius: 8px 0 0 8px;
// }
// }
// .plume-content div[class*='language-'] + div[class*='language-'],
// .plume-content div[class$='-api'] + div[class*='language-'],
// .plume-content
// div[class*='language-']
// + div[class$='-api']
// > div[class*='language-'] {
// margin-top: -8px;
// }
// .plume-content [class*='language-'] pre,
// .plume-content [class*='language-'] code {
// /*rtl:ignore*/
// direction: ltr;
// /*rtl:ignore*/
// text-align: left;
// white-space: pre;
// word-spacing: normal;
// word-break: normal;
// word-wrap: normal;
// -moz-tab-size: 4;
// -o-tab-size: 4;
// tab-size: 4;
// -webkit-hyphens: none;
// -moz-hyphens: none;
// -ms-hyphens: none;
// hyphens: none;
// }
// .plume-content [class*='language-'] pre {
// position: relative;
// z-index: 1;
// margin: 0;
// padding: 16px 0;
// background: transparent;
// overflow-x: auto;
// }
// .plume-content [class*='language-'] code {
// display: block;
// padding: 0 24px;
// width: fit-content;
// min-width: 100%;
// line-height: var(--vp-code-line-height);
// font-size: var(--vp-code-font-size);
// color: var(--vp-code-block-color);
// transition: color 0.5s;
// }
// .plume-content [class*='language-'] code .highlighted {
// background-color: var(--vp-code-line-highlight-color);
// transition: background-color 0.5s;
// margin: 0 -24px;
// padding: 0 24px;
// width: calc(100% + 2 * 24px);
// display: inline-block;
// }
// .plume-content [class*='language-'] code .highlighted.error {
// background-color: var(--vp-code-line-error-color);
// }
// .plume-content [class*='language-'] code .highlighted.warning {
// background-color: var(--vp-code-line-warning-color);
// }
// .plume-content [class*='language-'] code .diff {
// transition: background-color 0.5s;
// margin: 0 -24px;
// padding: 0 24px;
// width: calc(100% + 2 * 24px);
// display: inline-block;
// }
// .plume-content [class*='language-'] code .diff::before {
// position: absolute;
// left: 10px;
// }
// .plume-content [class*='language-'] .has-focused-lines .line:not(.has-focus) {
// filter: blur(0.095rem);
// opacity: 0.4;
// transition: filter 0.35s, opacity 0.35s;
// }
// .plume-content [class*='language-'] .has-focused-lines .line:not(.has-focus) {
// opacity: 0.7;
// transition: filter 0.35s, opacity 0.35s;
// }
// .plume-content
// [class*='language-']:hover
// .has-focused-lines
// .line:not(.has-focus) {
// filter: blur(0);
// opacity: 1;
// }
// .plume-content [class*='language-'] code .diff.remove {
// background-color: var(--vp-code-line-diff-remove-color);
// opacity: 0.7;
// }
// .plume-content [class*='language-'] code .diff.remove::before {
// content: '-';
// color: var(--vp-code-line-diff-remove-symbol-color);
// }
// .plume-content [class*='language-'] code .diff.add {
// background-color: var(--vp-code-line-diff-add-color);
// }
// .plume-content [class*='language-'] code .diff.add::before {
// content: '+';
// color: var(--vp-code-line-diff-add-symbol-color);
// }
// .plume-content div[class*='language-'].line-numbers-mode {
// /*rtl:ignore*/
// padding-left: 32px;
// }
// .plume-content .line-numbers {
// position: absolute;
// top: 0;
// bottom: 0;
// /*rtl:ignore*/
// left: 0;
// z-index: 3;
// /*rtl:ignore*/
// border-right: 1px solid var(--vp-code-block-divider-color);
// padding-top: 16px;
// width: 32px;
// text-align: center;
// font-family: var(--vp-font-family-mono);
// line-height: var(--vp-code-line-height);
// font-size: var(--vp-code-font-size);
// color: var(--vp-code-line-number-color);
// transition: border-color 0.5s, color 0.5s;
// }
// .plume-content [class*='language-'] > button.copy {
// /*rtl:ignore*/
// direction: ltr;
// position: absolute;
// top: 8px;
// /*rtl:ignore*/
// right: 8px;
// z-index: 3;
// display: block;
// justify-content: center;
// align-items: center;
// border-radius: 4px;
// width: 40px;
// height: 40px;
// background-color: var(--vp-code-block-bg);
// opacity: 0;
// cursor: pointer;
// background-image: var(--vp-icon-copy);
// background-position: 50%;
// background-size: 20px;
// background-repeat: no-repeat;
// transition: opacity 0.4s;
// }
// .plume-content [class*='language-']:hover > button.copy,
// .plume-content [class*='language-'] > button.copy:focus {
// opacity: 1;
// }
// .plume-content [class*='language-'] > button.copy:hover {
// background-color: var(--vp-code-copy-code-hover-bg);
// }
// .plume-content [class*='language-'] > button.copy.copied,
// .plume-content [class*='language-'] > button.copy:hover.copied {
// /*rtl:ignore*/
// border-radius: 0 4px 4px 0;
// background-color: var(--vp-code-copy-code-hover-bg);
// background-image: var(--vp-icon-copied);
// }
// .plume-content [class*='language-'] > button.copy.copied::before,
// .plume-content [class*='language-'] > button.copy:hover.copied::before {
// position: relative;
// /*rtl:ignore*/
// left: -65px;
// display: flex;
// justify-content: center;
// align-items: center;
// /*rtl:ignore*/
// border-radius: 4px 0 0 4px;
// width: 64px;
// height: 40px;
// text-align: center;
// font-size: 12px;
// font-weight: 500;
// color: var(--vp-code-copy-code-active-text);
// background-color: var(--vp-code-copy-code-hover-bg);
// white-space: nowrap;
// content: 'Copied';
// }
// .plume-content [class*='language-'] > span.lang {
// position: absolute;
// top: 6px;
// /*rtl:ignore*/
// right: 12px;
// z-index: 2;
// font-size: 12px;
// font-weight: 500;
// color: var(--vp-c-text-dark-3);
// transition: color 0.4s, opacity 0.4s;
// }
// .plume-content [class*='language-']:hover > button.copy + span.lang,
// .plume-content [class*='language-'] > button.copy:focus + span.lang {
// opacity: 0;
// }

View File

@ -5,5 +5,6 @@
@use 'utils';
@use 'content';
@use 'code';
@use 'md-enhance';
@use '@vuepress/plugin-palette/style';

View File

@ -0,0 +1,90 @@
.plume-content .hint-container {
border-radius: 8px;
padding: 16px 16px 8px;
line-height: 24px;
font-size: var(--vp-custom-block-font-size);
color: var(--vp-c-text-2);
}
.plume-content .hint-container .hint-container-title {
font-weight: 600;
margin-top: 0;
}
.hint-container.note {
color: var(--vp-custom-block-info-text);
}
.hint-container.tip {
color: var(--vp-custom-block-tip-text);
}
.hint-container.warning {
color: var(--vp-custom-block-warning-text);
}
.hint-container.caution {
color: var(--vp-custom-block-danger-text);
}
.hint-container.detail {
color: var(--vp-custom-block-detail-text);
}
.plume-content .hint-container.details summary {
margin: -1.5rem -1.5rem -1.1rem;
font-weight: 700;
cursor: pointer;
color: var(--vp-c-text-1);
}
.plume-content .hint-container.details summary + p {
margin: 8px 0;
}
.plume-content .hint-container p + p {
margin: 8px 0;
}
.plume-content .hint-container code {
font-size: var(--vp-custom-block-code-font-size);
}
.plume-content .hint-container {
&.note,
&.tip,
&.detail,
&.important {
a,
code {
color: var(--vp-c-brand-1);
}
a:hover {
color: var(--vp-c-brand-2);
}
}
&.warning {
a,
code {
color: var(--vp-c-warning-1);
}
a:hover {
color: var(--vp-c-warning-2);
}
}
&.caution {
a,
code {
color: var(--vp-c-danger-1);
}
a:hover {
color: var(--vp-c-danger-2);
}
}
th,
blockquote > p {
font-size: var(--vp-custom-block-font-size);
color: inherit;
}
}

View File

@ -256,3 +256,12 @@ p {
vite-error-overlay {
z-index: 9999;
}
mjx-container {
display: inline-block;
margin: auto 2px -2px;
}
mjx-container > svg {
margin: auto;
}

View File

@ -1,155 +1,233 @@
/**
* Colors Base
*
* These are the pure base color presets. Most of the time, you should not be
* using these colors directly in the theme but rather use "Colors Theme"
* instead because those are "Theme (light or dark)" dependant.
* Colors: Solid
* -------------------------------------------------------------------------- */
:root {
--vp-c-white: #ffffff;
--vp-c-black: #000000;
--vp-c-gray: #8e8e93;
--vp-c-neutral: var(--vp-c-black);
--vp-c-neutral-inverse: var(--vp-c-white);
}
--vp-c-text-light-1: rgba(60, 60, 67, 0.92);
--vp-c-text-light-2: rgba(60, 60, 67, 0.7);
--vp-c-text-light-3: rgba(60, 60, 67, 0.33);
.dark {
--vp-c-neutral: var(--vp-c-white);
--vp-c-neutral-inverse: var(--vp-c-black);
}
--vp-c-text-dark-1: rgba(255, 255, 245, 0.86);
--vp-c-text-dark-2: rgba(235, 235, 245, 0.6);
--vp-c-text-dark-3: rgba(235, 235, 245, 0.38);
/**
* Colors: Palette
*
* The primitive colors used for accent colors. These colors are referenced
* by functional colors such as "Text", "Background", or "Brand".
*
* Each colors have exact same color scale system with 3 levels of solid
* colors with different brightness, and 1 soft color.
*
* - `XXX-1`: The most solid color used mainly for colored text. It must
* satisfy the contrast ratio against when used on top of `XXX-soft`.
*
* - `XXX-2`: The color used mainly for hover state of the button.
*
* - `XXX-3`: The color for solid background, such as bg color of the button.
* It must satisfy the contrast ratio with pure white (#ffffff) text on
* top of it.
*
* - `XXX-soft`: The color used for subtle background such as custom container
* or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
* on top of it.
*
* The soft color must be semi transparent alpha channel. This is crucial
* because it allows adding multiple "soft" colors on top of each other
* to create a accent, such as when having inline code block inside
* custom containers.
* -------------------------------------------------------------------------- */
--vp-c-green: #10b981;
--vp-c-green-light: #34d399;
--vp-c-green-lighter: #6ee7b7;
--vp-c-green-dark: #059669;
--vp-c-green-darker: #047857;
--vp-c-green-dimm-1: rgba(16, 185, 129, 0.05);
--vp-c-green-dimm-2: rgba(16, 185, 129, 0.2);
--vp-c-green-dimm-3: rgba(16, 185, 129, 0.5);
:root {
--vp-c-gray-1: #dddde3;
--vp-c-gray-2: #e4e4e9;
--vp-c-gray-3: #ebebef;
--vp-c-gray-soft: rgba(142, 150, 170, 0.14);
--vp-c-yellow: #eab308;
--vp-c-yellow-light: #facc15;
--vp-c-yellow-lighter: #fde047;
--vp-c-yellow-dark: #ca8a04;
--vp-c-yellow-darker: #a16207;
--vp-c-yellow-dimm-1: rgba(234, 179, 8, 0.05);
--vp-c-yellow-dimm-2: rgba(234, 179, 8, 0.2);
--vp-c-yellow-dimm-3: rgba(234, 179, 8, 0.5);
--vp-c-turquoise-1: #5086a1;
--vp-c-turquoise-2: #6aa1b7;
--vp-c-turquoise-3: #8cccd5;
--vp-c-turquoise-soft: rgba(131, 208, 218, 0.314);
--vp-c-red: #f43f5e;
--vp-c-red-light: #fb7185;
--vp-c-red-lighter: #fda4af;
--vp-c-red-dark: #e11d48;
--vp-c-red-darker: #be123c;
--vp-c-red-dimm-1: rgba(244, 63, 94, 0.05);
--vp-c-red-dimm-2: rgba(244, 63, 94, 0.2);
--vp-c-red-dimm-3: rgba(244, 63, 94, 0.5);
--vp-c-green-1: #18794e;
--vp-c-green-2: #299764;
--vp-c-green-3: #30a46c;
--vp-c-green-soft: rgba(16, 185, 129, 0.14);
--vp-c-yellow-1: #915930;
--vp-c-yellow-2: #946300;
--vp-c-yellow-3: #9f6a00;
--vp-c-yellow-soft: rgba(234, 179, 8, 0.14);
--vp-c-red-1: #b8272c;
--vp-c-red-2: #d5393e;
--vp-c-red-3: #e0575b;
--vp-c-red-soft: rgba(244, 63, 94, 0.14);
--vp-c-sponsor: #db2777;
}
.dark {
--vp-c-gray-1: #515c67;
--vp-c-gray-2: #414853;
--vp-c-gray-3: #32363f;
--vp-c-gray-soft: rgba(101, 117, 133, 0.16);
--vp-c-turquoise-1: #8cccd5;
--vp-c-turquoise-2: #6aa1b7;
--vp-c-turquoise-3: #5086a1;
--vp-c-turquoise-soft: rgba(131, 208, 218, 0.314);
--vp-c-green-1: #3dd68c;
--vp-c-green-2: #30a46c;
--vp-c-green-3: #298459;
--vp-c-green-soft: rgba(16, 185, 129, 0.16);
--vp-c-yellow-1: #f9b44e;
--vp-c-yellow-2: #da8b17;
--vp-c-yellow-3: #a46a0a;
--vp-c-yellow-soft: rgba(234, 179, 8, 0.16);
--vp-c-red-1: #f66f81;
--vp-c-red-2: #f14158;
--vp-c-red-3: #b62a3c;
--vp-c-red-soft: rgba(244, 63, 94, 0.16);
}
/**
* Colors Theme
* Colors: Background
*
* - `bg`: The bg color used for main screen.
*
* - `bg-alt`: The alternative bg color used in places such as "sidebar",
* or "code block".
*
* - `bg-elv`: The elevated bg color. This is used at parts where it "floats",
* such as "dialog".
*
* - `bg-soft`: The bg color to slightly distinguish some components from
* the page. Used for things like "carbon ads" or "table".
* -------------------------------------------------------------------------- */
:root {
--vp-c-bg: #ffffff;
--vp-c-bg-elv: #ffffff;
--vp-c-bg-elv-up: #ffffff;
--vp-c-bg-elv-down: #f6f6f7;
--vp-c-bg-elv-mute: #f6f6f7;
--vp-c-bg-soft: #f6f6f7;
--vp-c-bg-soft-up: #ffffff;
--vp-c-bg-soft-down: #e3e3e5;
--vp-c-bg-soft-mute: #e3e3e5;
--vp-c-bg-alt: #f6f6f7;
--vp-c-border: rgba(60, 60, 67, 0.29);
--vp-c-divider: rgba(60, 60, 67, 0.12);
--vp-c-gutter: rgba(60, 60, 67, 0.12);
--vp-c-neutral: var(--vp-c-black);
--vp-c-neutral-inverse: var(--vp-c-white);
--vp-c-text-1: var(--vp-c-text-light-1);
--vp-c-text-2: var(--vp-c-text-light-2);
--vp-c-text-3: var(--vp-c-text-light-3);
--vp-c-text-inverse-1: var(--vp-c-text-dark-1);
--vp-c-text-inverse-2: var(--vp-c-text-dark-2);
--vp-c-text-inverse-3: var(--vp-c-text-dark-3);
--vp-c-text-hero-name: var(--vp-c-text-dark-1);
--vp-c-text-hero-tagline: var(--vp-c-text-dark-2);
--vp-c-text-hero-text: var(--vp-c-text-dark-1);
--vp-c-text-code: #476582;
--vp-c-brand: var(--vp-c-green);
--vp-c-brand-light: var(--vp-c-green-light);
--vp-c-brand-lighter: var(--vp-c-green-lighter);
--vp-c-brand-dark: var(--vp-c-green-dark);
--vp-c-brand-darker: var(--vp-c-green-darker);
--vp-c-mute: #f6f6f7;
--vp-c-mute-light: #f9f9fc;
--vp-c-mute-lighter: #ffffff;
--vp-c-mute-dark: #e3e3e5;
--vp-c-mute-darker: #d7d7d9;
--search-bg-color: var(--vp-c-bg-elv-mute);
--search-text-color: var(--vp-c-text-2);
--search-item-text-color: var(--vp-c-text-1);
--search-item-focus-bg-color: var(--vp-c-bg-alt);
--search-input-width: 8rem;
--search-result-width: 20rem;
--search-border-color: var(--vp-c-divider);
--c-brand: var(--vp-c-brand);
--vp-c-bg-elv: #ffffff;
--vp-c-bg-soft: #f6f6f7;
}
html.dark {
--vp-c-bg: #1e1e20;
--vp-c-bg-elv: #252529;
--vp-c-bg-elv-up: #313136;
--vp-c-bg-elv-down: #1e1e20;
--vp-c-bg-elv-mute: #313136;
--vp-c-bg-soft: #252529;
--vp-c-bg-soft-up: #313136;
--vp-c-bg-soft-down: #1e1e20;
--vp-c-bg-soft-mute: #313136;
.dark {
--vp-c-bg: #1b1b1f;
--vp-c-bg-alt: #161618;
--vp-c-bg-elv: #202127;
--vp-c-bg-soft: #202127;
}
--vp-c-border: rgba(82, 82, 89, 0.68);
--vp-c-divider: rgba(82, 82, 89, 0.32);
/**
* Colors: Borders
*
* - `divider`: This is used for separators. This is used to divide sections
* within the same components, such as having separator on "h2" heading.
*
* - `border`: This is designed for borders on interactive components.
* For example this should be used for a button outline.
*
* - `gutter`: This is used to divide components in the page. For example
* the header and the lest of the page.
* -------------------------------------------------------------------------- */
:root {
--vp-c-border: #c2c2c4;
--vp-c-divider: #e2e2e3;
--vp-c-gutter: #e2e2e3;
}
.dark {
--vp-c-border: #3c3f44;
--vp-c-divider: #2e2e32;
--vp-c-gutter: #000000;
}
--vp-c-neutral: var(--vp-c-white);
--vp-c-neutral-inverse: var(--vp-c-black);
/**
* Colors: Text
*
* - `text-1`: Used for primary text.
*
* - `text-2`: Used for muted texts, such as "inactive menu" or "info texts".
*
* - `text-3`: Used for subtle texts, such as "placeholders" or "caret icon".
* -------------------------------------------------------------------------- */
--vp-c-text-1: var(--vp-c-text-dark-1);
--vp-c-text-2: var(--vp-c-text-dark-2);
--vp-c-text-3: var(--vp-c-text-dark-3);
:root {
--vp-c-text-1: rgba(60, 60, 67);
--vp-c-text-2: rgba(60, 60, 67, 0.78);
--vp-c-text-3: rgba(60, 60, 67, 0.56);
--vp-c-text-inverse-1: var(--vp-c-text-light-1);
--vp-c-text-inverse-2: var(--vp-c-text-light-2);
--vp-c-text-inverse-3: var(--vp-c-text-light-3);
--vp-c-text-dark-1: rgba(255, 255, 245, 0.86);
--vp-c-text-dark-2: rgba(235, 235, 245, 0.6);
--vp-c-text-dark-3: rgba(235, 235, 245, 0.38);
}
--vp-c-text-code: #c9def1;
.dark {
--vp-c-text-1: rgba(255, 255, 245, 0.86);
--vp-c-text-2: rgba(235, 235, 245, 0.6);
--vp-c-text-3: rgba(235, 235, 245, 0.38);
}
--vp-c-mute: #313136;
--vp-c-mute-light: #3a3a3c;
--vp-c-mute-lighter: #505053;
--vp-c-mute-dark: #2c2c30;
--vp-c-mute-darker: #252529;
/**
* Colors: Function
*
* - `default`: The color used purely for subtle indication without any
* special meanings attached to it such as bg color for menu hover state.
*
* - `brand`: Used for primary brand colors, such as link text, button with
* brand theme, etc.
*
* - `tip`: Used to indicate useful information. The default theme uses the
* brand color for this by default.
*
* - `warning`: Used to indicate warning to the users. Used in custom
* container, badges, etc.
*
* - `danger`: Used to show error, or dangerous message to the users. Used
* in custom container, badges, etc.
*
* To understand the scaling system, refer to "Colors: Palette" section.
* -------------------------------------------------------------------------- */
:root {
--vp-c-default-1: var(--vp-c-gray-1);
--vp-c-default-2: var(--vp-c-gray-2);
--vp-c-default-3: var(--vp-c-gray-3);
--vp-c-default-soft: var(--vp-c-gray-soft);
--vp-c-brand-1: var(--vp-c-turquoise-1);
--vp-c-brand-2: var(--vp-c-turquoise-2);
--vp-c-brand-3: var(--vp-c-turquoise-3);
--vp-c-brand-soft: var(--vp-c-turquoise-soft);
/* DEPRECATED: Use `--vp-c-brand-1` instead. */
--vp-c-brand: var(--vp-c-brand-1);
--vp-c-tip-1: var(--vp-c-brand-1);
--vp-c-tip-2: var(--vp-c-brand-2);
--vp-c-tip-3: var(--vp-c-brand-3);
--vp-c-tip-soft: var(--vp-c-brand-soft);
--vp-c-warning-1: var(--vp-c-yellow-1);
--vp-c-warning-2: var(--vp-c-yellow-2);
--vp-c-warning-3: var(--vp-c-yellow-3);
--vp-c-warning-soft: var(--vp-c-yellow-soft);
--vp-c-danger-1: var(--vp-c-red-1);
--vp-c-danger-2: var(--vp-c-red-2);
--vp-c-danger-3: var(--vp-c-red-3);
--vp-c-danger-soft: var(--vp-c-red-soft);
}
/**
@ -182,21 +260,12 @@ html.dark {
* -------------------------------------------------------------------------- */
:root {
--vp-z-index-local-nav: 10;
--vp-z-index-nav: 20;
--vp-z-index-layout-top: 30;
--vp-z-index-backdrop: 40;
--vp-z-index-sidebar: 50;
--vp-z-index-footer: 60;
}
/**
* Icons
* -------------------------------------------------------------------------- */
:root {
--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");
--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E");
--vp-z-index-footer: 10;
--vp-z-index-local-nav: 20;
--vp-z-index-nav: 30;
--vp-z-index-layout-top: 40;
--vp-z-index-backdrop: 50;
--vp-z-index-sidebar: 60;
}
/**
@ -207,6 +276,14 @@ html.dark {
--vp-layout-max-width: 1440px;
}
/**
* Component: Header Anchor
* -------------------------------------------------------------------------- */
:root {
--vp-header-anchor-symbol: '#';
}
/**
* Component: Code
* -------------------------------------------------------------------------- */
@ -214,46 +291,42 @@ html.dark {
:root {
--vp-code-line-height: 1.7;
--vp-code-font-size: 0.875em;
--vp-code-color: var(--vp-c-brand-1);
--vp-code-link-color: var(--vp-c-brand-1);
--vp-code-link-hover-color: var(--vp-c-brand-2);
--vp-code-bg: var(--vp-c-default-soft);
--vp-code-block-color: var(--vp-c-text-dark-1);
// --vp-code-block-bg: #292b30;
--vp-code-block-bg: #f6f6f7;
--vp-code-block-divider-color: #e2e2e3;
--vp-code-block-color: var(--vp-c-text-2);
--vp-code-block-bg: var(--vp-c-bg-alt);
--vp-code-block-divider-color: var(--vp-c-gutter);
--code-tabs-nav-text-color: var(--vp-c-text-light-2);
--code-tabs-nav-bg-color: #e6e6e7;
--code-tabs-nav-hover-color: var(--vp-code-block-bg);
--vp-code-lang-color: var(--vp-c-text-3);
--vp-code-line-highlight-color: rgba(142, 150, 170, 0.14);
--vp-code-line-number-color: var(--vp-c-text-light-3);
--vp-code-line-highlight-color: var(--vp-c-default-soft);
--vp-code-line-number-color: var(--vp-c-text-3);
--vp-code-line-diff-add-color: var(--vp-c-green-dimm-2);
--vp-code-line-diff-add-symbol-color: var(--vp-c-green);
--vp-code-line-diff-add-color: var(--vp-c-green-soft);
--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);
--vp-code-line-diff-remove-color: var(--vp-c-red-dimm-2);
--vp-code-line-diff-remove-symbol-color: var(--vp-c-red);
--vp-code-line-diff-remove-color: var(--vp-c-red-soft);
--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);
--vp-code-line-warning-color: var(--vp-c-yellow-dimm-2);
--vp-code-line-error-color: var(--vp-c-red-dimm-2);
--vp-code-line-warning-color: var(--vp-c-yellow-soft);
--vp-code-line-error-color: var(--vp-c-red-soft);
--vp-code-copy-code-hover-bg: rgba(255, 255, 255, 0.05);
--vp-code-copy-code-active-text: var(--vp-c-text-dark-2);
--vp-code-copy-code-border-color: var(--vp-c-divider);
--vp-code-copy-code-bg: var(--vp-c-bg-soft);
--vp-code-copy-code-hover-border-color: var(--vp-c-divider);
--vp-code-copy-code-hover-bg: var(--vp-c-bg);
--vp-code-copy-code-active-text: var(--vp-c-text-2);
--vp-code-copy-copied-text-content: 'Copied';
--vp-code-tab-divider: var(--vp-code-block-divider-color);
--vp-code-tab-text-color: var(--vp-c-text-dark-2);
--vp-code-tab-text-color: var(--vp-c-text-2);
--vp-code-tab-bg: var(--vp-code-block-bg);
--vp-code-tab-hover-text-color: var(--vp-c-text-dark-1);
--vp-code-tab-active-text-color: var(--vp-c-text-dark-1);
--vp-code-tab-active-bar-color: var(--vp-c-brand);
}
html.dark {
--vp-code-block-bg: #161618;
--vp-code-block-divider-color: #000000;
--vp-code-line-number-color: var(--vp-c-text-dark-3);
--code-tabs-nav-text-color: var(--vp-c-text-dark-2);
--code-tabs-nav-bg-color: #3a404c;
--code-tabs-nav-hover-color: #434a57;
--vp-code-tab-hover-text-color: var(--vp-c-text-1);
--vp-code-tab-active-text-color: var(--vp-c-text-1);
--vp-code-tab-active-bar-color: var(--vp-c-brand-1);
}
/**
@ -261,28 +334,28 @@ html.dark {
* -------------------------------------------------------------------------- */
:root {
--vp-button-brand-border: var(--vp-c-brand-lighter);
--vp-button-brand-border: transparent;
--vp-button-brand-text: var(--vp-c-white);
--vp-button-brand-bg: var(--vp-c-brand);
--vp-button-brand-hover-border: var(--vp-c-brand-lighter);
--vp-button-brand-bg: var(--vp-c-brand-1);
--vp-button-brand-hover-border: transparent;
--vp-button-brand-hover-text: var(--vp-c-white);
--vp-button-brand-hover-bg: var(--vp-c-brand-dark);
--vp-button-brand-active-border: var(--vp-c-brand-lighter);
--vp-button-brand-hover-bg: var(--vp-c-brand-2);
--vp-button-brand-active-border: transparent;
--vp-button-brand-active-text: var(--vp-c-white);
--vp-button-brand-active-bg: var(--vp-c-brand-darker);
--vp-button-brand-active-bg: var(--vp-c-brand-1);
--vp-button-alt-border: var(--vp-c-border);
--vp-button-alt-text: var(--vp-c-neutral);
--vp-button-alt-bg: var(--vp-c-mute);
--vp-button-alt-hover-border: var(--vp-c-border);
--vp-button-alt-hover-text: var(--vp-c-neutral);
--vp-button-alt-hover-bg: var(--vp-c-mute-dark);
--vp-button-alt-active-border: var(--vp-c-border);
--vp-button-alt-active-text: var(--vp-c-neutral);
--vp-button-alt-active-bg: var(--vp-c-mute-darker);
--vp-button-alt-border: transparent;
--vp-button-alt-text: var(--vp-c-text-1);
--vp-button-alt-bg: var(--vp-c-default-3);
--vp-button-alt-hover-border: transparent;
--vp-button-alt-hover-text: var(--vp-c-text-1);
--vp-button-alt-hover-bg: var(--vp-c-default-2);
--vp-button-alt-active-border: transparent;
--vp-button-alt-active-text: var(--vp-c-text-1);
--vp-button-alt-active-bg: var(--vp-c-default-1);
--vp-button-sponsor-border: var(--vp-c-gray-light-3);
--vp-button-sponsor-text: var(--vp-c-text-light-2);
--vp-button-sponsor-border: var(--vp-c-text-2);
--vp-button-sponsor-text: var(--vp-c-text-2);
--vp-button-sponsor-bg: transparent;
--vp-button-sponsor-hover-border: var(--vp-c-sponsor);
--vp-button-sponsor-hover-text: var(--vp-c-sponsor);
@ -292,9 +365,10 @@ html.dark {
--vp-button-sponsor-active-bg: transparent;
}
html.dark {
--vp-button-sponsor-border: var(--vp-c-gray-dark-1);
--vp-button-sponsor-text: var(--vp-c-text-dark-2);
.dark {
--vp-button-brand-bg: var(--vp-c-brand-2);
--vp-button-brand-hover-bg: var(--vp-c-brand-1);
--vp-button-brand-active-bg: var(--vp-c-brand-3);
}
/**
@ -305,30 +379,30 @@ html.dark {
--vp-custom-block-font-size: 14px;
--vp-custom-block-code-font-size: 13px;
--vp-custom-block-info-border: var(--vp-c-border);
--vp-custom-block-info-text: var(--vp-c-text-2);
--vp-custom-block-info-bg: var(--vp-c-bg-soft);
--vp-custom-block-info-code-bg: var(--vp-c-mute);
--vp-custom-block-info-border: transparent;
--vp-custom-block-info-text: var(--vp-c-text-1);
--vp-custom-block-info-bg: var(--vp-c-default-soft);
--vp-custom-block-info-code-bg: var(--vp-c-default-soft);
--vp-custom-block-tip-border: var(--vp-c-green-dimm-3);
--vp-custom-block-tip-text: var(--vp-c-green);
--vp-custom-block-tip-bg: var(--vp-c-green-dimm-1);
--vp-custom-block-tip-code-bg: var(--vp-custom-block-tip-bg);
--vp-custom-block-tip-border: transparent;
--vp-custom-block-tip-text: var(--vp-c-text-1);
--vp-custom-block-tip-bg: var(--vp-c-brand-soft);
--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
--vp-custom-block-warning-border: var(--vp-c-yellow-dimm-3);
--vp-custom-block-warning-text: var(--vp-c-yellow);
--vp-custom-block-warning-bg: var(--vp-c-yellow-dimm-1);
--vp-custom-block-warning-code-bg: var(--vp-custom-block-warning-bg);
--vp-custom-block-warning-border: transparent;
--vp-custom-block-warning-text: var(--vp-c-text-1);
--vp-custom-block-warning-bg: var(--vp-c-warning-soft);
--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);
--vp-custom-block-danger-border: var(--vp-c-red-dimm-3);
--vp-custom-block-danger-text: var(--vp-c-red);
--vp-custom-block-danger-bg: var(--vp-c-red-dimm-1);
--vp-custom-block-danger-code-bg: var(--vp-custom-block-danger-bg);
--vp-custom-block-danger-border: transparent;
--vp-custom-block-danger-text: var(--vp-c-text-1);
--vp-custom-block-danger-bg: var(--vp-c-danger-soft);
--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);
--vp-custom-block-details-border: var(--vp-custom-block-info-border);
--vp-custom-block-details-text: var(--vp-custom-block-info-text);
--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);
--vp-custom-block-details-code-bg: var(--vp-custom-block-details-bg);
--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg);
}
/**
@ -338,9 +412,8 @@ html.dark {
:root {
--vp-input-border-color: var(--vp-c-border);
--vp-input-bg-color: var(--vp-c-bg-alt);
--vp-input-hover-border-color: var(--vp-c-gray);
--vp-input-switch-bg-color: var(--vp-c-mute);
--vp-input-switch-bg-color: var(--vp-c-gray-soft);
}
/**
@ -351,6 +424,15 @@ html.dark {
--vp-nav-height: 64px;
--vp-nav-bg-color: var(--vp-c-bg);
--vp-nav-screen-bg-color: var(--vp-c-bg);
--vp-nav-logo-height: 24px;
}
.hide-nav {
--vp-nav-height: 0px;
}
.hide-nav .VPSidebar {
--vp-nav-height: 22px;
}
/**
@ -383,11 +465,15 @@ html.dark {
* -------------------------------------------------------------------------- */
:root {
--vp-home-hero-name-color: var(--vp-c-brand);
--vp-home-hero-name-color: var(--vp-c-brand-1);
--vp-home-hero-name-background: transparent;
--vp-home-hero-image-background-image: none;
--vp-home-hero-image-filter: none;
--vp-c-text-hero-name: var(--vp-c-text-dark-1);
--vp-c-text-hero-tagline: var(--vp-c-text-dark-2);
--vp-c-text-hero-text: var(--vp-c-text-dark-1);
}
/**
@ -395,33 +481,114 @@ html.dark {
* -------------------------------------------------------------------------- */
:root {
--vp-badge-info-border: var(--vp-c-border);
--vp-badge-info-border: transparent;
--vp-badge-info-text: var(--vp-c-text-2);
--vp-badge-info-bg: var(--vp-c-bg-soft);
--vp-badge-info-bg: var(--vp-c-default-soft);
--vp-badge-tip-border: var(--vp-c-green-dark);
--vp-badge-tip-text: var(--vp-c-green);
--vp-badge-tip-bg: var(--vp-c-green-dimm-1);
--vp-badge-tip-border: transparent;
--vp-badge-tip-text: var(--vp-c-brand-1);
--vp-badge-tip-bg: var(--vp-c-brand-soft);
--vp-badge-warning-border: var(--vp-c-yellow-dark);
--vp-badge-warning-text: var(--vp-c-yellow);
--vp-badge-warning-bg: var(--vp-c-yellow-dimm-1);
--vp-badge-warning-border: transparent;
--vp-badge-warning-text: var(--vp-c-warning-1);
--vp-badge-warning-bg: var(--vp-c-warning-soft);
--vp-badge-danger-border: var(--vp-c-red-dark);
--vp-badge-danger-text: var(--vp-c-red);
--vp-badge-danger-bg: var(--vp-c-red-dimm-1);
--vp-badge-danger-border: transparent;
--vp-badge-danger-text: var(--vp-c-danger-1);
--vp-badge-danger-bg: var(--vp-c-danger-soft);
}
/**
* Component: CarbonAds
* Component: Carbon Ads
* -------------------------------------------------------------------------- */
// :root {
// --vp-carbon-ads-text-color: var(--vp-c-text-1);
// --vp-carbon-ads-poweredby-color: var(--vp-c-text-2);
// --vp-carbon-ads-bg-color: var(--vp-c-bg-soft);
// --vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);
// --vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1);
// }
/**
* Component: Local Search
* -------------------------------------------------------------------------- */
:root {
--vp-carbon-ads-text-color: var(--vp-c-text-1);
--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);
--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);
--vp-carbon-ads-hover-text-color: var(--vp-c-brand);
--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1);
--vp-local-search-bg: var(--vp-c-bg);
--vp-local-search-result-bg: var(--vp-c-bg);
--vp-local-search-result-border: var(--vp-c-divider);
--vp-local-search-result-selected-bg: var(--vp-c-bg);
--vp-local-search-result-selected-border: var(--vp-c-brand-1);
--vp-local-search-highlight-bg: var(--vp-c-brand-1);
--vp-local-search-highlight-text: var(--vp-c-neutral-inverse);
}
/** Component: Search **/
:root {
--search-bg-color: var(--vp-c-bg-elv);
--search-text-color: var(--vp-c-text-2);
--search-item-text-color: var(--vp-c-text-1);
--search-item-focus-bg-color: var(--vp-c-bg-alt);
--search-input-width: 8rem;
--search-result-width: 20rem;
--search-border-color: var(--vp-c-divider);
--search-accent-color: var(--vp-c-brand-2);
}
/* md enhance code-tabs */
:root {
--code-tabs-nav-text-color: var(--vp-c-text-1);
--code-tabs-nav-bg-color: #e6e6e7;
--code-tabs-nav-hover-color: var(--vp-code-block-bg);
}
.dark {
--code-tabs-nav-bg-color: #3a404c;
--code-tabs-nav-hover-color: #434a57;
}
/* md enhance hints */
:root {
// important
--important-title-color: var(--vp-c-text-1);
--important-bg-color: #f4eefe;
--important-border-color: #f4eefe;
--important-code-bg-color: rgb(163 113 247 / 10%);
// info
--info-title-color: var(--vp-c-text-1);
--info-bg-color: var(--vp-custom-block-info-bg);
--info-border-color: var(--vp-custom-block-info-border);
--info-code-bg-color: var(--vp-custom-block-info-code-bg);
// note
--note-title-color: var(--vp-c-text-3);
--note-bg-color: var(--vp-c-bg-elv);
--note-border-color: var(--vp-c-divider);
--note-code-bg-color: var(--vp-c-default-soft);
// tip
--tip-title-color: var(--vp-c-text-1);
--tip-bg-color: var(--vp-custom-block-tip-bg);
--tip-border-color: var(--vp-custom-block-tip-border);
--tip-code-bg-color: var(--vp-custom-block-tip-code-bg);
// warning
--warning-title-color: var(--vp-c-text-1);
--warning-bg-color: var(--vp-custom-block-warning-bg);
--warning-border-color: var(--vp-custom-block-warning-border);
--warning-code-bg-color: var(--vp-custom-block-warning-code-bg);
// caution
--caution-title-color: var(--vp-c-text-1);
--caution-bg-color: var(--vp-custom-block-danger-bg);
--caution-border-color: var(--vp-custom-block-danger-border);
--caution-code-bg-color: var(--vp-custom-block-danger-code-bg);
// detail
--detail-bg-color: var(--vp-custom-block-details-bg);
--detail-text-color: inherit;
--detail-code-bg-color: var(--vp-custom-block-details-code-bg);
}
:root {

View File

@ -2,3 +2,5 @@ export * from './shared.js'
export * from './normalizeLink.js'
export * from './socialIcons.js'
export * from './dom.js'
export * from './resolveEditLink.js'
export * from './resolveRepoType.js'

View File

@ -0,0 +1,64 @@
import {
isLinkHttp,
removeEndingSlash,
removeLeadingSlash,
} from '@vuepress/shared'
import { resolveRepoType } from './resolveRepoType.js'
import type { RepoType } from './resolveRepoType.js'
export const editLinkPatterns: Record<Exclude<RepoType, null>, string> = {
GitHub: ':repo/edit/:branch/:path',
GitLab: ':repo/-/edit/:branch/:path',
Gitee: ':repo/edit/:branch/:path',
Bitbucket:
':repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default',
}
const resolveEditLinkPatterns = ({
docsRepo,
editLinkPattern,
}: {
docsRepo: string
editLinkPattern?: string
}): string | null => {
if (editLinkPattern) {
return editLinkPattern
}
const repoType = resolveRepoType(docsRepo)
if (repoType !== null) {
return editLinkPatterns[repoType]
}
return null
}
export const resolveEditLink = ({
docsRepo,
docsBranch,
docsDir,
filePathRelative,
editLinkPattern,
}: {
docsRepo: string
docsBranch: string
docsDir: string
filePathRelative: string | null
editLinkPattern?: string
}): string | null => {
if (!filePathRelative) return null
const pattern = resolveEditLinkPatterns({ docsRepo, editLinkPattern })
if (!pattern) return null
return pattern
.replace(
/:repo/,
isLinkHttp(docsRepo) ? docsRepo : `https://github.com/${docsRepo}`,
)
.replace(/:branch/, docsBranch)
.replace(
/:path/,
removeLeadingSlash(`${removeEndingSlash(docsDir)}/${filePathRelative}`),
)
}

View File

@ -0,0 +1,11 @@
import { isLinkHttp } from '@vuepress/shared'
export type RepoType = 'GitHub' | 'GitLab' | 'Gitee' | 'Bitbucket' | null
export const resolveRepoType = (repo: string): RepoType => {
if (!isLinkHttp(repo) || /github\.com/.test(repo)) return 'GitHub'
if (/bitbucket\.org/.test(repo)) return 'Bitbucket'
if (/gitlab\.com/.test(repo)) return 'GitLab'
if (/gitee\.com/.test(repo)) return 'Gitee'
return null
}

View File

@ -97,9 +97,9 @@ export const setupPlugins = (
options.git !== false
? gitPlugin({
createdTime: true,
updatedTime: true,
contributors: false,
createdTime: false,
updatedTime: localeOptions.lastUpdated !== false,
contributors: localeOptions.contributors !== false,
})
: [],
@ -141,7 +141,10 @@ export const setupPlugins = (
? docsearchPlugin(options.docsearch!)
: [],
options.shikiji !== false ? shikijiPlugin(options.shikiji) : [],
options.shikiji !== false ? shikijiPlugin({
theme: { light: 'vitesse-light', dark: 'vitesse-dark' },
...(options.shikiji ?? {}),
}) : [],
options.copyCode !== false
? copyCodePlugin({
@ -154,7 +157,7 @@ export const setupPlugins = (
? mdEnhancePlugin(
Object.assign(
{
container: true, // info note tip warning danger details
hint: true, // info note tip warning danger details d
codetabs: true,
tabs: true,
align: true,

View File

@ -34,6 +34,8 @@ export const plumeTheme = ({
plugins: setupPlugins(app, themePlugins, localeOptions),
onInitialized: async (app) => await setupPage(app, localeOptions),
extendsPage: (page: Page<PlumeThemePageData>) => {
page.data.filePathRelative = page.filePathRelative
page.routeMeta.title = page.title
autoCategory(app, page, localeOptions)
pageContentRendered(page)
},

View File

@ -1,3 +1,5 @@
import type { NavItemWithLink } from ".";
export interface PlumeThemeHomeFrontmatter {
home?: true
banner?: string
@ -15,7 +17,17 @@ export interface PlumeThemeHeroAction {
text: string
link?: string
}
export interface PlumeThemePostFrontmatter {
export interface PlumeThemePageFrontmatter {
editLink?: boolean
editLinkPattern?: string
lastUpdated?: boolean
contributors?: boolean
prev?: string | NavItemWithLink
next?: string | NavItemWithLink
}
export interface PlumeThemePostFrontmatter extends PlumeThemePageFrontmatter {
createTime?: string
author?: string
tags?: string[]
@ -24,6 +36,6 @@ export interface PlumeThemePostFrontmatter {
banner?: string
}
export interface PlumeThemeNoteFrontmatter {
export interface PlumeThemeNoteFrontmatter extends PlumeThemePageFrontmatter {
createTime?: string
}

View File

@ -160,11 +160,11 @@ export interface PlumeThemeLocaleData extends LocaleData {
/**
* repository of navbar
*/
// repo?: null | string
repo?: null | string
/**
* repository text of navbar
*/
// repoLabel?: string
repoLabel?: string
/**
* Navbar config
@ -172,6 +172,76 @@ export interface PlumeThemeLocaleData extends LocaleData {
* Set to `false` to disable navbar in current locale
*/
navbar?: false | NavItem[]
/**
* Page meta - edit link config
*
* Whether to show "Edit this page" or not
*/
editLink?: boolean
/**
* Page meta - edit link config
*
* The text to replace the default "Edit this page"
*/
editLinkText?: string
/**
* Page meta - edit link config
*
* Pattern of edit link
*
* @example ':repo/edit/:branch/:path'
*/
editLinkPattern?: string
/**
* Page meta - edit link config
*
* Use `repo` config by default
*
* Set this config if your docs is placed in a different repo
*/
docsRepo?: string
/**
* Page meta - edit link config
*
* Set this config if the branch of your docs is not 'main'
*/
docsBranch?: string
/**
* Page meta - edit link config
*
* Set this config if your docs is placed in sub dir of your `docsRepo`
*/
docsDir?: string
/**
* Page meta - last updated config
*
* Whether to show "Last Updated" or not
*/
lastUpdated?: boolean
/**
* Page meta - last updated config
*
* The text to replace the default "Last Updated"
*/
lastUpdatedText?: string
/**
* Page meta - contributors config
*
* Whether to show "Contributors" or not
*/
contributors?: boolean
/**
* Page meta - contributors config
*
* The text to replace the default "Contributors"
*/
contributorsText?: string
/**
*
*/
@ -191,6 +261,10 @@ export interface PlumeThemeLocaleData extends LocaleData {
outlineLabel?: string
prevPageLabel?: string
nextPageLabel?: string
footer?:
| false
| {

View File

@ -1,11 +1,10 @@
export interface PlumeThemePageData {
git: {
createTime: number
updateTime: number
}
import type { GitPluginPageData } from '@vuepress/plugin-git'
export interface PlumeThemePageData extends GitPluginPageData {
isBlogPost: boolean
type: 'blog' | 'product'
categoryList?: PageCategoryData[]
filePathRelative: string | null
}
export interface PageCategoryData {

View File

@ -12,7 +12,10 @@
],
"@internal/*": ["./docs/.vuepress/.temp/internal/*"],
"@vuepress-plume/*": ["./plugins/*/src/node/index.ts"],
"vuepress-theme-plume": ["./theme/src/node/index.ts"]
"vuepress-theme-plume": ["./theme/src/node/index.ts"],
"vuepress-plugin-netlify-functions": [
"./plugins/plugin-netlify-functions/src/node/index.ts"
]
},
"types": ["webpack-env", "vite/client"]
},