From 93adb30012c77a658f62df9c5a4fdb3c2c29a543 Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Thu, 13 Jun 2024 05:27:14 +0800 Subject: [PATCH] chore: tweak --- theme/src/shared/blog.ts | 2 +- theme/src/shared/frontmatter/friends.ts | 24 ++++++ .../{frontmatter.ts => frontmatter/home.ts} | 78 +++---------------- theme/src/shared/frontmatter/index.ts | 4 + theme/src/shared/frontmatter/page.ts | 21 +++++ theme/src/shared/frontmatter/post.ts | 9 +++ theme/src/shared/index.ts | 5 +- theme/src/shared/{options => }/navbar.ts | 0 theme/src/shared/options/index.ts | 1 - theme/src/shared/options/locale.ts | 2 +- theme/src/shared/{page.ts => page-data.ts} | 0 11 files changed, 72 insertions(+), 74 deletions(-) create mode 100644 theme/src/shared/frontmatter/friends.ts rename theme/src/shared/{frontmatter.ts => frontmatter/home.ts} (56%) create mode 100644 theme/src/shared/frontmatter/index.ts create mode 100644 theme/src/shared/frontmatter/page.ts create mode 100644 theme/src/shared/frontmatter/post.ts rename theme/src/shared/{options => }/navbar.ts (100%) rename theme/src/shared/{page.ts => page-data.ts} (100%) diff --git a/theme/src/shared/blog.ts b/theme/src/shared/blog.ts index adb55842..5f0b2f0c 100644 --- a/theme/src/shared/blog.ts +++ b/theme/src/shared/blog.ts @@ -1,5 +1,5 @@ import type { BlogPostDataItem } from '@vuepress-plume/plugin-blog-data' -import type { PageCategoryData } from './page.js' +import type { PageCategoryData } from './page-data.js' export interface PlumeThemeBlogPostItem extends BlogPostDataItem { tags: string[] diff --git a/theme/src/shared/frontmatter/friends.ts b/theme/src/shared/frontmatter/friends.ts new file mode 100644 index 00000000..04f29c97 --- /dev/null +++ b/theme/src/shared/frontmatter/friends.ts @@ -0,0 +1,24 @@ +export interface FriendsItem { + name: string + link: string + avatar?: string + desc?: string + backgroundColor?: string | { light: string, dark: string } + color?: string | { light: string, dark: string } + nameColor?: string | { light: string, dark: string } + borderColor?: string | { light: string, dark: string } +} + +export interface FriendGroup { + title?: string + desc?: string + list?: FriendsItem[] +} + +export interface PlumeThemeFriendsFrontmatter { + friends: boolean + title?: string + description?: string + list?: FriendsItem[] + groups?: FriendGroup[] +} diff --git a/theme/src/shared/frontmatter.ts b/theme/src/shared/frontmatter/home.ts similarity index 56% rename from theme/src/shared/frontmatter.ts rename to theme/src/shared/frontmatter/home.ts index e7b7e53e..4e422a64 100644 --- a/theme/src/shared/frontmatter.ts +++ b/theme/src/shared/frontmatter/home.ts @@ -1,8 +1,5 @@ -import type { WatermarkPluginFrontmatter } from '@vuepress/plugin-watermark' -import type { ThemeImage, ThemeOutline } from './base.js' -import type { NavItemWithLink } from './options/navbar.js' +import type { ThemeImage } from '../base.js' -/* =============================== Home begin ==================================== */ export interface PlumeThemeHomeFrontmatter extends Omit { home?: true config?: PlumeThemeHomeConfig[] @@ -85,17 +82,17 @@ export interface PlumeThemeHomeFeature { export type FeatureIcon = string | { src: string - alt?: string | undefined - width?: string | undefined - height?: string | undefined - wrap?: boolean | undefined + alt?: string + width?: string + height?: string + wrap?: boolean } | { light: string dark: string - alt?: string | undefined - width?: string | undefined - height?: string | undefined - wrap?: boolean | undefined + alt?: string + width?: string + height?: string + wrap?: boolean } export interface PlumeThemeHomeProfile extends PlumeHomeConfigBase { @@ -109,60 +106,3 @@ export interface PlumeThemeHomeProfile extends PlumeHomeConfigBase { export interface PlumeThemeHomeCustom extends PlumeHomeConfigBase { type: 'custom' } - -/* =============================== Home end ==================================== */ - -export interface PlumeThemePageFrontmatter { - home?: false - comments?: boolean - editLink?: boolean - editLinkPattern?: string - lastUpdated?: boolean - contributors?: boolean - prev?: string | NavItemWithLink - next?: string | NavItemWithLink - sidebar?: string | false - aside?: boolean - outline?: ThemeOutline - backToTop?: boolean - externalLink?: boolean - readingTime?: boolean - watermark?: WatermarkPluginFrontmatter['watermark'] & { fullPage?: boolean } -} - -export interface PlumeThemePostFrontmatter extends PlumeThemePageFrontmatter { - createTime?: string - author?: string - tags?: string[] - sticky?: boolean | number - article?: boolean -} - -export interface PlumeThemeNoteFrontmatter extends PlumeThemePageFrontmatter { - createTime?: string -} - -export interface FriendsItem { - name: string - link: string - avatar?: string - desc?: string - backgroundColor?: string | { light: string, dark: string } - color?: string | { light: string, dark: string } - nameColor?: string | { light: string, dark: string } - borderColor?: string | { light: string, dark: string } -} - -export interface FriendGroup { - title?: string - desc?: string - list?: FriendsItem[] -} - -export interface PlumeThemeFriendsFrontmatter { - friends: boolean - title?: string - description?: string - list?: FriendsItem[] - groups?: FriendGroup[] -} diff --git a/theme/src/shared/frontmatter/index.ts b/theme/src/shared/frontmatter/index.ts new file mode 100644 index 00000000..92e993df --- /dev/null +++ b/theme/src/shared/frontmatter/index.ts @@ -0,0 +1,4 @@ +export * from './page.js' +export * from './home.js' +export * from './post.js' +export * from './friends.js' diff --git a/theme/src/shared/frontmatter/page.ts b/theme/src/shared/frontmatter/page.ts new file mode 100644 index 00000000..7c11a362 --- /dev/null +++ b/theme/src/shared/frontmatter/page.ts @@ -0,0 +1,21 @@ +import type { WatermarkPluginFrontmatter } from '@vuepress/plugin-watermark' +import type { ThemeOutline } from '../base.js' +import type { NavItemWithLink } from '../navbar.js' + +export interface PlumeThemePageFrontmatter { + home?: false + comments?: boolean + editLink?: boolean + editLinkPattern?: string + lastUpdated?: boolean + contributors?: boolean + prev?: string | NavItemWithLink + next?: string | NavItemWithLink + sidebar?: string | false + aside?: boolean + outline?: ThemeOutline + backToTop?: boolean + externalLink?: boolean + readingTime?: boolean + watermark?: WatermarkPluginFrontmatter['watermark'] & { fullPage?: boolean } +} diff --git a/theme/src/shared/frontmatter/post.ts b/theme/src/shared/frontmatter/post.ts new file mode 100644 index 00000000..48d27e66 --- /dev/null +++ b/theme/src/shared/frontmatter/post.ts @@ -0,0 +1,9 @@ +import type { PlumeThemePageFrontmatter } from './page.js' + +export interface PlumeThemePostFrontmatter extends PlumeThemePageFrontmatter { + createTime?: string + author?: string + tags?: string[] + sticky?: boolean | number + article?: boolean +} diff --git a/theme/src/shared/index.ts b/theme/src/shared/index.ts index 4da51f26..0cbe809d 100644 --- a/theme/src/shared/index.ts +++ b/theme/src/shared/index.ts @@ -1,5 +1,6 @@ export * from './base.js' -export * from './frontmatter.js' +export * from './frontmatter/index.js' export * from './options/index.js' -export * from './page.js' +export * from './page-data.js' export * from './blog.js' +export * from './navbar.js' diff --git a/theme/src/shared/options/navbar.ts b/theme/src/shared/navbar.ts similarity index 100% rename from theme/src/shared/options/navbar.ts rename to theme/src/shared/navbar.ts diff --git a/theme/src/shared/options/index.ts b/theme/src/shared/options/index.ts index 1fe7d903..0d1147f4 100644 --- a/theme/src/shared/options/index.ts +++ b/theme/src/shared/options/index.ts @@ -35,5 +35,4 @@ export type PlumeThemeData = ThemeData export * from './locale.js' export * from './plugins.js' -export * from './navbar.js' export * from './encrypt.js' diff --git a/theme/src/shared/options/locale.ts b/theme/src/shared/options/locale.ts index 06f8810e..15a4320f 100644 --- a/theme/src/shared/options/locale.ts +++ b/theme/src/shared/options/locale.ts @@ -2,7 +2,7 @@ import type { LocaleData } from 'vuepress/core' import type { NotesDataOptions } from '@vuepress-plume/plugin-notes-data' import type { SocialLink, SocialLinkIconUnion, ThemeOutline } from '../base.js' import type { PlumeThemeBlog } from '../blog.js' -import type { NavItem } from './navbar.js' +import type { NavItem } from '../navbar.js' export interface PlumeThemeLocaleData extends LocaleData { /** diff --git a/theme/src/shared/page.ts b/theme/src/shared/page-data.ts similarity index 100% rename from theme/src/shared/page.ts rename to theme/src/shared/page-data.ts