docs(nx-dev): Add analytics events & improve CTAs across components (#29592)

Introduced custom event tracking for ebook downloads and sales contact buttons using `sendCustomEvent`. Enhanced call-to-action designs by replacing links with `ButtonLink` components and adjusted styling and text for clarity. Updated webinar links and refined headings for consistency.
This commit is contained in:
Benjamin Cabanes 2025-01-10 22:10:01 -05:00 committed by GitHub
parent bbbfd9f43b
commit f57d88a624
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 98 additions and 53 deletions

View File

@ -1,7 +1,12 @@
import { useRouter } from 'next/router';
import { NextSeo } from 'next-seo';
import { Footer, Header } from '@nx/nx-dev/ui-common';
import { SectionHeading, HubspotForm } from '@nx/nx-dev/ui-common';
import {
ButtonLink,
Footer,
Header,
HubspotForm,
SectionHeading,
} from '@nx/nx-dev/ui-common';
import {
CapitalOneIcon,
CaterpillarIcon,
@ -10,7 +15,8 @@ import {
SiriusxmAlternateIcon,
} from '@nx/nx-dev/ui-icons';
import { type ReactElement } from 'react';
import { ArrowLongRightIcon } from '@heroicons/react/24/outline';
import { ArrowDownTrayIcon } from '@heroicons/react/24/outline';
import { sendCustomEvent } from '@nx/nx-dev/feature-analytics';
export function WhitePaperFastCI(): ReactElement {
const router = useRouter();
@ -70,22 +76,39 @@ export function WhitePaperFastCI(): ReactElement {
monorepos can result in slow builds, operational complexity,
increased costs and test bottlenecks.
</p>
<div className="py-10 italic">
<a
target="_blank"
className="group text-lg font-semibold leading-relaxed underline"
href="/assets/enterprise/Fast-CI-Whitepaper.pdf"
<div className="mt-12 text-center">
<SectionHeading
as="p"
variant="subtitle"
className="text-white"
>
See how to get fast CI, built for monorepos{' '}
<ArrowLongRightIcon
className="inline-block h-6 w-6 transition group-hover:translate-x-1"
See how to get fast CI, built for monorepos
</SectionHeading>
<ButtonLink
href="/assets/enterprise/Fast-CI-Whitepaper.pdf"
title="Download the ebook"
target="_blank"
variant="secondary"
size="small"
onClick={() =>
sendCustomEvent(
'download-ebook-click',
'whitepaper-fast-ci-hero',
'whitepaper-fast-ci'
)
}
className="mt-2"
>
<ArrowDownTrayIcon
aria-hidden="true"
className="size-5 shrink-0"
/>
</a>
<p className="mt-2">(download pdf)</p>
<span>Download the ebook</span>
</ButtonLink>
</div>
<figure className="mt-4 rounded-lg bg-slate-100 p-4 pl-8 dark:bg-slate-800">
<figure className="mt-16 rounded-lg bg-slate-100 p-4 pl-8 dark:bg-slate-800">
<blockquote className="text-base/7">
<p>
The decision to jump to Nx Cloud was really something
@ -111,7 +134,7 @@ export function WhitePaperFastCI(): ReactElement {
</div>
<SiriusxmAlternateIcon
aria-hidden="true"
className="ml-auto size-10 text-[#0000EB]"
className="ml-auto size-10 rounded text-[#0000EB] dark:bg-slate-200"
/>
</figcaption>
</figure>

View File

@ -72,7 +72,7 @@ export function WebinarNotifier(): ReactElement | null {
<div className="flex flex-wrap items-center justify-end gap-1 sm:gap-4">
<a
title="Signup"
href="https://bit.ly/3B0Ebfe"
href="https://bit.ly/40t8IMN"
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-2 rounded-lg bg-pink-600 px-2 py-2 text-sm font-semibold text-white transition hover:bg-pink-700 focus:outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-500 active:text-black/70 md:px-4"

View File

@ -66,7 +66,7 @@ export function TalkToOurTeam(): ReactElement {
</div>
<SiriusxmAlternateIcon
aria-hidden="true"
className="ml-auto size-10 text-[#0000EB]"
className="ml-auto size-10 rounded text-[#0000EB] dark:bg-slate-200"
/>
</figcaption>
</figure>

View File

@ -26,6 +26,7 @@ import {
ParamountIcon,
PaylocityIcon,
PhilipsIcon,
PlexIcon,
RedBullIcon,
RoyalBankOfCanadaIcon,
SainsburysIcon,
@ -37,12 +38,11 @@ import {
TMobileIcon,
VarianIcon,
VodafoneIcon,
PlexIcon,
ZipariIcon,
} from '@nx/nx-dev/ui-icons';
import { DownloadCaseStudy } from '@nx/nx-dev/ui-enterprise';
import { CustomerTestimonialCarousel } from './customer-testimonial-carousel';
import { CustomerIconGrid, type CustomerIcon } from './customer-icon-grid';
import { type CustomerIcon, CustomerIconGrid } from './customer-icon-grid';
import { type ReactElement } from 'react';
const firstCustomerIcons: CustomerIcon[] = [

View File

@ -1,6 +1,7 @@
import { ButtonLink, SectionHeading } from '@nx/nx-dev/ui-common';
import { type ReactElement } from 'react';
import { sendCustomEvent } from '@nx/nx-dev/feature-analytics';
import { ChevronRightIcon } from '@heroicons/react/24/outline';
export function Hero(): ReactElement {
return (
@ -32,24 +33,24 @@ export function Hero(): ReactElement {
</svg>
<div className="mx-auto max-w-7xl px-6 pb-24 pt-32 lg:flex lg:px-8 lg:pt-56">
<div className="mx-auto max-w-2xl lg:mx-0 lg:-mt-12 lg:shrink-0">
{/*<p>*/}
{/* <a*/}
{/* href="https://bit.ly/3B0Ebfe"*/}
{/* title="See live event in details"*/}
{/* className="group/event-link inline-flex space-x-6"*/}
{/* >*/}
{/* <span className="rounded-full bg-blue-600/10 px-3 py-1 text-sm/6 font-semibold text-blue-600 ring-1 ring-inset ring-blue-600/10 dark:bg-cyan-600/10 dark:text-cyan-600 dark:ring-cyan-600/10">*/}
{/* Live event*/}
{/* </span>*/}
{/* <span className="inline-flex items-center space-x-2 text-sm/6 font-medium">*/}
{/* <span>Webinar + live Q&A on Dec 10th</span>*/}
{/* <ChevronRightIcon*/}
{/* aria-hidden="true"*/}
{/* className="size-5 transform transition-all group-hover/event-link:translate-x-1"*/}
{/* />*/}
{/* </span>*/}
{/* </a>*/}
{/*</p>*/}
<p>
<a
href="https://bit.ly/40t8IMN"
title="See live event in details"
className="group/event-link inline-flex space-x-6"
>
<span className="rounded-full bg-blue-600/10 px-3 py-1 text-sm/6 font-semibold text-blue-600 ring-1 ring-inset ring-blue-600/10 dark:bg-cyan-600/10 dark:text-cyan-600 dark:ring-cyan-600/10">
Live event
</span>
<span className="inline-flex items-center space-x-2 text-sm/6 font-medium">
<span>Webinar + live Q&A on January 22nd</span>
<ChevronRightIcon
aria-hidden="true"
className="size-5 transform transition-all group-hover/event-link:translate-x-1"
/>
</span>
</a>
</p>
<SectionHeading
id="get-speed-and-scale"
as="h1"
@ -91,6 +92,13 @@ export function Hero(): ReactElement {
title="Talk to the team"
variant="secondary"
size="default"
onClick={() =>
sendCustomEvent(
'contact-sales-click',
'enterprise-hero',
'enterprise'
)
}
>
Contact sales
</ButtonLink>

View File

@ -1,4 +1,4 @@
import { SectionHeading, HubspotForm } from '@nx/nx-dev/ui-common';
import { ButtonLink, HubspotForm, SectionHeading } from '@nx/nx-dev/ui-common';
import { type ReactElement } from 'react';
import {
CapitalOneIcon,
@ -7,7 +7,8 @@ import {
RoyalBankOfCanadaIcon,
ShopifyIcon,
} from '@nx/nx-dev/ui-icons';
import { ArrowLongRightIcon } from '@heroicons/react/24/outline';
import { ArrowDownTrayIcon } from '@heroicons/react/24/outline';
import { sendCustomEvent } from '@nx/nx-dev/feature-analytics';
export function TrialNxEnterprise(): ReactElement {
return (
@ -22,8 +23,7 @@ export function TrialNxEnterprise(): ReactElement {
<div className="mx-auto mt-16 flex max-w-5xl flex-col gap-12 md:flex-row lg:gap-8">
<section className="flex-1">
<h3 className="text-3xl font-bold tracking-tight text-slate-950 dark:text-white">
{' '}
Much more than a simple trial{' '}
Much more than a simple trial
</h3>
<p className="mt-8 text-lg leading-relaxed">
@ -31,20 +31,34 @@ export function TrialNxEnterprise(): ReactElement {
is your hands-on opportunity to boost CI & DX, realize Nxs full
value, and quantify your ROI. Let us guide you.
</p>
<div className="py-12">
<a
target="_blank"
className="group text-lg font-semibold italic leading-relaxed underline"
<div className="mt-12 text-center">
<SectionHeading as="p" variant="subtitle" className="text-white">
How a Proof of Value works?
</SectionHeading>
<ButtonLink
href="/assets/enterprise/Nx-Enterprise-POV.pdf"
title="Download the ebook"
target="_blank"
variant="secondary"
size="small"
onClick={() =>
sendCustomEvent(
'download-ebook-click',
'enterprise-trial-hero',
'enterprise-trial'
)
}
className="mt-2"
>
How a Proof of Value works{' '}
<ArrowLongRightIcon
className="inline-block h-6 w-6 transition group-hover:translate-x-1"
<ArrowDownTrayIcon
aria-hidden="true"
className="size-5 shrink-0"
/>
</a>
<span>Download the ebook</span>
</ButtonLink>
</div>
<figure className="rounded-lg bg-slate-100 p-4 pl-8 dark:bg-slate-800">
<figure className="mt-16 rounded-lg bg-slate-100 p-4 pl-8 dark:bg-slate-800">
<blockquote className="text-base/7">
<p>
They asked me a few years ago, Do you want to trial Nx
@ -56,7 +70,7 @@ export function TrialNxEnterprise(): ReactElement {
</blockquote>
<figcaption className="mt-6 flex items-center gap-x-4 text-sm/6">
<img
alt="Amir Toole"
alt="Amir Toole, VP of Engineering, Caseware"
src="/images/customers/enterprise/amir-toole-caseware-headshot.avif"
className="size-8 flex-none rounded-full"
/>

View File

@ -1,4 +1,4 @@
import { SectionHeading, HubspotForm } from '@nx/nx-dev/ui-common';
import { HubspotForm, SectionHeading } from '@nx/nx-dev/ui-common';
import { type ReactElement } from 'react';
import {
CapitalOneIcon,
@ -16,7 +16,7 @@ export function TrialNxPowerpack(): ReactElement {
<div className="mx-auto max-w-7xl px-6 lg:px-8">
<div className="mx-auto max-w-6xl text-center">
<SectionHeading as="h1" variant="display" id="try-nx-powerpack">
Try Powerpack
Try Nx Powerpack
<br />
for free
</SectionHeading>