Skip to content

Commit

Permalink
feat(nx-dev): add trial pages for Powerpack and Enterprise, update co…
Browse files Browse the repository at this point in the history
…ntact sales team page (#29554)
  • Loading branch information
ndcunningham authored Jan 10, 2025
1 parent dbdb72a commit d30a84f
Show file tree
Hide file tree
Showing 22 changed files with 531 additions and 45 deletions.
6 changes: 3 additions & 3 deletions nx-dev/nx-dev/app/powerpack/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import {
Hero,
PowerpackFeatures,
} from '@nx/nx-dev/ui-powerpack';
import { contactButton } from '../../lib/components/headerCtaConfigs';

import type { Metadata } from 'next';
import { type ReactElement } from 'react';

export const metadata: Metadata = {
title: 'Nx Powerpack',
Expand All @@ -32,10 +32,10 @@ export const metadata: Metadata = {
},
};

export default function NxPowerPackPage(): JSX.Element {
export default function NxPowerPackPage(): ReactElement {
const headerCTAConfig: ButtonLinkProps[] = [
{
href: 'https://cloud.nx.app/powerpack/purchase?licenseBusinessType=small&utm_source=nx.dev&utm_medium=referral&utm_campaign=nx-powerpackurl',
href: '/powerpack/trial',
variant: 'primary',
size: 'small',
title: 'Request a free trial',
Expand Down
2 changes: 1 addition & 1 deletion nx-dev/nx-dev/lib/components/headerCtaConfigs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { ButtonLinkProps } from '@nx/nx-dev/ui-common';
import { NxCloudAnimatedIcon } from '@nx/nx-dev/ui-icons';

export const requestFreeTrial: ButtonLinkProps = {
href: '/contact/sales',
href: '/enterprise/trial',
variant: 'primary',
size: 'small',
title: 'Request a free trial',
Expand Down
15 changes: 8 additions & 7 deletions nx-dev/nx-dev/pages/contact/sales.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
import { useRouter } from 'next/router';
import { NextSeo } from 'next-seo';
import { Footer, Header } from '@nx/nx-dev/ui-common';
import { TalkToOurSalesTeam } from '@nx/nx-dev/ui-contact';
import { TalkToOurTeam } from '@nx/nx-dev/ui-contact';
import { type ReactElement } from 'react';

export function ContactSales(): JSX.Element {
export function ContactSales(): ReactElement {
const router = useRouter();

return (
<>
<NextSeo
title="Talk to our Sales team"
description="We’re here to help you find the right plan and pricing for your needs and discuss how Nx Cloud Enterprise can drive better business outcomes for your organization."
title="Contact Nx Sales – Discover the Best Solution for Your Team"
description="Get in touch with Nx experts to learn how we can optimize your development workflow. Whether you're scaling up or seeking enhanced CI performance, our team is here to help."
openGraph={{
url: 'https://nx.dev' + router.asPath,
title: 'Talk to our Sales team',
title: 'Contact Nx Sales – Discover the Best Solution for Your Team',
description:
'We’re here to help you find the right plan and pricing for your needs and discuss how Nx Cloud Enterprise can drive better business outcomes for your organization.',
"Get in touch with Nx experts to learn how we can optimize your development workflow. Whether you're scaling up or seeking enhanced CI performance, our team is here to help.",
images: [
{
url: 'https://nx.dev/socials/nx-media.png',
Expand All @@ -32,7 +33,7 @@ export function ContactSales(): JSX.Element {
<Header />
<main id="main" role="main" className="py-24 lg:py-32">
<div>
<TalkToOurSalesTeam />
<TalkToOurTeam />
</div>
</main>
<Footer />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
TestimonialCarousel,
VmwareTestimonial,
} from '@nx/nx-dev/ui-enterprise';
import { requestFreeTrial } from '../lib/components/headerCtaConfigs';
import { requestFreeTrial } from '../../lib/components/headerCtaConfigs';
import { ReactElement } from 'react';

export function Enterprise(): ReactElement {
Expand Down
44 changes: 44 additions & 0 deletions nx-dev/nx-dev/pages/enterprise/trial.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { useRouter } from 'next/router';
import { NextSeo } from 'next-seo';
import { Footer, Header } from '@nx/nx-dev/ui-common';
import { TrialNxEnterprise } from '@nx/nx-dev/ui-enterprise';
import { type ReactElement } from 'react';

export function EnterpriseTrial(): ReactElement {
const router = useRouter();

return (
<>
<NextSeo
title="Try Nx Enterprise - Scalable CI Solutions for Your Team"
description="Request a free Nx Enterprise trial to experience advanced CI features and premium support, designed to help your team ship faster and more reliably."
openGraph={{
url: 'https://nx.dev' + router.asPath,
title: 'Try Nx Enterprise - Scalable CI Solutions for Your Team',
description:
'Request a free Nx Enterprise trial to experience advanced CI features and premium support, designed to help your team ship faster and more reliably.',
images: [
{
url: 'https://nx.dev/socials/nx-media.png',
width: 800,
height: 421,
alt: 'Nx: Smart Monorepos · Fast CI',
type: 'image/jpeg',
},
],
siteName: 'Nx',
type: 'website',
}}
/>
<Header />
<main id="main" role="main" className="py-24 lg:py-32">
<div>
<TrialNxEnterprise />
</div>
</main>
<Footer />
</>
);
}

export default EnterpriseTrial;
45 changes: 45 additions & 0 deletions nx-dev/nx-dev/pages/powerpack/trial.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { useRouter } from 'next/router';
import { NextSeo } from 'next-seo';
import { Footer, Header } from '@nx/nx-dev/ui-common';
import { TrialNxPowerpack } from '@nx/nx-dev/ui-powerpack';
import { type ReactElement } from 'react';

export function PowerpackTrial(): ReactElement {
const router = useRouter();

return (
<>
<NextSeo
title="Start Your Nx Powerpack Trial - Speed and Scale for Monorepos"
description="Unlock self-hosted cache storage, enforce workspace conformance, and manage codeowners for your monorepos. Start your free Nx Powerpack trial today!"
openGraph={{
url: 'https://nx.dev' + router.asPath,
title:
'Start Your Nx Powerpack Trial - Speed and Scale for Monorepos',
description:
'Unlock self-hosted cache storage, enforce workspace conformance, and manage codeowners for your monorepos. Start your free Nx Powerpack trial today!',
images: [
{
url: 'https://nx.dev/socials/nx-media.png',
width: 800,
height: 421,
alt: 'Nx: Smart Monorepos · Fast CI',
type: 'image/jpeg',
},
],
siteName: 'Nx',
type: 'website',
}}
/>
<Header />
<main id="main" role="main" className="py-24 lg:py-32">
<div>
<TrialNxPowerpack />
</div>
</main>
<Footer />
</>
);
}

export default PowerpackTrial;
159 changes: 159 additions & 0 deletions nx-dev/nx-dev/pages/whitepaper-fast-ci.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
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 {
CapitalOneIcon,
CaterpillarIcon,
RoyalBankOfCanadaIcon,
ShopifyIcon,
SiriusxmAlternateIcon,
} from '@nx/nx-dev/ui-icons';
import { type ReactElement } from 'react';
import { ArrowLongRightIcon } from '@heroicons/react/24/outline';

export function WhitePaperFastCI(): ReactElement {
const router = useRouter();

return (
<>
<NextSeo
title="Fast CI for Monorepos - Speed Up Development and Cut Costs"
description="Download our in-depth whitepaper to discover strategies for reducing build times and boosting CI performance. Nx's enterprise-grade tools are built for large, fast-moving teams."
openGraph={{
url: 'https://nx.dev' + router.asPath,
title: 'Fast CI for Monorepos - Speed Up Development and Cut Costs',
description:
"Download our in-depth whitepaper to discover strategies for reducing build times and boosting CI performance. Nx's enterprise-grade tools are built for large, fast-moving teams.",
images: [
{
url: 'https://nx.dev/socials/nx-media.png',
width: 800,
height: 421,
alt: 'Nx: Smart Monorepos · Fast CI',
type: 'image/jpeg',
},
],
siteName: 'Nx',
type: 'website',
}}
/>
<Header />
<main id="main" role="main" className="py-24 lg:py-32">
<div>
<section id="whitepaper-fast-ci">
<div className="mx-auto max-w-7xl px-6 lg:px-8">
<div className="mx-auto max-w-3xl text-center">
<SectionHeading
as="h1"
variant="display"
id="enterprise-ci-reimagined"
>
Enterprise CI, Reimagined
</SectionHeading>
<SectionHeading
as="p"
className="mt-6"
variant="subtitle"
id="enterprise-ci-reimagined"
>
Up to 70% Faster Builds for Monorepos
</SectionHeading>
</div>
<div className="mx-auto mt-16 flex max-w-5xl flex-col gap-12 md:flex-row lg:gap-8">
<section className="flex-1">
<p className="text-lg leading-relaxed">
The world’s moving fast, and getting products to market
feels like a race that keeps speeding up. Monorepos are
transforming development by enhancing collaboration, code
reuse, and team velocity. But, CI that is not tailored for
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"
>
See how to get fast CI, built for monorepos{' '}
<ArrowLongRightIcon
className="inline-block h-6 w-6 transition group-hover:translate-x-1"
aria-hidden="true"
/>
</a>
<p className="mt-2">(download pdf)</p>
</div>

<figure className="mt-4 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
we wanted from the beginning. There's nothing but
benefits from it. Nx means tooling and efficiency around
our software development lifecycle that empowers us to
move a lot faster, ship code faster and more reliably.”
</p>
</blockquote>
<figcaption className="mt-6 flex items-center gap-x-4 text-sm/6">
<img
alt="Justin Schwartzenberger"
src="https://avatars.githubusercontent.com/u/1243236?v=4"
className="size-8 flex-none rounded-full"
/>
<div>
<div className="font-semibold">
Justin Schwartzenberger
</div>
<div className="text-slate-500">
Principal Software Engineer, SiriusXM
</div>
</div>
<SiriusxmAlternateIcon
aria-hidden="true"
className="ml-auto size-10 text-[#0000EB]"
/>
</figcaption>
</figure>
<div className="mt-12 grid w-full grid-cols-4 place-items-center gap-2">
<CapitalOneIcon
aria-hidden="true"
className="col-span-1 size-28 text-black dark:text-white"
/>

<CaterpillarIcon
aria-hidden="true"
className="col-span-1 size-14 text-[#FFCD11]"
/>

<RoyalBankOfCanadaIcon
aria-hidden="true"
className="col-span-1 size-14 text-black dark:text-white"
/>

<ShopifyIcon
aria-hidden="true"
className="col-span-1 size-14 text-[#7AB55C]"
/>
</div>
</section>
<section className="flex-1 rounded-xl border border-slate-200 bg-white p-8 md:self-start dark:border-slate-800/40">
<HubspotForm
region="na1"
portalId="2757427"
formId="11eff6d1-791d-454d-a7f8-117ee747bf2a"
noScript={true}
loading={<div>Loading...</div>}
/>
</section>
</div>
</div>
</section>
</div>
</main>
<Footer />
</>
);
}

export default WhitePaperFastCI;
Binary file not shown.
Binary file not shown.
Binary file not shown.
1 change: 1 addition & 0 deletions nx-dev/ui-common/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export * from './lib/testimonials';
export * from './lib/square-dotted-pattern';
export * from './lib/live-stream-notifier';
export * from './lib/webinar-notifier';
export * from './lib/hubspot-form';

export { resourceMenuItems } from './lib/headers/menu-items';
export { eventItems } from './lib/headers/menu-items';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
'use client';
import { Component } from 'react';

/**
Expand Down
2 changes: 1 addition & 1 deletion nx-dev/ui-contact/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export * from './lib/contact-links';
export * from './lib/how-can-we-help';
export * from './lib/talk-to-our-sales-team';
export * from './lib/talk-to-our-team';
export * from './lib/talk-to-our-engineering-team';
11 changes: 5 additions & 6 deletions nx-dev/ui-contact/src/lib/talk-to-our-engineering-team.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { SectionHeading } from '@nx/nx-dev/ui-common';
import { HubspotForm } from './hubspot-form';
import { ReactElement } from 'react';
import { SectionHeading, HubspotForm } from '@nx/nx-dev/ui-common';
import { type ReactElement } from 'react';
import {
CapitalOneIcon,
CaterpillarIcon,
Expand All @@ -22,8 +21,8 @@ export function TalkToOurEngineeringTeam(): ReactElement {
Talk to our engineering team
</SectionHeading>
</div>
<div className="mx-auto mt-16 grid max-w-5xl grid-cols-1 gap-12 md:grid-cols-2 lg:gap-8">
<section className="mt-4">
<div className="mx-auto mt-16 flex max-w-5xl flex-col gap-12 md:flex-row lg:gap-8">
<section className="mt-4 flex-1">
<p className="text-lg leading-relaxed">
Contact our Developer Productivity Engineers for demos,
onboarding, and product questions. Share your requirements and
Expand Down Expand Up @@ -119,7 +118,7 @@ export function TalkToOurEngineeringTeam(): ReactElement {
</div>
</div>
</section>
<section className="rounded-xl border border-slate-200 bg-white p-8 dark:border-slate-800/40">
<section className="flex-1 self-start rounded-xl border border-slate-200 bg-white p-8 dark:border-slate-800/40">
<HubspotForm
region="na1"
portalId="2757427"
Expand Down
Loading

0 comments on commit d30a84f

Please sign in to comment.