@wot-ui/vitepress-theme 2.0.0-alpha.20 → 2.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/README.md CHANGED
@@ -96,6 +96,11 @@ export default createWotVitePressTheme({
96
96
  },
97
97
  cases: {
98
98
  urls: ['https://api.example.com/cases.json']
99
+ },
100
+ specialSponsor: {
101
+ urls: ['https://api.example.com/sponsor.json'],
102
+ enabled: true,
103
+ sponsorLink: '/reward/sponsor'
99
104
  }
100
105
  })
101
106
  ```
@@ -135,6 +140,7 @@ const { data: sponsors } = useSponsor()
135
140
  - `analytics.trackBaiduRoute`: 开启后,在路由变化时调用 `_hmt.push(['_trackPageview'])`。
136
141
  - `demoIframe`: 配置右侧手机模拟器相关选项。
137
142
  - `banner` / `sponsors` / `ads` / `team` / `friendly` / `cases`: 提供给对应功能模块的请求地址数组(支持多线路重试)。
143
+ - `specialSponsor`: 特别赞助位配置,支持赞助数据源 `urls`、右侧赞助位显示开关 `enabled`,以及开通赞助位跳转地址 `sponsorLink`。
138
144
 
139
145
  ## 构建要求
140
146
 
@@ -1,8 +1,23 @@
1
1
  <script setup lang="ts">
2
- import { computed } from 'vue'
2
+ import { computed, inject } from 'vue'
3
3
  import { useSpecialSponsor } from '../composables/specialSponsor'
4
+ import { wotThemeOptionsKey } from '../options'
4
5
 
5
6
  const { data } = useSpecialSponsor()
7
+ const options = inject(wotThemeOptionsKey)
8
+ const defaultSponsorLink = '/reward/sponsor'
9
+
10
+ const specialSponsorOptions = computed(() => {
11
+ return options?.specialSponsor === false ? null : options?.specialSponsor
12
+ })
13
+
14
+ const showAsideSponsors = computed(() => {
15
+ return specialSponsorOptions.value?.enabled !== false
16
+ })
17
+
18
+ const sponsorLink = computed(() => {
19
+ return specialSponsorOptions.value?.sponsorLink || defaultSponsorLink
20
+ })
6
21
 
7
22
  // 分离超级赞助和金牌赞助
8
23
  const superSponsors = computed(() => {
@@ -20,8 +35,8 @@ const isGoldSponsorsOdd = computed(() => {
20
35
  </script>
21
36
 
22
37
  <template>
23
- <div class="VPDocAsideSponsors">
24
- <a class="sponsors-aside-text" href="/reward/sponsor">赞助位</a>
38
+ <div v-if="showAsideSponsors" class="VPDocAsideSponsors">
39
+ <a class="sponsors-aside-text" :href="sponsorLink">赞助位</a>
25
40
  <div class="VPSponsors vp-sponsor aside">
26
41
  <!-- 超级赞助:一行一个 -->
27
42
  <section class="vp-sponsor-section" v-if="superSponsors?.items.length">
@@ -52,7 +67,7 @@ const isGoldSponsorsOdd = computed(() => {
52
67
  </div>
53
68
  <!-- 当金牌赞助为奇数时,默认赞助位填补到金牌赞助位置 -->
54
69
  <div class="vp-sponsor-grid-item" v-if="isGoldSponsorsOdd">
55
- <a class="vp-sponsor-grid-link" href="/reward/sponsor" rel="sponsored noopener">
70
+ <a class="vp-sponsor-grid-link" :href="sponsorLink" rel="sponsored noopener">
56
71
  <article class="vp-sponsor-grid-box">
57
72
  <span class="vp-sponsor-grid-text">成为赞助商</span>
58
73
  </article>
@@ -65,7 +80,7 @@ const isGoldSponsorsOdd = computed(() => {
65
80
  <section class="vp-sponsor-section" v-if="!isGoldSponsorsOdd || !goldSponsors?.items.length">
66
81
  <div class="VPSponsorsGrid vp-sponsor-grid xmini" data-vp-grid="1">
67
82
  <div class="vp-sponsor-grid-item">
68
- <a class="vp-sponsor-grid-link" href="/reward/sponsor" rel="sponsored noopener">
83
+ <a class="vp-sponsor-grid-link" :href="sponsorLink" rel="sponsored noopener">
69
84
  <article class="vp-sponsor-grid-box">
70
85
  <span class="vp-sponsor-grid-text">成为赞助商</span>
71
86
  </article>
@@ -122,7 +122,10 @@ html.banner-show {
122
122
  font-size: 18px;
123
123
  font-weight: 600;
124
124
  color: var(--vp-c-white);
125
- background: var(--vp-c-bg-alt);
125
+ background: #0f0f13;
126
+ background-image: radial-gradient(circle at 50% 0%, rgba(99, 102, 241, 0.15) 0%, transparent 60%);
127
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
128
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
126
129
  display: none;
127
130
  justify-content: center;
128
131
  align-items: center;
@@ -189,11 +192,13 @@ button:active {
189
192
  height: 28px;
190
193
  fill: var(--vp-c-white);
191
194
  transform: rotate(45deg);
192
- transition: transform 0.2s ease;
195
+ transition: all 0.3s ease;
196
+ filter: drop-shadow(0 0 0 transparent);
193
197
  }
194
198
 
195
199
  button:hover .close {
196
200
  transform: rotate(45deg) scale(1.1);
201
+ filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.6));
197
202
  }
198
203
 
199
204
  .vt-banner-text {
package/dist/types.d.ts CHANGED
@@ -27,6 +27,19 @@ export interface WotThemeSponsorOptions {
27
27
  */
28
28
  urls: string[];
29
29
  }
30
+ /**
31
+ * 特别赞助位配置。
32
+ */
33
+ export interface WotThemeSpecialSponsorOptions extends WotThemeSponsorOptions {
34
+ /**
35
+ * 是否显示文档右侧赞助位,默认为 true。
36
+ */
37
+ enabled?: boolean;
38
+ /**
39
+ * 开通赞助位跳转地址。
40
+ */
41
+ sponsorLink?: string;
42
+ }
30
43
  /**
31
44
  * 广告位配置。
32
45
  */
@@ -107,7 +120,7 @@ export interface WotVitePressThemeOptions {
107
120
  /**
108
121
  * 特别赞助位配置,传入 false 表示关闭。
109
122
  */
110
- specialSponsor?: false | WotThemeSponsorOptions;
123
+ specialSponsor?: false | WotThemeSpecialSponsorOptions;
111
124
  /**
112
125
  * 广告位配置,传入 false 表示关闭。
113
126
  */
@@ -300,7 +313,7 @@ export interface WotResolvedThemeOptions {
300
313
  /**
301
314
  * 归一化后的特别赞助位配置。
302
315
  */
303
- specialSponsor: false | WotThemeSponsorOptions;
316
+ specialSponsor: false | WotThemeSpecialSponsorOptions;
304
317
  }
305
318
  /**
306
319
  * 过滤空值后的有效 Vite 插件类型。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wot-ui/vitepress-theme",
3
- "version": "2.0.0-alpha.20",
3
+ "version": "2.0.0",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"