diff --git a/docs/nx-cloud/concepts/cache-security.md b/docs/nx-cloud/concepts/cache-security.md
index 0469f9c9bdb2e..2a2367132bbe8 100644
--- a/docs/nx-cloud/concepts/cache-security.md
+++ b/docs/nx-cloud/concepts/cache-security.md
@@ -48,8 +48,8 @@ Nx Cloud guarantees your cache entries will remain immutable - once they've been
### Use An On-Premise Version of Nx Cloud If Needed
-If you need to have all cache artifacts on servers that you control, there is an on-premise version of Nx Cloud that you can use as part of the [Enterprise plan](https://nx.app/enterprise).
+If you need to have all cache artifacts on servers that you control, there is an on-premise version of Nx Cloud that you can use as part of the [Enterprise plan](/enterprise).
## Security Decisions
-In any security discussion, there is a trade off between convenience and security. It could be that some of these threats do not apply to your organization. If that is the case you could relax some of the security precautions and gain the performance benefits of more task results being stored in the remote cache. Every organization is different and Nx can be adapted to best meet your needs without opening up vulnerabilities. If you would Nx team members to help your organization fine tune your set up, [talk to us about Nx Enterprise](https://nx.app/enterprise).
+In any security discussion, there is a trade off between convenience and security. It could be that some of these threats do not apply to your organization. If that is the case you could relax some of the security precautions and gain the performance benefits of more task results being stored in the remote cache. Every organization is different and Nx can be adapted to best meet your needs without opening up vulnerabilities. If you would Nx team members to help your organization fine tune your set up, [talk to us about Nx Enterprise](/enterprise).
diff --git a/docs/nx-cloud/concepts/parallelization-distribution.md b/docs/nx-cloud/concepts/parallelization-distribution.md
index 71add1b446cfe..1be8ba1c947a6 100644
--- a/docs/nx-cloud/concepts/parallelization-distribution.md
+++ b/docs/nx-cloud/concepts/parallelization-distribution.md
@@ -100,4 +100,4 @@ In the same way that Nx efficiently assigns tasks to parallel processes on a sin
If your repo is starting to grow large enough that CI times are suffering, or if your parallelization strategy is growing too complex to manage effectively, try [setting up Nx Agents](/ci/features/distribute-task-execution). You can [generate a simple workflow](/nx-api/workspace/generators/ci-workflow) for common CI providers with a `nx g ci-workflow` or follow one of the [CI setup recipes](/ci/recipes/set-up).
-Organizations that want extra help setting up Nx Cloud or getting the most out of Nx can [sign up for Nx Enterprise](https://nx.app/enterprise/). This package comes with extra support from the Nx team and the option to host Nx Cloud on your own servers.
+Organizations that want extra help setting up Nx Cloud or getting the most out of Nx can [sign up for Nx Enterprise](/enterprise/). This package comes with extra support from the Nx team and the option to host Nx Cloud on your own servers.
diff --git a/docs/nx-cloud/enterprise/dte/azure-dte.md b/docs/nx-cloud/enterprise/dte/azure-dte.md
index f4d7955fd0391..14be65d2f8237 100644
--- a/docs/nx-cloud/enterprise/dte/azure-dte.md
+++ b/docs/nx-cloud/enterprise/dte/azure-dte.md
@@ -1,6 +1,6 @@
# Custom Distributed Task Execution on Azure Pipelines
-Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
+Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on Azure Pipelines
diff --git a/docs/nx-cloud/enterprise/dte/bitbucket-dte.md b/docs/nx-cloud/enterprise/dte/bitbucket-dte.md
index a3ace765b4a7c..1c558b2451b13 100644
--- a/docs/nx-cloud/enterprise/dte/bitbucket-dte.md
+++ b/docs/nx-cloud/enterprise/dte/bitbucket-dte.md
@@ -1,6 +1,6 @@
# Custom Distributed Task Execution on Bitbucket Pipelines
-Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
+Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on Bitbucket Pipelines
diff --git a/docs/nx-cloud/enterprise/dte/circle-ci-dte.md b/docs/nx-cloud/enterprise/dte/circle-ci-dte.md
index c843835117b82..46e229bf47aaf 100644
--- a/docs/nx-cloud/enterprise/dte/circle-ci-dte.md
+++ b/docs/nx-cloud/enterprise/dte/circle-ci-dte.md
@@ -1,6 +1,6 @@
# Custom Distributed Task Execution on Circle CI
-Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
+Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on Circle CI
diff --git a/docs/nx-cloud/enterprise/dte/github-dte.md b/docs/nx-cloud/enterprise/dte/github-dte.md
index 00f4c7d678e6b..79810a78563fd 100644
--- a/docs/nx-cloud/enterprise/dte/github-dte.md
+++ b/docs/nx-cloud/enterprise/dte/github-dte.md
@@ -1,6 +1,6 @@
# Custom Distributed Task Execution on Github Actions
-Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
+Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on GitHub
diff --git a/docs/nx-cloud/enterprise/dte/gitlab-dte.md b/docs/nx-cloud/enterprise/dte/gitlab-dte.md
index 7589cb23d0f44..4fa83d1a297f6 100644
--- a/docs/nx-cloud/enterprise/dte/gitlab-dte.md
+++ b/docs/nx-cloud/enterprise/dte/gitlab-dte.md
@@ -1,6 +1,6 @@
# Custom Distributed Task Execution on GitLab
-Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
+Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Run Custom Agents on GitLab
diff --git a/docs/nx-cloud/enterprise/dte/jenkins-dte.md b/docs/nx-cloud/enterprise/dte/jenkins-dte.md
index ffe587aa92907..3ce43132eb86c 100644
--- a/docs/nx-cloud/enterprise/dte/jenkins-dte.md
+++ b/docs/nx-cloud/enterprise/dte/jenkins-dte.md
@@ -1,6 +1,6 @@
# Custom Distributed Task Execution on Jenkins
-Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](https://nx.app/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
+Using [Nx Agents](/ci/features/distribute-task-execution) is the easiest way to distribute task execution, but it your organization may not be able to use hosted Nx Agents. With an [enterprise license](/enterprise), you can set up distributed task execution on your own CI provider using the recipe below.
## Distribute Tasks Across Custom Agents on Jenkins
diff --git a/docs/nx-cloud/features/nx-enterprise-on-prem.md b/docs/nx-cloud/features/nx-enterprise-on-prem.md
index 32cc76983b5f8..c6798bfda4d7d 100644
--- a/docs/nx-cloud/features/nx-enterprise-on-prem.md
+++ b/docs/nx-cloud/features/nx-enterprise-on-prem.md
@@ -2,7 +2,7 @@
We offer multiple ways of running Nx Cloud for our Enterprise customers. The below options are listed in recommended order, from easiest to most complex in terms of set-up and maintenance for your team. Please carefully consider your organization's requirements and level of infrastructure expertise before deciding on a deployment option.
-{% call-to-action title="Get in Touch" icon="nxcloud" description="Get the package that best fits your needs" url="https://nx.app/enterprise?utm_source=nx.dev" /%}
+{% call-to-action title="Get in Touch" icon="nxcloud" description="Get the package that best fits your needs" url="/enterprise" /%}
## Managed Setup
diff --git a/docs/nx-cloud/intro/ci-with-nx.md b/docs/nx-cloud/intro/ci-with-nx.md
index d2a750f6fd34f..80c5f3e92970b 100644
--- a/docs/nx-cloud/intro/ci-with-nx.md
+++ b/docs/nx-cloud/intro/ci-with-nx.md
@@ -55,7 +55,7 @@ npx nx g ci-workflow
Connect on our channels and with the Nx Community to ask questions, get help and keep up to date with the latest news.
-- Reach out for [Enterprise Support](https://nx.app/enterprise)
+- Reach out for [Enterprise Support](/enterprise)
- Join our [Discord Community](https://go.nx.dev/community)
- Subscribe to our [Youtube Channel](https://www.youtube.com/@nxdevtools)
- Follow us on [Twitter](https://twitter.com/nxdevtools)
diff --git a/nx-dev/nx-dev/pages/enterprise.tsx b/nx-dev/nx-dev/pages/enterprise.tsx
new file mode 100644
index 0000000000000..f4fe423d69225
--- /dev/null
+++ b/nx-dev/nx-dev/pages/enterprise.tsx
@@ -0,0 +1,75 @@
+import { useRouter } from 'next/router';
+import { NextSeo } from 'next-seo';
+import { DefaultLayout } from '@nx/nx-dev/ui-common';
+import {
+ CallToAction,
+ DownloadEbook,
+ EnterpriseAddons,
+ Hero,
+ MetricsAndCustomers,
+ ScaleYourPeople,
+ Security,
+ TrustedBy,
+ SolveYourCi,
+} from '@nx/nx-dev/ui-enterprise';
+
+export function Enterprise(): JSX.Element {
+ const router = useRouter();
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+export default Enterprise;
diff --git a/nx-dev/nx-dev/public/images/enterprise/graphs.jpg b/nx-dev/nx-dev/public/images/enterprise/graphs.jpg
new file mode 100644
index 0000000000000..302291d130792
Binary files /dev/null and b/nx-dev/nx-dev/public/images/enterprise/graphs.jpg differ
diff --git a/nx-dev/nx-dev/public/images/white-paper-ebook.avif b/nx-dev/nx-dev/public/images/white-paper-ebook.avif
new file mode 100644
index 0000000000000..02869c201844d
Binary files /dev/null and b/nx-dev/nx-dev/public/images/white-paper-ebook.avif differ
diff --git a/nx-dev/nx-dev/tailwind.config.js b/nx-dev/nx-dev/tailwind.config.js
index d64ea4667cc38..2599ad4a2b059 100644
--- a/nx-dev/nx-dev/tailwind.config.js
+++ b/nx-dev/nx-dev/tailwind.config.js
@@ -60,7 +60,6 @@ module.exports = {
require('@tailwindcss/aspect-ratio'),
require('@tailwindcss/typography'),
require('@tailwindcss/forms'),
- require('@tailwindcss/line-clamp'),
FlipAnimation,
],
};
diff --git a/nx-dev/ui-common/src/index.ts b/nx-dev/ui-common/src/index.ts
index 5511191db43eb..c40c3638f4797 100644
--- a/nx-dev/ui-common/src/index.ts
+++ b/nx-dev/ui-common/src/index.ts
@@ -4,9 +4,12 @@ export * from './lib/breadcrumbs';
export * from './lib/button';
export * from './lib/champion-card';
export * from './lib/champion-perks';
+export * from './lib/default-layout';
export * from './lib/headers/header';
export * from './lib/flip-card';
+export * from './lib/nx-agents-icon';
export * from './lib/nx-cloud-icon';
+export * from './lib/nx-replay-icon';
export * from './lib/footer';
export * from './lib/sidebar-container';
export * from './lib/sidebar';
@@ -19,7 +22,6 @@ export { resourceMenuItems } from './lib/headers/menu-items';
export { solutionsMenuItems } from './lib/headers/menu-items';
export { eventItems } from './lib/headers/menu-items';
export { learnItems } from './lib/headers/menu-items';
-export { useCaseItems } from './lib/headers/menu-items';
export { plans } from './lib/headers/menu-items';
export { featuresItems } from './lib/headers/menu-items';
export { DefaultMenuItem } from './lib/headers/default-menu-item';
diff --git a/nx-dev/ui-common/src/lib/default-layout.tsx b/nx-dev/ui-common/src/lib/default-layout.tsx
new file mode 100644
index 0000000000000..0c8d1f0088302
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/default-layout.tsx
@@ -0,0 +1,27 @@
+import { Footer } from './footer';
+import { Header } from './headers/header';
+import { PropsWithChildren } from 'react';
+
+export function DefaultLayout({ children }: PropsWithChildren): JSX.Element {
+ return (
+
+ );
+}
diff --git a/nx-dev/ui-common/src/lib/footer.tsx b/nx-dev/ui-common/src/lib/footer.tsx
index 832292c167023..e1df2e01f7f01 100644
--- a/nx-dev/ui-common/src/lib/footer.tsx
+++ b/nx-dev/ui-common/src/lib/footer.tsx
@@ -5,6 +5,7 @@ import Link from 'next/link';
export function Footer(): JSX.Element {
const navigation = {
solutions: [
+ { name: 'Nx Enterprise', href: '/enterprise' },
{ name: 'Nx', href: 'https://nx.dev' },
{ name: 'Nx Cloud', href: 'https://nx.app/?utm_source=nx.dev' },
],
@@ -155,7 +156,7 @@ export function Footer(): JSX.Element {
-
+
+
{/*DESKTOP*/}
{/*PRIMARY NAVIGATION*/}
@@ -156,14 +156,14 @@ export function Header(): JSX.Element {
Documentation
Blog
@@ -171,7 +171,7 @@ export function Header(): JSX.Element {
href="https://nx.app/pricing"
title="Nx Cloud"
target="_blank"
- className="hidden gap-2 px-3 py-2 font-medium leading-tight hover:text-blue-500 dark:text-slate-200 dark:hover:text-sky-500 md:inline-flex"
+ className="hidden gap-2 px-3 py-2 font-medium leading-tight hover:text-blue-500 md:inline-flex dark:text-slate-200 dark:hover:text-sky-500"
>
CI Pricing
@@ -225,7 +225,7 @@ export function Header(): JSX.Element {
diff --git a/nx-dev/ui-common/src/lib/headers/menu-items.ts b/nx-dev/ui-common/src/lib/headers/menu-items.ts
index 9cb6b7279961a..709b7ee4bc134 100644
--- a/nx-dev/ui-common/src/lib/headers/menu-items.ts
+++ b/nx-dev/ui-common/src/lib/headers/menu-items.ts
@@ -110,7 +110,7 @@ export const plans: MenuItem[] = [
name: 'Nx Enterprise',
description:
'The ultimate Nx & Nx Cloud toolchain, tailored to your needs.',
- href: 'https://nx.app/enterprise',
+ href: '/enterprise',
icon: null,
isNew: false,
isHighlight: false,
diff --git a/nx-dev/ui-common/src/lib/sidebar.tsx b/nx-dev/ui-common/src/lib/sidebar.tsx
index 181da47f3f42f..abf31b7754d64 100644
--- a/nx-dev/ui-common/src/lib/sidebar.tsx
+++ b/nx-dev/ui-common/src/lib/sidebar.tsx
@@ -92,7 +92,7 @@ function SidebarSectionItems({ item }: { item: MenuItem }): JSX.Element {
data-testid={`section-h5:${item.id}`}
className={cx(
'flex py-2',
- 'text-sm font-semibold uppercase tracking-wide text-slate-800 dark:text-slate-200 lg:text-xs',
+ 'text-sm font-semibold uppercase tracking-wide text-slate-800 lg:text-xs dark:text-slate-200',
item.disableCollapsible ? 'cursor-text' : 'cursor-pointer'
)}
onClick={handleCollapseToggle}
@@ -193,12 +193,12 @@ export function SidebarMobile({
{ name: 'Launch Nx', href: '/launch-nx', current: false },
{
name: 'Contact',
- href: 'https://nx.app/enterprise?utm_source=nx.dev&utm_medium=header-menu',
+ href: '/contact',
current: false,
},
{
name: 'Go to app',
- href: 'https://nx.app/?utm_source=nx.dev&utm_medium=header-menu',
+ href: 'https://cloud.nx.app',
current: false,
},
],
diff --git a/nx-dev/ui-contact/src/lib/talk-to-our-sales-team.tsx b/nx-dev/ui-contact/src/lib/talk-to-our-sales-team.tsx
index abe9e589e712a..566e0a5373494 100644
--- a/nx-dev/ui-contact/src/lib/talk-to-our-sales-team.tsx
+++ b/nx-dev/ui-contact/src/lib/talk-to-our-sales-team.tsx
@@ -23,6 +23,7 @@ export function TalkToOurSalesTeam(): JSX.Element {
- Cisco
-
+ Caterpillar
+
diff --git a/nx-dev/ui-enterprise/.babelrc b/nx-dev/ui-enterprise/.babelrc
new file mode 100644
index 0000000000000..1ea870ead410c
--- /dev/null
+++ b/nx-dev/ui-enterprise/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/nx-dev/ui-enterprise/.eslintrc.json b/nx-dev/ui-enterprise/.eslintrc.json
new file mode 100644
index 0000000000000..a39ac5d057803
--- /dev/null
+++ b/nx-dev/ui-enterprise/.eslintrc.json
@@ -0,0 +1,18 @@
+{
+ "extends": ["plugin:@nx/react", "../../.eslintrc.json"],
+ "ignorePatterns": ["!**/*"],
+ "overrides": [
+ {
+ "files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.ts", "*.tsx"],
+ "rules": {}
+ },
+ {
+ "files": ["*.js", "*.jsx"],
+ "rules": {}
+ }
+ ]
+}
diff --git a/nx-dev/ui-enterprise/README.md b/nx-dev/ui-enterprise/README.md
new file mode 100644
index 0000000000000..7e8b2c6d8f1f7
--- /dev/null
+++ b/nx-dev/ui-enterprise/README.md
@@ -0,0 +1,7 @@
+# nx-dev-ui-enterprise
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test nx-dev-ui-enterprise` to execute the unit tests via [Jest](https://jestjs.io).
diff --git a/nx-dev/ui-enterprise/jest.config.ts b/nx-dev/ui-enterprise/jest.config.ts
new file mode 100644
index 0000000000000..3781add29bc56
--- /dev/null
+++ b/nx-dev/ui-enterprise/jest.config.ts
@@ -0,0 +1,10 @@
+/* eslint-disable */
+export default {
+ displayName: 'nx-dev-ui-enterprise',
+ transform: {
+ '^.+\\.[tj]sx?$': 'babel-jest',
+ },
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
+ coverageDirectory: '../../coverage/nx-dev/ui-enterprise',
+ preset: '../../jest.preset.js',
+};
diff --git a/nx-dev/ui-enterprise/project.json b/nx-dev/ui-enterprise/project.json
new file mode 100644
index 0000000000000..46638cd026bb4
--- /dev/null
+++ b/nx-dev/ui-enterprise/project.json
@@ -0,0 +1,11 @@
+{
+ "name": "nx-dev-ui-enterprise",
+ "$schema": "../../node_modules/nx/schemas/project-schema.json",
+ "sourceRoot": "nx-dev/ui-enterprise/src",
+ "projectType": "library",
+ "tags": ["scope:nx-dev", "type:ui"],
+ "targets": {
+ "lint": {},
+ "test": {}
+ }
+}
diff --git a/nx-dev/ui-enterprise/src/index.ts b/nx-dev/ui-enterprise/src/index.ts
new file mode 100644
index 0000000000000..b9a6c7abff577
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/index.ts
@@ -0,0 +1,10 @@
+export * from './lib/call-to-action';
+export * from './lib/download-case-study';
+export * from './lib/download-ebook';
+export * from './lib/enterprise-addons';
+export * from './lib/hero';
+export * from './lib/metrics-and-customers';
+export * from './lib/scale-your-people';
+export * from './lib/security';
+export * from './lib/trusted-by';
+export * from './lib/solve-your-ci';
diff --git a/nx-dev/ui-enterprise/src/lib/bento-grid.tsx b/nx-dev/ui-enterprise/src/lib/bento-grid.tsx
new file mode 100644
index 0000000000000..f1a529fdd9096
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/bento-grid.tsx
@@ -0,0 +1,77 @@
+import Link from 'next/link';
+import { ReactNode } from 'react';
+import { cx } from '@nx/nx-dev/ui-primitives';
+
+export const BentoGrid = ({
+ className,
+ children,
+}: {
+ className?: string;
+ children?: ReactNode;
+}) => {
+ return (
+
+ {children}
+
+ );
+};
+
+export const BentoGridItem = ({
+ className,
+ title = null,
+ description = null,
+ header,
+ url = null,
+ icon,
+}: {
+ className?: string;
+ title?: string | ReactNode | null;
+ description?: string | ReactNode | null;
+ header: ReactNode;
+ icon?: ReactNode;
+ url?: string | null;
+}) => {
+ return (
+
+ {header}
+
+
+
+ {icon} {title}
+
+ {description && (
+
+ {description}
+
+ )}
+
+ {url ? (
+
+
+
+
+ →
+
+
+ ) : null}
+
+
+ );
+};
diff --git a/nx-dev/ui-enterprise/src/lib/call-to-action.tsx b/nx-dev/ui-enterprise/src/lib/call-to-action.tsx
new file mode 100644
index 0000000000000..20cf9b5138318
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/call-to-action.tsx
@@ -0,0 +1,87 @@
+import Link from 'next/link';
+
+export function CallToAction(): JSX.Element {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Your organization's transformation
+
+ start now
+
+
+ Experience the next generation of CI tooling.
+
+
+
+ Contact us
+
+ {/* */}
+ {/* Contact us{' '}*/}
+ {/* */}
+ {/* →*/}
+ {/* */}
+ {/**/}
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/download-case-study.tsx b/nx-dev/ui-enterprise/src/lib/download-case-study.tsx
new file mode 100644
index 0000000000000..2c128d281e94c
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/download-case-study.tsx
@@ -0,0 +1,31 @@
+import { ButtonLink } from '@nx/nx-dev/ui-common';
+
+export function DownloadCaseStudy(): JSX.Element {
+ return (
+
+
+
+ Our case study
+
+
+
+
+ See how a $7B bank saved money, reduced CI times by 62% and
+ improved developer productivity.
+
+
+
+
+ Download (pdf)
+
+
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/download-ebook.tsx b/nx-dev/ui-enterprise/src/lib/download-ebook.tsx
new file mode 100644
index 0000000000000..5d686403ae419
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/download-ebook.tsx
@@ -0,0 +1,63 @@
+import { ButtonLink } from '@nx/nx-dev/ui-common';
+
+export function DownloadEbook(): JSX.Element {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Download
+
+ Fast CI for monorepos
+
+
+ Discover how to scale your organization without feeling the pain of
+ CI, while having a better developer experience and fit your
+ requirements.
+
+
+
+ Download {' '}
+ (pdf)
+
+
+
+
+
+
+ ebook
+
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/enterprise-addons.tsx b/nx-dev/ui-enterprise/src/lib/enterprise-addons.tsx
new file mode 100644
index 0000000000000..8df14eed5edde
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/enterprise-addons.tsx
@@ -0,0 +1,82 @@
+import { SectionHeading } from './temp/typography';
+import {
+ BoltIcon,
+ ChevronDoubleRightIcon,
+ UsersIcon,
+ WrenchIcon,
+} from '@heroicons/react/24/outline';
+
+export function EnterpriseAddons(): JSX.Element {
+ return (
+
+
+
+
+ Partner with the Nx team
+
+
+
+
+
+
+
+
+
+ Move fast, move together
+
+
+
+ Multiply the power of Nx with an Nx Enterprise partnership to
+ accelerate your organization's journey to tighter
+ collaboration, better developer experience, and speed…lots of
+ speed.
+
+
+
+
+
+
+
+
+ No trial and error necessary
+
+
+
+ With the help of the developers of Nx, you'll use Nx and Nx
+ Cloud to its full potential, the first time. No matter how
+ long you've been using Nx, we'll find ways to make it more
+ powerful.
+
+
+
+
+
+
+
+
+ Migrate to Nx & Nx Cloud
+
+
+
+ Lorem ipsum, dolor sit amet consectetur adipisicing elit.
+ Maiores impedit perferendis suscipit eaque.Lorem ipsum, dolor
+ sit amet consectetur adipisicing elit. Maiores impedit
+ perferendis suscipit eaque.
+
+
+
+
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/hero.tsx b/nx-dev/ui-enterprise/src/lib/hero.tsx
new file mode 100644
index 0000000000000..0fdb3c0f4a9bd
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/hero.tsx
@@ -0,0 +1,49 @@
+import { SectionHeading } from './temp/typography';
+import { ButtonLink } from '@nx/nx-dev/ui-common';
+import Link from 'next/link';
+
+export function Hero(): JSX.Element {
+ return (
+
+
+
+
+ Nx Enterprise
+
+
+ Accelerate your organization's journey to tighter collaboration,
+ better developer experience, and speed…lots of speed.
+
+
+
+ Contact sales
+
+
+
+ Book a demo{' '}
+
+ →
+
+
+
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/logos/7eleven.tsx b/nx-dev/ui-enterprise/src/lib/logos/7eleven.tsx
new file mode 100644
index 0000000000000..6c75f8a8a508c
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/7eleven.tsx
@@ -0,0 +1,38 @@
+import { FC, SVGProps } from 'react';
+
+export const SevenElevenIcon: FC> = (props) => (
+
+ 7eleven
+
+
+);
+
+export const SevenElevenColoredIcon: FC> = (props) => (
+
+ 7eleven
+
+
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/american-airlines.tsx b/nx-dev/ui-enterprise/src/lib/logos/american-airlines.tsx
new file mode 100644
index 0000000000000..0b3accf87239e
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/american-airlines.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#0071CE` for a colored version.
+ */
+export const AmericanAirlinesIcon: FC> = (props) => (
+
+ American Airlines
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/aws-amplify.tsx b/nx-dev/ui-enterprise/src/lib/logos/aws-amplify.tsx
new file mode 100644
index 0000000000000..a8d540cbd78da
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/aws-amplify.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#FF9900` for a colored version.
+ */
+export const AwsAmplifyIcon: FC> = (props) => (
+
+ AWS Amplify
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/bill.tsx b/nx-dev/ui-enterprise/src/lib/logos/bill.tsx
new file mode 100644
index 0000000000000..5972a7eb2e19a
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/bill.tsx
@@ -0,0 +1,34 @@
+import { FC, SVGProps } from 'react';
+
+export const BillIcon: FC> = (props) => (
+
+ bill
+
+
+);
+
+export const BillColoredIcon: FC> = (props) => (
+
+ bill
+
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/capital-one.tsx b/nx-dev/ui-enterprise/src/lib/logos/capital-one.tsx
new file mode 100644
index 0000000000000..a8dea3a475079
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/capital-one.tsx
@@ -0,0 +1,38 @@
+import { FC, SVGProps } from 'react';
+
+export const CapitalOneIcon: FC> = (props) => (
+
+ Capital One
+
+
+);
+
+export const CapitalOneColoredIcon: FC> = (props) => (
+
+ 7eleven
+
+
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/caterpillar.tsx b/nx-dev/ui-enterprise/src/lib/logos/caterpillar.tsx
new file mode 100644
index 0000000000000..3272eb89e280f
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/caterpillar.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#FFCD11` for a colored version.
+ */
+export const CaterpillarIcon: FC> = (props) => (
+
+ Caterpillar
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/cisco.tsx b/nx-dev/ui-enterprise/src/lib/logos/cisco.tsx
new file mode 100644
index 0000000000000..00c076bfa94da
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/cisco.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#1BA0D7` for a colored version.
+ */
+export const CiscoIcon: FC> = (props) => (
+
+ Cisco
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/fico.tsx b/nx-dev/ui-enterprise/src/lib/logos/fico.tsx
new file mode 100644
index 0000000000000..38919e8bc51ad
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/fico.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#0A6DE6` for a colored version.
+ */
+export const FicoIcon: FC> = (props) => (
+
+ Fico
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/hilton.tsx b/nx-dev/ui-enterprise/src/lib/logos/hilton.tsx
new file mode 100644
index 0000000000000..92e979babe53a
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/hilton.tsx
@@ -0,0 +1,14 @@
+import { FC, SVGProps } from 'react';
+
+export const HiltonIcon: FC> = (props) => (
+
+ Hilton
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/man.tsx b/nx-dev/ui-enterprise/src/lib/logos/man.tsx
new file mode 100644
index 0000000000000..722c594f24313
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/man.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#E40045` for a colored version.
+ */
+export const ManIcon: FC> = (props) => (
+
+ MAN
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/react-query.tsx b/nx-dev/ui-enterprise/src/lib/logos/react-query.tsx
new file mode 100644
index 0000000000000..a551e8c557aa8
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/react-query.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#FF4154` for a colored version.
+ */
+export const ReactQueryIcon: FC> = (props) => (
+
+ React Query
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/redwood-js.tsx b/nx-dev/ui-enterprise/src/lib/logos/redwood-js.tsx
new file mode 100644
index 0000000000000..10bd42d978b99
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/redwood-js.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#BF4722` for a colored version.
+ */
+export const RedwoodJsIcon: FC> = (props) => (
+
+ RedwoodJS
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/royal-bank-of-canada.tsx b/nx-dev/ui-enterprise/src/lib/logos/royal-bank-of-canada.tsx
new file mode 100644
index 0000000000000..9042b49e62118
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/royal-bank-of-canada.tsx
@@ -0,0 +1,52 @@
+import { FC, SVGProps } from 'react';
+
+export const RoyalBankOfCanadaIcon: FC> = (props) => (
+
+ Royal Bank of Canada
+
+
+);
+
+export const RoyalBankOfCanadaColoredIcon: FC> = (
+ props
+) => (
+
+ Royal Bank of Canada
+
+
+ {/* */}
+
+
+
+
+
+
+
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/shopify.tsx b/nx-dev/ui-enterprise/src/lib/logos/shopify.tsx
new file mode 100644
index 0000000000000..50e7ff84f1b16
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/shopify.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#7AB55C` for a colored version.
+ */
+export const ShopifyIcon: FC> = (props) => (
+
+ Shopify
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/storybook.tsx b/nx-dev/ui-enterprise/src/lib/logos/storybook.tsx
new file mode 100644
index 0000000000000..7537caa47ee2f
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/storybook.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#FF4785` for a colored version.
+ */
+export const StorybookIcon: FC> = (props) => (
+
+ Storybook
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/vmware.tsx b/nx-dev/ui-enterprise/src/lib/logos/vmware.tsx
new file mode 100644
index 0000000000000..51dc77679c9e5
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/vmware.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#607078` for a colored version.
+ */
+export const VmwareIcon: FC> = (props) => (
+
+ VMware
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/logos/wallmart.tsx b/nx-dev/ui-enterprise/src/lib/logos/wallmart.tsx
new file mode 100644
index 0000000000000..bd51fb6f3af04
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/logos/wallmart.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+/**
+ * Use `#0078D2` for a colored version.
+ */
+export const WalmartIcon: FC> = (props) => (
+
+ Walmart
+
+
+);
diff --git a/nx-dev/ui-enterprise/src/lib/metrics-and-customers.tsx b/nx-dev/ui-enterprise/src/lib/metrics-and-customers.tsx
new file mode 100644
index 0000000000000..2412826f70363
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/metrics-and-customers.tsx
@@ -0,0 +1,183 @@
+import { motion, Variants } from 'framer-motion';
+import { DownloadCaseStudy } from './download-case-study';
+import { RoyalBankOfCanadaColoredIcon } from './logos/royal-bank-of-canada';
+import { ManIcon } from './logos/man';
+import { ShopifyIcon } from './logos/shopify';
+import { CapitalOneIcon } from './logos/capital-one';
+import { VmwareIcon } from './logos/vmware';
+import { StorybookIcon } from './logos/storybook';
+import { RedwoodJsIcon } from './logos/redwood-js';
+import { CaterpillarIcon } from './logos/caterpillar';
+import { SevenElevenColoredIcon } from './logos/7eleven';
+import { BillColoredIcon } from './logos/bill';
+import { FicoIcon } from './logos/fico';
+import { HiltonIcon } from './logos/hilton';
+import { CiscoIcon } from './logos/cisco';
+
+export function MetricsAndCustomers(): JSX.Element {
+ const downloadElement: Variants = {
+ hidden: {
+ opacity: 0,
+ translateY: 90,
+ },
+ visible: {
+ opacity: 1,
+ translateY: 0,
+ transition: {
+ duration: 1,
+ ease: 'easeInOut',
+ type: 'tween',
+ },
+ },
+ };
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Speed
+
+
+ 30-70% Faster
+
+
+
+
+
+ Infrastructure Cost
+
+
+
+ 40-75% Cheaper
+
+
+
+
+
Collaboration
+
+
+ from weeks to days
+
+ cross-team code changes.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/scale-ci-and-teams.tsx b/nx-dev/ui-enterprise/src/lib/scale-ci-and-teams.tsx
new file mode 100644
index 0000000000000..41bb8fc30ebdc
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/scale-ci-and-teams.tsx
@@ -0,0 +1,62 @@
+import { BoltIcon, UserGroupIcon } from '@heroicons/react/24/outline';
+import {
+ NxAgentsIcon,
+ NxReplayIcon,
+ SectionHeading,
+} from '@nx/nx-dev/ui-common';
+
+const features = [
+ {
+ name: 'Cache with Nx Replay',
+ description:
+ 'Quis tellus eget adipiscing convallis sit sit eget aliquet quis. Suspendisse eget egestas a elementum pulvinar et feugiat blandit at. In mi viverra elit nunc.',
+ icon: NxReplayIcon,
+ },
+ {
+ name: 'Distribution with Nx Agents',
+ description:
+ 'Quis tellus eget adipiscing convallis sit sit eget aliquet quis. Suspendisse eget egestas a elementum pulvinar et feugiat blandit at. In mi viverra elit nunc.',
+ icon: NxAgentsIcon,
+ },
+ {
+ name: 'Split tasks with Atomizer',
+ description:
+ 'Quis tellus eget adipiscing convallis sit sit eget aliquet quis. Suspendisse eget egestas a elementum pulvinar et feugiat blandit at. In mi viverra elit nunc.',
+ icon: BoltIcon,
+ },
+];
+
+export function ScaleCiAndTeams(): JSX.Element {
+ return (
+
+
+
+ Scale CI & teams
+
+
+ Quis tellus eget adipiscing convallis sit sit eget aliquet quis.
+ Suspendisse eget egestas a elementum pulvinar et feugiat blandit at.
+ In mi viverra elit nunc.
+
+
+
+
+ {features.map((feature) => (
+
+
+
+ {feature.name}
+
+
+ {feature.description}
+
+
+ ))}
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/scale-your-people.tsx b/nx-dev/ui-enterprise/src/lib/scale-your-people.tsx
new file mode 100644
index 0000000000000..0b7e23c27f663
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/scale-your-people.tsx
@@ -0,0 +1,296 @@
+import {
+ BuildingOffice2Icon,
+ Cog6ToothIcon,
+ CubeTransparentIcon,
+ IdentificationIcon,
+ PhotoIcon,
+ SquaresPlusIcon,
+ UserGroupIcon,
+} from '@heroicons/react/24/outline';
+import { SectionHeading } from './temp/typography';
+
+export function ScaleYourPeople(): JSX.Element {
+ return (
+
+
+
+
+ Scale your people
+
+
+
+ One of the the biggest value of monorepos is organizational
+ transformation. Nx & Nx Cloud allows you to support this transition in
+ the best possible experience, without downtime or any gaps in the
+ release pipeline. Foster collaboration at scale.
+
+
+
+
+
+ Visibility
+
+
+
+
+
+
+
+
+
+
+
+ Ownership
+
+
+
+
+
+
+
+
+
+
+
+ Control
+
+
+
+
+
+
+
+
+
+
+
+ Automation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ coming soon
+
+
+
+
+
+
+
+
+ Monorepo, polyrepo, multi-monorepo?
+
+
+ Whatever you’re working with, Nx Enterprise will give you the
+ visibility you need to understand what they have in common,
+ how they relate, and how they differ.
+
+
+
+
+
+
+
+
+
+ Monorepo experience in a polyrepo environment
+
+
+ Nx Enterprise will support optional monorepo-like constraints
+ to be applied across Nx Workspace boundaries in a seamless and
+ flexible way. Move fast with confidence.
+
+
+
+
+
+
+
+
+
+ Automation over coordination
+
+
+ Testing and cross-repo coordination can be left to Nx
+ Enterprise tooling instead of manual human intervention to
+ test and enforce cross-repo dependencies & constraints.
+
+
+
+
+
+
+
+ Crystal clear organization
+
+
+ Regardless of how many Nx Workspaces your company has, Nx
+ Enterprise can give you the visibility you need to understand
+ what they have in common, how they relate, and how they
+ differ. Developers are no longer relegated to contributing to
+ one Nx Workspace.
+
+
+
+
+
+ {/*
*/}
+ {/*
*/}
+ {/* */}
+ {/* */}
+ {/*
*/}
+ {/*
*/}
+ {/* Crystal clear organizations*/}
+ {/* */}
+ {/*
*/}
+ {/* Regardless of how many Nx Workspaces your company has, Nx Enterprise*/}
+ {/* can give you the visibility you need to understand what they have in*/}
+ {/* common, how they relate, and how they differ. Developers are no*/}
+ {/* longer relegated to contributing to one Nx Workspace.*/}
+ {/*
*/}
+ {/*
*/}
+ {/*
*/}
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/security.tsx b/nx-dev/ui-enterprise/src/lib/security.tsx
new file mode 100644
index 0000000000000..407d692d01061
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/security.tsx
@@ -0,0 +1,112 @@
+import { SectionHeading } from './temp/typography';
+
+export function Security(): JSX.Element {
+ return (
+
+
+
+
+
+ Security
+
+
+ Nx Cloud is certified to the industry standards, is constantly
+ monitored and{' '}
+
+ issue security Trust Reports powered by Vanta
+
+ .
+
+
+
+
+
+
+
+
+ SSAE18/SOC 2 type 1 and type 2 reports
+
+
+
+ European Union
+
+
+ GDPR compliance
+
+
+
+
+
+
+ Dedicated infrastructure
+
+
+ We can support you to self-host Nx Cloud within your own
+ infrastructure or, depending on your needs, run Nx Cloud on
+ managed hosts within our cloud.
+
+
+
+
+ Application security
+
+
+ We consistently review our security policies and collaborate
+ with third parties for penetration testing to promptly identify
+ and mitigate potential risks.
+
+
+
+
+ US & EU instances available
+
+
+ We support region specific hosting of Nx Cloud in the event IT
+ security or data protection policies restrict international
+ transfers.
+
+
+
+
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/solve-your-ci.tsx b/nx-dev/ui-enterprise/src/lib/solve-your-ci.tsx
new file mode 100644
index 0000000000000..6032296e2647a
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/solve-your-ci.tsx
@@ -0,0 +1,821 @@
+import {
+ ArrowsRightLeftIcon,
+ BanknotesIcon,
+ ChartBarSquareIcon,
+ ChevronRightIcon,
+ ClipboardDocumentIcon,
+ CloudArrowDownIcon,
+ CursorArrowRaysIcon,
+ LightBulbIcon,
+ SparklesIcon,
+ Square3Stack3DIcon,
+} from '@heroicons/react/24/outline';
+import { animate, motion, useMotionValue, useTransform } from 'framer-motion';
+import { useEffect } from 'react';
+import { SectionHeading } from './temp/typography';
+import { BentoGrid, BentoGridItem } from './bento-grid';
+import { cx } from '@nx/nx-dev/ui-primitives';
+
+export function SolveYourCi(): JSX.Element {
+ return (
+
+
+
+
+ Solve your CI
+
+
+
+ Nx and Nx Cloud are engineered to integrate seamlessly, delivering an
+ end-to-end solution that results in a smart monorepo and fast CI.
+
+ {/*FEATURES CONTAINER*/}
+
+ {items.map((item, i) => (
+ p:text-lg]', item.className)}
+ icon={item.icon}
+ url={item.url}
+ />
+ ))}
+
+
+ {/*TEXT*/}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Both faster and cheaper
+
+
+ Current CI providers aren’t made for monorepos. They’re
+ low-level and static in their configuration. FINISH THIS
+
+
+
+
+
+
+
+
+
+ Solving E2E tests
+
+
+ Atomizer splits large e2e projects into fine-grained test
+ runs, enabling more efficient distribution and dramatically
+ reducing CI times. It also identifies flaky e2e tests at the
+ file level and re-runs those specific tests.
+
+
+
+
+
+
+
+
+
+ What, not how
+
+
+ Nx Enterprise simplifies CI configuration, emphasizing which
+ tasks to execute over how with no need to tweak your CI
+ scripts as your monorepo evolves. This simplified
+ configuration cuts down on CI maintenance and increases
+ stability.
+
+
+
+
+
+
+
+ );
+}
+
+const Caching = () => {
+ const variants = {
+ hidden: {
+ opacity: 0,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ visible: {
+ opacity: 1,
+ },
+ };
+ const items = [
+ {
+ cache: 'remote',
+ target: 'build',
+ project: 'website',
+ },
+ {
+ cache: 'remote',
+ target: 'test',
+ project: 'express',
+ },
+ {
+ cache: 'remote',
+ target: 'build',
+ project: 'eslint',
+ },
+ {
+ cache: 'remote',
+ target: 'lint',
+ project: 'autoloan',
+ },
+ {
+ cache: 'remote',
+ target: 'test',
+ project: 'website',
+ },
+ {
+ cache: 'remote',
+ target: 'lint',
+ project: 'website',
+ },
+ {
+ cache: 'remote',
+ target: 'build-base',
+ project: 'express',
+ },
+ {
+ cache: 'remote',
+ target: 'build',
+ project: 'express',
+ },
+ {
+ cache: 'remote',
+ target: 'lint',
+ project: 'express',
+ },
+ {
+ cache: 'remote',
+ target: 'test',
+ project: 'autoloan',
+ },
+ ];
+ return (
+
+
+
+
+
+
+ tasks replayed instantly with cache
+
+
+ {items.map((i, idx) => (
+
+
+
+
+ {i.cache}
+
+
+
+ {i.project}:{i.target}
+
+
< 1s
+
+ ))}
+
+
+ );
+};
+
+const Atomizer = () => {
+ const variants = {
+ hidden: {
+ opacity: 0,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ visible: {
+ opacity: 1,
+ },
+ };
+ const itemVariants = {
+ visible: (i: number) => ({
+ opacity: 1,
+ x: 0,
+ transition: {
+ delay: i * 0.2,
+ duration: 0.275,
+ ease: 'easeOut',
+ when: 'beforeChildren',
+ staggerChildren: 0.3,
+ },
+ }),
+ hidden: {
+ opacity: 0,
+ x: -100,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ };
+ const uiDialogsTests = ['e2e-ui-cdk:e2e', 'e2e-ui-layout:e2e'];
+ const loansTests = [
+ 'loans-front-store:e2e',
+ 'loans-loans:e2e',
+ 'loans-credit-card:e2e',
+ 'loans-workflows:e2e',
+ 'loans-mortgage:e2e',
+ 'loans-submission:e2e',
+ ];
+ const DefaultConnector = () => (
+ <>
+
+
+ >
+ );
+ const BottomConnector = () => (
+ <>
+
+
+ >
+ );
+
+ return (
+
+
+ Running
+
+ nx affected --targets=e2e
+
+
+
+
+
+
+
+ In progress
+
+
+
+
+ E2E {'>'} CI
+
+
+ {uiDialogsTests.map((i, idx) => (
+
+ {uiDialogsTests.length === idx + 1 ? (
+
+ ) : (
+
+ )}
+
+
+
{i}
+
+ ))}
+
+
+
+
+ miss
+
+
+
+ website:e2e
+
+
+ flaky
+
+
+ 1 retry
+
+
+
+
+
+
+
+ In progress
+
+
+
+
+ loans {'>'} e2e
+
+
+ {loansTests.map((i, idx) => (
+
+ {loansTests.length === idx + 1 ? (
+
+ ) : (
+
+ )}
+
+
+
{i}
+
+ ))}
+
+
+ );
+};
+
+const TaskDistribution = () => {
+ const variants = {
+ hidden: {
+ opacity: 0,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ visible: {
+ opacity: 1,
+ },
+ };
+ const itemVariants = {
+ visible: (i: number) => ({
+ opacity: 1,
+ x: 0,
+ transition: {
+ delay: i * 0.2,
+ duration: 0.275,
+ ease: 'easeOut',
+ when: 'beforeChildren',
+ staggerChildren: 0.3,
+ },
+ }),
+ hidden: {
+ opacity: 0,
+ x: -100,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ };
+ const agent1Items = ['website:build-base', 'website:build'];
+ const agent2Items = ['docs:lint', 'express:test', 'website:lint'];
+ const agent3Items = ['graph-client:build', 'plugin:test'];
+ const nxReplayItems = [
+ 'graph-client:lint',
+ 'plugin:lint',
+ 'website:test',
+ 'vite:test',
+ 'vite:build',
+ ];
+
+ const notStartedTasks = ['js:build', 'js:lint'];
+ return (
+
+
+
+
+ Main Workflow
+
+
+
+ nx affected --target=build,lint,test
+
+
+
+ {notStartedTasks.map((i, idx) => (
+
+ {i}
+
+ ))}
+
+
+
+
+
+ Nx Agents
+
+
+
+
+
+
+ Agent 1
+
{agent1Items.length}
+
+
+
+ {agent1Items.map((i, idx) => (
+
+ {i}
+
+ ))}
+
+
+
+
+
+
+ Agent 2
+
{agent2Items.length}
+
+
+
+ {agent2Items.map((i, idx) => (
+
+ {i}
+
+ ))}
+
+
+
+
+
+
+ Agent 3
+
{agent3Items.length}
+
+
+
+ {agent3Items.map((i, idx) => (
+
+ {i}
+
+ ))}
+
+
+
+
+
+
+ Nx Replay
+
+
+ {nxReplayItems.map((i, idx) => (
+
+ {i}
+
+ ))}
+
+
+
+
+ );
+};
+
+const IncreasedVisibility = () => {
+ const variants = {
+ hidden: {
+ opacity: 0,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ visible: {
+ opacity: 1,
+ },
+ };
+
+ return (
+
+
+ {/*STATUS*/}
+
+
+
+ Failed
+
+ with code: 1
+
+
+ {/*COMPARE & FLAKY*/}
+ {/*
+
+ Compare to similar tasks
+
+
+ Set as "not flaky"
+
+
*/}
+
+
+
+
+ Attempt 1
+
+
+ Attempt 2
+
+
+
+
+ Feb 23, 2024 08:57:49 - 08:57:54 (4s)
+
+
+
+
+ nx run nx-dev:build
+
+
+
+
+
+
+
+
+ {`nx run nx-dev:sitemap ✨ [next-sitemap]
+Loading next-sitemap config:file:///home/workflows/workspace/nx-dev/nx-dev/next-sitemap.config.js
+❌ [next-sitemap] Unable to find export-maker.
+ Make sure to build the project using "next build" command
+ node:internal/process/promises:289
+ triggerUncaughtException(err, true /* fromPromise */); ^
+ [Error:ENOENT: no such file or directory, stat '/home/workflows/workspace/dist/nx-dev/nx-dev/.next/export-marker.json']
+ errno: -2, code: 'ENOENT', syscall: 'stat', path: '/home/workflows/workspace/dist/nx-dev/nx-dev/.next/export-marker.json'
+Node.js v20.9.0 Warning: command "pnpm next-sitemap --config
+./nx-dev/nx-dev/next-sitemap.config.js" exited with non-zero status code`}
+
+
+
+
+ );
+};
+
+export function Counter({
+ value,
+ duration = 2,
+}: {
+ value: number;
+ duration?: number;
+}) {
+ const count = useMotionValue(0);
+ const rounded = useTransform(count, Math.round);
+
+ useEffect(() => {
+ const animation = animate(count, value, {
+ type: 'tween',
+ ease: 'easeOut',
+ duration,
+ });
+
+ return animation.stop;
+ }, []);
+
+ return {rounded} ;
+}
+
+const items = [
+ {
+ title: 'Nx Agents: seamless task distribution',
+ header: ,
+ className: 'md:col-span-2',
+ icon: ,
+ url: '/ci/features/distribute-task-execution',
+ },
+ {
+ title: 'Nx Replay: secure computation cache',
+ header: ,
+ className: 'md:col-span-1',
+ icon: ,
+ url: '/ci/features/remote-cache',
+ },
+ {
+ title: 'Increased visibility',
+ header: ,
+ className: 'md:col-span-1',
+ icon: ,
+ },
+ {
+ title: 'Atomizer: task splitting & flaky rerun',
+ description: null,
+ header: ,
+ className: 'md:col-span-2',
+ icon: ,
+ url: '/ci/features/split-e2e-tasks',
+ },
+];
diff --git a/nx-dev/ui-enterprise/src/lib/statistics.tsx b/nx-dev/ui-enterprise/src/lib/statistics.tsx
new file mode 100644
index 0000000000000..05a921930a188
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/statistics.tsx
@@ -0,0 +1,150 @@
+import { motion } from 'framer-motion';
+import { useEffect, useState } from 'react';
+import { SectionHeading } from './temp/typography';
+
+/**
+ * Calculate the total number of years worth of compute.
+ *
+ * @param {number} millis - The total number of seconds.
+ * @return {number} The total number of years.
+ */
+function getTotalYears(millis: number): number {
+ /**
+ * The number of millis in a year is approximately:
+ * 86 400 000 millis/day * 365.25 days/year ≈ 31 557 600 000 seconds/year.
+ */
+ const yearMillis = Number(31557600000);
+ return Math.round(millis / yearMillis);
+}
+
+/**
+ * Fetches the time saved from a remote API.
+ *
+ * @returns {Promise} A promise that resolves to an object containing the time saved data.
+ * @returns {Date} The date the time saved data was retrieved.
+ * @returns {number} The time saved in the last 7 days.
+ * @returns {number} The time saved in the last 30 days.
+ * @returns {number} The time's saved since the start.
+ */
+function fetchTimeSaved(): Promise<{
+ date: Date;
+ last7days: number;
+ last30days: number;
+ sinceStart: number;
+}> {
+ const apiUrl = 'https://cloud.nx.app/time-saved';
+
+ return fetch(apiUrl)
+ .then((response) => response.json())
+ .catch(() => ({
+ date: new Date(),
+ last7days: Math.round(Math.random() * 1000000000),
+ last30days: Math.round(Math.random() * 100000000000),
+ sinceStart: Math.round(Math.random() * 10000000000000),
+ }));
+}
+
+const stats = [
+ {
+ id: 1,
+ name: 'Developers using Nx',
+ value: 2,
+ suffix: 'M+',
+ },
+ {
+ id: 3,
+ name: 'Active workspaces',
+ value: '4k',
+ suffix: '+',
+ },
+ { id: 2, name: 'Compute time saved', value: 800, suffix: '+ years' },
+ { id: 4, name: 'Runs daily', value: 100, suffix: 'k+' },
+];
+
+export function Statistics(): JSX.Element {
+ const variants = {
+ hidden: {
+ opacity: 0,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ visible: (i: number) => ({
+ opacity: 1,
+ transition: {
+ delay: i || 0,
+ },
+ }),
+ };
+ const itemVariants = {
+ visible: (i: number) => ({
+ opacity: 1,
+ y: 0,
+ transition: {
+ delay: i * 0.25,
+ duration: 0.65,
+ ease: 'easeOut',
+ when: 'beforeChildren',
+ staggerChildren: 0.3,
+ },
+ }),
+ hidden: {
+ opacity: 0,
+ y: 4,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ };
+ const [timeSaved, setTimeSaved] = useState(800);
+
+ useEffect(() => {
+ let ignore = false;
+ fetchTimeSaved().then((data) => {
+ if (!ignore) {
+ setTimeSaved(getTotalYears(data.sinceStart));
+ }
+ });
+ return () => {
+ ignore = true;
+ };
+ }, []);
+
+ return (
+
+
+
+ Trusted by startups and Fortune 500 companies
+
+ {/**/}
+ {/* Nx Cloud provides plans for open source projects, startups, and large*/}
+ {/* enterprises.*/}
+ {/* */}
+
+
+ {stats.map((stat, idx) => (
+
+
+ {stat.name}
+
+
+ {stat.name === 'Compute time saved' ? timeSaved : stat.value}
+ {stat.suffix}
+
+
+ ))}
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/temp/typography.tsx b/nx-dev/ui-enterprise/src/lib/temp/typography.tsx
new file mode 100644
index 0000000000000..8006bca76672d
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/temp/typography.tsx
@@ -0,0 +1,59 @@
+import { cx } from '@nx/nx-dev/ui-primitives';
+import { ElementType, ReactNode } from 'react';
+
+type AllowedVariants = 'title' | 'display' | 'subtitle';
+
+type Headings = {
+ as: ElementType;
+ className?: string;
+ children: ReactNode | ReactNode[];
+ id?: string;
+ variant: AllowedVariants;
+};
+
+type Description = {
+ as: ElementType;
+ className?: string;
+ children: ReactNode | ReactNode[];
+ id?: string;
+};
+
+const variants: Record = {
+ title:
+ 'text-3xl font-medium tracking-tight text-slate-950 dark:text-white sm:text-5xl',
+ display:
+ 'text-4xl font-medium tracking-tight text-slate-950 dark:text-white sm:text-7xl',
+ subtitle: 'text-lg leading-8 text-slate-700 dark:text-slate-300 sm:text-2xl',
+};
+
+export function SectionHeading({
+ as = 'div',
+ children,
+ className,
+ variant,
+ ...rest
+}: Headings): JSX.Element {
+ const Tag = as;
+ return (
+
+ {children}
+
+ );
+}
+
+export function SectionDescription({
+ as = 'div',
+ children,
+ className,
+ ...rest
+}: Description): JSX.Element {
+ const Tag = as;
+ return (
+
+ {children}
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/src/lib/trusted-by.tsx b/nx-dev/ui-enterprise/src/lib/trusted-by.tsx
new file mode 100644
index 0000000000000..da51aabca1852
--- /dev/null
+++ b/nx-dev/ui-enterprise/src/lib/trusted-by.tsx
@@ -0,0 +1,220 @@
+import { AwsAmplifyIcon } from './logos/aws-amplify';
+import { RoyalBankOfCanadaColoredIcon } from './logos/royal-bank-of-canada';
+import { CiscoIcon } from './logos/cisco';
+import { ManIcon } from './logos/man';
+import { CapitalOneIcon } from './logos/capital-one';
+import { ShopifyIcon } from './logos/shopify';
+import { VmwareIcon } from './logos/vmware';
+import { StorybookIcon } from './logos/storybook';
+import { FicoIcon } from './logos/fico';
+import { CaterpillarIcon } from './logos/caterpillar';
+import { SectionHeading } from './temp/typography';
+import { motion } from 'framer-motion';
+import { AmericanAirlinesIcon } from './logos/american-airlines';
+import { BillColoredIcon } from './logos/bill';
+import { SevenElevenColoredIcon } from './logos/7eleven';
+import { HiltonIcon } from './logos/hilton';
+import { RedwoodJsIcon } from './logos/redwood-js';
+import { ReactQueryIcon } from './logos/react-query';
+
+export function TrustedBy(): JSX.Element {
+ const variants = {
+ hidden: {
+ opacity: 0,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ visible: (i: number) => ({
+ opacity: 1,
+ transition: {
+ delay: i || 0,
+ },
+ }),
+ };
+ const itemVariants = {
+ visible: (i: number) => ({
+ opacity: 1,
+ y: 0,
+ transition: {
+ delay: i * 0.25,
+ duration: 0.65,
+ ease: 'easeOut',
+ when: 'beforeChildren',
+ staggerChildren: 0.3,
+ },
+ }),
+ hidden: {
+ opacity: 0,
+ y: 4,
+ transition: {
+ when: 'afterChildren',
+ },
+ },
+ };
+
+ return (
+
+
+ {/*
*/}
+ {/* */}
+ {/* Trusted by startups and Fortune 500 companies*/}
+ {/* */}
+ {/*
*/}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/**/}
+ {/* */}
+ {/* */}
+
+
+
+ );
+}
diff --git a/nx-dev/ui-enterprise/tsconfig.json b/nx-dev/ui-enterprise/tsconfig.json
new file mode 100644
index 0000000000000..4c089585ed6b0
--- /dev/null
+++ b/nx-dev/ui-enterprise/tsconfig.json
@@ -0,0 +1,25 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "allowJs": true,
+ "esModuleInterop": true,
+ "allowSyntheticDefaultImports": true,
+ "forceConsistentCasingInFileNames": true,
+ "strict": true,
+ "noImplicitOverride": true,
+ "noPropertyAccessFromIndexSignature": true,
+ "noImplicitReturns": true,
+ "noFallthroughCasesInSwitch": true
+ },
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ },
+ {
+ "path": "./tsconfig.spec.json"
+ }
+ ]
+}
diff --git a/nx-dev/ui-enterprise/tsconfig.lib.json b/nx-dev/ui-enterprise/tsconfig.lib.json
new file mode 100644
index 0000000000000..54f71b5019289
--- /dev/null
+++ b/nx-dev/ui-enterprise/tsconfig.lib.json
@@ -0,0 +1,24 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../dist/out-tsc",
+ "types": ["node"],
+ "lib": ["dom"]
+ },
+ "files": [
+ "../../node_modules/@nx/react/typings/cssmodule.d.ts",
+ "../../node_modules/@nx/react/typings/image.d.ts"
+ ],
+ "exclude": [
+ "**/*.spec.ts",
+ "**/*.test.ts",
+ "**/*.spec.tsx",
+ "**/*.test.tsx",
+ "**/*.spec.js",
+ "**/*.test.js",
+ "**/*.spec.jsx",
+ "**/*.test.jsx",
+ "jest.config.ts"
+ ],
+ "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"]
+}
diff --git a/nx-dev/ui-enterprise/tsconfig.spec.json b/nx-dev/ui-enterprise/tsconfig.spec.json
new file mode 100644
index 0000000000000..a85d573fcf6c6
--- /dev/null
+++ b/nx-dev/ui-enterprise/tsconfig.spec.json
@@ -0,0 +1,20 @@
+{
+ "extends": "./tsconfig.json",
+ "compilerOptions": {
+ "outDir": "../../dist/out-tsc",
+ "module": "commonjs",
+ "types": ["jest", "node"]
+ },
+ "include": [
+ "**/*.test.ts",
+ "**/*.spec.ts",
+ "**/*.test.tsx",
+ "**/*.spec.tsx",
+ "**/*.test.js",
+ "**/*.spec.js",
+ "**/*.test.jsx",
+ "**/*.spec.jsx",
+ "**/*.d.ts",
+ "jest.config.ts"
+ ]
+}
diff --git a/package.json b/package.json
index 6310d3cbc5efa..e8b85a8f72ed8 100644
--- a/package.json
+++ b/package.json
@@ -309,16 +309,15 @@
},
"dependencies": {
"@docsearch/react": "^3.3.0",
- "@headlessui/react": "^1.7.3",
- "@heroicons/react": "^2.0.12",
+ "@headlessui/react": "^1.7.19",
+ "@heroicons/react": "^2.1.3",
"@markdoc/markdoc": "0.2.2",
"@monaco-editor/react": "^4.4.6",
"@napi-rs/canvas": "^0.1.19",
"@swc/helpers": "~0.5.2",
"@tailwindcss/aspect-ratio": "^0.4.2",
- "@tailwindcss/forms": "^0.5.3",
- "@tailwindcss/line-clamp": "^0.4.2",
- "@tailwindcss/typography": "^0.5.7",
+ "@tailwindcss/forms": "^0.5.7",
+ "@tailwindcss/typography": "^0.5.12",
"@types/license-checker": "^25.0.3",
"@types/minimatch": "^5.1.2",
"@widgetbot/react-embed": "^1.9.0",
@@ -350,8 +349,8 @@
"send": "0.17.1",
"string-width": "^4.2.3",
"strong-log-transformer": "^2.1.0",
- "tailwind-merge": "^1.8.1",
- "tailwindcss": "3.2.4",
+ "tailwind-merge": "^2.3.0",
+ "tailwindcss": "3.4.3",
"tslib": "^2.3.0",
"weak-napi": "^2.0.2",
"webpack-cli": "^5.1.4"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 38ed40237aeb8..9449d85f7a70f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -13,11 +13,11 @@ dependencies:
specifier: ^3.3.0
version: 3.3.0(@algolia/client-search@4.22.1)(@types/react@18.2.33)(react-dom@18.2.0)(react@18.2.0)
'@headlessui/react':
- specifier: ^1.7.3
- version: 1.7.3(react-dom@18.2.0)(react@18.2.0)
+ specifier: ^1.7.19
+ version: 1.7.19(react-dom@18.2.0)(react@18.2.0)
'@heroicons/react':
- specifier: ^2.0.12
- version: 2.0.12(react@18.2.0)
+ specifier: ^2.1.3
+ version: 2.1.3(react@18.2.0)
'@markdoc/markdoc':
specifier: 0.2.2
version: 0.2.2(@types/react@18.2.33)(react@18.2.0)
@@ -32,16 +32,13 @@ dependencies:
version: 0.5.3
'@tailwindcss/aspect-ratio':
specifier: ^0.4.2
- version: 0.4.2(tailwindcss@3.2.4)
+ version: 0.4.2(tailwindcss@3.4.3)
'@tailwindcss/forms':
- specifier: ^0.5.3
- version: 0.5.3(tailwindcss@3.2.4)
- '@tailwindcss/line-clamp':
- specifier: ^0.4.2
- version: 0.4.2(tailwindcss@3.2.4)
- '@tailwindcss/typography':
specifier: ^0.5.7
- version: 0.5.7(tailwindcss@3.2.4)
+ version: 0.5.7(tailwindcss@3.4.3)
+ '@tailwindcss/typography':
+ specifier: ^0.5.12
+ version: 0.5.12(tailwindcss@3.4.3)
'@types/license-checker':
specifier: ^25.0.3
version: 25.0.3
@@ -136,11 +133,11 @@ dependencies:
specifier: ^2.1.0
version: 2.1.0
tailwind-merge:
- specifier: ^1.8.1
- version: 1.8.1
+ specifier: ^2.3.0
+ version: 2.3.0
tailwindcss:
- specifier: 3.2.4
- version: 3.2.4(postcss@8.4.19)(ts-node@10.9.1)
+ specifier: 3.4.3
+ version: 3.4.3(ts-node@10.9.1)
tslib:
specifier: ^2.3.0
version: 2.4.0
@@ -760,7 +757,7 @@ devDependencies:
version: 3.1.29(@next/env@14.0.4)(next@14.0.4)
ng-packagr:
specifier: ~17.3.0
- version: 17.3.0(@angular/compiler-cli@17.3.0)(tailwindcss@3.2.4)(tslib@2.4.0)(typescript@5.4.2)
+ version: 17.3.0(@angular/compiler-cli@17.3.0)(tailwindcss@3.4.3)(tslib@2.4.0)(typescript@5.4.2)
node-fetch:
specifier: ^2.6.7
version: 2.6.7
@@ -1139,6 +1136,10 @@ packages:
'@algolia/requester-common': 4.22.1
dev: false
+ /@alloc/quick-lru@5.2.0:
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
/@ampproject/remapping@2.2.1:
resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
engines: {node: '>=6.0.0'}
@@ -1246,7 +1247,7 @@ packages:
magic-string: 0.30.8
mini-css-extract-plugin: 2.8.1(webpack@5.90.3)
mrmime: 2.0.0
- ng-packagr: 17.3.0(@angular/compiler-cli@17.3.0)(tailwindcss@3.2.4)(tslib@2.4.0)(typescript@5.4.2)
+ ng-packagr: 17.3.0(@angular/compiler-cli@17.3.0)(tailwindcss@3.4.3)(tslib@2.4.0)(typescript@5.4.2)
open: 8.4.2
ora: 5.4.1
parse5-html-rewriting-stream: 7.0.0
@@ -1261,7 +1262,7 @@ packages:
semver: 7.6.0
source-map-loader: 5.0.0(webpack@5.90.3)
source-map-support: 0.5.21
- tailwindcss: 3.2.4(postcss@8.4.19)(ts-node@10.9.1)
+ tailwindcss: 3.4.3(ts-node@10.9.1)
terser: 5.29.1
tree-kill: 1.2.2
tslib: 2.6.2
@@ -4805,19 +4806,19 @@ packages:
regenerator-runtime: 0.14.0
dev: true
- /@babel/runtime@7.23.9:
- resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==}
+ /@babel/runtime@7.24.0:
+ resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.0
dev: true
- /@babel/runtime@7.24.0:
- resolution: {integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==}
+ /@babel/runtime@7.24.4:
+ resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==}
engines: {node: '>=6.9.0'}
dependencies:
regenerator-runtime: 0.14.0
- dev: true
+ dev: false
/@babel/standalone@7.23.10:
resolution: {integrity: sha512-xqWviI/pt1Zb/d+6ilWa5IDL2mkDzsBnlHbreqnfyP3/QB/ofQ1bNVcHj8YQX154Rf/xZKR6y0s1ydVF3nAS8g==}
@@ -6539,19 +6540,21 @@ packages:
resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==}
dev: true
- /@headlessui/react@1.7.3(react-dom@18.2.0)(react@18.2.0):
- resolution: {integrity: sha512-LGp06SrGv7BMaIQlTs8s2G06moqkI0cb0b8stgq7KZ3xcHdH3qMP+cRyV7qe5x4XEW/IGY48BW4fLesD6NQLng==}
+ /@headlessui/react@1.7.19(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==}
engines: {node: '>=10'}
peerDependencies:
react: ^16 || ^17 || ^18
react-dom: ^16 || ^17 || ^18
dependencies:
+ '@tanstack/react-virtual': 3.4.0(react-dom@18.2.0)(react@18.2.0)
+ client-only: 0.0.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
- /@heroicons/react@2.0.12(react@18.2.0):
- resolution: {integrity: sha512-FZxKh3i9aKIDxyALTgIpSF2t6V6/eZfF5mRu41QlwkX3Oxzecdm1u6dpft6PQGxIBwO7TKYWaMAYYL8mp/EaOg==}
+ /@heroicons/react@2.1.3(react@18.2.0):
+ resolution: {integrity: sha512-fEcPfo4oN345SoqdlCDdSa4ivjaKbk0jTd+oubcgNxnNgAfzysfwWfQUr+51wigiWHQQRiZNd1Ao0M5Y3M2EGg==}
peerDependencies:
react: '>= 16'
dependencies:
@@ -6597,7 +6600,6 @@ packages:
strip-ansi-cjs: /strip-ansi@6.0.1
wrap-ansi: 8.1.0
wrap-ansi-cjs: /wrap-ansi@7.0.0
- dev: true
/@istanbuljs/load-nyc-config@1.1.0:
resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==}
@@ -6915,7 +6917,6 @@ packages:
'@jridgewell/set-array': 1.2.1
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.25
- dev: true
/@jridgewell/resolve-uri@3.1.0:
resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
@@ -6933,12 +6934,11 @@ packages:
/@jridgewell/set-array@1.2.1:
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
engines: {node: '>=6.0.0'}
- dev: true
/@jridgewell/source-map@0.3.3:
resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==}
dependencies:
- '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.21
/@jridgewell/sourcemap-codec@1.4.14:
@@ -6966,7 +6966,6 @@ packages:
dependencies:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
- dev: true
/@jridgewell/trace-mapping@0.3.9:
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
@@ -9604,7 +9603,6 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
requiresBuild: true
- dev: true
optional: true
/@pkgr/utils@2.3.1:
@@ -12606,33 +12604,25 @@ packages:
defer-to-connect: 2.0.1
dev: true
- /@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.2.4):
+ /@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.3):
resolution: {integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==}
peerDependencies:
tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1'
dependencies:
- tailwindcss: 3.2.4(postcss@8.4.19)(ts-node@10.9.1)
+ tailwindcss: 3.4.3(ts-node@10.9.1)
dev: false
- /@tailwindcss/forms@0.5.3(tailwindcss@3.2.4):
- resolution: {integrity: sha512-y5mb86JUoiUgBjY/o6FJSFZSEttfb3Q5gllE4xoKjAAD+vBrnIhE4dViwUuow3va8mpH4s9jyUbUbrRGoRdc2Q==}
+ /@tailwindcss/forms@0.5.7(tailwindcss@3.4.3):
+ resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==}
peerDependencies:
tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1'
dependencies:
mini-svg-data-uri: 1.4.4
- tailwindcss: 3.2.4(postcss@8.4.19)(ts-node@10.9.1)
- dev: false
-
- /@tailwindcss/line-clamp@0.4.2(tailwindcss@3.2.4):
- resolution: {integrity: sha512-HFzAQuqYCjyy/SX9sLGB1lroPzmcnWv1FHkIpmypte10hptf4oPUfucryMKovZh2u0uiS9U5Ty3GghWfEJGwVw==}
- peerDependencies:
- tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1'
- dependencies:
- tailwindcss: 3.2.4(postcss@8.4.19)(ts-node@10.9.1)
+ tailwindcss: 3.4.3(ts-node@10.9.1)
dev: false
- /@tailwindcss/typography@0.5.7(tailwindcss@3.2.4):
- resolution: {integrity: sha512-JTTSTrgZfp6Ki4svhPA4mkd9nmQ/j9EfE7SbHJ1cLtthKkpW2OxsFXzSmxbhYbEkfNIyAyhle5p4SYyKRbz/jg==}
+ /@tailwindcss/typography@0.5.12(tailwindcss@3.4.3):
+ resolution: {integrity: sha512-CNwpBpconcP7ppxmuq3qvaCxiRWnbhANpY/ruH4L5qs2GCiVDJXde/pjj2HWPV1+Q4G9+V/etrwUYopdcjAlyg==}
peerDependencies:
tailwindcss: '>=3.0.0 || insiders'
dependencies:
@@ -12640,7 +12630,22 @@ packages:
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
- tailwindcss: 3.2.4(postcss@8.4.19)(ts-node@10.9.1)
+ tailwindcss: 3.4.3(ts-node@10.9.1)
+ dev: false
+
+ /@tanstack/react-virtual@3.4.0(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-GZN4xn/Tg5w7gvYeVcMVCeL4pEyUhvg+Cp6KX2Z01C4FRNxIWMgIQ9ibgMarNQfo+gt0PVLcEER4A9sNv/jlow==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0
+ dependencies:
+ '@tanstack/virtual-core': 3.4.0
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
+ /@tanstack/virtual-core@3.4.0:
+ resolution: {integrity: sha512-75jXqXxqq5M5Veb9KP1STi8kA5u408uOOAefk2ftHDGCpUk3RP6zX++QqfbmHJTBiU72NQ+ghgCZVts/Wocz8Q==}
dev: false
/@testing-library/dom@9.3.4:
@@ -12648,7 +12653,7 @@ packages:
engines: {node: '>=14'}
dependencies:
'@babel/code-frame': 7.23.5
- '@babel/runtime': 7.23.9
+ '@babel/runtime': 7.24.0
'@types/aria-query': 5.0.4
aria-query: 5.1.3
chalk: 4.1.2
@@ -14523,16 +14528,10 @@ packages:
acorn: 8.11.3
dev: true
- /acorn-node@1.8.2:
- resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
- dependencies:
- acorn: 7.4.1
- acorn-walk: 7.2.0
- xtend: 4.0.2
-
/acorn-walk@7.2.0:
resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
engines: {node: '>=0.4.0'}
+ dev: true
/acorn-walk@8.2.0:
resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
@@ -14547,6 +14546,7 @@ packages:
resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
engines: {node: '>=0.4.0'}
hasBin: true
+ dev: true
/acorn@8.11.3:
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
@@ -14755,7 +14755,6 @@ packages:
/ansi-regex@6.0.1:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
- dev: true
/ansi-sequence-parser@1.1.0:
resolution: {integrity: sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==}
@@ -14781,11 +14780,9 @@ packages:
/ansi-styles@6.2.1:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
- dev: true
/any-promise@1.3.0:
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
- dev: false
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
@@ -15814,7 +15811,6 @@ packages:
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
dependencies:
balanced-match: 1.0.2
- dev: true
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
@@ -16596,7 +16592,6 @@ packages:
/commander@4.1.1:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
- dev: true
/commander@6.2.1:
resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
@@ -17930,9 +17925,6 @@ packages:
object-keys: 1.1.1
dev: true
- /defined@1.0.1:
- resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==}
-
/defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
dev: true
@@ -18028,15 +18020,6 @@ packages:
- supports-color
dev: true
- /detective@5.2.1:
- resolution: {integrity: sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==}
- engines: {node: '>=0.8.0'}
- hasBin: true
- dependencies:
- acorn-node: 1.8.2
- defined: 1.0.1
- minimist: 1.2.8
-
/devalue@4.3.2:
resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
dev: true
@@ -18235,7 +18218,6 @@ packages:
/eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- dev: true
/ecc-jsbn@0.1.2:
resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
@@ -18289,7 +18271,6 @@ packages:
/emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
- dev: true
/emojis-list@3.0.0:
resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
@@ -19691,6 +19672,7 @@ packages:
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.5
+ dev: true
/fast-glob@3.2.7:
resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==}
@@ -19711,7 +19693,6 @@ packages:
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.5
- dev: true
/fast-json-parse@1.0.3:
resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==}
@@ -19995,7 +19976,6 @@ packages:
dependencies:
cross-spawn: 7.0.3
signal-exit: 4.1.0
- dev: true
/forever-agent@0.6.1:
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
@@ -20562,6 +20542,17 @@ packages:
path-scurry: 1.7.0
dev: true
+ /glob@10.3.12:
+ resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ foreground-child: 3.1.1
+ jackspeak: 2.3.6
+ minimatch: 9.0.3
+ minipass: 7.0.4
+ path-scurry: 1.10.2
+
/glob@6.0.4:
resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==}
dependencies:
@@ -20873,6 +20864,7 @@ packages:
engines: {node: '>= 0.4.0'}
dependencies:
function-bind: 1.1.2
+ dev: true
/hash-sum@2.0.0:
resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
@@ -21726,6 +21718,7 @@ packages:
resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
dependencies:
has: 1.0.3
+ dev: true
/is-core-module@2.13.0:
resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==}
@@ -22194,6 +22187,14 @@ packages:
'@pkgjs/parseargs': 0.11.0
dev: true
+ /jackspeak@2.3.6:
+ resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
/jake@10.8.5:
resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==}
engines: {node: '>=10'}
@@ -22724,7 +22725,6 @@ packages:
/jiti@1.21.0:
resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
hasBin: true
- dev: true
/js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -23259,10 +23259,6 @@ packages:
webpack-sources: 3.2.3
dev: true
- /lilconfig@2.0.6:
- resolution: {integrity: sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==}
- engines: {node: '>=10'}
-
/lilconfig@2.1.0:
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
@@ -23270,11 +23266,9 @@ packages:
/lilconfig@3.0.0:
resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
engines: {node: '>=14'}
- dev: true
/lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
- dev: true
/lines-and-columns@2.0.3:
resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==}
@@ -23557,7 +23551,6 @@ packages:
/lru-cache@10.2.0:
resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==}
engines: {node: 14 || >=16.14}
- dev: true
/lru-cache@4.1.5:
resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
@@ -24632,7 +24625,6 @@ packages:
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.1
- dev: true
/minimist-options@4.1.0:
resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
@@ -24728,6 +24720,10 @@ packages:
engines: {node: '>=16 || 14 >=14.17'}
dev: true
+ /minipass@7.0.4:
+ resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
/minizlib@2.1.2:
resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==}
engines: {node: '>= 8'}
@@ -24856,12 +24852,12 @@ packages:
any-promise: 1.3.0
object-assign: 4.1.1
thenify-all: 1.6.0
- dev: false
/nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ dev: true
/nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
@@ -24974,7 +24970,7 @@ packages:
- '@babel/core'
- babel-plugin-macros
- /ng-packagr@17.3.0(@angular/compiler-cli@17.3.0)(tailwindcss@3.2.4)(tslib@2.4.0)(typescript@5.4.2):
+ /ng-packagr@17.3.0(@angular/compiler-cli@17.3.0)(tailwindcss@3.4.3)(tslib@2.4.0)(typescript@5.4.2):
resolution: {integrity: sha512-kMSqxeDgv88SWCoapWNRRN1UdBgwu9/Pw/j7u2WFGmzrIWUFivNWBBSSL94kMxr2La+Z9wMwiL8EwKNvmCpg2A==}
engines: {node: ^18.13.0 || >=20.9.0}
hasBin: true
@@ -25010,7 +25006,7 @@ packages:
postcss: 8.4.35
rxjs: 7.8.1
sass: 1.70.0
- tailwindcss: 3.2.4(postcss@8.4.19)(ts-node@10.9.1)
+ tailwindcss: 3.4.3(ts-node@10.9.1)
tslib: 2.4.0
typescript: 5.4.2
optionalDependencies:
@@ -26369,6 +26365,13 @@ packages:
/path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ /path-scurry@1.10.2:
+ resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ dependencies:
+ lru-cache: 10.2.0
+ minipass: 7.0.4
+
/path-scurry@1.7.0:
resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -26511,7 +26514,6 @@ packages:
/pirates@4.0.6:
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
engines: {node: '>= 6'}
- dev: true
/piscina@4.4.0:
resolution: {integrity: sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==}
@@ -26969,6 +26971,18 @@ packages:
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.1
+ dev: true
+
+ /postcss-import@15.1.0(postcss@8.4.35):
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.35
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.8
/postcss-initial@4.0.1(postcss@8.4.19):
resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==}
@@ -26978,14 +26992,14 @@ packages:
postcss: 8.4.19
dev: true
- /postcss-js@4.0.0(postcss@8.4.19):
- resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
+ /postcss-js@4.0.1(postcss@8.4.35):
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
engines: {node: ^12 || ^14 || >= 16}
peerDependencies:
- postcss: ^8.3.3
+ postcss: ^8.4.21
dependencies:
camelcase-css: 2.0.1
- postcss: 8.4.19
+ postcss: 8.4.35
/postcss-lab-function@4.2.1(postcss@8.4.19):
resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==}
@@ -27014,6 +27028,7 @@ packages:
postcss: 8.4.19
ts-node: 10.9.1(@swc/core@1.3.86)(@types/node@18.19.8)(typescript@5.4.2)
yaml: 1.10.2
+ dev: true
/postcss-load-config@4.0.2(postcss@8.4.19)(ts-node@10.9.1):
resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
@@ -27033,6 +27048,23 @@ packages:
yaml: 2.3.4
dev: true
+ /postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.1):
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 3.0.0
+ postcss: 8.4.35
+ ts-node: 10.9.1(@swc/core@1.3.86)(@types/node@18.19.8)(typescript@5.4.2)
+ yaml: 2.3.4
+
/postcss-loader@6.2.1(postcss@8.4.19)(webpack@5.88.0):
resolution: {integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==}
engines: {node: '>= 12.13.0'}
@@ -27409,13 +27441,13 @@ packages:
string-hash: 1.1.3
dev: true
- /postcss-nested@6.0.0(postcss@8.4.19):
- resolution: {integrity: sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==}
+ /postcss-nested@6.0.1(postcss@8.4.35):
+ resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
- postcss: 8.4.19
+ postcss: 8.4.35
postcss-selector-parser: 6.0.15
/postcss-nesting@10.1.10(postcss@8.4.19):
@@ -27918,13 +27950,6 @@ packages:
util-deprecate: 1.0.2
dev: false
- /postcss-selector-parser@6.0.11:
- resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==}
- engines: {node: '>=4'}
- dependencies:
- cssesc: 3.0.0
- util-deprecate: 1.0.2
-
/postcss-selector-parser@6.0.15:
resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==}
engines: {node: '>=4'}
@@ -28018,6 +28043,7 @@ packages:
nanoid: 3.3.6
picocolors: 1.0.0
source-map-js: 1.0.2
+ dev: true
/postcss@8.4.23:
resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==}
@@ -28052,7 +28078,6 @@ packages:
nanoid: 3.3.7
picocolors: 1.0.0
source-map-js: 1.0.2
- dev: true
/preact@10.6.4:
resolution: {integrity: sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ==}
@@ -28357,6 +28382,7 @@ packages:
/quick-lru@5.1.1:
resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
engines: {node: '>=10'}
+ dev: true
/radix3@1.1.0:
resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==}
@@ -28932,7 +28958,6 @@ packages:
/regenerator-runtime@0.14.0:
resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==}
- dev: true
/regenerator-transform@0.15.2:
resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
@@ -29171,6 +29196,7 @@ packages:
is-core-module: 2.11.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
+ dev: true
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
@@ -29872,7 +29898,6 @@ packages:
/signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
- dev: true
/sigstore@2.2.1:
resolution: {integrity: sha512-OBBSKvmjr4DCyUb+IC2p7wooOCsCNwaqvCilTJVNPo0y8lJl+LsCrfz4LtMwnw3Gn+8frt816wi1+DWZTUCpBQ==}
@@ -30373,7 +30398,6 @@ packages:
eastasianwidth: 0.2.0
emoji-regex: 9.2.2
strip-ansi: 7.0.1
- dev: true
/string.prototype.matchall@4.0.8:
resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==}
@@ -30457,7 +30481,6 @@ packages:
engines: {node: '>=12'}
dependencies:
ansi-regex: 6.0.1
- dev: true
/strip-bom@3.0.0:
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
@@ -30667,6 +30690,19 @@ packages:
- supports-color
dev: true
+ /sucrase@3.35.0:
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ commander: 4.1.1
+ glob: 10.3.12
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.6
+ ts-interface-checker: 0.1.13
+
/supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -30835,40 +30871,39 @@ packages:
resolution: {integrity: sha512-SYJSIgeyXW7EuX1ytdneO5e8jip42oHWg9xl/o3oTYhmXusZVgiA+VlPvjIN+kHii9v90AmzTZEBcsEvuAY+TA==}
dev: true
- /tailwind-merge@1.8.1:
- resolution: {integrity: sha512-+fflfPxvHFr81hTJpQ3MIwtqgvefHZFUHFiIHpVIRXvG/nX9+gu2P7JNlFu2bfDMJ+uHhi/pUgzaYacMoXv+Ww==}
+ /tailwind-merge@2.3.0:
+ resolution: {integrity: sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==}
+ dependencies:
+ '@babel/runtime': 7.24.4
dev: false
- /tailwindcss@3.2.4(postcss@8.4.19)(ts-node@10.9.1):
- resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==}
- engines: {node: '>=12.13.0'}
+ /tailwindcss@3.4.3(ts-node@10.9.1):
+ resolution: {integrity: sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==}
+ engines: {node: '>=14.0.0'}
hasBin: true
- peerDependencies:
- postcss: ^8.0.9
dependencies:
+ '@alloc/quick-lru': 5.2.0
arg: 5.0.2
chokidar: 3.5.3
- color-name: 1.1.4
- detective: 5.2.1
didyoumean: 1.2.2
dlv: 1.1.3
- fast-glob: 3.2.12
+ fast-glob: 3.3.2
glob-parent: 6.0.2
is-glob: 4.0.3
- lilconfig: 2.0.6
+ jiti: 1.21.0
+ lilconfig: 2.1.0
micromatch: 4.0.5
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
- postcss: 8.4.19
- postcss-import: 14.1.0(postcss@8.4.19)
- postcss-js: 4.0.0(postcss@8.4.19)
- postcss-load-config: 3.1.4(postcss@8.4.19)(ts-node@10.9.1)
- postcss-nested: 6.0.0(postcss@8.4.19)
- postcss-selector-parser: 6.0.11
- postcss-value-parser: 4.2.0
- quick-lru: 5.1.1
- resolve: 1.22.1
+ postcss: 8.4.35
+ postcss-import: 15.1.0(postcss@8.4.35)
+ postcss-js: 4.0.1(postcss@8.4.35)
+ postcss-load-config: 4.0.2(postcss@8.4.35)(ts-node@10.9.1)
+ postcss-nested: 6.0.1(postcss@8.4.35)
+ postcss-selector-parser: 6.0.15
+ resolve: 1.22.8
+ sucrase: 3.35.0
transitivePeerDependencies:
- ts-node
@@ -31134,13 +31169,11 @@ packages:
engines: {node: '>=0.8'}
dependencies:
thenify: 3.3.1
- dev: false
/thenify@3.3.1:
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
dependencies:
any-promise: 1.3.0
- dev: false
/throat@5.0.0:
resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==}
@@ -31364,6 +31397,9 @@ packages:
engines: {node: '>=6.10'}
dev: true
+ /ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+
/ts-jest@29.1.0(@babel/core@7.23.2)(@jest/types@29.6.3)(babel-jest@29.4.3)(esbuild@0.19.5)(jest@29.4.3)(typescript@5.4.2):
resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -33708,7 +33744,6 @@ packages:
ansi-styles: 6.2.1
string-width: 5.1.2
strip-ansi: 7.0.1
- dev: true
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
@@ -33823,11 +33858,11 @@ packages:
/yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
+ dev: true
/yaml@2.3.4:
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
engines: {node: '>= 14'}
- dev: true
/yargs-parser@20.2.9:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
diff --git a/tsconfig.base.json b/tsconfig.base.json
index de34ac5a19fd4..7da08603288a4 100644
--- a/tsconfig.base.json
+++ b/tsconfig.base.json
@@ -90,6 +90,7 @@
"@nx/nx-dev/ui-community": ["nx-dev/ui-community/src/index.ts"],
"@nx/nx-dev/ui-conference": ["nx-dev/ui-conference/src/index.ts"],
"@nx/nx-dev/ui-contact": ["nx-dev/ui-contact/src/index.ts"],
+ "@nx/nx-dev/ui-enterprise": ["nx-dev/ui-enterprise/src/index.ts"],
"@nx/nx-dev/ui-fence": ["nx-dev/ui-fence/src/index.ts"],
"@nx/nx-dev/ui-home": ["nx-dev/ui-home/src/index.ts"],
"@nx/nx-dev/ui-markdoc": ["nx-dev/ui-markdoc/src/index.ts"],