diff --git a/.prettierrc b/.prettierrc
index 1d01da021e..f0d0cdef32 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -1,4 +1,5 @@
{
"singleQuote": true,
- "endOfLine": "lf"
+ "endOfLine": "lf",
+ "plugins": ["prettier-plugin-tailwindcss"]
}
diff --git a/graph/ui-tooltips/src/lib/sourcemap-info-tooltip.tsx b/graph/ui-tooltips/src/lib/sourcemap-info-tooltip.tsx
index 3d44c2c490..dea15ce7d3 100644
--- a/graph/ui-tooltips/src/lib/sourcemap-info-tooltip.tsx
+++ b/graph/ui-tooltips/src/lib/sourcemap-info-tooltip.tsx
@@ -28,7 +28,7 @@ export function SourcemapInfoToolTip({
<>
{isTarget ? 'Created' : 'Set'} by:
-
+
{docsUrlSlug ? (
+
diff --git a/nx-dev/feature-search/src/lib/algolia-search.tsx b/nx-dev/feature-search/src/lib/algolia-search.tsx
index db36f8bc8a..e98589900f 100644
--- a/nx-dev/feature-search/src/lib/algolia-search.tsx
+++ b/nx-dev/feature-search/src/lib/algolia-search.tsx
@@ -86,8 +86,8 @@ export function AlgoliaSearch({
className="flex w-full items-center rounded-md bg-white py-1.5 px-2 text-sm leading-4 ring-1 ring-slate-300 transition dark:bg-slate-700 dark:ring-slate-900"
>
-
- Search the docs ...
+
+ Search
))}
+
+ Preferences
+
diff --git a/nx-dev/ui-common/src/lib/github-icon.tsx b/nx-dev/ui-common/src/lib/github-icon.tsx
new file mode 100644
index 0000000000..99952cc38a
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/github-icon.tsx
@@ -0,0 +1,14 @@
+import { FC, SVGProps } from 'react';
+
+export const GitHubIcon: FC
> = (props) => (
+
+);
diff --git a/nx-dev/ui-common/src/lib/header.tsx b/nx-dev/ui-common/src/lib/header.tsx
deleted file mode 100644
index f2a755b3ed..0000000000
--- a/nx-dev/ui-common/src/lib/header.tsx
+++ /dev/null
@@ -1,326 +0,0 @@
-import { Popover, Transition } from '@headlessui/react';
-import { Bars4Icon, ChevronDownIcon } from '@heroicons/react/24/outline';
-import { AlgoliaSearch } from '@nx/nx-dev/feature-search';
-import { ThemeSwitcher } from '@nx/nx-dev/ui-theme';
-import cx from 'classnames';
-import Link from 'next/link';
-import { useRouter } from 'next/router';
-import { Fragment } from 'react';
-
-export function Header(): JSX.Element {
- const router = useRouter();
- const flyoutMenu = [
- {
- name: 'Getting started',
- description: 'Jump right in and start building!',
- href: '/getting-started/intro',
- },
- {
- name: 'Nx on CI',
- description: 'Learn how to efficiently use Nx on CI',
- href: '/ci/intro/ci-with-nx',
- },
- {
- name: 'Features',
- description:
- 'Learn the features of Nx with in depth guides and explainers.',
- href: '/features',
- },
- {
- name: 'Nx Replay',
- description:
- 'Built-in local and remote caching to speed up your tasks and save you time and money.',
- href: '/features/cache-task-results',
- },
- {
- name: 'Recipes',
- description: 'Follow instructions to do common specific tasks.',
- href: '/recipes',
- },
- {
- name: 'Nx Agents',
- description:
- 'Executes tasks remotely on different agents in parallel. Enable remote cache in one command.',
- href: '/ci/features/distribute-task-execution',
- },
- {
- name: 'Nx Console',
- description:
- 'The official VSCode & JetBrains plugin bringing Nx to your editor.',
- href: '/getting-started/editor-setup#vscode',
- },
- {
- name: 'Set Up CI',
- description: 'Configure Nx for your CI provider',
- href: '/ci/recipes/set-up',
- },
- ];
- const flyoutMobileMenu = [
- {
- name: 'Getting started',
- description: 'Jump right in and start building!',
- href: '/getting-started/intro',
- },
- {
- name: 'Blog',
- description: 'Latest news from the Nx & Nx Cloud core team',
- href: '/blog',
- },
- {
- name: 'Community',
- description: 'Check how to reach out and be part of the Nx community.',
- href: '/community',
- },
- {
- name: 'Launch Nx',
- description: 'A week of exciting announcements about Nx and Nx Cloud!',
- href: '/launch-nx',
- },
- {
- name: 'Contact us',
- description: 'Give us a call!',
- href: '/contact',
- },
- ];
-
- return (
-
- {/*DESKTOP*/}
-
- {/*LOGO*/}
-
- {/*PRIMARY NAVIGATION*/}
-
-
-
-
-
- {/*MOBILE*/}
-
-
- {/*LOGO*/}
-
-
-
- {/*MENU*/}
-
-
- {({ open }) => (
- <>
-
-
- {router.pathname === '/'
- ? 'Home'
- : router.pathname.replace('/', '')}
-
-
-
-
-
-
-
-
-
- >
- )}
-
-
-
-
-
-
- );
-}
diff --git a/nx-dev/ui-common/src/lib/headers/default-menu-item.tsx b/nx-dev/ui-common/src/lib/headers/default-menu-item.tsx
new file mode 100644
index 0000000000..40f8800bea
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/headers/default-menu-item.tsx
@@ -0,0 +1,56 @@
+import { ElementType } from 'react';
+import type { MenuItem } from './menu-items';
+import cx from 'classnames';
+import Link from 'next/link';
+
+export function DefaultMenuItem({
+ as = 'div',
+ className = '',
+ item,
+ ...rest
+}: {
+ as?: ElementType;
+ className?: string;
+ item: MenuItem;
+}): JSX.Element {
+ const hasExternalLink =
+ item.href.startsWith('http') || item.href.startsWith('//');
+ const Tag = as;
+ return (
+
+ {item.icon ? (
+
+ ) : null}
+
+
+ {item.name}
+ {item.isNew ? (
+
+ new
+
+ ) : null}
+
+
+ {item.description ? (
+
+ {item.description}
+
+ ) : null}
+
+
+ );
+}
diff --git a/nx-dev/ui-common/src/lib/documentation-header.tsx b/nx-dev/ui-common/src/lib/headers/documentation-header.tsx
similarity index 56%
rename from nx-dev/ui-common/src/lib/documentation-header.tsx
rename to nx-dev/ui-common/src/lib/headers/documentation-header.tsx
index b129d9d1e7..2a759a433c 100644
--- a/nx-dev/ui-common/src/lib/documentation-header.tsx
+++ b/nx-dev/ui-common/src/lib/headers/documentation-header.tsx
@@ -1,13 +1,25 @@
-import { type JSX } from 'react';
-import { Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline';
+import { Fragment, type JSX } from 'react';
+import {
+ ArrowUpRightIcon,
+ Bars3Icon,
+ ChevronDownIcon,
+ XMarkIcon,
+} from '@heroicons/react/24/outline';
import { AlgoliaSearch } from '@nx/nx-dev/feature-search';
-import { ThemeSwitcher } from '@nx/nx-dev/ui-theme';
import cx from 'classnames';
import Link from 'next/link';
import { useRouter } from 'next/router';
-import { ButtonLink } from './button';
-import { NxCloudIcon } from './nx-cloud-icon';
-import { AnnouncementBanner } from './announcement-banner';
+import { ButtonLink } from '../button';
+import { NxIcon } from '../nx-icon';
+import { Popover, Transition } from '@headlessui/react';
+import { TwoColumnsMenu } from './two-columns-menu';
+import {
+ featuresItems,
+ resourceMenuItems,
+ solutionsMenuItems,
+} from './menu-items';
+import { SectionsMenu } from './sections-menu';
+import { NxCloudIcon } from '../nx-cloud-icon';
function Menu({ tabs }: { tabs: any[] }): JSX.Element {
return (
@@ -197,20 +209,12 @@ export function DocumentationHeader({
href="/"
className="flex flex-grow items-center px-4 text-slate-900 dark:text-white lg:px-0"
>
-
+ Nx
+
Docs
@@ -218,66 +222,193 @@ export function DocumentationHeader({
{/*SEARCH*/}
-
+
{/*NAVIGATION*/}
-
+
{/* SPACER */}
-
+ {/*
*/}
diff --git a/nx-dev/ui-common/src/lib/headers/header.tsx b/nx-dev/ui-common/src/lib/headers/header.tsx
new file mode 100644
index 0000000000..0941d01d7f
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/headers/header.tsx
@@ -0,0 +1,520 @@
+import { Dialog, Disclosure, Popover, Transition } from '@headlessui/react';
+import {
+ ArrowUpRightIcon,
+ Bars4Icon,
+ ChevronDownIcon,
+ XMarkIcon,
+} from '@heroicons/react/24/outline';
+import cx from 'classnames';
+import Link from 'next/link';
+import { useRouter } from 'next/router';
+import { Fragment, useEffect, useState } from 'react';
+import { ButtonLink } from '../button';
+import {
+ eventItems,
+ featuresItems,
+ learnItems,
+ plans,
+ resourceMenuItems,
+ solutionsMenuItems,
+} from './menu-items';
+import { NxIcon } from '../nx-icon';
+import { GitHubIcon } from '../github-icon';
+import { MobileMenuItem } from './mobile-menu-item';
+import { SectionsMenu } from './sections-menu';
+import { TwoColumnsMenu } from './two-columns-menu';
+import { AlgoliaSearch } from '@nx/nx-dev/feature-search';
+import { NxCloudIcon } from '../nx-cloud-icon';
+
+export function Header(): JSX.Element {
+ let [isOpen, setIsOpen] = useState(false);
+ const router = useRouter();
+
+ // We need to close the popover if the route changes or the window is resized to prevent the popover from being stuck open.
+ const checkSizeAndClosePopover = () => {
+ const breakpoint = 1024; // This is the standard Tailwind lg breakpoint value
+ if (window.innerWidth < breakpoint) {
+ setIsOpen(false);
+ }
+ };
+
+ useEffect(() => {
+ window.addEventListener('resize', checkSizeAndClosePopover);
+ return () => {
+ window.removeEventListener('resize', checkSizeAndClosePopover);
+ };
+ }, []);
+
+ return (
+
+ {/*DESKTOP*/}
+
+ {/*PRIMARY NAVIGATION*/}
+
+ {/*LOGO*/}
+
+
Nx
+
+
+
+
+ {/*SECONDARY NAVIGATION*/}
+
+
+ {/*MOBILE*/}
+
+
+ {/*LOGO*/}
+
+
Nx
+
+
+
+
+ Nx on GitHub
+
+
+ {/*MENU*/}
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/nx-dev/ui-common/src/lib/headers/menu-items.ts b/nx-dev/ui-common/src/lib/headers/menu-items.ts
new file mode 100644
index 0000000000..9cb6b72799
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/headers/menu-items.ts
@@ -0,0 +1,214 @@
+import {
+ AcademicCapIcon,
+ ArrowPathIcon,
+ BoltIcon,
+ CircleStackIcon,
+ CodeBracketIcon,
+ CubeIcon,
+ NewspaperIcon,
+ PlayCircleIcon,
+ ShareIcon,
+ Squares2X2Icon,
+} from '@heroicons/react/24/outline';
+import { FC, SVGProps } from 'react';
+import { NxAgentsIcon } from '../nx-agents-icon';
+import { NxReplayIcon } from '../nx-replay-icon';
+
+export interface MenuItem {
+ name: string;
+ href: string;
+ description: string | null;
+ icon: FC
> | null;
+ isHighlight: boolean;
+ isNew: boolean;
+}
+
+export const featuresItems: MenuItem[] = [
+ {
+ name: 'Task Running',
+ // description: 'Run one or many tasks in parallel.',
+ description: null,
+ href: '/features/run-tasks',
+ icon: BoltIcon,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Local Caching',
+ // description: 'Speeds up your local workflow.',
+ description: null,
+ href: '/features/cache-task-results',
+ icon: CircleStackIcon,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Nx Graph',
+ // description: 'See interactions for tasks and modules.',
+ description: null,
+ href: '/features/explore-graph',
+ icon: ShareIcon,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Automated updates',
+ // description: 'Keep running on latest without effort.',
+ description: null,
+ href: '/features/automate-updating-dependencies',
+ icon: ArrowPathIcon,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Module Boundaries',
+ // description: 'Partition your code into defined units.',
+ description: null,
+ href: '/features/enforce-module-boundaries',
+ icon: Squares2X2Icon,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Nx Release',
+ // description: 'Versioning, changelog, publishing.',
+ description: null,
+ href: '/features/manage-releases',
+ icon: CubeIcon,
+ isNew: true,
+ isHighlight: false,
+ },
+ {
+ name: 'Nx Replay',
+ description: 'Zero-config, fast & secure remote cache solution.',
+ href: '/ci/features/remote-cache',
+ icon: NxReplayIcon,
+ isNew: false,
+ isHighlight: true,
+ },
+ {
+ name: 'Nx Agents',
+ description:
+ 'One-line config for distributing tasks, E2E tests split & flaky tasks rerun.',
+ href: '/ci/features/distribute-task-execution',
+ icon: NxAgentsIcon,
+ isNew: true,
+ isHighlight: true,
+ },
+];
+export const plans: MenuItem[] = [
+ {
+ name: 'Nx Cloud',
+ description:
+ 'End-to-end solution for smart, efficient and maintainable CI.',
+ href: 'https://nx.app',
+ icon: null,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Nx Enterprise',
+ description:
+ 'The ultimate Nx & Nx Cloud toolchain, tailored to your needs.',
+ href: 'https://nx.app/enterprise',
+ icon: null,
+ isNew: false,
+ isHighlight: false,
+ },
+];
+const useCaseItems: MenuItem[] = [
+ {
+ name: 'Get actionable feedback',
+ description: 'Enhanced analysis & analytics of your workflows.',
+ href: '',
+ icon: null,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Reduce CI timings with remote caching',
+ description: 'Share task results & artifacts between CI & teams.',
+ href: '',
+ icon: null,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Performant task distribution at scale',
+ description: 'Faster & cheaper CI workflows.',
+ href: '',
+ icon: null,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Improve E2E time execution on CI',
+ description: 'Automatic task splitting.',
+ href: '',
+ icon: null,
+ isNew: false,
+ isHighlight: false,
+ },
+];
+export const learnItems: MenuItem[] = [
+ {
+ name: 'Step by step tutorials',
+ description: null,
+ href: '/getting-started/intro#learn-nx',
+ icon: AcademicCapIcon,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Code examples for your stack',
+ description: null,
+ href: '/showcase/example-repos',
+ icon: CodeBracketIcon,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Video tutorials',
+ description: null,
+ href: 'https://www.youtube.com/@nxdevtools',
+ icon: PlayCircleIcon,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Newsletter',
+ description: null,
+ href: 'https://go.nrwl.io/nx-newsletter',
+ icon: NewspaperIcon,
+ isNew: false,
+ isHighlight: false,
+ },
+];
+export const eventItems: MenuItem[] = [
+ {
+ name: 'Nx Conf',
+ description:
+ 'In person & virtual conference about latest monorepo advancements.',
+ href: '/conf',
+ icon: null,
+ isNew: false,
+ isHighlight: false,
+ },
+ {
+ name: 'Webinars',
+ description:
+ 'Virtual courses to get a deeper understanding on monorepos animated by the Nx team.',
+ href: 'https://go.nx.dev/april-webinar',
+ icon: null,
+ isNew: false,
+ isHighlight: false,
+ },
+];
+export const solutionsMenuItems = {
+ 'Helping you grow': plans,
+ // 'Use cases': useCaseItems
+};
+export const resourceMenuItems = {
+ Learn: learnItems,
+ Events: eventItems,
+};
diff --git a/nx-dev/ui-common/src/lib/headers/mobile-menu-item.tsx b/nx-dev/ui-common/src/lib/headers/mobile-menu-item.tsx
new file mode 100644
index 0000000000..53652711c4
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/headers/mobile-menu-item.tsx
@@ -0,0 +1,54 @@
+import { ElementType } from 'react';
+import type { MenuItem } from './menu-items';
+import cx from 'classnames';
+import Link from 'next/link';
+
+export function MobileMenuItem({
+ as = 'div',
+ className = '',
+ item,
+ ...rest
+}: {
+ as?: ElementType;
+ className?: string;
+ item: MenuItem;
+}): JSX.Element {
+ const hasExternalLink =
+ item.href.startsWith('http') || item.href.startsWith('//');
+ const Tag = as;
+ return (
+
+ {item.icon ? (
+
+ ) : null}
+
+
+ {item.name}
+ {item.isNew ? (
+
+ new
+
+ ) : null}
+
+
+ {item.description ? (
+
+ {item.description}
+
+ ) : null}
+
+
+ );
+}
diff --git a/nx-dev/ui-common/src/lib/headers/sections-menu.tsx b/nx-dev/ui-common/src/lib/headers/sections-menu.tsx
new file mode 100644
index 0000000000..5cbbcb73df
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/headers/sections-menu.tsx
@@ -0,0 +1,27 @@
+import type { MenuItem } from './menu-items';
+import { DefaultMenuItem } from './default-menu-item';
+
+export function SectionsMenu({
+ sections,
+}: {
+ sections: Record;
+}): JSX.Element {
+ return (
+
+
+ {Object.keys(sections).map((section) => (
+
+
+ {section}
+
+
+ {sections[section].map((item) => (
+
+ ))}
+
+
+ ))}
+
+
+ );
+}
diff --git a/nx-dev/ui-common/src/lib/headers/two-columns-menu.tsx b/nx-dev/ui-common/src/lib/headers/two-columns-menu.tsx
new file mode 100644
index 0000000000..433793d086
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/headers/two-columns-menu.tsx
@@ -0,0 +1,23 @@
+import type { MenuItem } from './menu-items';
+import { DefaultMenuItem } from './default-menu-item';
+
+export function TwoColumnsMenu({ items }: { items: MenuItem[] }): JSX.Element {
+ return (
+
+
+ {items
+ .filter((i) => !i.isHighlight)
+ .map((item) => (
+
+ ))}
+
+ {items
+ .filter((i) => i.isHighlight)
+ .map((item) => (
+
+ ))}
+
+
+
+ );
+}
diff --git a/nx-dev/ui-common/src/lib/nx-agents-icon.tsx b/nx-dev/ui-common/src/lib/nx-agents-icon.tsx
new file mode 100644
index 0000000000..aa0fb0e289
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/nx-agents-icon.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+export const NxAgentsIcon: FC> = (props) => (
+
+);
diff --git a/nx-dev/ui-common/src/lib/nx-icon.tsx b/nx-dev/ui-common/src/lib/nx-icon.tsx
new file mode 100644
index 0000000000..82016c53cd
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/nx-icon.tsx
@@ -0,0 +1,14 @@
+import { FC, SVGProps } from 'react';
+
+export const NxIcon: FC> = (props) => (
+
+);
diff --git a/nx-dev/ui-common/src/lib/nx-replay-icon.tsx b/nx-dev/ui-common/src/lib/nx-replay-icon.tsx
new file mode 100644
index 0000000000..097ac26e8a
--- /dev/null
+++ b/nx-dev/ui-common/src/lib/nx-replay-icon.tsx
@@ -0,0 +1,17 @@
+import { FC, SVGProps } from 'react';
+
+export const NxReplayIcon: FC> = (props) => (
+
+);
diff --git a/nx-dev/ui-theme/src/lib/theme-switcher.component.tsx b/nx-dev/ui-theme/src/lib/theme-switcher.component.tsx
index 4768e5278b..56ffec357b 100644
--- a/nx-dev/ui-theme/src/lib/theme-switcher.component.tsx
+++ b/nx-dev/ui-theme/src/lib/theme-switcher.component.tsx
@@ -5,10 +5,10 @@ import {
SunIcon,
} from '@heroicons/react/24/outline';
import cx from 'classnames';
-import { Fragment } from 'react';
-import { useTheme } from './theme.provider';
+import { ElementType, Fragment } from 'react';
+import { Theme, useTheme } from './theme.provider';
-export function ThemeSwitcher() {
+export function ThemeSwitcher(): JSX.Element {
const [theme, setTheme] = useTheme();
const themeMap = {
dark: {
@@ -24,23 +24,24 @@ export function ThemeSwitcher() {
icon: ,
},
};
- const availableThemes = [
- {
- label: 'Light',
- value: 'light',
- icon: ,
- },
- {
- label: 'Dark',
- value: 'dark',
- icon: ,
- },
- {
- label: 'System',
- value: 'system',
- icon: ,
- },
- ];
+ const availableThemes: { label: string; value: Theme; icon: ElementType }[] =
+ [
+ {
+ label: 'Light',
+ value: 'light',
+ icon: SunIcon,
+ },
+ {
+ label: 'Dark',
+ value: 'dark',
+ icon: MoonIcon,
+ },
+ {
+ label: 'System',
+ value: 'system',
+ icon: ComputerDesktopIcon,
+ },
+ ];
return (
@@ -66,13 +67,13 @@ export function ThemeSwitcher() {
leaveFrom="transform opacity-100 scale-100"
leaveTo="transform opacity-0 scale-95"
>
-
- {availableThemes.map(({ value, label, icon }) => (
-
+
+ {availableThemes.map((t) => (
+
{({ active, selected }) => (
- {icon}
- {label}
+
+ {t.label}
)}
diff --git a/package.json b/package.json
index 40a006c867..276ad9d85d 100644
--- a/package.json
+++ b/package.json
@@ -124,7 +124,6 @@
"@types/marked": "^2.0.0",
"@types/node": "18.19.8",
"@types/npm-package-arg": "6.1.1",
- "@types/prettier": "^2.6.2",
"@types/react": "18.2.33",
"@types/react-dom": "18.2.14",
"@types/semver": "^7.5.2",
@@ -169,7 +168,7 @@
"esbuild": "0.19.5",
"eslint": "8.57.0",
"eslint-config-next": "14.0.4",
- "eslint-config-prettier": "9.0.0",
+ "eslint-config-prettier": "9.1.0",
"eslint-plugin-cypress": "2.14.0",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-jsx-a11y": "6.7.1",
@@ -245,8 +244,8 @@
"postcss-import": "~14.1.0",
"postcss-preset-env": "~7.5.0",
"postcss-url": "~10.1.3",
- "prettier": "^2.6.2",
- "prettier-plugin-tailwindcss": "^0.1.5",
+ "prettier": "^2.7.1",
+ "prettier-plugin-tailwindcss": "^0.1.13",
"pretty-quick": "^3.1.0",
"raw-loader": "^4.0.2",
"react-markdown": "^8.0.7",
@@ -375,4 +374,3 @@
]
}
}
-
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 3d18261824..4735521d10 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -289,7 +289,7 @@ devDependencies:
version: 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(js-yaml@4.1.0)(nx@18.3.0-beta.3)(verdaccio@5.15.4)
'@nx/eslint-plugin':
specifier: 18.3.0-beta.3
- version: 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.0.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4)
+ version: 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.1.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4)
'@nx/jest':
specifier: 18.3.0-beta.3
version: 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.3.0-beta.3)(ts-node@10.9.1)(typescript@5.4.2)(verdaccio@5.15.4)
@@ -449,9 +449,6 @@ devDependencies:
'@types/npm-package-arg':
specifier: 6.1.1
version: 6.1.1
- '@types/prettier':
- specifier: ^2.6.2
- version: 2.7.1
'@types/react':
specifier: 18.2.33
version: 18.2.33
@@ -585,8 +582,8 @@ devDependencies:
specifier: 14.0.4
version: 14.0.4(eslint@8.57.0)(typescript@5.4.2)
eslint-config-prettier:
- specifier: 9.0.0
- version: 9.0.0(eslint@8.57.0)
+ specifier: 9.1.0
+ version: 9.1.0(eslint@8.57.0)
eslint-plugin-cypress:
specifier: 2.14.0
version: 2.14.0(eslint@8.57.0)
@@ -813,10 +810,10 @@ devDependencies:
specifier: ~10.1.3
version: 10.1.3(postcss@8.4.19)
prettier:
- specifier: ^2.6.2
+ specifier: ^2.7.1
version: 2.7.1
prettier-plugin-tailwindcss:
- specifier: ^0.1.5
+ specifier: ^0.1.13
version: 0.1.13(prettier@2.7.1)
pretty-quick:
specifier: ^3.1.0
@@ -7819,10 +7816,10 @@ packages:
- verdaccio
dev: true
- /@nrwl/eslint-plugin-nx@18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.0.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4):
+ /@nrwl/eslint-plugin-nx@18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.1.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4):
resolution: {integrity: sha512-M1XcAYnavTKZTC/kj1D4fYx9w2Q5Rbr6nyQ8vuZpukwWgxoDiNZ7CcHBdsUYO6EyFL3b331iCpQgcK+8tmSAhA==}
dependencies:
- '@nx/eslint-plugin': 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.0.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4)
+ '@nx/eslint-plugin': 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.1.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4)
transitivePeerDependencies:
- '@babel/traverse'
- '@swc-node/register'
@@ -8477,7 +8474,7 @@ packages:
- verdaccio
dev: true
- /@nx/eslint-plugin@18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.0.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4):
+ /@nx/eslint-plugin@18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.1.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4):
resolution: {integrity: sha512-3LNegAAk+ENBwM7frkoC7WSZ/K1n05mCDZOc6jKdHhP68KNiS1NeHn872l66qDgyf1Lb/qFizlZACWoVWVtkOw==}
peerDependencies:
'@typescript-eslint/parser': ^6.13.2 || ^7.0.0
@@ -8486,7 +8483,7 @@ packages:
eslint-config-prettier:
optional: true
dependencies:
- '@nrwl/eslint-plugin-nx': 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.0.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4)
+ '@nrwl/eslint-plugin-nx': 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(@typescript-eslint/parser@7.4.0)(eslint-config-prettier@9.1.0)(eslint@8.57.0)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4)
'@nx/devkit': 18.3.0-beta.3(nx@18.3.0-beta.3)
'@nx/js': 18.3.0-beta.3(@swc-node/register@1.8.0)(@swc/core@1.3.86)(@types/node@18.19.8)(nx@18.3.0-beta.3)(typescript@5.4.2)(verdaccio@5.15.4)
'@typescript-eslint/parser': 7.4.0(eslint@8.57.0)(typescript@5.4.2)
@@ -8494,7 +8491,7 @@ packages:
'@typescript-eslint/utils': 7.4.0(eslint@8.57.0)(typescript@5.4.2)
chalk: 4.1.2
confusing-browser-globals: 1.0.11
- eslint-config-prettier: 9.0.0(eslint@8.57.0)
+ eslint-config-prettier: 9.1.0(eslint@8.57.0)
jsonc-eslint-parser: 2.1.0
semver: 7.6.0
tslib: 2.6.2
@@ -13165,6 +13162,7 @@ packages:
/@types/prettier@2.7.1:
resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==}
+ dev: false
/@types/pretty-hrtime@1.0.1:
resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==}
@@ -18946,8 +18944,8 @@ packages:
- supports-color
dev: true
- /eslint-config-prettier@9.0.0(eslint@8.57.0):
- resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==}
+ /eslint-config-prettier@9.1.0(eslint@8.57.0):
+ resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
@@ -23371,6 +23369,8 @@ packages:
peerDependenciesMeta:
webpack:
optional: true
+ webpack-sources:
+ optional: true
dependencies:
webpack: 5.88.0(@swc/core@1.3.86)(esbuild@0.19.5)
webpack-sources: 3.2.3
@@ -23383,6 +23383,8 @@ packages:
peerDependenciesMeta:
webpack:
optional: true
+ webpack-sources:
+ optional: true
dependencies:
webpack: 5.90.3(@swc/core@1.3.86)(esbuild@0.20.1)
webpack-sources: 3.2.3