@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
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { computed } from 'vue'
|
|
2
|
+
import { computed, inject } from 'vue'
|
|
3
3
|
import { useData } from 'vitepress'
|
|
4
4
|
import type { BannerConfig } from '../../types/theme-config'
|
|
5
|
-
|
|
6
|
-
// Import footer background images (reused for banner)
|
|
7
|
-
import viteBannerBg from '@assets/vite/footer-background.jpg'
|
|
8
|
-
import vitestBannerBg from '@assets/vitest/footer-background.jpg'
|
|
9
|
-
import rolldownBannerBg from '@assets/rolldown/footer-background.jpg'
|
|
10
|
-
import oxcBannerBg from '@assets/oxc/footer-background.jpg'
|
|
11
|
-
|
|
12
|
-
// Import variant icons (mono versions for banner)
|
|
13
|
-
import viteIcon from '@assets/icons/vite-mono.svg'
|
|
14
|
-
import vitestIcon from '@assets/icons/vitest-mono.svg'
|
|
15
|
-
import rolldownIcon from '@assets/icons/rolldown-mono.svg'
|
|
16
|
-
import oxcIcon from '@assets/icons/oxc-mono.svg'
|
|
5
|
+
import { themeContextKey } from '../../types/theme-context'
|
|
17
6
|
|
|
18
7
|
const { theme, frontmatter } = useData()
|
|
19
8
|
|
|
@@ -23,47 +12,16 @@ const isMarketingPage = computed(() => {
|
|
|
23
12
|
return layout === 'home' || (layout && layout !== 'doc' && layout !== 'page')
|
|
24
13
|
})
|
|
25
14
|
|
|
26
|
-
// Background image mapping based on variant
|
|
27
|
-
const backgroundMap = {
|
|
28
|
-
vite: viteBannerBg,
|
|
29
|
-
vitest: vitestBannerBg,
|
|
30
|
-
rolldown: rolldownBannerBg,
|
|
31
|
-
oxc: oxcBannerBg,
|
|
32
|
-
} as const
|
|
33
|
-
|
|
34
|
-
// Icon mapping based on variant
|
|
35
|
-
const iconMap = {
|
|
36
|
-
vite: viteIcon,
|
|
37
|
-
vitest: vitestIcon,
|
|
38
|
-
rolldown: rolldownIcon,
|
|
39
|
-
oxc: oxcIcon,
|
|
40
|
-
} as const
|
|
41
|
-
|
|
42
|
-
type BannerVariant = keyof typeof backgroundMap
|
|
43
|
-
|
|
44
15
|
// Get banner configuration
|
|
45
16
|
const bannerConfig = computed<BannerConfig | undefined>(() => theme.value.banner)
|
|
46
17
|
|
|
47
|
-
// Get variant - use banner.variant if specified, otherwise fall back to theme variant
|
|
48
|
-
const bannerVariant = computed<BannerVariant>(() => {
|
|
49
|
-
if (bannerConfig.value?.variant) {
|
|
50
|
-
return bannerConfig.value.variant as BannerVariant
|
|
51
|
-
}
|
|
52
|
-
const themeVariant = theme.value.variant as string
|
|
53
|
-
if (themeVariant in backgroundMap) {
|
|
54
|
-
return themeVariant as BannerVariant
|
|
55
|
-
}
|
|
56
|
-
return 'vite'
|
|
57
|
-
})
|
|
58
|
-
|
|
59
18
|
// Only show if banner is configured
|
|
60
19
|
const showBanner = computed(() => {
|
|
61
20
|
return bannerConfig.value?.text && bannerConfig.value?.url
|
|
62
21
|
})
|
|
63
22
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const variantIcon = computed(() => iconMap[bannerVariant.value] || viteIcon)
|
|
23
|
+
const { footerBg: backgroundImage, monoIcon, logoAlt } = inject(themeContextKey)!
|
|
24
|
+
|
|
67
25
|
const bannerText = computed(() => bannerConfig.value?.text || '')
|
|
68
26
|
const bannerUrl = computed(() => bannerConfig.value?.url || '#')
|
|
69
27
|
|
|
@@ -84,51 +42,34 @@ const linkRel = computed(() => {
|
|
|
84
42
|
</script>
|
|
85
43
|
|
|
86
44
|
<template>
|
|
87
|
-
<div v-if="showBanner"
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
class="group block relative w-full no-underline text-white"
|
|
93
|
-
>
|
|
45
|
+
<div v-if="showBanner"
|
|
46
|
+
:class="isMarketingPage ? 'top-banner hidden md:block relative w-full overflow-hidden border-b border-white/10' : 'top-banner hidden md:block relative w-full overflow-hidden border-b border-white/10 lg:fixed lg:top-0 lg:left-0 lg:right-0 lg:z-60'"
|
|
47
|
+
data-theme="dark">
|
|
48
|
+
<a :href="bannerUrl" :target="linkTarget" :rel="linkRel"
|
|
49
|
+
class="group block relative w-full no-underline text-white">
|
|
94
50
|
<!-- Background image -->
|
|
95
|
-
<img
|
|
96
|
-
|
|
97
|
-
alt=""
|
|
98
|
-
aria-hidden="true"
|
|
99
|
-
class="absolute inset-0 w-full h-full object-cover object-bottom z-0"
|
|
100
|
-
loading="eager"
|
|
101
|
-
/>
|
|
51
|
+
<img :src="backgroundImage" alt="" aria-hidden="true"
|
|
52
|
+
class="absolute inset-0 w-full h-full object-cover object-bottom z-0" loading="eager" />
|
|
102
53
|
|
|
103
54
|
<!-- Content overlay -->
|
|
104
55
|
<div class="relative z-10 w-full h-10 flex px-4">
|
|
105
56
|
<div class="flex items-center gap-2 w-full max-w-360 mx-auto px-4">
|
|
106
57
|
<!-- Left: Variant icon -->
|
|
107
|
-
<img
|
|
108
|
-
:src="variantIcon"
|
|
109
|
-
:alt="`${bannerVariant} icon`"
|
|
110
|
-
class="w-5 h-5 shrink-0 hidden sm:block"
|
|
111
|
-
/>
|
|
58
|
+
<img :src="monoIcon" :alt="`${logoAlt} icon`" class="w-5 h-5 shrink-0 hidden sm:block" />
|
|
112
59
|
|
|
113
60
|
<!-- Text -->
|
|
114
|
-
<span
|
|
61
|
+
<span
|
|
62
|
+
class="text-xs font-medium font-mono leading-snug tracking-wide uppercase whitespace-nowrap overflow-hidden text-ellipsis">
|
|
115
63
|
{{ bannerText }}
|
|
116
64
|
</span>
|
|
117
65
|
|
|
118
66
|
<!-- Arrow icon -->
|
|
119
|
-
<svg
|
|
120
|
-
|
|
121
|
-
width="20"
|
|
122
|
-
height="
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
126
|
-
aria-hidden="true"
|
|
127
|
-
>
|
|
128
|
-
<rect width="20" height="20" rx="4" fill="#08060D"/>
|
|
129
|
-
<rect x="0.5" y="0.5" width="19" height="19" rx="3.5" stroke="white" stroke-opacity="0.15"/>
|
|
130
|
-
<path d="M10 6L14 10L10 14" stroke="white" stroke-width="1.2" stroke-linejoin="round"/>
|
|
131
|
-
<path d="M14 10L6 10" stroke="white" stroke-width="1.2" stroke-linejoin="round"/>
|
|
67
|
+
<svg class="shrink-0 transition-transform duration-200 group-hover:translate-x-1" width="20" height="20"
|
|
68
|
+
viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
|
69
|
+
<rect width="20" height="20" rx="4" fill="#08060D" />
|
|
70
|
+
<rect x="0.5" y="0.5" width="19" height="19" rx="3.5" stroke="white" stroke-opacity="0.15" />
|
|
71
|
+
<path d="M10 6L14 10L10 14" stroke="white" stroke-width="1.2" stroke-linejoin="round" />
|
|
72
|
+
<path d="M14 10L6 10" stroke="white" stroke-width="1.2" stroke-linejoin="round" />
|
|
132
73
|
</svg>
|
|
133
74
|
</div>
|
|
134
75
|
</div>
|
|
@@ -3,7 +3,7 @@ import { computed } from 'vue'
|
|
|
3
3
|
import LogoGrid from '@components/shared/LogoGrid.vue'
|
|
4
4
|
|
|
5
5
|
// Glob import all client logos
|
|
6
|
-
const logoModules = import.meta.glob('
|
|
6
|
+
const logoModules = import.meta.glob('../../assets/clients/*.svg', {
|
|
7
7
|
eager: true,
|
|
8
8
|
import: 'default'
|
|
9
9
|
})
|
|
@@ -92,7 +92,7 @@ const testimonials: Testimonial[] = [
|
|
|
92
92
|
<div class="flex gap-8 sm:gap-12 items-start justify-center sm:justify-start sm:pr-20">
|
|
93
93
|
<!-- GitHub Stars -->
|
|
94
94
|
<div class="flex flex-col gap-3">
|
|
95
|
-
<h2 class="text-white">
|
|
95
|
+
<h2 class="text-white">75k+</h2>
|
|
96
96
|
<p class="text-grey flex items-center gap-2">
|
|
97
97
|
<img :src="githubIcon" alt="" class="size-6" />
|
|
98
98
|
Github Stars
|
|
@@ -101,7 +101,7 @@ const testimonials: Testimonial[] = [
|
|
|
101
101
|
|
|
102
102
|
<!-- NPM Downloads -->
|
|
103
103
|
<div class="flex flex-col gap-3">
|
|
104
|
-
<h2 class="text-white">
|
|
104
|
+
<h2 class="text-white">40m+</h2>
|
|
105
105
|
<p class="text-grey">Weekly NPM downloads</p>
|
|
106
106
|
</div>
|
|
107
107
|
</div>
|
|
@@ -189,4 +189,4 @@ const testimonials: Testimonial[] = [
|
|
|
189
189
|
animation-duration: 16s;
|
|
190
190
|
animation-delay: -6s;
|
|
191
191
|
}
|
|
192
|
-
</style>
|
|
192
|
+
</style>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import RiveAnimation from "@components/shared/RiveAnimation.vue";
|
|
3
|
+
import viteAnimation from '@assets/vite/animations/563_x_420_rich_features.riv'
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<template>
|
|
7
|
+
<section class="wrapper wrapper--ticks border-t grid lg:grid-cols-2 divide-x divide-y divide-nickel">
|
|
8
|
+
<div class="flex flex-col gap-3 justify-between">
|
|
9
|
+
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
10
|
+
<h5 class="text-balance sm:text-pretty text-white">Instant Server Start</h5>
|
|
11
|
+
<p class="sm:max-w-[28rem] text-pretty">On demand source file serving over native ESM, with blazing fast
|
|
12
|
+
dependency pre-bundling.</p>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="card-bg1 p-10 sm:p-15 flex justify-center">
|
|
15
|
+
<img src="@assets/vite/vite-featurepanel-1-terminal.svg" alt="Terminal" inert loading="lazy" />
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div class="flex flex-col gap-3 justify-between border-r-0">
|
|
20
|
+
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
21
|
+
<h5 class="text-white">Lightning Fast HMR</h5>
|
|
22
|
+
<p class="max-w-[26rem] text-pretty">Hot Module Replacement (HMR) that delivers updates instantly as you save,
|
|
23
|
+
and stays fast as your app grows.</p>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="relative min-h-100 -mt-15">
|
|
26
|
+
<img src="@assets/vite/vite-featurepanel-2-terminal.png" inert loading="lazy" alt="lightning fast hot module replacement"
|
|
27
|
+
class="absolute bottom-0 right-0 w-full max-w-[560px]">
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div class="p-5 sm:p-10 pb-0 sm:pb-0 flex flex-col gap-3">
|
|
32
|
+
<h5 class="text-white">Rich Features Out of the Box</h5>
|
|
33
|
+
<p class="sm:max-w-[28rem] text-pretty">TypeScript, JSX, CSS, Workers, Web Assembly... and more with just a plugin away.</p>
|
|
34
|
+
<RiveAnimation :desktop-src="viteAnimation" :mobile-src="viteAnimation" :desktop-width="563" :desktop-height="300"
|
|
35
|
+
:mobile-width="563" :mobile-height="420" canvas-class="w-full" />
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<div class="flex flex-col gap-3 justify-between border-r-0">
|
|
39
|
+
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
40
|
+
<h5 class="text-white">Optimized Build</h5>
|
|
41
|
+
<p class="max-w-[25rem] text-pretty">Advanced tree-shaking, built-in minification, fine-grained chunking control
|
|
42
|
+
powered by Rolldown.</p>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="card-bg p-10 sm:p-15 flex justify-center">
|
|
45
|
+
<img src="@assets/vite/vite-featurepanel-4-terminal.svg" inert loading="lazy" alt="optimized build">
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</section>
|
|
49
|
+
</template>
|
|
50
|
+
|
|
51
|
+
<style scoped>
|
|
52
|
+
.card-bg1 {
|
|
53
|
+
background-image: url('@assets/vite/vite-featurepanel-1-background.jpg');
|
|
54
|
+
background-size: cover;
|
|
55
|
+
background-position: center;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.card-bg {
|
|
59
|
+
background-image: url('@assets/vite/vite-featurepanel-4-background.jpg');
|
|
60
|
+
background-size: cover;
|
|
61
|
+
background-position: center;
|
|
62
|
+
}
|
|
63
|
+
</style>
|
|
@@ -6,18 +6,15 @@ import flexiblePluginAnimation from '@assets/vite/animations/640_x_300_flexible_
|
|
|
6
6
|
<template>
|
|
7
7
|
<section class="wrapper wrapper--ticks border-t grid lg:grid-cols-2 divide-x divide-y divide-nickel">
|
|
8
8
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
9
|
-
<h5 class="text-balance sm:text-pretty text-white">Flexible
|
|
10
|
-
<p class="sm:max-w-[28rem] text-pretty">Vite plugins extends Rollup's well-designed plugin interface with a few
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
:desktop-height="300"
|
|
15
|
-
canvas-class="w-[calc(100%_+_2.5rem)] mt-5 -mx-5"
|
|
16
|
-
/>
|
|
9
|
+
<h5 class="text-balance sm:text-pretty text-white">Flexible Plugin System</h5>
|
|
10
|
+
<p class="sm:max-w-[28rem] text-pretty">Vite plugins extends Rollup's well-designed plugin interface with a few
|
|
11
|
+
extra Vite-specific options.</p>
|
|
12
|
+
<RiveAnimation :desktop-src="flexiblePluginAnimation" :desktop-width="640" :desktop-height="300"
|
|
13
|
+
canvas-class="w-[calc(100%_+_2.5rem)] mt-5 -mx-5" />
|
|
17
14
|
</div>
|
|
18
15
|
<div class="flex flex-col gap-3 border-r-0 justify-between">
|
|
19
16
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
20
|
-
<h5 class="text-white">Fully
|
|
17
|
+
<h5 class="text-white">Fully Typed API</h5>
|
|
21
18
|
<p class="max-w-[26rem] text-pretty">Designed to be built on top of.</p>
|
|
22
19
|
</div>
|
|
23
20
|
<div class="card-bg p-5 sm:p-10 flex justify-center">
|
|
@@ -26,7 +23,8 @@ import flexiblePluginAnimation from '@assets/vite/animations/640_x_300_flexible_
|
|
|
26
23
|
</div>
|
|
27
24
|
<div class="p-5 sm:p-10 flex flex-col gap-3">
|
|
28
25
|
<h5 class="text-white">First class SSR Support</h5>
|
|
29
|
-
<p class="sm:max-w-[28rem] text-pretty mb-12 sm:mb-16">It's never been easier to setup custom SSR (Server-Side
|
|
26
|
+
<p class="sm:max-w-[28rem] text-pretty mb-12 sm:mb-16">It's never been easier to setup custom SSR (Server-Side
|
|
27
|
+
Rendering), or build your own SSR framework.</p>
|
|
30
28
|
<img src="@assets/vite/vite-ssr-support.png" alt="SSR Support" loading="lazy" class="w-full px-5">
|
|
31
29
|
</div>
|
|
32
30
|
<div class="flex flex-col gap-3 justify-between">
|
|
@@ -28,29 +28,20 @@ const installTabs = [
|
|
|
28
28
|
<a href="/guide/" class="button button--primary inline-block w-fit">
|
|
29
29
|
Get Started
|
|
30
30
|
</a>
|
|
31
|
-
<a href="https://github.com/vitejs/vite" target="_blank" rel="noopener noreferrer"
|
|
31
|
+
<a href="https://github.com/vitejs/vite" target="_blank" rel="noopener noreferrer"
|
|
32
|
+
class="button inline-block w-fit">
|
|
32
33
|
View on GitHub
|
|
33
34
|
</a>
|
|
34
35
|
</div>
|
|
35
36
|
</div>
|
|
36
|
-
<CodeGroup :tabs="installTabs" class="hidden md:block w-full"
|
|
37
|
+
<CodeGroup :tabs="installTabs" class="hidden md:block w-full"
|
|
38
|
+
style="--vp-code-tab-bg:var(--color-slate);--vp-code-block-bg:var(--color-slate);--vp-code-tab-divider:#000" />
|
|
37
39
|
</div>
|
|
38
40
|
<div class="flex flex-col min-h-[22rem] sm:min-h-[30rem]">
|
|
39
41
|
<div class="relative px-10 h-full flex flex-col justify-center overflow-clip py-10 sm:py-0">
|
|
40
|
-
<RiveAnimation
|
|
41
|
-
|
|
42
|
-
:mobile-src="viteAnimation"
|
|
43
|
-
:desktop-width="641"
|
|
44
|
-
:desktop-height="629"
|
|
45
|
-
:mobile-width="641"
|
|
46
|
-
:mobile-height="629"
|
|
47
|
-
canvas-class="w-full"
|
|
48
|
-
/>
|
|
42
|
+
<RiveAnimation :desktop-src="viteAnimation" :mobile-src="viteAnimation" :desktop-width="641"
|
|
43
|
+
:desktop-height="629" :mobile-width="641" :mobile-height="629" canvas-class="w-full" />
|
|
49
44
|
</div>
|
|
50
45
|
</div>
|
|
51
46
|
</div>
|
|
52
47
|
</template>
|
|
53
|
-
|
|
54
|
-
<style scoped>
|
|
55
|
-
|
|
56
|
-
</style>
|
|
@@ -30,7 +30,7 @@ function onBlur() {
|
|
|
30
30
|
>
|
|
31
31
|
<button
|
|
32
32
|
type="button"
|
|
33
|
-
class="flex items-center px-3 py-2 text-base font-
|
|
33
|
+
class="flex items-center px-3 py-2 text-base font-heading text-primary dark:text-white hover:opacity-70 transition-opacity whitespace-nowrap overflow-hidden text-ellipsis"
|
|
34
34
|
aria-haspopup="true"
|
|
35
35
|
:aria-expanded="open"
|
|
36
36
|
:aria-label="label"
|
|
@@ -24,7 +24,7 @@ defineOptions({ inheritAttrs: false })
|
|
|
24
24
|
<div class="VPMenuLink">
|
|
25
25
|
<VPLink
|
|
26
26
|
v-bind="$attrs"
|
|
27
|
-
class="flex items-center justify-between rounded-md px-3 py-2 text-
|
|
27
|
+
class="flex items-center justify-between rounded-md px-3 py-2 text-sm font-heading text-primary dark:text-white text-left whitespace-nowrap hover:opacity-70 transition-opacity"
|
|
28
28
|
:href
|
|
29
29
|
:target="item.target"
|
|
30
30
|
:rel="item.rel"
|
|
@@ -20,7 +20,7 @@ const href = computed(() =>
|
|
|
20
20
|
|
|
21
21
|
<template>
|
|
22
22
|
<VPLink
|
|
23
|
-
class="flex items-center px-3 py-2 text-base font-
|
|
23
|
+
class="flex items-center px-3 py-2 text-base font-heading text-primary dark:text-white hover:opacity-70 transition-opacity whitespace-nowrap overflow-hidden text-ellipsis"
|
|
24
24
|
:href
|
|
25
25
|
:target="item.target"
|
|
26
26
|
:rel="item.rel"
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import type { DefaultTheme } from 'vitepress/theme'
|
|
3
3
|
import { computed, nextTick, onMounted, ref, useSSRContext } from 'vue'
|
|
4
|
-
import type { SSGContext } from '../../support/vitepress-default/shared-utils'
|
|
5
4
|
|
|
6
5
|
const props = defineProps<{
|
|
7
6
|
icon: DefaultTheme.SocialLinkIcon
|
|
@@ -35,7 +34,7 @@ const svg = computed(() => {
|
|
|
35
34
|
|
|
36
35
|
if (import.meta.env.SSR) {
|
|
37
36
|
typeof props.icon === 'string' &&
|
|
38
|
-
useSSRContext
|
|
37
|
+
useSSRContext()?.vpSocialIcons.add(props.icon)
|
|
39
38
|
}
|
|
40
39
|
</script>
|
|
41
40
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|