diff --git a/src/components/landing/Hero.tsx b/src/components/landing/Hero.tsx index 71fb6b8b1..192d5b989 100644 --- a/src/components/landing/Hero.tsx +++ b/src/components/landing/Hero.tsx @@ -69,6 +69,8 @@ const Hero = () => { + + {planHighlights.map((item) => (
@@ -95,6 +97,42 @@ const Hero = () => { ); }; +// Launch directories check that their badge is on the homepage above the fold. +// Both themes render and CSS shows one, because the prerendered HTML can't know +// the visitor's theme. Image hosts must stay in vercel.json's img-src. +const FEATURED_BADGES = [ + { + alt: "Featured on LaunchIgniter", + width: 154, + light: { href: "https://launchigniter.com/product/debatelab?ref=badge-debatelab", src: "https://launchigniter.com/api/badge/debatelab?theme=light" }, + dark: { href: "https://launchigniter.com/product/debatelab?ref=badge-debatelab", src: "https://launchigniter.com/api/badge/debatelab?theme=dark" }, + }, + { + alt: "Launched on StartupBase", + width: 150, + light: { href: "https://startupbase.io/products/debatelab?utm_source=startupbase&utm_medium=badge&utm_campaign=launch-badge-light", src: "https://statics.startupbase.io/site/badges/launched-on-sb.svg" }, + dark: { href: "https://startupbase.io/products/debatelab?utm_source=startupbase&utm_medium=badge&utm_campaign=launch-badge-dark", src: "https://statics.startupbase.io/site/badges/launched-on-sb-dark.svg" }, + }, +]; + +const FeaturedOn = () => ( + +
+ {FEATURED_BADGES.flatMap((badge) => (["light", "dark"] as const).map((theme) => ( + + {badge.alt} + + )))} +
+
+); + const HeroPreview = () => { const { t } = useTranslation(); type DemoMode = "generate" | "crossfire" | "sparring"; diff --git a/vercel.json b/vercel.json index 085975ed6..07ca2ed0c 100644 --- a/vercel.json +++ b/vercel.json @@ -114,7 +114,7 @@ "headers": [ { "key": "Content-Security-Policy", - "value": "default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; img-src 'self' data: blob: https://*.jam.dev; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' https://*.jam.dev; worker-src 'self' blob:; frame-src 'self' https://accounts.google.com https://*.jam.dev; connect-src 'self' https://*.jam.dev https://uziwdtkzofptihahfooo.supabase.co https://brifeyypjauyusmkptkx.supabase.co https://*.ingest.sentry.io https://*.sentry.io https://eu.i.posthog.com https://*.posthog.com;" + "value": "default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; form-action 'self'; img-src 'self' data: blob: https://*.jam.dev https://launchigniter.com https://statics.startupbase.io; font-src 'self' data:; style-src 'self' 'unsafe-inline'; script-src 'self' https://*.jam.dev; worker-src 'self' blob:; frame-src 'self' https://accounts.google.com https://*.jam.dev; connect-src 'self' https://*.jam.dev https://uziwdtkzofptihahfooo.supabase.co https://brifeyypjauyusmkptkx.supabase.co https://*.ingest.sentry.io https://*.sentry.io https://eu.i.posthog.com https://*.posthog.com;" }, { "key": "X-Frame-Options",