@voidzero-dev/vitepress-theme 2.0.0 → 2.1.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/package.json +7 -6
- package/src/aliases.js +14 -0
- package/src/vitepress/assets/clients/clickup.svg +5 -0
- package/src/vitepress/assets/clients/stripe.svg +3 -0
- package/src/vitepress/components/oss/Footer.vue +4 -21
- package/src/vitepress/components/oss/Header.vue +82 -180
- package/src/vitepress/components/oss/Sponsors.vue +3 -3
- package/src/vitepress/components/oss/TopBanner.vue +20 -79
- package/src/vitepress/components/oss/TrustedBy.vue +1 -1
- package/src/vitepress/components/vite/Community.vue +3 -3
- package/src/vitepress/components/vite/FeatureGrid1.vue +63 -0
- package/src/vitepress/components/vite/{FeatureGrid.vue → FeatureGrid2.vue} +8 -10
- package/src/vitepress/components/vite/Hero.vue +6 -15
- package/src/vitepress/components/vitepress-default/VPDocOutlineItem.vue +2 -2
- package/src/vitepress/components/vitepress-default/VPFlyout.vue +1 -1
- package/src/vitepress/components/vitepress-default/VPMenuLink.vue +1 -1
- package/src/vitepress/components/vitepress-default/VPNavBarMenuLink.vue +1 -1
- package/src/vitepress/components/vitepress-default/VPSidebarItem.vue +1 -1
- package/src/vitepress/components/vitepress-default/VPSocialLink.vue +1 -2
- package/src/vitepress/fonts/APK-Protocol-Semi-Bold.woff2 +0 -0
- package/src/vitepress/fonts/inter-italic-cyrillic-ext.woff2 +0 -0
- package/src/vitepress/fonts/inter-italic-cyrillic.woff2 +0 -0
- package/src/vitepress/fonts/inter-italic-greek-ext.woff2 +0 -0
- package/src/vitepress/fonts/inter-italic-greek.woff2 +0 -0
- package/src/vitepress/fonts/inter-italic-latin-ext.woff2 +0 -0
- package/src/vitepress/fonts/inter-italic-latin.woff2 +0 -0
- package/src/vitepress/fonts/inter-italic-vietnamese.woff2 +0 -0
- package/src/vitepress/fonts/inter-roman-cyrillic-ext.woff2 +0 -0
- package/src/vitepress/fonts/inter-roman-cyrillic.woff2 +0 -0
- package/src/vitepress/fonts/inter-roman-greek-ext.woff2 +0 -0
- package/src/vitepress/fonts/inter-roman-greek.woff2 +0 -0
- package/src/vitepress/fonts/inter-roman-latin-ext.woff2 +0 -0
- package/src/vitepress/fonts/inter-roman-latin.woff2 +0 -0
- package/src/vitepress/fonts/inter-roman-vietnamese.woff2 +0 -0
- package/src/vitepress/index.ts +64 -230
- package/src/vitepress/layouts/VPLayout.vue +2 -17
- package/src/vitepress/styles/tokens.css +194 -10
- package/src/vitepress/types/theme-context.ts +33 -0
- package/src/vitepress/assets/clients/beehiiv.svg +0 -30
- package/src/vitepress/assets/clients/excalidraw.svg +0 -82
- package/src/vitepress/assets/clients/get-your-guide.svg +0 -1
- package/src/vitepress/assets/clients/posthog.svg +0 -1
- package/src/vitepress/assets/clients/ramp.svg +0 -1
- package/src/vitepress/assets/clients/shopee.svg +0 -55
- package/src/vitepress/components/vite/FeaturePanel1.vue +0 -41
- package/src/vitepress/components/vite/FeaturePanel2.vue +0 -37
- package/src/vitepress/components/vite/FeaturePanel3.vue +0 -43
- package/src/vitepress/components/vite/FeaturePanel4.vue +0 -46
- package/src/vitepress/components/voidzero/Footer.vue +0 -65
- package/src/vitepress/components/voidzero/Header.vue +0 -560
- package/src/vitepress/components/voidzero/Megamenu.vue +0 -190
- package/src/vitepress/components/voidzero/about/CareerCTA.vue +0 -56
- package/src/vitepress/components/voidzero/about/Hero.vue +0 -206
- package/src/vitepress/components/voidzero/about/Investors.vue +0 -112
- package/src/vitepress/components/voidzero/about/TeamGrid.vue +0 -161
- package/src/vitepress/components/voidzero/about/TeamSectionHeading.vue +0 -13
- package/src/vitepress/components/voidzero/blog/BlogArchive.vue +0 -223
- package/src/vitepress/components/voidzero/blog/BlogSingleContent.vue +0 -364
- package/src/vitepress/components/voidzero/blog/BlogSingleHero.vue +0 -113
- package/src/vitepress/components/voidzero/blog/BlogSingleRelated.vue +0 -92
- package/src/vitepress/components/voidzero/blog/FeaturedArticles.vue +0 -146
- package/src/vitepress/components/voidzero/blog/types.ts +0 -56
- package/src/vitepress/components/voidzero/home/CaseStudySlider.vue +0 -235
- package/src/vitepress/components/voidzero/home/CustomersSectionHeading.vue +0 -5
- package/src/vitepress/components/voidzero/home/GitHubStats.vue +0 -27
- package/src/vitepress/components/voidzero/home/Hero.vue +0 -69
- package/src/vitepress/components/voidzero/home/Investors.vue +0 -30
- package/src/vitepress/components/voidzero/home/NewsletterCTA.vue +0 -23
- package/src/vitepress/components/voidzero/home/OpenSourceSectionHeading.vue +0 -6
- package/src/vitepress/components/voidzero/home/OpenSourceSectionProjects.vue +0 -419
- package/src/vitepress/components/voidzero/home/Resources.vue +0 -144
- package/src/vitepress/components/voidzero/home/Statistics.vue +0 -507
- package/src/vitepress/components/voidzero/home/StatisticsSectionHeading.vue +0 -5
- package/src/vitepress/components/voidzero/home/TeamCTA.vue +0 -17
- package/src/vitepress/components/voidzero/home/TrustedBy.vue +0 -248
- package/src/vitepress/components/voidzero/home/VitePlusSectionFeatures.vue +0 -55
- package/src/vitepress/components/voidzero/home/VitePlusSectionHeading.vue +0 -17
- package/src/vitepress/fonts/KHTeka-Medium.woff2 +0 -0
- package/src/vitepress/fonts/KHTeka-Regular.woff2 +0 -0
package/src/vitepress/index.ts
CHANGED
|
@@ -15,247 +15,80 @@
|
|
|
15
15
|
|
|
16
16
|
// Unified design system - single import
|
|
17
17
|
// Contains: tokens → base → docs → marketing (in that order)
|
|
18
|
-
import
|
|
18
|
+
import "./styles/index.css";
|
|
19
19
|
|
|
20
|
-
import type {Theme} from
|
|
21
|
-
import {watch} from
|
|
20
|
+
import type { Theme } from "vitepress";
|
|
21
|
+
import { watch } from "vue";
|
|
22
22
|
|
|
23
23
|
// Main layout router
|
|
24
|
-
import VPLayout from
|
|
25
|
-
|
|
26
|
-
// Shared components
|
|
27
|
-
import Terminal from '@components/shared/Terminal.vue'
|
|
28
|
-
import Eyebrow from '@components/shared/Eyebrow.vue'
|
|
29
|
-
import RiveAnimation from '@components/shared/RiveAnimation.vue'
|
|
30
|
-
import LogoGrid from '@components/shared/LogoGrid.vue'
|
|
31
|
-
import CodeGroup from '@components/shared/CodeGroup.vue'
|
|
32
|
-
|
|
24
|
+
import VPLayout from "./layouts/VPLayout.vue";
|
|
33
25
|
// VitePress default theme components (forked)
|
|
34
|
-
import VPBadge from
|
|
35
|
-
|
|
36
|
-
// Vite+
|
|
37
|
-
import VitePlusHeader from '@components/viteplus/Header.vue'
|
|
38
|
-
|
|
39
|
-
// VoidZero
|
|
40
|
-
import VoidZeroFooter from '@components/voidzero/Footer.vue'
|
|
41
|
-
import VoidZeroHeader from '@components/voidzero/Header.vue'
|
|
42
|
-
|
|
43
|
-
// VoidZero (Home)
|
|
44
|
-
import VoidZeroHomeHero from '@components/voidzero/home/Hero.vue'
|
|
45
|
-
import TrustedBy from "@components/voidzero/home/TrustedBy.vue"
|
|
46
|
-
import VitePlusSectionHeading from "@components/voidzero/home/VitePlusSectionHeading.vue"
|
|
47
|
-
import VitePlusSectionFeatures from "@components/voidzero/home/VitePlusSectionFeatures.vue"
|
|
48
|
-
import OpenSourceSectionHeading from "@components/voidzero/home/OpenSourceSectionHeading.vue"
|
|
49
|
-
import OpenSourceSectionProjects from "@components/voidzero/home/OpenSourceSectionProjects.vue"
|
|
50
|
-
import CustomersSectionHeading from "@components/voidzero/home/CustomersSectionHeading.vue"
|
|
51
|
-
import CaseStudySlider from "@components/voidzero/home/CaseStudySlider.vue"
|
|
52
|
-
import StatisticsSectionHeading from "@components/voidzero/home/StatisticsSectionHeading.vue"
|
|
53
|
-
import Statistics from "@components/voidzero/home/Statistics.vue"
|
|
54
|
-
import TeamCTA from "@components/voidzero/home/TeamCTA.vue"
|
|
55
|
-
import Investors from "@components/voidzero/home/Investors.vue"
|
|
56
|
-
import Spacer from "@components/shared/Spacer.vue"
|
|
57
|
-
import Resources from "@components/voidzero/home/Resources.vue"
|
|
58
|
-
import NewsletterCTA from "@components/voidzero/home/NewsletterCTA.vue"
|
|
59
|
-
|
|
60
|
-
// VoidZero (About)
|
|
61
|
-
import VoidZeroAboutHero from '@components/voidzero/about/Hero.vue'
|
|
62
|
-
import TeamSectionHeading from "@components/voidzero/about/TeamSectionHeading.vue"
|
|
63
|
-
import TeamGrid from "@components/voidzero/about/TeamGrid.vue"
|
|
64
|
-
import CareerCTA from '@components/voidzero/about/CareerCTA.vue'
|
|
65
|
-
import VoidZeroAboutInvestors from '@components/voidzero/about/Investors.vue'
|
|
66
|
-
|
|
67
|
-
// VoidZero (Articles)
|
|
68
|
-
import FeaturedArticles from '@components/voidzero/blog/FeaturedArticles.vue'
|
|
69
|
-
import BlogArchive from '@components/voidzero/blog/BlogArchive.vue'
|
|
70
|
-
import BlogSingleHero from "@components/voidzero/blog/BlogSingleHero.vue";
|
|
71
|
-
import BlogSingleContent from "@components/voidzero/blog/BlogSingleContent.vue";
|
|
72
|
-
import BlogSingleRelated from "@components/voidzero/blog/BlogSingleRelated.vue";
|
|
73
|
-
|
|
74
|
-
// OSS
|
|
75
|
-
import OSSHeader from '@components/oss/Header.vue'
|
|
76
|
-
import OSSFooter from '@components/oss/Footer.vue'
|
|
77
|
-
import OSSTrustedBy from '@components/oss/TrustedBy.vue'
|
|
78
|
-
import OSSHeadingSection from '@components/oss/HeadingSection.vue'
|
|
79
|
-
import OSSSponsors from '@components/oss/Sponsors.vue'
|
|
80
|
-
|
|
81
|
-
// Vite
|
|
82
|
-
import ViteHero from '@components/vite/Hero.vue'
|
|
83
|
-
import ViteFeaturePanel1 from '@components/vite/FeaturePanel1.vue'
|
|
84
|
-
import ViteFeaturePanel2 from '@components/vite/FeaturePanel2.vue'
|
|
85
|
-
import ViteFeaturePanel3 from '@components/vite/FeaturePanel3.vue'
|
|
86
|
-
import ViteFeaturePanel4 from '@components/vite/FeaturePanel4.vue'
|
|
87
|
-
import ViteFeatureGrid from '@components/vite/FeatureGrid.vue'
|
|
88
|
-
import ViteFrameworks from '@components/vite/Frameworks.vue'
|
|
89
|
-
import ViteCommunity from '@components/vite/Community.vue'
|
|
90
|
-
|
|
91
|
-
// Vitest
|
|
92
|
-
import VitestHero from '@components/vitest/Hero.vue'
|
|
93
|
-
import VitestIntro from '@components/vitest/Intro.vue'
|
|
94
|
-
import VitestFeatureGrid from '@components/vitest/FeatureGrid.vue'
|
|
95
|
-
|
|
96
|
-
// Rolldown
|
|
97
|
-
import RolldownHero from '@components/rolldown/Hero.vue'
|
|
98
|
-
import RolldownFeatureGrid from '@components/rolldown/FeatureGrid.vue'
|
|
99
|
-
|
|
100
|
-
// OXC
|
|
101
|
-
import OXCHero from '@components/oxc/Hero.vue'
|
|
102
|
-
import OXCFeatureToolbar from '@components/oxc/FeatureToolbar.vue'
|
|
103
|
-
import OXCFeatureParser from '@components/oxc/FeatureParser.vue'
|
|
104
|
-
import OXCFeatureLinter from '@components/oxc/FeatureLinter.vue'
|
|
105
|
-
import OXCFeatureResolver from '@components/oxc/FeatureResolver.vue'
|
|
106
|
-
import OXCFeatureTransformer from '@components/oxc/FeatureTransformer.vue'
|
|
107
|
-
import OXCFeatureMinifierFormatter from '@components/oxc/FeatureMinifierFormatter.vue'
|
|
26
|
+
import VPBadge from "@vp-default/VPBadge.vue";
|
|
108
27
|
|
|
109
28
|
const VoidZeroTheme = {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
app.component('RiveAnimation', RiveAnimation)
|
|
148
|
-
app.component('LogoGrid', LogoGrid)
|
|
149
|
-
app.component('Spacer', Spacer)
|
|
150
|
-
app.component('CodeGroup', CodeGroup)
|
|
151
|
-
if (variant === 'viteplus') {
|
|
152
|
-
// Vite+
|
|
153
|
-
app.component('Header', VitePlusHeader)
|
|
154
|
-
} else if (variant === 'voidzero') {
|
|
155
|
-
// VoidZero
|
|
156
|
-
app.component('Header', VoidZeroHeader)
|
|
157
|
-
app.component('Footer', VoidZeroFooter)
|
|
158
|
-
app.component('Hero', VoidZeroHomeHero)
|
|
159
|
-
app.component('TrustedBy', TrustedBy)
|
|
160
|
-
app.component('VitePlusSectionHeading', VitePlusSectionHeading)
|
|
161
|
-
app.component('VitePlusSectionFeatures', VitePlusSectionFeatures)
|
|
162
|
-
app.component('OpenSourceSectionHeading', OpenSourceSectionHeading)
|
|
163
|
-
app.component('OpenSourceSectionProjects', OpenSourceSectionProjects)
|
|
164
|
-
app.component('CustomersSectionHeading', CustomersSectionHeading)
|
|
165
|
-
app.component('CaseStudySlider', CaseStudySlider)
|
|
166
|
-
app.component('StatisticsSectionHeading', StatisticsSectionHeading)
|
|
167
|
-
app.component('Statistics', Statistics)
|
|
168
|
-
app.component('TeamCTA', TeamCTA)
|
|
169
|
-
app.component('Investors', Investors)
|
|
170
|
-
app.component('Resources', Resources)
|
|
171
|
-
app.component('NewsletterCTA', NewsletterCTA)
|
|
172
|
-
app.component('AboutHero', VoidZeroAboutHero)
|
|
173
|
-
app.component('TeamSectionHeading', TeamSectionHeading)
|
|
174
|
-
app.component('TeamGrid', TeamGrid)
|
|
175
|
-
app.component('CareerCTA', CareerCTA)
|
|
176
|
-
app.component('AboutInvestors', VoidZeroAboutInvestors)
|
|
177
|
-
app.component('FeaturedArticles', FeaturedArticles)
|
|
178
|
-
app.component('BlogArchive', BlogArchive)
|
|
179
|
-
app.component('BlogSingleHero', BlogSingleHero)
|
|
180
|
-
app.component('BlogSingleContent', BlogSingleContent)
|
|
181
|
-
app.component('BlogSingleRelated', BlogSingleRelated)
|
|
182
|
-
} else if (variant === 'vite') {
|
|
183
|
-
// Vite
|
|
184
|
-
app.component('Header', OSSHeader)
|
|
185
|
-
app.component('Footer', OSSFooter)
|
|
186
|
-
app.component('Hero', ViteHero)
|
|
187
|
-
app.component('TrustedBy', OSSTrustedBy)
|
|
188
|
-
app.component('HeadingSection', OSSHeadingSection)
|
|
189
|
-
app.component('ViteFeaturePanel1', ViteFeaturePanel1)
|
|
190
|
-
app.component('ViteFeaturePanel2', ViteFeaturePanel2)
|
|
191
|
-
app.component('ViteFeaturePanel3', ViteFeaturePanel3)
|
|
192
|
-
app.component('ViteFeaturePanel4', ViteFeaturePanel4)
|
|
193
|
-
app.component('ViteFeatureGrid', ViteFeatureGrid)
|
|
194
|
-
app.component('ViteFrameworks', ViteFrameworks)
|
|
195
|
-
app.component('ViteCommunity', ViteCommunity)
|
|
196
|
-
app.component('ViteSponsors', OSSSponsors)
|
|
197
|
-
} else if (variant === 'vitest') {
|
|
198
|
-
// Vitest
|
|
199
|
-
app.component('Header', OSSHeader)
|
|
200
|
-
app.component('Footer', OSSFooter)
|
|
201
|
-
app.component('Hero', VitestHero)
|
|
202
|
-
app.component('TrustedBy', OSSTrustedBy)
|
|
203
|
-
app.component('Intro', VitestIntro)
|
|
204
|
-
app.component('HeadingSection', OSSHeadingSection)
|
|
205
|
-
app.component('VitestFeatureGrid', VitestFeatureGrid)
|
|
206
|
-
app.component('Sponsors', OSSSponsors)
|
|
207
|
-
} else if (variant === 'rolldown') {
|
|
208
|
-
// Rolldown
|
|
209
|
-
app.component('Header', OSSHeader)
|
|
210
|
-
app.component('Footer', OSSFooter)
|
|
211
|
-
app.component('Hero', RolldownHero)
|
|
212
|
-
app.component('TrustedBy', OSSTrustedBy)
|
|
213
|
-
app.component('HeadingSection', OSSHeadingSection)
|
|
214
|
-
app.component('RolldownFeatureGrid', RolldownFeatureGrid)
|
|
215
|
-
app.component('Sponsors', OSSSponsors)
|
|
216
|
-
} else if (variant === 'oxc') {
|
|
217
|
-
// OXC
|
|
218
|
-
app.component('Header', OSSHeader)
|
|
219
|
-
app.component('Footer', OSSFooter)
|
|
220
|
-
app.component('Hero', OXCHero)
|
|
221
|
-
app.component('TrustedBy', OSSTrustedBy)
|
|
222
|
-
app.component('HeadingSection', OSSHeadingSection)
|
|
223
|
-
app.component('FeatureToolbar', OXCFeatureToolbar)
|
|
224
|
-
app.component('FeatureParser', OXCFeatureParser)
|
|
225
|
-
app.component('FeatureLinter', OXCFeatureLinter)
|
|
226
|
-
app.component('FeatureResolver', OXCFeatureResolver)
|
|
227
|
-
app.component('FeatureTransformer', OXCFeatureTransformer)
|
|
228
|
-
app.component('FeatureMinifierFormatter', OXCFeatureMinifierFormatter)
|
|
229
|
-
app.component('Sponsors', OSSSponsors)
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
|
-
} satisfies Theme
|
|
29
|
+
Layout: VPLayout, // Smart layout router that switches between VP and custom layouts
|
|
30
|
+
enhanceApp({ app, router, siteData }) {
|
|
31
|
+
const variant = siteData.value.themeConfig?.variant || "voidzero";
|
|
32
|
+
if (typeof document !== "undefined") {
|
|
33
|
+
document.documentElement.setAttribute("data-variant", variant);
|
|
34
|
+
|
|
35
|
+
// Watch for frontmatter.theme changes and apply theme logic
|
|
36
|
+
watch(
|
|
37
|
+
() => router.route.data.frontmatter?.theme,
|
|
38
|
+
(theme) => {
|
|
39
|
+
if (theme) {
|
|
40
|
+
// Forced theme via frontmatter
|
|
41
|
+
document.documentElement.setAttribute("data-theme", theme);
|
|
42
|
+
} else {
|
|
43
|
+
// OSS: Respect user preference, but default to dark if no preference
|
|
44
|
+
document.documentElement.removeAttribute("data-theme");
|
|
45
|
+
|
|
46
|
+
const hasUserPreference = localStorage.getItem(
|
|
47
|
+
"vitepress-theme-appearance"
|
|
48
|
+
);
|
|
49
|
+
if (
|
|
50
|
+
!hasUserPreference &&
|
|
51
|
+
!document.documentElement.classList.contains("dark")
|
|
52
|
+
) {
|
|
53
|
+
// No user preference - set dark as default for OSS
|
|
54
|
+
document.documentElement.classList.add("dark");
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
{ immediate: true }
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// VitePress default theme component (for markdown usage)
|
|
63
|
+
app.component("Badge", VPBadge);
|
|
64
|
+
},
|
|
65
|
+
} satisfies Theme;
|
|
233
66
|
|
|
234
67
|
// VP components (for use in Markdown and custom components)
|
|
235
|
-
export {default as VPBadge} from
|
|
236
|
-
export {default as VPButton} from
|
|
237
|
-
export {default as VPDocAsideSponsors} from
|
|
238
|
-
export {default as VPFeatures} from
|
|
239
|
-
export {default as VPHomeContent} from
|
|
240
|
-
export {default as VPHomeFeatures} from
|
|
241
|
-
export {default as VPHomeHero} from
|
|
242
|
-
export {default as VPHomeSponsors} from
|
|
243
|
-
export {default as VPImage} from
|
|
244
|
-
export {default as VPLink} from
|
|
245
|
-
export {default as VPSocialLink} from
|
|
246
|
-
export {default as VPSocialLinks} from
|
|
247
|
-
export {default as VPSponsors} from
|
|
248
|
-
export {default as VPTeamMembers} from
|
|
249
|
-
export {default as VPTeamPage} from
|
|
250
|
-
export {default as VPTeamPageSection} from
|
|
251
|
-
export {default as VPTeamPageTitle} from
|
|
68
|
+
export { default as VPBadge } from "@vp-default/VPBadge.vue";
|
|
69
|
+
export { default as VPButton } from "@vp-default/VPButton.vue";
|
|
70
|
+
export { default as VPDocAsideSponsors } from "@vp-default/VPDocAsideSponsors.vue";
|
|
71
|
+
export { default as VPFeatures } from "@vp-default/VPFeatures.vue";
|
|
72
|
+
export { default as VPHomeContent } from "@vp-default/VPHomeContent.vue";
|
|
73
|
+
export { default as VPHomeFeatures } from "@vp-default/VPHomeFeatures.vue";
|
|
74
|
+
export { default as VPHomeHero } from "@vp-default/VPHomeHero.vue";
|
|
75
|
+
export { default as VPHomeSponsors } from "@vp-default/VPHomeSponsors.vue";
|
|
76
|
+
export { default as VPImage } from "@vp-default/VPImage.vue";
|
|
77
|
+
export { default as VPLink } from "@vp-default/VPLink.vue";
|
|
78
|
+
export { default as VPSocialLink } from "@vp-default/VPSocialLink.vue";
|
|
79
|
+
export { default as VPSocialLinks } from "@vp-default/VPSocialLinks.vue";
|
|
80
|
+
export { default as VPSponsors } from "@vp-default/VPSponsors.vue";
|
|
81
|
+
export { default as VPTeamMembers } from "@vp-default/VPTeamMembers.vue";
|
|
82
|
+
export { default as VPTeamPage } from "@vp-default/VPTeamPage.vue";
|
|
83
|
+
export { default as VPTeamPageSection } from "@vp-default/VPTeamPageSection.vue";
|
|
84
|
+
export { default as VPTeamPageTitle } from "@vp-default/VPTeamPageTitle.vue";
|
|
252
85
|
|
|
253
86
|
// Export custom layouts and components
|
|
254
|
-
export {VoidZeroTheme}
|
|
255
|
-
export default VoidZeroTheme
|
|
87
|
+
export { VoidZeroTheme };
|
|
88
|
+
export default VoidZeroTheme;
|
|
256
89
|
|
|
257
90
|
// Export types
|
|
258
|
-
export type { Sponsors } from
|
|
91
|
+
export type { Sponsors } from "./components/vitepress-default/VPSponsors.vue";
|
|
259
92
|
export type {
|
|
260
93
|
BannerConfig,
|
|
261
94
|
FooterConfig,
|
|
@@ -266,4 +99,5 @@ export type {
|
|
|
266
99
|
Sponsor,
|
|
267
100
|
SponsorTier,
|
|
268
101
|
VoidZeroThemeConfig,
|
|
269
|
-
} from
|
|
102
|
+
} from "./types/theme-config";
|
|
103
|
+
export { type ThemeContext, themeContextKey } from "./types/theme-context";
|
|
@@ -6,9 +6,6 @@ import { useData } from 'vitepress'
|
|
|
6
6
|
import VPDefaultLayout from '@vp-default/Layout.vue'
|
|
7
7
|
|
|
8
8
|
// Import custom variant layouts/components
|
|
9
|
-
import VoidZeroHeader from '@components/voidzero/Header.vue'
|
|
10
|
-
import VoidZeroFooter from '@components/voidzero/Footer.vue'
|
|
11
|
-
import VitePlusHeader from '@components/viteplus/Header.vue'
|
|
12
9
|
import OSSHeader from '@components/oss/Header.vue'
|
|
13
10
|
import TopBanner from '@components/oss/TopBanner.vue'
|
|
14
11
|
|
|
@@ -16,7 +13,7 @@ const { frontmatter, site } = useData()
|
|
|
16
13
|
const slots = useSlots()
|
|
17
14
|
|
|
18
15
|
// Determine variant from theme config
|
|
19
|
-
const variant = computed(() => site.value.themeConfig?.variant || '
|
|
16
|
+
const variant = computed(() => site.value.themeConfig?.variant || 'vite')
|
|
20
17
|
|
|
21
18
|
// Determine which layout to use based on frontmatter.layout
|
|
22
19
|
// Default behavior (no layout specified) = use VitePress doc layout
|
|
@@ -45,21 +42,9 @@ const useVPLayout = computed(() => {
|
|
|
45
42
|
</template>
|
|
46
43
|
</VPDefaultLayout>
|
|
47
44
|
</div>
|
|
48
|
-
|
|
49
|
-
<div v-else-if="variant === 'viteplus'" class="marketing-layout" :data-theme="frontmatter.theme" :data-variant="variant">
|
|
50
|
-
<VitePlusHeader />
|
|
51
|
-
<Content />
|
|
52
|
-
</div>
|
|
53
|
-
|
|
54
|
-
<div v-else-if="variant === 'voidzero'" class="marketing-layout" :data-theme="frontmatter.theme" :data-variant="variant">
|
|
55
|
-
<VoidZeroHeader />
|
|
56
|
-
<Content />
|
|
57
|
-
<VoidZeroFooter />
|
|
58
|
-
</div>
|
|
59
|
-
|
|
60
45
|
<div v-else class="marketing-layout" :data-theme="frontmatter.theme" :data-variant="variant">
|
|
61
46
|
<TopBanner />
|
|
62
|
-
<OSSHeader/>
|
|
47
|
+
<OSSHeader />
|
|
63
48
|
<Content />
|
|
64
49
|
</div>
|
|
65
50
|
</template>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
/* Typography tokens */
|
|
18
18
|
--font-*: initial;
|
|
19
19
|
--font-heading: 'APK Protocol', sans-serif;
|
|
20
|
-
--font-sans:
|
|
20
|
+
--font-sans: Inter, sans-serif;
|
|
21
21
|
--font-mono: 'KH Teka Mono', monospace;
|
|
22
22
|
|
|
23
23
|
/* Color palette */
|
|
@@ -113,15 +113,9 @@
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
@font-face {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
@font-face {
|
|
122
|
-
font-family: 'KH Teka';
|
|
123
|
-
font-weight: 500;
|
|
124
|
-
src: url('../fonts/KHTeka-Medium.woff2') format('woff2');
|
|
116
|
+
font-family: 'APK Protocol';
|
|
117
|
+
font-weight: 700;
|
|
118
|
+
src: url('../fonts/APK-Protocol-Semi-Bold.woff2') format('woff2');
|
|
125
119
|
}
|
|
126
120
|
|
|
127
121
|
@font-face {
|
|
@@ -135,3 +129,193 @@
|
|
|
135
129
|
font-weight: 500;
|
|
136
130
|
src: url('../fonts/KHTekaMono-Medium.woff2') format('woff2');
|
|
137
131
|
}
|
|
132
|
+
|
|
133
|
+
@font-face {
|
|
134
|
+
font-family: Inter;
|
|
135
|
+
font-style: normal;
|
|
136
|
+
font-weight: 100 900;
|
|
137
|
+
font-display: swap;
|
|
138
|
+
src: url('../fonts/inter-roman-cyrillic-ext.woff2') format('woff2');
|
|
139
|
+
unicode-range:
|
|
140
|
+
U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@font-face {
|
|
144
|
+
font-family: Inter;
|
|
145
|
+
font-style: normal;
|
|
146
|
+
font-weight: 100 900;
|
|
147
|
+
font-display: swap;
|
|
148
|
+
src: url('../fonts/inter-roman-cyrillic.woff2') format('woff2');
|
|
149
|
+
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
@font-face {
|
|
153
|
+
font-family: Inter;
|
|
154
|
+
font-style: normal;
|
|
155
|
+
font-weight: 100 900;
|
|
156
|
+
font-display: swap;
|
|
157
|
+
src: url('../fonts/inter-roman-greek-ext.woff2') format('woff2');
|
|
158
|
+
unicode-range: U+1F00-1FFF;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
@font-face {
|
|
162
|
+
font-family: Inter;
|
|
163
|
+
font-style: normal;
|
|
164
|
+
font-weight: 100 900;
|
|
165
|
+
font-display: swap;
|
|
166
|
+
src: url('../fonts/inter-roman-greek.woff2') format('woff2');
|
|
167
|
+
unicode-range:
|
|
168
|
+
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@font-face {
|
|
172
|
+
font-family: Inter;
|
|
173
|
+
font-style: normal;
|
|
174
|
+
font-weight: 100 900;
|
|
175
|
+
font-display: swap;
|
|
176
|
+
src: url('../fonts/inter-roman-vietnamese.woff2') format('woff2');
|
|
177
|
+
unicode-range:
|
|
178
|
+
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
|
179
|
+
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
|
180
|
+
U+1EA0-1EF9, U+20AB;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
@font-face {
|
|
184
|
+
font-family: Inter;
|
|
185
|
+
font-style: normal;
|
|
186
|
+
font-weight: 100 900;
|
|
187
|
+
font-display: swap;
|
|
188
|
+
src: url('../fonts/inter-roman-latin-ext.woff2') format('woff2');
|
|
189
|
+
unicode-range:
|
|
190
|
+
U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
|
191
|
+
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@font-face {
|
|
195
|
+
font-family: Inter;
|
|
196
|
+
font-style: normal;
|
|
197
|
+
font-weight: 100 900;
|
|
198
|
+
font-display: swap;
|
|
199
|
+
src: url('../fonts/inter-roman-latin.woff2') format('woff2');
|
|
200
|
+
unicode-range:
|
|
201
|
+
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
|
202
|
+
U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
|
|
203
|
+
U+2212, U+2215, U+FEFF, U+FFFD;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
@font-face {
|
|
207
|
+
font-family: Inter;
|
|
208
|
+
font-style: italic;
|
|
209
|
+
font-weight: 100 900;
|
|
210
|
+
font-display: swap;
|
|
211
|
+
src: url('../fonts/inter-italic-cyrillic-ext.woff2') format('woff2');
|
|
212
|
+
unicode-range:
|
|
213
|
+
U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@font-face {
|
|
217
|
+
font-family: Inter;
|
|
218
|
+
font-style: italic;
|
|
219
|
+
font-weight: 100 900;
|
|
220
|
+
font-display: swap;
|
|
221
|
+
src: url('../fonts/inter-italic-cyrillic.woff2') format('woff2');
|
|
222
|
+
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
@font-face {
|
|
226
|
+
font-family: Inter;
|
|
227
|
+
font-style: italic;
|
|
228
|
+
font-weight: 100 900;
|
|
229
|
+
font-display: swap;
|
|
230
|
+
src: url('../fonts/inter-italic-greek-ext.woff2') format('woff2');
|
|
231
|
+
unicode-range: U+1F00-1FFF;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
@font-face {
|
|
235
|
+
font-family: Inter;
|
|
236
|
+
font-style: italic;
|
|
237
|
+
font-weight: 100 900;
|
|
238
|
+
font-display: swap;
|
|
239
|
+
src: url('../fonts/inter-italic-greek.woff2') format('woff2');
|
|
240
|
+
unicode-range:
|
|
241
|
+
U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
@font-face {
|
|
245
|
+
font-family: Inter;
|
|
246
|
+
font-style: italic;
|
|
247
|
+
font-weight: 100 900;
|
|
248
|
+
font-display: swap;
|
|
249
|
+
src: url('../fonts/inter-italic-vietnamese.woff2') format('woff2');
|
|
250
|
+
unicode-range:
|
|
251
|
+
U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,
|
|
252
|
+
U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
|
|
253
|
+
U+1EA0-1EF9, U+20AB;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
@font-face {
|
|
257
|
+
font-family: Inter;
|
|
258
|
+
font-style: italic;
|
|
259
|
+
font-weight: 100 900;
|
|
260
|
+
font-display: swap;
|
|
261
|
+
src: url('../fonts/inter-italic-latin-ext.woff2') format('woff2');
|
|
262
|
+
unicode-range:
|
|
263
|
+
U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
|
|
264
|
+
U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
@font-face {
|
|
268
|
+
font-family: Inter;
|
|
269
|
+
font-style: italic;
|
|
270
|
+
font-weight: 100 900;
|
|
271
|
+
font-display: swap;
|
|
272
|
+
src: url('../fonts/inter-italic-latin.woff2') format('woff2');
|
|
273
|
+
unicode-range:
|
|
274
|
+
U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
|
|
275
|
+
U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,
|
|
276
|
+
U+2212, U+2215, U+FEFF, U+FFFD;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
@font-face {
|
|
280
|
+
font-family: 'Punctuation SC';
|
|
281
|
+
font-weight: 400;
|
|
282
|
+
src:
|
|
283
|
+
local('PingFang SC Regular'), local('Noto Sans CJK SC'),
|
|
284
|
+
local('Microsoft YaHei');
|
|
285
|
+
unicode-range:
|
|
286
|
+
U+201C, U+201D, U+2018, U+2019, U+2E3A, U+2014, U+2013, U+2026, U+00B7,
|
|
287
|
+
U+007E, U+002F;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
@font-face {
|
|
291
|
+
font-family: 'Punctuation SC';
|
|
292
|
+
font-weight: 500;
|
|
293
|
+
src:
|
|
294
|
+
local('PingFang SC Medium'), local('Noto Sans CJK SC'),
|
|
295
|
+
local('Microsoft YaHei');
|
|
296
|
+
unicode-range:
|
|
297
|
+
U+201C, U+201D, U+2018, U+2019, U+2E3A, U+2014, U+2013, U+2026, U+00B7,
|
|
298
|
+
U+007E, U+002F;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
@font-face {
|
|
302
|
+
font-family: 'Punctuation SC';
|
|
303
|
+
font-weight: 600;
|
|
304
|
+
src:
|
|
305
|
+
local('PingFang SC Semibold'), local('Noto Sans CJK SC Bold'),
|
|
306
|
+
local('Microsoft YaHei Bold');
|
|
307
|
+
unicode-range:
|
|
308
|
+
U+201C, U+201D, U+2018, U+2019, U+2E3A, U+2014, U+2013, U+2026, U+00B7,
|
|
309
|
+
U+007E, U+002F;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
@font-face {
|
|
313
|
+
font-family: 'Punctuation SC';
|
|
314
|
+
font-weight: 700;
|
|
315
|
+
src:
|
|
316
|
+
local('PingFang SC Semibold'), local('Noto Sans CJK SC Bold'),
|
|
317
|
+
local('Microsoft YaHei Bold');
|
|
318
|
+
unicode-range:
|
|
319
|
+
U+201C, U+201D, U+2018, U+2019, U+2E3A, U+2014, U+2013, U+2026, U+00B7,
|
|
320
|
+
U+007E, U+002F;
|
|
321
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { InjectionKey } from "vue";
|
|
2
|
+
|
|
3
|
+
// asset injection for different project variants
|
|
4
|
+
export interface ThemeContext {
|
|
5
|
+
// header
|
|
6
|
+
/**
|
|
7
|
+
* "@assets/logos/[project]-dark.svg"
|
|
8
|
+
*/
|
|
9
|
+
logoDark: string;
|
|
10
|
+
/**
|
|
11
|
+
* "@assets/logos/[project]-light.svg"
|
|
12
|
+
*/
|
|
13
|
+
logoLight: string;
|
|
14
|
+
/**
|
|
15
|
+
* @string
|
|
16
|
+
*/
|
|
17
|
+
logoAlt: string;
|
|
18
|
+
|
|
19
|
+
// footer
|
|
20
|
+
/**
|
|
21
|
+
* "@assets/[project]/footer-background.jpg"
|
|
22
|
+
*/
|
|
23
|
+
footerBg: string;
|
|
24
|
+
|
|
25
|
+
// banner
|
|
26
|
+
/**
|
|
27
|
+
* "@assets/icons/[project]-mono.svg"
|
|
28
|
+
*/
|
|
29
|
+
monoIcon: string
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const themeContextKey: InjectionKey<ThemeContext> =
|
|
33
|
+
"theme-context-key" as any; // using symbol breaks with HMR
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1396.92 308.78">
|
|
3
|
-
<defs>
|
|
4
|
-
<style>
|
|
5
|
-
.cls-1 {
|
|
6
|
-
fill: #000000;
|
|
7
|
-
}
|
|
8
|
-
</style>
|
|
9
|
-
</defs>
|
|
10
|
-
<g id="Layer_1-2">
|
|
11
|
-
<g>
|
|
12
|
-
<g>
|
|
13
|
-
<path class="cls-1" d="M283.19,145.14H42.6c-6.13,0-11.14-5.04-11.14-11.21v-17.09c0-19.33,15.59-35.02,34.81-35.02h192.97c19.21,0,34.81,15.69,34.81,35.02v17.09c.28,6.16-4.73,11.21-10.86,11.21Z"/>
|
|
14
|
-
<path class="cls-1" d="M232.51,63.32H93.28c-6.13,0-11.42-5.04-11.42-11.49C81.87,23.26,104.98,0,133.38,0h59.03c28.4,0,51.51,23.26,51.51,51.84,0,6.44-5.01,11.49-11.42,11.49Z"/>
|
|
15
|
-
<path class="cls-1" d="M294.33,163.63H31.47c-17.26,0-31.47,14.29-31.47,31.66s14.2,31.66,31.47,31.66h93.28c3.34-17.93,18.93-31.66,37.87-31.66s34.81,13.73,38.15,31.66h93.28c17.26,0,31.47-14.29,31.47-31.66s-13.92-31.66-31.19-31.66Z"/>
|
|
16
|
-
<path class="cls-1" d="M282.91,245.45h-81.59v63.32h61.26c17.26,0,31.47-14.29,31.47-31.66v-20.17c.28-6.16-4.73-11.49-11.14-11.49Z"/>
|
|
17
|
-
<path class="cls-1" d="M42.6,245.45c-6.13,0-11.42,5.04-11.42,11.49v20.17c0,17.37,14.2,31.66,31.47,31.66h61.26v-63.32c.28,0-81.31,0-81.31,0Z"/>
|
|
18
|
-
</g>
|
|
19
|
-
<path class="cls-1" d="M558.67,182.5c0,46.73-32.09,76.74-74,76.74-20.01,0-35.87-6.46-46.44-19.38v17.1h-41.15V51.43h43.04v72.57c10.95-12.16,26.05-18.24,44.55-18.24,41.53,0,74,30.01,74,76.75ZM514.88,182.5c0-25.84-16.23-41.41-37.76-41.41s-37.76,15.58-37.76,41.41,16.23,41.41,37.76,41.41,37.76-15.58,37.76-41.41Z"/>
|
|
20
|
-
<path class="cls-1" d="M696.13,210.24l23.03,25.08c-13.59,15.96-34.36,23.93-61.16,23.93-51.35,0-84.57-32.29-84.57-76.75s33.6-76.74,79.29-76.74c41.91,0,76.27,27.73,76.65,75.61l-109.87,21.27c6.42,14.82,20.01,22.04,39.27,22.04,15.86,0,27.18-4.56,37.38-14.44ZM615.33,177.94l72.11-14.06c-4.15-15.2-16.99-25.46-35.11-25.46-21.14,0-36.25,14.44-37,39.51Z"/>
|
|
21
|
-
<path class="cls-1" d="M864.98,210.24l23.03,25.08c-13.6,15.96-34.36,23.93-61.17,23.93-51.35,0-84.57-32.29-84.57-76.75s33.6-76.74,79.29-76.74c41.9,0,76.26,27.73,76.64,75.61l-109.49,21.27c6.42,14.82,20.01,22.04,39.26,22.04,15.48,0,26.81-4.56,37.01-14.44ZM784.18,177.94l72.11-14.06c-4.15-15.2-16.99-25.46-35.11-25.46-21.15,0-35.87,14.44-37,39.51Z"/>
|
|
22
|
-
<path class="cls-1" d="M1073.54,171.87v85.48h-43.04v-79.02c0-23.94-10.95-35.33-30.2-35.33-20.77,0-35.49,12.92-35.49,40.27v73.7h-43.04V51.43h43.04v72.19c11.7-11.78,28.31-17.86,47.19-17.86,35.12,0,61.54,20.52,61.54,66.11Z"/>
|
|
23
|
-
<path class="cls-1" d="M1095.77,64.09c0-12.04,9.64-21.41,23.59-21.41s23.6,8.7,23.6,20.4c0,12.71-9.64,22.07-23.6,22.07s-23.59-9.03-23.59-21.07Z"/>
|
|
24
|
-
<path class="cls-1" d="M1097.84,108.04h43.04v149.31h-43.04V108.04Z"/>
|
|
25
|
-
<path class="cls-1" d="M1163.2,108.04h43.04v149.31h-43.04V108.04Z"/>
|
|
26
|
-
<path class="cls-1" d="M1396.92,108.04l-62.67,149.31h-44.56l-62.29-149.31h44.55l41.15,101.44,42.29-101.44h41.53Z"/>
|
|
27
|
-
<path class="cls-1" d="M1161.12,64.09c0-12.04,9.64-21.41,23.59-21.41s23.6,8.7,23.6,20.4c0,12.71-9.64,22.07-23.6,22.07s-23.59-9.03-23.59-21.07Z"/>
|
|
28
|
-
</g>
|
|
29
|
-
</g>
|
|
30
|
-
</svg>
|