@velonor/theme 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +11 -0
- package/package.json +67 -0
- package/src/archive.data.ts +4 -0
- package/src/categories.data.ts +4 -0
- package/src/components/Archive.vue +121 -0
- package/src/components/Blog.vue +232 -0
- package/src/components/Categories.vue +84 -0
- package/src/components/Comment.vue +25 -0
- package/src/components/Tags.vue +105 -0
- package/src/components/ThemeLayout.vue +215 -0
- package/src/components/UpdateHeatmap.vue +128 -0
- package/src/components/UserCard.vue +61 -0
- package/src/components/WidgetCard.vue +26 -0
- package/src/components/icon/IconLink.vue +16 -0
- package/src/components/icon/IconMore.vue +16 -0
- package/src/composables/useCategories.ts +6 -0
- package/src/composables/useRefreshOnRouteChange.ts +20 -0
- package/src/composables/useTagFilter.ts +120 -0
- package/src/composables/useTags.ts +6 -0
- package/src/defaultconfig.mjs +22 -0
- package/src/env.d.ts +7 -0
- package/src/genFeed.mjs +44 -0
- package/src/index.ts +22 -0
- package/src/layouts/Layout.vue +407 -0
- package/src/page-links.data.ts +4 -0
- package/src/posts.data.js +5 -0
- package/src/style.css +52 -0
- package/src/tags.data.ts +4 -0
- package/src/types/config.d.ts +8 -0
- package/src/types/index.d.ts +2 -0
- package/src/types/theme.d.ts +74 -0
- package/src/utils/constants.ts +2 -0
package/src/style.css
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Customize default theme styling by overriding CSS variables:
|
|
3
|
+
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
:root {
|
|
7
|
+
--vp-c-brand-1: #4b70df;
|
|
8
|
+
--vp-c-brand-2: #2650dac8;
|
|
9
|
+
--vp-c-brand-3: #3c83ba;
|
|
10
|
+
--blog-tag-text-1: #303030cf;
|
|
11
|
+
--blog-tag-bg-1: #fff;
|
|
12
|
+
--blog-tag-bg-2: #2650daa4;
|
|
13
|
+
--blog-tag-text-2: #fff;
|
|
14
|
+
--blog-time-line-c: #3974e9;
|
|
15
|
+
--blog-time-line-c2: #787878;
|
|
16
|
+
--blog-time-line-text: #fff;
|
|
17
|
+
--blog-time-line-text-bg: #2650daa4;
|
|
18
|
+
--blog-border-c: rgb(227, 232, 247);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.dark:root {
|
|
22
|
+
--vp-c-brand-1: #4b95df;
|
|
23
|
+
--vp-c-brand-2: #198ed2;
|
|
24
|
+
--vp-c-brand-3: #3c83ba;
|
|
25
|
+
--blog-tag-bg-2: #4b95df;
|
|
26
|
+
--blog-tag-text-2: #fff;
|
|
27
|
+
--blog-tag-bg-1: transparent;
|
|
28
|
+
--blog-tag-text-1: #fff;
|
|
29
|
+
--blog-time-line-c: #fff;
|
|
30
|
+
--blog-time-line-c2: #fff;
|
|
31
|
+
--blog-border-c: rgb(61, 61, 63);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.dark:root {
|
|
35
|
+
--vp-c-blog-bg: var(--vp-c-bg-soft);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
:root {
|
|
39
|
+
--vp-c-blog-bg: var(--vp-c-bg);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.custom-block {
|
|
43
|
+
border: 1.5px solid transparent;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
:root {
|
|
47
|
+
--vp-custom-block-details-border: rgba(142, 150, 170, 0.28);
|
|
48
|
+
--vp-custom-block-info-border: rgba(142, 150, 170, 0.28);
|
|
49
|
+
--vp-custom-block-tip-border: rgba(100, 108, 255, 0.28);
|
|
50
|
+
--vp-custom-block-warning-border: rgba(234, 179, 8, 0.28);
|
|
51
|
+
--vp-custom-block-danger-border: rgba(244, 63, 94, 0.28);
|
|
52
|
+
}
|
package/src/tags.data.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
declare type Open17Image = string | { light?: string; dark?: string };
|
|
2
|
+
|
|
3
|
+
declare namespace Open17Theme {
|
|
4
|
+
// 用户卡片配置
|
|
5
|
+
interface UserCardConfig {
|
|
6
|
+
hidden?: boolean;
|
|
7
|
+
name?: string;
|
|
8
|
+
avatar?: Open17Image;
|
|
9
|
+
describe?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface WidgetConfig {
|
|
13
|
+
name: string;
|
|
14
|
+
html: string;
|
|
15
|
+
link?: string;
|
|
16
|
+
}
|
|
17
|
+
// 博客全局配置
|
|
18
|
+
interface BlogConfig {
|
|
19
|
+
direct?: 'lft' | 'rgt';
|
|
20
|
+
bgImage?: Open17Image;
|
|
21
|
+
cover?: Open17Image;
|
|
22
|
+
tagPageLink?: string;
|
|
23
|
+
homePageLink?: string;
|
|
24
|
+
archivePageLink?: string;
|
|
25
|
+
widgets?: Array<Open17Theme.WidgetConfig>;
|
|
26
|
+
pureMode?: boolean; // 隐藏左边栏
|
|
27
|
+
user?: Open17Theme.UserCardConfig; // 用户卡片配置
|
|
28
|
+
// 每页文章数量(优先级高于 home.postsPerPage)
|
|
29
|
+
pageSize?: number;
|
|
30
|
+
pageGroupSize?: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// 首页配置
|
|
34
|
+
interface HomePageConfig {
|
|
35
|
+
maxTagsDisplayed?: number; // 首页标签栏显示的最大标签数量
|
|
36
|
+
postsPerPage?: number; // 每页的博客文章数量
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 评论配置
|
|
40
|
+
type BooleanString = '0' | '1';
|
|
41
|
+
interface CommentConfig {
|
|
42
|
+
use?: boolean;
|
|
43
|
+
repo: `${string}/${string}`;
|
|
44
|
+
repoId: string;
|
|
45
|
+
category?: string;
|
|
46
|
+
categoryId?: string;
|
|
47
|
+
mapping: 'url' | 'title' | 'og:title' | 'specific' | 'number' | 'pathname';
|
|
48
|
+
strict?: BooleanString;
|
|
49
|
+
reactionsEnabled?: BooleanString;
|
|
50
|
+
emitMetadata?: BooleanString;
|
|
51
|
+
inputPosition?: 'top' | 'bottom';
|
|
52
|
+
lang?: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// RSS配置
|
|
56
|
+
interface FeedConfig {
|
|
57
|
+
baseUrl: string; // 你的部署的域名,必须
|
|
58
|
+
copyright?: string; //版权声明,可选
|
|
59
|
+
image?: string; // RSS图片,可选
|
|
60
|
+
favicon?: string; //RSS图标,可选
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// 主配置接口 ThemeConfig
|
|
65
|
+
declare module '@velonor/theme/config' {
|
|
66
|
+
import type { DefaultTheme } from 'vitepress';
|
|
67
|
+
export interface ThemeConfig extends DefaultTheme.Config {
|
|
68
|
+
blog?: Open17Theme.BlogConfig; // 博客配置
|
|
69
|
+
comment?: Open17Theme.CommentConfig; // 评论配置
|
|
70
|
+
home?: Open17Theme.HomePageConfig;
|
|
71
|
+
feed?: Open17Theme.FeedConfig;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|