diff --git a/.vitepress/theme/components/Home.vue b/.vitepress/theme/components/Home.vue
index 572fe2414b..9b200be87a 100644
--- a/.vitepress/theme/components/Home.vue
+++ b/.vitepress/theme/components/Home.vue
@@ -1,7 +1,13 @@
@@ -35,21 +41,20 @@ import VueMasteryModal from './VueMasteryModal.vue';
-
@@ -181,13 +186,14 @@ html:not(.dark) .accent,
font-weight: 500;
font-size: 13px;
vertical-align: middle;
- margin: 0 24px;
+ margin-right: 24px;
}
#special-sponsor img {
display: inline-block;
vertical-align: middle;
height: 36px;
+ margin-right: 24px;
}
.dark #special-sponsor img {
@@ -279,4 +285,4 @@ html:not(.dark) .accent,
font-size: 36px;
}
}
-
\ No newline at end of file
+
diff --git a/.vitepress/theme/components/SponsorsGroup.vue b/.vitepress/theme/components/SponsorsGroup.vue
index f1e3e7c8bf..7900489b2f 100644
--- a/.vitepress/theme/components/SponsorsGroup.vue
+++ b/.vitepress/theme/components/SponsorsGroup.vue
@@ -1,28 +1,6 @@
-
-
diff --git a/.vitepress/theme/components/sponsors.ts b/.vitepress/theme/components/sponsors.ts
new file mode 100644
index 0000000000..4ab714f568
--- /dev/null
+++ b/.vitepress/theme/components/sponsors.ts
@@ -0,0 +1,31 @@
+// shared data across instances so we load only once
+
+import { ref } from 'vue'
+
+export interface Sponsor {
+ url: string
+ img: string
+ name: string
+ description?: string
+}
+
+export interface SponsorData {
+ special: Sponsor[]
+ platinum: Sponsor[]
+ platinum_china: Sponsor[]
+ gold: Sponsor[]
+ silver: Sponsor[]
+ bronze: Sponsor[]
+}
+
+export const data = ref()
+export const pending = ref(false)
+
+export const base = `https://sponsors.vuejs.org`
+
+export const load = async () => {
+ if (!pending.value) {
+ pending.value = true
+ data.value = await (await fetch(`${base}/data.json`)).json()
+ }
+}