feat: 自定义vitepress主题demo

This commit is contained in:
ppst
2023-06-07 10:13:54 +08:00
commit 7ff40d80ff
31 changed files with 30689 additions and 0 deletions

23
.vitepress/cache/deps/_metadata.json vendored Normal file
View File

@@ -0,0 +1,23 @@
{
"hash": "ae1feb48",
"browserHash": "e0d66d6a",
"optimized": {
"vue": {
"src": "../../../node_modules/.pnpm/vue@3.3.4/node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "8fc6d2ae",
"needsInterop": false
},
"ppst-vitepress-theme": {
"src": "../../../node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/index.ts",
"file": "ppst-vitepress-theme.js",
"fileHash": "2f2eb96a",
"needsInterop": false
}
},
"chunks": {
"chunk-WICYTZ2N": {
"file": "chunk-WICYTZ2N.js"
}
}
}

10796
.vitepress/cache/deps/chunk-WICYTZ2N.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

3
.vitepress/cache/deps/package.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"type": "module"
}

View File

@@ -0,0 +1,49 @@
import {
defineComponent,
h,
provide
} from "./chunk-WICYTZ2N.js";
// node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/index.ts
import "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/normalize.css@8.0.1/node_modules/normalize.css/normalize.css";
import "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/styles/variables.css";
import "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/styles/switch.css";
import "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/styles/custom.css";
import "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/styles/theme.css";
import Layout from "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/components/Layout.vue";
import Search from "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/components/Search.vue";
import Archives from "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/components/Archives.vue";
import Home from "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/components/Home.vue";
import DefaultPage from "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/components/DefaultPage.vue";
import CategoryPage from "D:/pengpian/git/custom-vitepress-theme-demo/node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/components/CategoryPage.vue";
// node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/composables/config.ts
import { useData } from "vitepress";
var configSymbol = Symbol("config");
function withConfigProvider(App) {
return defineComponent({
name: "ConfigProvider",
setup(_, { slots }) {
const { theme } = useData();
provide(configSymbol, theme.value);
return () => h(App, null, slots);
}
});
}
// node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/index.ts
var CustomTheme = {
Layout: withConfigProvider(Layout),
NotFound: () => "custom 404",
enhanceApp({ app }) {
app.component("Search", Search);
app.component("Archives", Archives);
app.component("Home", Home);
app.component("DefaultPage", DefaultPage);
app.component("CategoryPage", CategoryPage);
}
};
export {
CustomTheme
};
//# sourceMappingURL=ppst-vitepress-theme.js.map

View File

@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../../../node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/index.ts", "../../../node_modules/.pnpm/ppst-vitepress-theme@0.0.2_vitepress@1.0.0-alpha.64/node_modules/ppst-vitepress-theme/src/vitepress/composables/config.ts"],
"sourcesContent": ["import 'normalize.css/normalize.css'\nimport './styles/variables.css'\nimport './styles/switch.css'\nimport './styles/custom.css'\nimport './styles/theme.css'\nimport Layout from './components/Layout.vue'\nimport Search from './components/Search.vue'\nimport Archives from './components/Archives.vue'\nimport Home from './components/Home.vue'\nimport DefaultPage from './components/DefaultPage.vue'\nimport CategoryPage from './components/CategoryPage.vue'\nimport { Theme } from 'vitepress'\nimport { withConfigProvider } from './composables/config'\n\nconst CustomTheme: Theme = {\n Layout: withConfigProvider(Layout),\n NotFound: () => 'custom 404',\n enhanceApp({ app }) {\n app.component('Search', Search)\n app.component('Archives', Archives)\n app.component('Home', Home)\n app.component('DefaultPage', DefaultPage)\n app.component('CategoryPage', CategoryPage)\n }\n}\n\nexport { CustomTheme }\nexport type { Config } from './config'\n", "import {\n Component,\n defineComponent,\n h,\n inject,\n InjectionKey,\n provide,\n Ref\n} from 'vue'\nimport { useData } from 'vitepress'\nimport { Config } from '../config'\n\nconst configSymbol: InjectionKey<Ref<Config>> = Symbol('config')\nexport function withConfigProvider(App: Component) {\n return defineComponent({\n name: 'ConfigProvider',\n setup(_, { slots }) {\n const { theme } = useData()\n provide(configSymbol, theme.value)\n return () => h(App, null, slots)\n }\n })\n}\n\nexport function useConfig() {\n return {\n config: inject(configSymbol)!\n }\n}\n"],
"mappings": ";;;;;;;AAAA,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO;AACP,OAAO,YAAY;AACnB,OAAO,YAAY;AACnB,OAAO,cAAc;AACrB,OAAO,UAAU;AACjB,OAAO,iBAAiB;AACxB,OAAO,kBAAkB;;;ACDzB,SAAS,eAAe;AAGxB,IAAM,eAA0C,OAAO,QAAQ;AACxD,SAAS,mBAAmB,KAAgB;AACjD,SAAO,gBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,MAAM,GAAG,EAAE,MAAM,GAAG;AAClB,YAAM,EAAE,MAAM,IAAI,QAAQ;AAC1B,cAAQ,cAAc,MAAM,KAAK;AACjC,aAAO,MAAM,EAAE,KAAK,MAAM,KAAK;AAAA,IACjC;AAAA,EACF,CAAC;AACH;;;ADRA,IAAM,cAAqB;AAAA,EACzB,QAAQ,mBAAmB,MAAM;AAAA,EACjC,UAAU,MAAM;AAAA,EAChB,WAAW,EAAE,IAAI,GAAG;AAClB,QAAI,UAAU,UAAU,MAAM;AAC9B,QAAI,UAAU,YAAY,QAAQ;AAClC,QAAI,UAAU,QAAQ,IAAI;AAC1B,QAAI,UAAU,eAAe,WAAW;AACxC,QAAI,UAAU,gBAAgB,YAAY;AAAA,EAC5C;AACF;",
"names": []
}

313
.vitepress/cache/deps/vue.js vendored Normal file
View File

@@ -0,0 +1,313 @@
import {
BaseTransition,
BaseTransitionPropsValidators,
Comment,
EffectScope,
Fragment,
KeepAlive,
ReactiveEffect,
Static,
Suspense,
Teleport,
Text,
Transition,
TransitionGroup,
VueElement,
assertNumber,
callWithAsyncErrorHandling,
callWithErrorHandling,
camelize,
capitalize,
cloneVNode,
compatUtils,
compile,
computed,
createApp,
createBaseVNode,
createBlock,
createCommentVNode,
createElementBlock,
createHydrationRenderer,
createPropsRestProxy,
createRenderer,
createSSRApp,
createSlots,
createStaticVNode,
createTextVNode,
createVNode,
customRef,
defineAsyncComponent,
defineComponent,
defineCustomElement,
defineEmits,
defineExpose,
defineModel,
defineOptions,
defineProps,
defineSSRCustomElement,
defineSlots,
devtools,
effect,
effectScope,
getCurrentInstance,
getCurrentScope,
getTransitionRawChildren,
guardReactiveProps,
h,
handleError,
hasInjectionContext,
hydrate,
initCustomFormatter,
initDirectivesForSSR,
inject,
isMemoSame,
isProxy,
isReactive,
isReadonly,
isRef,
isRuntimeOnly,
isShallow,
isVNode,
markRaw,
mergeDefaults,
mergeModels,
mergeProps,
nextTick,
normalizeClass,
normalizeProps,
normalizeStyle,
onActivated,
onBeforeMount,
onBeforeUnmount,
onBeforeUpdate,
onDeactivated,
onErrorCaptured,
onMounted,
onRenderTracked,
onRenderTriggered,
onScopeDispose,
onServerPrefetch,
onUnmounted,
onUpdated,
openBlock,
popScopeId,
provide,
proxyRefs,
pushScopeId,
queuePostFlushCb,
reactive,
readonly,
ref,
registerRuntimeCompiler,
render,
renderList,
renderSlot,
resolveComponent,
resolveDirective,
resolveDynamicComponent,
resolveFilter,
resolveTransitionHooks,
setBlockTracking,
setDevtoolsHook,
setTransitionHooks,
shallowReactive,
shallowReadonly,
shallowRef,
ssrContextKey,
ssrUtils,
stop,
toDisplayString,
toHandlerKey,
toHandlers,
toRaw,
toRef,
toRefs,
toValue,
transformVNodeArgs,
triggerRef,
unref,
useAttrs,
useCssModule,
useCssVars,
useModel,
useSSRContext,
useSlots,
useTransitionState,
vModelCheckbox,
vModelDynamic,
vModelRadio,
vModelSelect,
vModelText,
vShow,
version,
warn,
watch,
watchEffect,
watchPostEffect,
watchSyncEffect,
withAsyncContext,
withCtx,
withDefaults,
withDirectives,
withKeys,
withMemo,
withModifiers,
withScopeId
} from "./chunk-WICYTZ2N.js";
export {
BaseTransition,
BaseTransitionPropsValidators,
Comment,
EffectScope,
Fragment,
KeepAlive,
ReactiveEffect,
Static,
Suspense,
Teleport,
Text,
Transition,
TransitionGroup,
VueElement,
assertNumber,
callWithAsyncErrorHandling,
callWithErrorHandling,
camelize,
capitalize,
cloneVNode,
compatUtils,
compile,
computed,
createApp,
createBlock,
createCommentVNode,
createElementBlock,
createBaseVNode as createElementVNode,
createHydrationRenderer,
createPropsRestProxy,
createRenderer,
createSSRApp,
createSlots,
createStaticVNode,
createTextVNode,
createVNode,
customRef,
defineAsyncComponent,
defineComponent,
defineCustomElement,
defineEmits,
defineExpose,
defineModel,
defineOptions,
defineProps,
defineSSRCustomElement,
defineSlots,
devtools,
effect,
effectScope,
getCurrentInstance,
getCurrentScope,
getTransitionRawChildren,
guardReactiveProps,
h,
handleError,
hasInjectionContext,
hydrate,
initCustomFormatter,
initDirectivesForSSR,
inject,
isMemoSame,
isProxy,
isReactive,
isReadonly,
isRef,
isRuntimeOnly,
isShallow,
isVNode,
markRaw,
mergeDefaults,
mergeModels,
mergeProps,
nextTick,
normalizeClass,
normalizeProps,
normalizeStyle,
onActivated,
onBeforeMount,
onBeforeUnmount,
onBeforeUpdate,
onDeactivated,
onErrorCaptured,
onMounted,
onRenderTracked,
onRenderTriggered,
onScopeDispose,
onServerPrefetch,
onUnmounted,
onUpdated,
openBlock,
popScopeId,
provide,
proxyRefs,
pushScopeId,
queuePostFlushCb,
reactive,
readonly,
ref,
registerRuntimeCompiler,
render,
renderList,
renderSlot,
resolveComponent,
resolveDirective,
resolveDynamicComponent,
resolveFilter,
resolveTransitionHooks,
setBlockTracking,
setDevtoolsHook,
setTransitionHooks,
shallowReactive,
shallowReadonly,
shallowRef,
ssrContextKey,
ssrUtils,
stop,
toDisplayString,
toHandlerKey,
toHandlers,
toRaw,
toRef,
toRefs,
toValue,
transformVNodeArgs,
triggerRef,
unref,
useAttrs,
useCssModule,
useCssVars,
useModel,
useSSRContext,
useSlots,
useTransitionState,
vModelCheckbox,
vModelDynamic,
vModelRadio,
vModelSelect,
vModelText,
vShow,
version,
warn,
watch,
watchEffect,
watchPostEffect,
watchSyncEffect,
withAsyncContext,
withCtx,
withDefaults,
withDirectives,
withKeys,
withMemo,
withModifiers,
withScopeId
};
//# sourceMappingURL=vue.js.map

7
.vitepress/cache/deps/vue.js.map vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

View File

@@ -0,0 +1,13 @@
{
"hash": "235a2a29",
"browserHash": "1935f98c",
"optimized": {
"vue": {
"src": "../../../../node_modules/.pnpm/vue@3.2.47/node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "9970d6ec",
"needsInterop": false
}
},
"chunks": {}
}

View File

@@ -0,0 +1 @@
{"type":"module"}

9516
.vitepress/cache/deps_temp_a035e839/vue.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,13 @@
{
"hash": "235a2a29",
"browserHash": "1935f98c",
"optimized": {
"vue": {
"src": "../../../../node_modules/.pnpm/vue@3.2.47/node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "9970d6ec",
"needsInterop": false
}
},
"chunks": {}
}

View File

@@ -0,0 +1 @@
{"type":"module"}

9516
.vitepress/cache/deps_temp_cd770f13/vue.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

38
.vitepress/config.ts Normal file
View File

@@ -0,0 +1,38 @@
const { getPosts } = require('markdown-from-posts')
async function config() {
return {
extends: {
markdown: {
headers: {
level: [2, 3]
}
},
},
themeConfig: {
posts: await getPosts(),
title: 'BBBB',
description: '自定义主题BBBB',
docRoot: '',
hasDarkSwitch: true,
homeConfig: {
headline: 'BBBB大标题',//大标题
headlineHeight: 'BBBB高亮',//大标题高亮
subheading: 'BBBB小标题',//小标题
subheadingHeight: '小标题高亮',//小标题高亮
description: '自定义主题简短banner描述',//描述
},
nav: [
{ text: '首页', link: '/', icon: '' },
{ text: '归档', link: '/pages/archives', icon: '' },
{ text: '默认', link: '/pages/default', icon: '' },
{ text: '分类', link: '/pages/category', icon: '' },
{ text: '搜索', link: '/pages/search', icon: '' },
],
footer: {
copyright: '湘ICP备aaaaaaaa-1'
}
}
}
}
module.exports = config()

12
.vitepress/theme/index.ts Normal file
View File

@@ -0,0 +1,12 @@
import { CustomTheme } from 'ppst-vitepress-theme'
// import { h } from 'vue'
import './override.css'
export default {
...CustomTheme,
// Layout() {
// return h(CustomTheme.Layout, null, {
// })
// }
}

View File

@@ -0,0 +1,97 @@
:root {
--c-main-color:#80adff;
}
/* card */
.news-box {
display: flex;
align-items: center;
width: 100%;
margin: 0 auto;
padding: 20px 0;
}
.news-box .card-item {
flex-basis: 25%;
padding: 15px;
transition: all 0.3s ease;
}
.news-box .card-item .item-box {
display: flex;
flex-direction: column;
align-items: center;
border-radius: 15px;
padding: 15px;
margin-bottom: 140px;
background: #f8f8fc;
transition: all 0.3s ease;
}
.news-box .card-item .item-box .icon {
font-size: 48px;
color: var(--c-main-color);
}
.news-box .card-item .item-box .title {
font-size: 18px;
line-height: 2;
font-weight: 500;
color: #020312;
}
.news-box .card-item .item-box .desc {
font-size: 16px;
line-height: 2;
color: #717e96;
overflow: hidden;
}
.news-box .card-item .item-box .desc {
font-size: 16px;
line-height: 2;
color: #717e96;
}
.news-box .card-item:hover .item-box {
background: var(--c-main-color);
transition: all 0.3s ease;
}
.news-box .card-item .item-box.active {
background: var(--c-main-color);
margin-bottom: 0;
}
.news-box .card-item:hover .item-box .icon,
.news-box .card-item:hover .item-box .title,
.news-box .card-item:hover .item-box .desc,
.news-box .card-item .item-box.active .icon,
.news-box .card-item .item-box.active .title,
.news-box .card-item .item-box.active .desc {
color: #fff;
}
@media (max-width: 1200px) {
.banner .banner-left {
font-size: 14px;
}
.banner .banner-left .desc {
font-size: 12px;
}
.note-box {
flex-wrap: wrap;
}
.note-box .note-item {
flex-basis: 100%;
}
.news-box {
flex-wrap: wrap;
}
.news-box .card-item {
flex-basis: 100%;
}
.news-box .card-item .item-box {
margin-bottom: 0;
}
.news-box .card-item .item-box .title {
font-size: 14px;
}
.news-box .card-item .item-box .desc {
font-size: 12px;
}
}