feat: 自定义vitepress主题demo
commit
7ff40d80ff
@ -0,0 +1,6 @@
|
|||||||
|
/coverage
|
||||||
|
/node_modules
|
||||||
|
dist
|
||||||
|
TODOs.md
|
||||||
|
.DS_Store
|
||||||
|
demo/.vitepress/cache
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"type": "module"
|
||||||
|
}
|
@ -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
|
@ -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": []
|
||||||
|
}
|
@ -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
|
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"version": 3,
|
||||||
|
"sources": [],
|
||||||
|
"sourcesContent": [],
|
||||||
|
"mappings": "",
|
||||||
|
"names": []
|
||||||
|
}
|
@ -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": {}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
{"type":"module"}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -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": {}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
{"type":"module"}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -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, {
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
---
|
||||||
|
page: true
|
||||||
|
date: 2021-06-30
|
||||||
|
title: 自定义标题
|
||||||
|
sidebar: false
|
||||||
|
---
|
||||||
|
<script setup>
|
||||||
|
</script>
|
||||||
|
<Home>
|
||||||
|
|
||||||
|
<template #banner>
|
||||||
|
<img src="/img/page.png" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #description>
|
||||||
|
<!-- 一些其他描述 -->
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div class="card-header max-width">
|
||||||
|
<div class="title">手册</div>
|
||||||
|
<div class="desc">基础知识手册(学习基础笔记)</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="news-box max-width">
|
||||||
|
<div class="card-item">
|
||||||
|
<div class="item-box">
|
||||||
|
<div class="icon">?</div>
|
||||||
|
<div class="title">AAA笔记</div>
|
||||||
|
<div class="desc">
|
||||||
|
我就是记录一些笔记,以及异常处理经验记录,工作中遇到问题记录解决方案
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-item">
|
||||||
|
<div class="item-box active">
|
||||||
|
<div class="icon">?</div>
|
||||||
|
<div class="title">BBB笔记</div>
|
||||||
|
<div class="desc">
|
||||||
|
我就是记录一些笔记,以及异常处理经验记录,工作中遇到问题记录解决方案
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-item">
|
||||||
|
<div class="item-box">
|
||||||
|
<div class="icon">?</div>
|
||||||
|
<div class="title">CCC笔记</div>
|
||||||
|
<div class="desc">
|
||||||
|
我就是记录一些笔记,以及异常处理经验记录,工作中遇到问题记录解决方案
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-item">
|
||||||
|
<div class="item-box active">
|
||||||
|
<div class="icon">?</div>
|
||||||
|
<div class="title">DDD笔记</div>
|
||||||
|
<div class="desc">
|
||||||
|
我就是记录一些笔记,以及异常处理经验记录,工作中遇到问题记录解决方案
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Home>
|
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "custom-vitepress-theme-demo",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vitepress dev --host 0.0.0.0",
|
||||||
|
"build": "vitepress build "
|
||||||
|
},
|
||||||
|
"keywords": [],
|
||||||
|
"author": "",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "^18.15.11",
|
||||||
|
"markdown-from-posts": "^1.0.5",
|
||||||
|
"vitepress": "1.0.0-alpha.64",
|
||||||
|
"ppst-vitepress-theme": "^0.0.2"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
page: true
|
||||||
|
title: Archive
|
||||||
|
description: Archive
|
||||||
|
sidebar: false
|
||||||
|
---
|
||||||
|
<Archives>
|
||||||
|
|
||||||
|
<template #banner>
|
||||||
|
<img src="/img/banner.png" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</Archives>
|
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
page: true
|
||||||
|
title: 分类
|
||||||
|
description: 分类
|
||||||
|
sidebar: false
|
||||||
|
---
|
||||||
|
<CategoryPage title='分类' category='demo' description="分类">
|
||||||
|
|
||||||
|
<template #banner>
|
||||||
|
<img src="/img/banner.png" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</CategoryPage>
|
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
page: true
|
||||||
|
title: 默认
|
||||||
|
description: 默认
|
||||||
|
sidebar: false
|
||||||
|
---
|
||||||
|
<DefaultPage title='默认' category='default' description="默认">
|
||||||
|
<template #banner>
|
||||||
|
<img src="/img/banner.png" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
</DefaultPage>
|
||||||
|
|
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
page: true
|
||||||
|
title: 搜索
|
||||||
|
description: 全文检索
|
||||||
|
sidebar: false
|
||||||
|
---
|
||||||
|
<Search>
|
||||||
|
<template #banner>
|
||||||
|
<img src="/img/banner.png" />
|
||||||
|
</template>
|
||||||
|
</Search>
|
@ -0,0 +1,63 @@
|
|||||||
|
---
|
||||||
|
title: default
|
||||||
|
date: 2018-09-14 13:57:02
|
||||||
|
category: default
|
||||||
|
tags:
|
||||||
|
- default
|
||||||
|
---
|
||||||
|
# 主标题AAAA
|
||||||
|
|
||||||
|
## 副标题
|
||||||
|
|
||||||
|
我是内容
|
||||||
|
|
||||||
|
```js
|
||||||
|
let a = '我是js代码'
|
||||||
|
```
|
||||||
|
|
||||||
|
```css
|
||||||
|
.default{
|
||||||
|
color:red;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install default
|
||||||
|
```
|
||||||
|
|
||||||
|
### 副标题1
|
||||||
|
|
||||||
|
我是内容
|
||||||
|
|
||||||
|
```js
|
||||||
|
let a = '我是js代码'
|
||||||
|
```
|
||||||
|
|
||||||
|
```css
|
||||||
|
.default{
|
||||||
|
color:red;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install default
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
#### 副标题111
|
||||||
|
|
||||||
|
我是内容
|
||||||
|
|
||||||
|
```js
|
||||||
|
let a = '我是js代码'
|
||||||
|
```
|
||||||
|
|
||||||
|
```css
|
||||||
|
.default{
|
||||||
|
color:red;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install default
|
||||||
|
```
|
@ -0,0 +1,63 @@
|
|||||||
|
---
|
||||||
|
title: demo
|
||||||
|
date: 2018-09-14 13:57:02
|
||||||
|
category: demo
|
||||||
|
tags:
|
||||||
|
- demo
|
||||||
|
---
|
||||||
|
# 主标题BBBB
|
||||||
|
|
||||||
|
## 副标题
|
||||||
|
|
||||||
|
我是内容
|
||||||
|
|
||||||
|
```js
|
||||||
|
let a = '我是js代码'
|
||||||
|
```
|
||||||
|
|
||||||
|
```css
|
||||||
|
.demo{
|
||||||
|
color:red;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install demo
|
||||||
|
```
|
||||||
|
|
||||||
|
### 副标题1
|
||||||
|
|
||||||
|
我是内容
|
||||||
|
|
||||||
|
```js
|
||||||
|
let a = '我是js代码'
|
||||||
|
```
|
||||||
|
|
||||||
|
```css
|
||||||
|
.demo{
|
||||||
|
color:red;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install demo
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
#### 副标题111
|
||||||
|
|
||||||
|
我是内容
|
||||||
|
|
||||||
|
```js
|
||||||
|
let a = '我是js代码'
|
||||||
|
```
|
||||||
|
|
||||||
|
```css
|
||||||
|
.demo{
|
||||||
|
color:red;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
npm install demo
|
||||||
|
```
|
Binary file not shown.
After Width: | Height: | Size: 4.0 KiB |
Binary file not shown.
After Width: | Height: | Size: 60 KiB |
Binary file not shown.
After Width: | Height: | Size: 83 KiB |
Loading…
Reference in New Issue