-
+ {#if layoutAside}
+
+ {:else}
+
+
+
+ {/if}
-
-
- {title}_
-
-
+ {#if layoutAside || layoutBottomTwoLineTitle}
+
+
+ {resolved.heroTitle}_
+
+
+ {:else}
+
+
+ {resolved.heroTitle}_
+
+
+ {/if}
- {subtitle}
+ {resolved.heroSubtitle}
-
+
-
-
+ {/if}
diff --git a/src/routes/(marketing)/+page.server.ts b/src/routes/(marketing)/+page.server.ts
index cb158aad1a..4f8009f105 100644
--- a/src/routes/(marketing)/+page.server.ts
+++ b/src/routes/(marketing)/+page.server.ts
@@ -1,6 +1,13 @@
-import { STATSIG_STABLE_ID_KEY, DEFAULT_HERO_SUBTITLE } from '$lib/statsig/constants';
+import {
+ STATSIG_STABLE_ID_KEY,
+ DEFAULT_HERO_SUBTITLE,
+ DEFAULT_HERO_TITLE
+} from '$lib/statsig/constants';
+import { resolveHeroQueryOverrides } from '$lib/statsig/hero-query-overrides';
+import { building } from '$app/environment';
import {
evaluateHeroDescriptionExperiment,
+ evaluateHeroLayoutExperiment,
getStatsigClientBootstrapPayload
} from '$lib/statsig/hero-statsig.server';
import type { PageServerLoad } from './$types';
@@ -26,13 +33,25 @@ export const load: PageServerLoad = async ({ cookies, request, url }) => {
...(userAgent ? { userAgent } : {})
};
- const [heroSubtitle, statsigBootstrap] = await Promise.all([
+ const [heroSubtitleBase, heroLayoutBase, statsigBootstrap] = await Promise.all([
evaluateHeroDescriptionExperiment(user, DEFAULT_HERO_SUBTITLE),
+ evaluateHeroLayoutExperiment(user, 0),
getStatsigClientBootstrapPayload(user)
]);
+ // `url.searchParams` is unavailable while prerendering (`+page.ts` has `prerender = true`).
+ // Query overrides still apply in the browser via `hero.svelte` + `page.url.searchParams`.
+ const heroQueryParams = building ? new URLSearchParams() : url.searchParams;
+ const { heroSubtitle, heroLayout, heroTitle } = resolveHeroQueryOverrides(heroQueryParams, {
+ heroLayout: heroLayoutBase,
+ heroSubtitle: heroSubtitleBase,
+ heroTitle: DEFAULT_HERO_TITLE
+ });
+
return {
heroSubtitle,
+ heroLayout,
+ heroTitle,
statsigBootstrap,
/** Same value as `STATSIG_STABLE_ID_KEY` cookie — pass to client init to avoid bootstrap / stableID mismatch. */
statsigStableUserId: stableId,
diff --git a/src/routes/(marketing)/+page.svelte b/src/routes/(marketing)/+page.svelte
index f08e9b0ac6..7c951dda7c 100644
--- a/src/routes/(marketing)/+page.svelte
+++ b/src/routes/(marketing)/+page.svelte
@@ -23,7 +23,7 @@
/>
-
+
diff --git a/src/routes/[variation]/+page.svelte b/src/routes/[variation]/+page.svelte
index 23198858b2..95b37b1ef2 100644
--- a/src/routes/[variation]/+page.svelte
+++ b/src/routes/[variation]/+page.svelte
@@ -27,6 +27,7 @@
showDashboard={config.showDashboard}
ctaLabel={config.ctaLabel}
ctaHref={config.ctaHref}
+ heroLayout={config.heroLayout ?? 0}
/>
{#if config.showPlatforms}