diff --git a/docs/.vitepress/config.js b/docs/.vitepress/config.js index e9a69a0ef6b8..41c30bedb5ce 100644 --- a/docs/.vitepress/config.js +++ b/docs/.vitepress/config.js @@ -66,6 +66,10 @@ function getConfigSidebar() { { text: 'Basics', link: '/config/basics' }, { text: 'Carbon Ads', link: '/config/carbon-ads' } ] + }, + { + text: 'Theme Config', + children: [{ text: 'Homepage', link: '/config/homepage' }] } ] } diff --git a/docs/config/homepage.md b/docs/config/homepage.md new file mode 100644 index 000000000000..ccaea3bca3b4 --- /dev/null +++ b/docs/config/homepage.md @@ -0,0 +1,23 @@ +# Theme Config: Homepage + +VitePress provides a homepage layout. To use it, specify `home: true` plus some other metadata in your root `index.md`'s [YAML frontmatter](../guide/frontmatter). This is an example of how it works: + +```yaml +--- +home: true +heroImage: /logo.png +heroAlt: Logo image +heroText: Hero Title +tagline: Hero subtitle +actionText: Get Started +actionLink: /guide/ +features: +- title: Simplicity First + details: Minimal setup with markdown-centered project structure helps you focus on writing. +- title: Vue-Powered + details: Enjoy the dev experience of Vue + webpack, use Vue components in markdown, and develop custom themes with Vue. +- title: Performant + details: VitePress generates pre-rendered static HTML for each page, and runs as an SPA once a page is loaded. +footer: MIT Licensed | Copyright © 2019-present Evan You +--- +``` diff --git a/src/client/app/composables/frontmatter.ts b/src/client/app/composables/frontmatter.ts new file mode 100644 index 000000000000..a5a7166ed51e --- /dev/null +++ b/src/client/app/composables/frontmatter.ts @@ -0,0 +1,8 @@ +import { Ref, computed } from 'vue' +import { usePageData } from './pageData' + +export type FrontmatterRef = Ref> + +export function useFrontmatter() { + return computed(() => usePageData().value.frontmatter) +} diff --git a/src/client/app/exports.ts b/src/client/app/exports.ts index 193924229763..2776d1455a62 100644 --- a/src/client/app/exports.ts +++ b/src/client/app/exports.ts @@ -14,6 +14,7 @@ export { useRouter, useRoute, Router, Route } from './router' export { useSiteData } from './composables/siteData' export { useSiteDataByRoute } from './composables/siteDataByRoute' export { usePageData } from './composables/pageData' +export { useFrontmatter } from './composables/frontmatter' // components export { Content } from './components/Content' diff --git a/src/client/theme-default/Layout.vue b/src/client/theme-default/Layout.vue index a95cc45a9090..cd5598b84198 100644 --- a/src/client/theme-default/Layout.vue +++ b/src/client/theme-default/Layout.vue @@ -18,7 +18,7 @@