UNPKG

vuepress-theme-hope

Version:

A light vuepress theme with tons of features

54 lines 2.53 kB
import { computed, defineComponent, h } from "vue"; import { useFrontmatter, usePage } from "vuepress/client"; import ArticleList from "@theme-hope/components/blog/ArticleList"; import CategoryList from "@theme-hope/components/blog/CategoryList"; import InfoPanel from "@theme-hope/components/blog/InfoPanel"; import TagList from "@theme-hope/components/blog/TagList"; import DropTransition from "@theme-hope/components/transitions/DropTransition"; import { useCategoryMap } from "@theme-hope/composables/blog/useCategoryMap"; import { useTagMap } from "@theme-hope/composables/blog/useTagMap"; export default defineComponent({ name: "CategoryPage", slots: Object, setup(_props, { slots }) { const page = usePage(); const frontmatter = useFrontmatter(); const categoryMap = useCategoryMap(); const tagMap = useTagMap(); const blogData = computed(() => { const blogConfig = frontmatter.value.blog; if (blogConfig?.type !== "category") return null; const { name, key } = blogConfig; return key === "category" ? { component: CategoryList, items: name ? categoryMap.value.map[name].items : null, } : key === "tag" ? { component: TagList, items: name ? tagMap.value.map[name].items : null, } : null; }); return () => h("div", { class: "vp-page vp-blog" }, h("div", { class: "blog-page-wrapper" }, [ h("main", { id: "main-content", class: "vp-blog-main" }, slots.default?.() ?? [ h(DropTransition, { appear: true }, () => blogData.value ? h(blogData.value.component) : null), slots.articlesBefore?.(), blogData.value?.items ? h(DropTransition, { appear: true, delay: 0.08 }, () => [ h(ArticleList, { key: page.value.path, // eslint-disable-next-line @typescript-eslint/no-non-null-assertion items: blogData.value.items, }, slots), ]) : null, slots.articlesAfter?.(), ]), h(DropTransition, { delay: 0.16 }, () => h(InfoPanel, { key: "blog" }, slots)), ])); }, }); //# sourceMappingURL=CategoryPage.js.map