diff --git a/nx-dev/nx-dev/pages/index.tsx b/nx-dev/nx-dev/pages/index.tsx
index cf8bfa09ab..7d5e379f0c 100644
--- a/nx-dev/nx-dev/pages/index.tsx
+++ b/nx-dev/nx-dev/pages/index.tsx
@@ -1,8 +1,9 @@
-import { CallToAction, DefaultLayout, TrustedBy } from '@nx/nx-dev/ui-common';
+import { CallToAction, DefaultLayout } from '@nx/nx-dev/ui-common';
import { NextSeo } from 'next-seo';
import {
CiForMonorepos,
Hero,
+ HetznerCloudTestimonial,
SmarterToolsForMonorepos,
Statistics,
TeamAndCommunity,
@@ -43,7 +44,7 @@ export default function Index(): JSX.Element {
diff --git a/nx-dev/ui-common/src/index.ts b/nx-dev/ui-common/src/index.ts
index 96bd69079a..92bec176c8 100644
--- a/nx-dev/ui-common/src/index.ts
+++ b/nx-dev/ui-common/src/index.ts
@@ -25,6 +25,7 @@ export * from './lib/square-dotted-pattern';
export * from './lib/live-stream-notifier';
export * from './lib/webinar-notifier';
export * from './lib/hubspot-form';
+export * from './lib/video-modal';
export { resourceMenuItems } from './lib/headers/menu-items';
export { eventItems } from './lib/headers/menu-items';
diff --git a/nx-dev/ui-enterprise/src/lib/video-modal.tsx b/nx-dev/ui-common/src/lib/video-modal.tsx
similarity index 100%
rename from nx-dev/ui-enterprise/src/lib/video-modal.tsx
rename to nx-dev/ui-common/src/lib/video-modal.tsx
diff --git a/nx-dev/ui-enterprise/src/lib/hetzner-cloud-testimonial.tsx b/nx-dev/ui-enterprise/src/lib/hetzner-cloud-testimonial.tsx
index 6e38460a10..4d5e5655de 100644
--- a/nx-dev/ui-enterprise/src/lib/hetzner-cloud-testimonial.tsx
+++ b/nx-dev/ui-enterprise/src/lib/hetzner-cloud-testimonial.tsx
@@ -1,4 +1,4 @@
-import { ComponentProps, Fragment, ReactElement, useState } from 'react';
+import { ComponentProps, ReactElement, useState } from 'react';
import { Button, SectionHeading } from '@nx/nx-dev/ui-common';
import { HetznerCloudIcon } from '@nx/nx-dev/ui-icons';
import Link from 'next/link';
@@ -8,7 +8,7 @@ import { motion } from 'framer-motion';
import { PlayIcon } from '@heroicons/react/24/outline';
import Image from 'next/image';
import { sendCustomEvent } from '@nx/nx-dev/feature-analytics';
-import { VideoModal } from './video-modal';
+import { VideoModal } from '@nx/nx-dev/ui-common';
function PlayButton({
className,
diff --git a/nx-dev/ui-enterprise/src/lib/testimonial-carousel.tsx b/nx-dev/ui-enterprise/src/lib/testimonial-carousel.tsx
index 4a3e0edc31..2cd8a3220b 100644
--- a/nx-dev/ui-enterprise/src/lib/testimonial-carousel.tsx
+++ b/nx-dev/ui-enterprise/src/lib/testimonial-carousel.tsx
@@ -8,7 +8,7 @@ import {
import { PayfitIcon, UkgIcon } from '@nx/nx-dev/ui-icons';
import { PlayIcon } from '@heroicons/react/24/outline';
import { sendCustomEvent } from '@nx/nx-dev/feature-analytics';
-import { VideoModal } from './video-modal';
+import { VideoModal } from '@nx/nx-dev/ui-common';
export function Carousel({
items,
diff --git a/nx-dev/ui-home/src/index.ts b/nx-dev/ui-home/src/index.ts
index c90ff726c4..8513843105 100644
--- a/nx-dev/ui-home/src/index.ts
+++ b/nx-dev/ui-home/src/index.ts
@@ -1,5 +1,6 @@
export * from './lib/ci-for-monorepos';
export * from './lib/hero';
+export * from './lib/hetzner-cloud-testimonial';
export * from './lib/smarter-tools-for-monorepos';
export * from './lib/statistics';
export * from './lib/team-and-community';
diff --git a/nx-dev/ui-home/src/lib/hetzner-cloud-testimonial.tsx b/nx-dev/ui-home/src/lib/hetzner-cloud-testimonial.tsx
new file mode 100644
index 0000000000..0d82e07114
--- /dev/null
+++ b/nx-dev/ui-home/src/lib/hetzner-cloud-testimonial.tsx
@@ -0,0 +1,214 @@
+import { ComponentProps, ReactElement, useState } from 'react';
+import { Button, SectionHeading } from '@nx/nx-dev/ui-common';
+import { HetznerCloudIcon } from '@nx/nx-dev/ui-icons';
+import Link from 'next/link';
+import { cx } from '@nx/nx-dev/ui-primitives';
+import { MovingBorder } from '@nx/nx-dev/ui-animations';
+import { motion } from 'framer-motion';
+import { PlayIcon } from '@heroicons/react/24/outline';
+import Image from 'next/image';
+import { sendCustomEvent } from '@nx/nx-dev/feature-analytics';
+import { VideoModal } from '@nx/nx-dev/ui-common/src/lib/video-modal';
+
+function PlayButton({
+ className,
+ ...props
+}: ComponentProps<'div'>): ReactElement {
+ const parent = {
+ initial: {
+ width: 82,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ hover: {
+ width: 296,
+ transition: {
+ duration: 0.125,
+ type: 'tween',
+ ease: 'easeOut',
+ },
+ },
+ };
+ const child = {
+ initial: {
+ opacity: 0,
+ x: -6,
+ },
+ hover: {
+ x: 0,
+ opacity: 1,
+ transition: {
+ duration: 0.015,
+ type: 'tween',
+ ease: 'easeOut',
+ },
+ },
+ };
+
+ return (
+
+
+
+
+
+ Watch the interview
+ Under 3 minutes.
+
+
+
+ );
+}
+
+export function HetznerCloudTestimonial(): ReactElement {
+ const [isOpen, setIsOpen] = useState(false);
+
+ return (
+
+
+
+ Nx Enterprise{' '}
+
+ speeds build and test times
+ {' '}
+ as Hetzner Cloud{' '}
+
+ scales up
+ {' '}
+ product offering
+
+
+
+
+
+
+
+
{
+ setIsOpen(true);
+ sendCustomEvent(
+ 'hetzner-cloud-testimonial-video-click',
+ 'hetzner-cloud-testimonial',
+ 'homepage'
+ );
+ }}
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+ Featured client
+
+
+
+ Nx is speed and scalability. Before we only had a few features
+ and CI was slow and now it’s fast with way more features.
+ That’s a huge win for us.
+
+
+
+
+
+
+
Pavlo Grosse
+
+ Senior Software Engineer, Hetzner Cloud
+
+
+
+
+
+
+ {
+ setIsOpen(true);
+ sendCustomEvent(
+ 'hetzner-cloud-testimonial-video-click',
+ 'hetzner-cloud-testimonial',
+ 'homepage'
+ );
+ }}
+ >
+
+ Watch the customer story
+
+
+ See our customers →
+
+
+
+
+
+
+
+
setIsOpen(false)}
+ videoUrl="https://youtu.be/2BLqiNnBPuU"
+ />
+
+ );
+}