You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(pricing): route Talk to sales CTA to demo request form instead of signup (#5602)
- pricing page's enterprise card was labeled "Talk to sales" but linked to
/signup for every card, sending visitors to self-serve signup instead of
the demo-request flow every other "Contact sales" CTA on the site uses
- resolveCta now keys off the CTA's sales intent to pick the right href
- extracted the /signup and /demo route literals (previously hardcoded
independently in 6 files) into a single shared apps/sim/app/(landing)/constants.ts
so no CTA can drift to the wrong destination again
- hoisted the static per-column comparison sections out of render and
deduped the annual-discount price math in pricing-plans.tsx
* A public visitor has no subscription, so each card's canonical label and
21
-
* variant resolves against the `free` tier. On this page every CTA funnels to
22
-
* sign-up regardless of plan.
22
+
* variant resolves against the `free` tier. On this page every self-serve CTA
23
+
* funnels to sign-up regardless of plan; the enterprise CTA routes to the
24
+
* demo-request form instead.
23
25
*/
24
26
constVISITOR_TIER: PlanTier='free'
25
27
26
-
/** Every CTA on the public pricing page funnels logged-out visitors to sign-up. */
27
-
constSIGNUP_HREF='/signup'
28
-
29
28
/** This section's rows render on the public cards without their group header. */
30
29
constHEADERLESS_SECTION_TITLE='Credits & pricing'
31
30
@@ -52,13 +51,27 @@ function sectionsForColumn(col: number): PricingCardSection[] {
52
51
}))
53
52
}
54
53
54
+
/** The four card columns (Free, Pro, Max, Enterprise) transposed once at module load - the source data is static, so this never needs to be redone per render. */
0 commit comments