From 05a5be0e23110e84f4ac9798d17aff1871cc53b6 Mon Sep 17 00:00:00 2001 From: John Leider Date: Thu, 28 May 2026 13:57:58 -0500 Subject: [PATCH 01/17] docs: add SPECIAL_SPONSOR constants for sponsor program --- apps/docs/src/constants/sponsor.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 apps/docs/src/constants/sponsor.ts diff --git a/apps/docs/src/constants/sponsor.ts b/apps/docs/src/constants/sponsor.ts new file mode 100644 index 000000000..87301e95d --- /dev/null +++ b/apps/docs/src/constants/sponsor.ts @@ -0,0 +1,14 @@ +export interface SpecialSponsor { + name: string + logo: string + logoDark?: string + url: string +} + +export const SPECIAL_SPONSOR: SpecialSponsor | null = null + +export const SPECIAL_SPONSOR_PRICE = 2000 + +// Update once the dedicated $2,000 tier exists on github.com/sponsors/johnleider; +// the deep link will be .../sponsorships?tier_id=XXX +export const SPECIAL_SPONSOR_TIER_URL = 'https://github.com/sponsors/johnleider' From 81ced01dba6651392077eb78d2059f25a248fc88 Mon Sep 17 00:00:00 2001 From: John Leider Date: Thu, 28 May 2026 14:00:57 -0500 Subject: [PATCH 02/17] docs: add SponsorHero component for /sponsor page --- .../src/components/sponsor/SponsorHero.vue | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 apps/docs/src/components/sponsor/SponsorHero.vue diff --git a/apps/docs/src/components/sponsor/SponsorHero.vue b/apps/docs/src/components/sponsor/SponsorHero.vue new file mode 100644 index 000000000..3f2d50c92 --- /dev/null +++ b/apps/docs/src/components/sponsor/SponsorHero.vue @@ -0,0 +1,89 @@ + + + From fda28be0020ec2acd4f5cf29a973af279e4cfef5 Mon Sep 17 00:00:00 2001 From: John Leider Date: Thu, 28 May 2026 14:03:11 -0500 Subject: [PATCH 03/17] docs: add SponsorIncluded surface-inventory grid --- .../components/sponsor/SponsorIncluded.vue | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 apps/docs/src/components/sponsor/SponsorIncluded.vue diff --git a/apps/docs/src/components/sponsor/SponsorIncluded.vue b/apps/docs/src/components/sponsor/SponsorIncluded.vue new file mode 100644 index 000000000..a22e06fc1 --- /dev/null +++ b/apps/docs/src/components/sponsor/SponsorIncluded.vue @@ -0,0 +1,55 @@ + + + From a259e7af0d2ae062b085371c73eeb2572c35ec9e Mon Sep 17 00:00:00 2001 From: John Leider Date: Thu, 28 May 2026 14:04:11 -0500 Subject: [PATCH 04/17] docs: add SponsorComparison table for /sponsor page --- .../components/sponsor/SponsorComparison.vue | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 apps/docs/src/components/sponsor/SponsorComparison.vue diff --git a/apps/docs/src/components/sponsor/SponsorComparison.vue b/apps/docs/src/components/sponsor/SponsorComparison.vue new file mode 100644 index 000000000..574618cc8 --- /dev/null +++ b/apps/docs/src/components/sponsor/SponsorComparison.vue @@ -0,0 +1,71 @@ + + + From 548361389a9efeb53d14f0819e645330153edf95 Mon Sep 17 00:00:00 2001 From: John Leider Date: Thu, 28 May 2026 14:04:58 -0500 Subject: [PATCH 05/17] docs: add SponsorCta final-CTA card for /sponsor page --- .../src/components/sponsor/SponsorCta.vue | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 apps/docs/src/components/sponsor/SponsorCta.vue diff --git a/apps/docs/src/components/sponsor/SponsorCta.vue b/apps/docs/src/components/sponsor/SponsorCta.vue new file mode 100644 index 000000000..b71d539da --- /dev/null +++ b/apps/docs/src/components/sponsor/SponsorCta.vue @@ -0,0 +1,41 @@ + + + From bdc8d5253013219edacb81f8e0697d890b358661 Mon Sep 17 00:00:00 2001 From: John Leider Date: Thu, 28 May 2026 14:07:51 -0500 Subject: [PATCH 06/17] docs: add /sponsor page wiring sponsor components --- apps/docs/src/pages/sponsor.md | 44 ++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 apps/docs/src/pages/sponsor.md diff --git a/apps/docs/src/pages/sponsor.md b/apps/docs/src/pages/sponsor.md new file mode 100644 index 000000000..67d9c858f --- /dev/null +++ b/apps/docs/src/pages/sponsor.md @@ -0,0 +1,44 @@ +--- +title: Sponsor v0 - Become the Special Sponsor +meta: +- name: description + content: One sponsor at a time. $2,000/mo. Your logo across the v0 docs site and README, funding development of the AI-native headless framework for Vue. +- name: keywords + content: vuetify sponsor, v0 sponsor, special sponsor, vue framework sponsor, open source funding +features: + level: 1 +related: + - /services + - /introduction/why-vuetify0 + - /roadmap +--- + +# Sponsor v0 + +One special sponsor at a time. $2,000/mo gets your brand in front of every visitor to the v0 docs and every developer who reads the README. + + + + + +## What you get + + + +## Why sponsor v0 + +**For the company that's already built on v0.** + +The Special Sponsor slot isn't for companies looking for ad placement — v0 doesn't run ads, and there are no plans to. It's for the company whose product depends on v0 as part of its infrastructure: the team that ships against `@vuetify/v0` in production, files issues, and has a vested interest in the framework staying healthy and actively maintained. + +If that's you, sponsoring funds the OSS work directly and makes that dependency visible — to your engineering org, to prospective hires, and to other teams evaluating v0 for the same reasons you did. + +One slot at a time. Most teams using v0 don't need this; they need [Services](/services). The Special Sponsor slot is for the rare case where v0 is core to your product, and "we sponsor this" is a more accurate description of the relationship than "we use it." + +## Sponsorship vs. Services + + + +## Become the sponsor + + From 8cd513811d143b319ee853bdd3224e0b2cbce0ee Mon Sep 17 00:00:00 2001 From: John Leider Date: Thu, 28 May 2026 14:10:56 -0500 Subject: [PATCH 07/17] docs: add Special Sponsor band to home page --- apps/docs/src/components.d.ts | 7 ++- .../components/home/HomeSpecialSponsor.vue | 47 +++++++++++++++++++ apps/docs/src/pages/index.vue | 1 + apps/docs/src/typed-router.d.ts | 26 +++++----- 4 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 apps/docs/src/components/home/HomeSpecialSponsor.vue diff --git a/apps/docs/src/components.d.ts b/apps/docs/src/components.d.ts index 6c3fdaefd..ca49e8b71 100644 --- a/apps/docs/src/components.d.ts +++ b/apps/docs/src/components.d.ts @@ -168,11 +168,10 @@ declare module 'vue' { HomeEcosystem: typeof import('./components/home/HomeEcosystem.vue')['default'] HomeFoundation: typeof import('./components/home/HomeFoundation.vue')['default'] HomeHero: typeof import('./components/home/HomeHero.vue')['default'] + HomeSpecialSponsor: typeof import('./components/home/HomeSpecialSponsor.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] - ServicesContactCard: typeof import('./components/services/ServicesContactCard.vue')['default'] ServicesProjectTiers: typeof import('./components/services/ServicesProjectTiers.vue')['default'] - ServicesSponsorBand: typeof import('./components/services/ServicesSponsorBand.vue')['default'] ServicesSupportTiers: typeof import('./components/services/ServicesSupportTiers.vue')['default'] SkillCard: typeof import('./components/skillz/SkillCard.vue')['default'] SkillCardDeck: typeof import('./components/skillz/SkillCardDeck.vue')['default'] @@ -185,5 +184,9 @@ declare module 'vue' { SkillPrerequisites: typeof import('./components/skillz/SkillPrerequisites.vue')['default'] SkillzResume: typeof import('./components/skillz/SkillzResume.vue')['default'] SkillzTour: typeof import('./components/skillz/SkillzTour.vue')['default'] + SponsorComparison: typeof import('./components/sponsor/SponsorComparison.vue')['default'] + SponsorCta: typeof import('./components/sponsor/SponsorCta.vue')['default'] + SponsorHero: typeof import('./components/sponsor/SponsorHero.vue')['default'] + SponsorIncluded: typeof import('./components/sponsor/SponsorIncluded.vue')['default'] } } diff --git a/apps/docs/src/components/home/HomeSpecialSponsor.vue b/apps/docs/src/components/home/HomeSpecialSponsor.vue new file mode 100644 index 000000000..339447aeb --- /dev/null +++ b/apps/docs/src/components/home/HomeSpecialSponsor.vue @@ -0,0 +1,47 @@ + + + diff --git a/apps/docs/src/pages/index.vue b/apps/docs/src/pages/index.vue index 8893d3d50..dee6ae66a 100644 --- a/apps/docs/src/pages/index.vue +++ b/apps/docs/src/pages/index.vue @@ -15,6 +15,7 @@ From ada852a4aba05b828e61c99779b43345b1afd321 Mon Sep 17 00:00:00 2001 From: John Leider Date: Thu, 28 May 2026 14:17:21 -0500 Subject: [PATCH 09/17] docs(DocsSponsor): rewrite as $2,000 Special Sponsor teaser to /sponsor --- apps/docs/build/markdown.ts | 2 +- apps/docs/src/components.d.ts | 1 + apps/docs/src/components/docs/DocsSponsor.vue | 21 ++++++++----------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/apps/docs/build/markdown.ts b/apps/docs/build/markdown.ts index 19a451e03..75d347b86 100644 --- a/apps/docs/build/markdown.ts +++ b/apps/docs/build/markdown.ts @@ -153,7 +153,7 @@ export function applyMarkdownPlugins (md: MarkdownIt, highlighter: DocsHighlight registerExampleContainer('gn-example', 'DocsGenesisExample') // Sponsor container: ::: sponsor ... ::: - // Renders the standing $1,500/mo Premier sponsor pitch + // Renders the $2,000/mo Special Sponsor teaser (full pitch lives at /sponsor) md.use(Container, 'sponsor', { render (tokens: MarkdownToken[], index: number) { if (tokens[index].nesting === 1) return '\n' diff --git a/apps/docs/src/components.d.ts b/apps/docs/src/components.d.ts index ca49e8b71..7ed1469a4 100644 --- a/apps/docs/src/components.d.ts +++ b/apps/docs/src/components.d.ts @@ -156,6 +156,7 @@ declare module 'vue' { DocsSkeleton: typeof import('./components/docs/DocsSkeleton.vue')['default'] DocsSkillToggle: typeof import('./components/docs/meta/DocsSkillToggle.vue')['default'] DocsSponsor: typeof import('./components/docs/DocsSponsor.vue')['default'] + DocsSponsorSlot: typeof import('./components/docs/DocsSponsorSlot.vue')['default'] DocsTimeline: typeof import('./components/docs/DocsTimeline.vue')['default'] DocsToc: typeof import('./components/docs/DocsToc.vue')['default'] HomeAiFirst: typeof import('./components/home/HomeAiFirst.vue')['default'] diff --git a/apps/docs/src/components/docs/DocsSponsor.vue b/apps/docs/src/components/docs/DocsSponsor.vue index 7295658b4..9d7778589 100644 --- a/apps/docs/src/components/docs/DocsSponsor.vue +++ b/apps/docs/src/components/docs/DocsSponsor.vue @@ -1,6 +1,5 @@