From a084cd3f782f2aaf78a6542b0c86f67676580a73 Mon Sep 17 00:00:00 2001 From: Kia King Ishii Date: Fri, 27 Nov 2020 20:28:55 +0900 Subject: [PATCH] fix: make home page look better (#154) --- docs/.vitepress/config.js | 4 + docs/config/homepage.md | 23 +++ src/client/app/composables/frontmatter.ts | 8 + src/client/app/exports.ts | 1 + src/client/theme-default/Layout.vue | 2 +- src/client/theme-default/components/Home.vue | 188 +----------------- .../theme-default/components/HomeFeatures.vue | 129 ++++++++++++ .../theme-default/components/HomeFooter.vue | 44 ++++ .../theme-default/components/HomeHero.vue | 140 +++++++++++++ src/client/theme-default/styles/layout.css | 22 +- 10 files changed, 367 insertions(+), 194 deletions(-) create mode 100644 docs/config/homepage.md create mode 100644 src/client/app/composables/frontmatter.ts create mode 100644 src/client/theme-default/components/HomeFeatures.vue create mode 100644 src/client/theme-default/components/HomeFooter.vue create mode 100644 src/client/theme-default/components/HomeHero.vue diff --git a/docs/.vitepress/config.js b/docs/.vitepress/config.js index e9a69a0e..41c30bed 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 00000000..ccaea3bc --- /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 00000000..a5a7166e --- /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 19392422..2776d145 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 a95cc45a..cd5598b8 100644 --- a/src/client/theme-default/Layout.vue +++ b/src/client/theme-default/Layout.vue @@ -18,7 +18,7 @@