chore(twenty-website): upgrade next (#14917)

Standardized `PageProps` usage across multiple pages. Upgraded `next`,
`eslint-config-next`, and related dependencies to `^15.5.4` for
compatibility and performance improvements.
This commit is contained in:
Antoine Moreaux 2025-10-06 17:08:16 +02:00 committed by GitHub
parent e40d5c9025
commit 843689ee05
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 550 additions and 166 deletions

View file

@ -23,16 +23,16 @@
"drizzle-kit": "^0.20.14",
"facepaint": "^1.2.1",
"gray-matter": "^4.0.3",
"next": "^14.2.0",
"next": "^15.5.4",
"next-mdx-remote": "^4.4.1",
"next-runtime-env": "^3.2.2",
"next-runtime-env": "^3.3.0",
"postgres": "^3.4.3",
"react-tooltip": "^5.13.1",
"twenty-ui": "workspace:*"
},
"devDependencies": {
"@next/eslint-plugin-next": "^14.1.4",
"@next/eslint-plugin-next": "^15.5.4",
"@types/facepaint": "^1.2.5",
"eslint-config-next": "^15.1.0"
"eslint-config-next": "^15.5.4"
}
}

View file

@ -13,27 +13,25 @@ import { PullRequests } from '@/app/_components/contributors/PullRequests';
import { ThankYou } from '@/app/_components/contributors/ThankYou';
import { Background } from '@/app/_components/oss-friends/Background';
export function generateMetadata({
params,
}: {
params: { slug: string };
}): Metadata {
export async function generateMetadata(props: PageProps<'/contributors/[slug]'>): Promise<Metadata> {
const { slug } = await props.params;
return {
metadataBase: new URL(`https://twenty.com`),
title: 'Twenty - ' + params.slug,
title: 'Twenty - ' + slug,
description:
'Explore the impactful contributions of ' +
params.slug +
slug +
' on the Twenty Github Repo. Discover their merged pull requests, ongoing work, and top ranking. Join and contribute to the #1 Open-Source CRM thriving community!',
openGraph: {
images: [`https://twenty.com/api/contributors/${params.slug}/og.png`],
images: [`https://twenty.com/api/contributors/${slug}/og.png`],
},
};
}
export default async function ({ params }: { params: { slug: string } }) {
export default async function Page(props: PageProps<'/contributors/[slug]'>) {
const { slug } = await props.params;
try {
const contributorActivity = await getContributorActivity(params.slug);
const contributorActivity = await getContributorActivity(slug);
if (contributorActivity) {
const {
firstContributionAt,

View file

@ -5,27 +5,21 @@ import DocsContent from '@/app/_components/docs/DocsContent';
import { fetchArticleFromSlug } from '@/shared-utils/fetchArticleFromSlug';
import { formatSlug } from '@/shared-utils/formatSlug';
export async function generateMetadata({
params,
}: {
params: { slug: string };
}): Promise<Metadata> {
const formattedSlug = formatSlug(params.slug);
export async function generateMetadata(props: PageProps<'/developers/[slug]'>): Promise<Metadata> {
const { slug } = await props.params;
const formattedSlug = formatSlug(slug);
const basePath = '/src/content/developers';
const mainPost = await fetchArticleFromSlug(params.slug, basePath);
const mainPost = await fetchArticleFromSlug(slug, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function DocsSlug({
params,
}: {
params: { slug: string };
}) {
export default async function DocsSlug(props: PageProps<'/developers/[slug]'>) {
const { slug } = await props.params;
const basePath = '/src/content/developers';
const mainPost = await fetchArticleFromSlug(params.slug, basePath);
const mainPost = await fetchArticleFromSlug(slug, basePath);
if (!mainPost) {
notFound();
}

View file

@ -6,7 +6,6 @@ export const metadata = {
description: 'Twenty is a CRM designed to fit your unique business needs.',
icons: '/images/core/logo.svg',
};
export default async function DocsHome() {
const filePath = 'src/content/developers/';
const docsArticleCards = getDocsArticles(filePath);

View file

@ -7,27 +7,21 @@ import { formatSlug } from '@/shared-utils/formatSlug';
export const dynamic = 'force-dynamic';
export async function generateMetadata({
params,
}: {
params: { folder: string; documentation: string };
}): Promise<Metadata> {
const basePath = `/src/content/developers/${params.folder}`;
const formattedSlug = formatSlug(params.documentation);
const mainPost = await fetchArticleFromSlug(params.documentation, basePath);
export async function generateMetadata(props: PageProps<'/developers/section/[folder]/[documentation]'>): Promise<Metadata> {
const { folder, documentation } = await props.params;
const basePath = `/src/content/developers/${folder}`;
const formattedSlug = formatSlug(documentation);
const mainPost = await fetchArticleFromSlug(documentation, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function DocsSlug({
params,
}: {
params: { documentation: string; folder: string };
}) {
const basePath = `/src/content/developers/${params.folder}`;
const mainPost = await fetchArticleFromSlug(params.documentation, basePath);
export default async function DocsSlug(props: PageProps<'/developers/section/[folder]/[documentation]'>) {
const { folder, documentation } = await props.params;
const basePath = `/src/content/developers/${folder}`;
const mainPost = await fetchArticleFromSlug(documentation, basePath);
if (!mainPost) {
notFound();
}

View file

@ -6,26 +6,20 @@ import { getDocsArticles } from '@/content/user-guide/constants/getDocsArticles'
import { fetchArticleFromSlug } from '@/shared-utils/fetchArticleFromSlug';
import { formatSlug } from '@/shared-utils/formatSlug';
export async function generateMetadata({
params,
}: {
params: { folder: string };
}): Promise<Metadata> {
const formattedSlug = formatSlug(params.folder);
export async function generateMetadata(props: PageProps<'/developers/section/[folder]'>): Promise<Metadata> {
const { folder } = await props.params;
const formattedSlug = formatSlug(folder);
const basePath = '/src/content/developers';
const mainPost = await fetchArticleFromSlug(params.folder, basePath);
const mainPost = await fetchArticleFromSlug(folder, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function DocsSlug({
params,
}: {
params: { folder: string };
}) {
const filePath = `src/content/developers/${params.folder}/`;
export default async function DocsSlug(props: PageProps<'/developers/section/[folder]'>) {
const { folder } = await props.params;
const filePath = `src/content/developers/${folder}/`;
const docsArticleCards = getDocsArticles(filePath);
const isSection = true;
const hasOnlyEmptySections = docsArticleCards.every(

View file

@ -7,27 +7,21 @@ import { formatSlug } from '@/shared-utils/formatSlug';
export const dynamic = 'force-dynamic';
export async function generateMetadata({
params,
}: {
params: { slug: string };
}): Promise<Metadata> {
const formattedSlug = formatSlug(params.slug);
export async function generateMetadata(props: PageProps<'/twenty-ui/[slug]'>): Promise<Metadata> {
const { slug } = await props.params;
const formattedSlug = formatSlug(slug);
const basePath = '/src/content/twenty-ui';
const mainPost = await fetchArticleFromSlug(params.slug, basePath);
const mainPost = await fetchArticleFromSlug(slug, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function TwentyUISlug({
params,
}: {
params: { slug: string };
}) {
export default async function TwentyUISlug(props: PageProps<'/twenty-ui/[slug]'>) {
const { slug } = await props.params;
const basePath = '/src/content/twenty-ui';
const mainPost = await fetchArticleFromSlug(params.slug, basePath);
const mainPost = await fetchArticleFromSlug(slug, basePath);
if (!mainPost) {
notFound();
}

View file

@ -7,27 +7,25 @@ import { formatSlug } from '@/shared-utils/formatSlug';
export const dynamic = 'force-dynamic';
export async function generateMetadata({
params,
}: {
params: { folder: string; documentation: string };
}): Promise<Metadata> {
const basePath = `/src/content/twenty-ui/${params.folder}`;
const formattedSlug = formatSlug(params.documentation);
const mainPost = await fetchArticleFromSlug(params.documentation, basePath);
export async function generateMetadata(
props: PageProps<'/twenty-ui/section/[folder]/[documentation]'>,
): Promise<Metadata> {
const { folder, documentation } = await props.params;
const basePath = `/src/content/twenty-ui/${folder}`;
const formattedSlug = formatSlug(documentation);
const mainPost = await fetchArticleFromSlug(documentation, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function TwentyUISlug({
params,
}: {
params: { documentation: string; folder: string };
}) {
const basePath = `/src/content/twenty-ui/${params.folder}`;
const mainPost = await fetchArticleFromSlug(params.documentation, basePath);
export default async function TwentyUISlug(
props: PageProps<'/twenty-ui/section/[folder]/[documentation]'>,
) {
const { folder, documentation } = await props.params;
const basePath = `/src/content/twenty-ui/${folder}`;
const mainPost = await fetchArticleFromSlug(documentation, basePath);
if (!mainPost) {
notFound();
}

View file

@ -8,26 +8,24 @@ import { formatSlug } from '@/shared-utils/formatSlug';
export const dynamic = 'force-dynamic';
export async function generateMetadata({
params,
}: {
params: { folder: string };
}): Promise<Metadata> {
const formattedSlug = formatSlug(params.folder);
export async function generateMetadata(
props: PageProps<'/twenty-ui/section/[folder]'>,
): Promise<Metadata> {
const { folder } = await props.params;
const formattedSlug = formatSlug(folder);
const basePath = '/src/content/twenty-ui';
const mainPost = await fetchArticleFromSlug(params.folder, basePath);
const mainPost = await fetchArticleFromSlug(folder, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function TwentyUISlug({
params,
}: {
params: { folder: string };
}) {
const filePath = `src/content/twenty-ui/${params.folder}/`;
export default async function TwentyUISlug(
props: PageProps<'/twenty-ui/section/[folder]'>,
) {
const { folder } = await props.params;
const filePath = `src/content/twenty-ui/${folder}/`;
const docsArticleCards = getDocsArticles(filePath);
const isSection = true;
const hasOnlyEmptySections = docsArticleCards.every(

View file

@ -5,27 +5,25 @@ import DocsContent from '@/app/_components/docs/DocsContent';
import { fetchArticleFromSlug } from '@/shared-utils/fetchArticleFromSlug';
import { formatSlug } from '@/shared-utils/formatSlug';
export async function generateMetadata({
params,
}: {
params: { slug: string };
}): Promise<Metadata> {
const formattedSlug = formatSlug(params.slug);
export async function generateMetadata(
props: PageProps<'/user-guide/[slug]'>,
): Promise<Metadata> {
const { slug } = await props.params;
const formattedSlug = formatSlug(slug);
const basePath = '/src/content/user-guide';
const mainPost = await fetchArticleFromSlug(params.slug, basePath);
const mainPost = await fetchArticleFromSlug(slug, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function UserGuideSlug({
params,
}: {
params: { slug: string };
}) {
export default async function UserGuideSlug(
props: PageProps<'/user-guide/[slug]'>,
) {
const { slug } = await props.params;
const basePath = '/src/content/user-guide';
const mainPost = await fetchArticleFromSlug(params.slug, basePath);
const mainPost = await fetchArticleFromSlug(slug, basePath);
if (!mainPost) {
notFound();
}

View file

@ -5,27 +5,25 @@ import DocsContent from '@/app/_components/docs/DocsContent';
import { fetchArticleFromSlug } from '@/shared-utils/fetchArticleFromSlug';
import { formatSlug } from '@/shared-utils/formatSlug';
export async function generateMetadata({
params,
}: {
params: { folder: string; documentation: string };
}): Promise<Metadata> {
const basePath = `/src/content/user-guide/${params.folder}`;
const formattedSlug = formatSlug(params.documentation);
const mainPost = await fetchArticleFromSlug(params.documentation, basePath);
export async function generateMetadata(
props: PageProps<'/user-guide/section/[folder]/[documentation]'>,
): Promise<Metadata> {
const { folder, documentation } = await props.params;
const basePath = `/src/content/user-guide/${folder}`;
const formattedSlug = formatSlug(documentation);
const mainPost = await fetchArticleFromSlug(documentation, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function UserGuideSlug({
params,
}: {
params: { documentation: string; folder: string };
}) {
const basePath = `/src/content/user-guide/${params.folder}`;
const mainPost = await fetchArticleFromSlug(params.documentation, basePath);
export default async function UserGuideSlug(
props: PageProps<'/user-guide/section/[folder]/[documentation]'>,
) {
const { folder, documentation } = await props.params;
const basePath = `/src/content/user-guide/${folder}`;
const mainPost = await fetchArticleFromSlug(documentation, basePath);
if (!mainPost) {
notFound();
}

View file

@ -8,26 +8,24 @@ import { formatSlug } from '@/shared-utils/formatSlug';
export const dynamic = 'force-dynamic';
export async function generateMetadata({
params,
}: {
params: { folder: string };
}): Promise<Metadata> {
const formattedSlug = formatSlug(params.folder);
export async function generateMetadata(
props: PageProps<'/user-guide/section/[folder]'>,
): Promise<Metadata> {
const { folder } = await props.params;
const formattedSlug = formatSlug(folder);
const basePath = '/src/content/user-guide';
const mainPost = await fetchArticleFromSlug(params.folder, basePath);
const mainPost = await fetchArticleFromSlug(folder, basePath);
return {
title: 'Twenty - ' + formattedSlug,
description: mainPost?.itemInfo?.info,
};
}
export default async function UserGuideSlug({
params,
}: {
params: { folder: string };
}) {
const filePath = `src/content/user-guide/${params.folder}/`;
export default async function UserGuideSlug(
props: PageProps<'/user-guide/section/[folder]'>,
) {
const { folder } = await props.params;
const filePath = `src/content/user-guide/${folder}/`;
const docsArticleCards = getDocsArticles(filePath);
const isSection = true;
const hasOnlyEmptySections = docsArticleCards.every(

View file

@ -5,12 +5,16 @@ import createCache from '@emotion/cache';
import { CacheProvider } from '@emotion/react';
import { useServerInsertedHTML } from 'next/navigation';
export default function RootStyleRegistry({ children }) {
export default function RootStyleRegistry({
children,
}: {
children: React.ReactNode;
}) {
const [{ cache, flush }] = useState(() => {
const cache = createCache({ key: 'emotion-cache' });
cache.compat = true;
const prevInsert = cache.insert;
let inserted = [];
let inserted: Array<string> = [];
cache.insert = (...args) => {
const serialized = args[1];
if (cache.inserted[serialized.name] === undefined) {

View file

@ -22,6 +22,8 @@
"@/*": ["./src/*"]
}
},
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/app/emotion-root-style-registry.js"],
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts",
"src/app/emotion-root-style-registry"
],
"exclude": ["node_modules"]
}

465
yarn.lock
View file

@ -4175,6 +4175,15 @@ __metadata:
languageName: node
linkType: hard
"@emnapi/runtime@npm:^1.5.0":
version: 1.5.0
resolution: "@emnapi/runtime@npm:1.5.0"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/a85c9fc4e3af49cbe41e5437e5be2551392a931910cd0a5b5d3572532786927810c9cc1db11b232ec8f9657b33d4e6f7c4f985f1a052917d7cd703b5b2a20faa
languageName: node
linkType: hard
"@emnapi/wasi-threads@npm:1.0.4":
version: 1.0.4
resolution: "@emnapi/wasi-threads@npm:1.0.4"
@ -7187,6 +7196,13 @@ __metadata:
languageName: node
linkType: hard
"@img/colour@npm:^1.0.0":
version: 1.0.0
resolution: "@img/colour@npm:1.0.0"
checksum: 10c0/02261719c1e0d7aa5a2d585981954f2ac126f0c432400aa1a01b925aa2c41417b7695da8544ee04fd29eba7ecea8eaf9b8bef06f19dc8faba78f94eeac40667d
languageName: node
linkType: hard
"@img/sharp-darwin-arm64@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-darwin-arm64@npm:0.33.5"
@ -7199,6 +7215,18 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-darwin-arm64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-darwin-arm64@npm:0.34.4"
dependencies:
"@img/sharp-libvips-darwin-arm64": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-darwin-arm64":
optional: true
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@img/sharp-darwin-x64@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-darwin-x64@npm:0.33.5"
@ -7211,6 +7239,18 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-darwin-x64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-darwin-x64@npm:0.34.4"
dependencies:
"@img/sharp-libvips-darwin-x64": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-darwin-x64":
optional: true
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@img/sharp-libvips-darwin-arm64@npm:1.0.4":
version: 1.0.4
resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.4"
@ -7218,6 +7258,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-libvips-darwin-arm64@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-darwin-arm64@npm:1.2.3"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@img/sharp-libvips-darwin-x64@npm:1.0.4":
version: 1.0.4
resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.4"
@ -7225,6 +7272,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-libvips-darwin-x64@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-darwin-x64@npm:1.2.3"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@img/sharp-libvips-linux-arm64@npm:1.0.4":
version: 1.0.4
resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.4"
@ -7232,6 +7286,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-libvips-linux-arm64@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-linux-arm64@npm:1.2.3"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linux-arm@npm:1.0.5":
version: 1.0.5
resolution: "@img/sharp-libvips-linux-arm@npm:1.0.5"
@ -7239,6 +7300,20 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-libvips-linux-arm@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-linux-arm@npm:1.2.3"
conditions: os=linux & cpu=arm & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linux-ppc64@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-linux-ppc64@npm:1.2.3"
conditions: os=linux & cpu=ppc64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linux-s390x@npm:1.0.4":
version: 1.0.4
resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.4"
@ -7246,6 +7321,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-libvips-linux-s390x@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-linux-s390x@npm:1.2.3"
conditions: os=linux & cpu=s390x & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linux-x64@npm:1.0.4":
version: 1.0.4
resolution: "@img/sharp-libvips-linux-x64@npm:1.0.4"
@ -7253,6 +7335,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-libvips-linux-x64@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-linux-x64@npm:1.2.3"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4":
version: 1.0.4
resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.4"
@ -7260,6 +7349,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-libvips-linuxmusl-arm64@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.2.3"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@img/sharp-libvips-linuxmusl-x64@npm:1.0.4":
version: 1.0.4
resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.4"
@ -7267,6 +7363,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-libvips-linuxmusl-x64@npm:1.2.3":
version: 1.2.3
resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.2.3"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@img/sharp-linux-arm64@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-linux-arm64@npm:0.33.5"
@ -7279,6 +7382,18 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-linux-arm64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-linux-arm64@npm:0.34.4"
dependencies:
"@img/sharp-libvips-linux-arm64": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-linux-arm64":
optional: true
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linux-arm@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-linux-arm@npm:0.33.5"
@ -7291,6 +7406,30 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-linux-arm@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-linux-arm@npm:0.34.4"
dependencies:
"@img/sharp-libvips-linux-arm": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-linux-arm":
optional: true
conditions: os=linux & cpu=arm & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linux-ppc64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-linux-ppc64@npm:0.34.4"
dependencies:
"@img/sharp-libvips-linux-ppc64": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-linux-ppc64":
optional: true
conditions: os=linux & cpu=ppc64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linux-s390x@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-linux-s390x@npm:0.33.5"
@ -7303,6 +7442,18 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-linux-s390x@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-linux-s390x@npm:0.34.4"
dependencies:
"@img/sharp-libvips-linux-s390x": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-linux-s390x":
optional: true
conditions: os=linux & cpu=s390x & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linux-x64@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-linux-x64@npm:0.33.5"
@ -7315,6 +7466,18 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-linux-x64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-linux-x64@npm:0.34.4"
dependencies:
"@img/sharp-libvips-linux-x64": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-linux-x64":
optional: true
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@img/sharp-linuxmusl-arm64@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.5"
@ -7327,6 +7490,18 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-linuxmusl-arm64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-linuxmusl-arm64@npm:0.34.4"
dependencies:
"@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-linuxmusl-arm64":
optional: true
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@img/sharp-linuxmusl-x64@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-linuxmusl-x64@npm:0.33.5"
@ -7339,6 +7514,18 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-linuxmusl-x64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-linuxmusl-x64@npm:0.34.4"
dependencies:
"@img/sharp-libvips-linuxmusl-x64": "npm:1.2.3"
dependenciesMeta:
"@img/sharp-libvips-linuxmusl-x64":
optional: true
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@img/sharp-wasm32@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-wasm32@npm:0.33.5"
@ -7348,6 +7535,22 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-wasm32@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-wasm32@npm:0.34.4"
dependencies:
"@emnapi/runtime": "npm:^1.5.0"
conditions: cpu=wasm32
languageName: node
linkType: hard
"@img/sharp-win32-arm64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-win32-arm64@npm:0.34.4"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@img/sharp-win32-ia32@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-win32-ia32@npm:0.33.5"
@ -7355,6 +7558,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-win32-ia32@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-win32-ia32@npm:0.34.4"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@img/sharp-win32-x64@npm:0.33.5":
version: 0.33.5
resolution: "@img/sharp-win32-x64@npm:0.33.5"
@ -7362,6 +7572,13 @@ __metadata:
languageName: node
linkType: hard
"@img/sharp-win32-x64@npm:0.34.4":
version: 0.34.4
resolution: "@img/sharp-win32-x64@npm:0.34.4"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@inquirer/checkbox@npm:^2.5.0":
version: 2.5.0
resolution: "@inquirer/checkbox@npm:2.5.0"
@ -10211,21 +10428,19 @@ __metadata:
languageName: node
linkType: hard
"@next/eslint-plugin-next@npm:15.4.6":
version: 15.4.6
resolution: "@next/eslint-plugin-next@npm:15.4.6"
dependencies:
fast-glob: "npm:3.3.1"
checksum: 10c0/5a1a216474882bdeedf2033e6cae52c3add92436a9f781e3b68dccc7b9f2d24373536d8fd2d934cc5535352d7ca17529281fb6f61859cec5bed6366ee9c372cc
"@next/env@npm:15.5.4":
version: 15.5.4
resolution: "@next/env@npm:15.5.4"
checksum: 10c0/bcf043a353e601321e6d4fb190796d7f098a08007fe2039b6a6b384df641782abfaa8e1d1d9c85ab6987323979f4f75cd4fefd3fd17d2400b881541481bee474
languageName: node
linkType: hard
"@next/eslint-plugin-next@npm:^14.1.4":
version: 14.2.5
resolution: "@next/eslint-plugin-next@npm:14.2.5"
"@next/eslint-plugin-next@npm:15.5.4, @next/eslint-plugin-next@npm:^15.5.4":
version: 15.5.4
resolution: "@next/eslint-plugin-next@npm:15.5.4"
dependencies:
glob: "npm:10.3.10"
checksum: 10c0/13eefc2a17e37925ded8e43ae2446a73cbc5a23ade7a73c33adb75d3d2907ec75cedd8534f89a361ce8e63b5141d7e2d38aed40abd8b4eb3e7c21ba84f6bda8a
fast-glob: "npm:3.3.1"
checksum: 10c0/dc90be5e86d06d61b8b5b495ed2073981ef672f707016611b47af04f15fbd6fb7c7a209d773290370e06b6409cb32b5d02146d909b3e4960750869d994b55a7b
languageName: node
linkType: hard
@ -10243,6 +10458,13 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-darwin-arm64@npm:15.5.4":
version: 15.5.4
resolution: "@next/swc-darwin-arm64@npm:15.5.4"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@next/swc-darwin-x64@npm:14.2.31":
version: 14.2.31
resolution: "@next/swc-darwin-x64@npm:14.2.31"
@ -10257,6 +10479,13 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-darwin-x64@npm:15.5.4":
version: 15.5.4
resolution: "@next/swc-darwin-x64@npm:15.5.4"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@next/swc-linux-arm64-gnu@npm:14.2.31":
version: 14.2.31
resolution: "@next/swc-linux-arm64-gnu@npm:14.2.31"
@ -10271,6 +10500,13 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-linux-arm64-gnu@npm:15.5.4":
version: 15.5.4
resolution: "@next/swc-linux-arm64-gnu@npm:15.5.4"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@next/swc-linux-arm64-musl@npm:14.2.31":
version: 14.2.31
resolution: "@next/swc-linux-arm64-musl@npm:14.2.31"
@ -10285,6 +10521,13 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-linux-arm64-musl@npm:15.5.4":
version: 15.5.4
resolution: "@next/swc-linux-arm64-musl@npm:15.5.4"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@next/swc-linux-x64-gnu@npm:14.2.31":
version: 14.2.31
resolution: "@next/swc-linux-x64-gnu@npm:14.2.31"
@ -10299,6 +10542,13 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-linux-x64-gnu@npm:15.5.4":
version: 15.5.4
resolution: "@next/swc-linux-x64-gnu@npm:15.5.4"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@next/swc-linux-x64-musl@npm:14.2.31":
version: 14.2.31
resolution: "@next/swc-linux-x64-musl@npm:14.2.31"
@ -10313,6 +10563,13 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-linux-x64-musl@npm:15.5.4":
version: 15.5.4
resolution: "@next/swc-linux-x64-musl@npm:15.5.4"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@next/swc-win32-arm64-msvc@npm:14.2.31":
version: 14.2.31
resolution: "@next/swc-win32-arm64-msvc@npm:14.2.31"
@ -10327,6 +10584,13 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-win32-arm64-msvc@npm:15.5.4":
version: 15.5.4
resolution: "@next/swc-win32-arm64-msvc@npm:15.5.4"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@next/swc-win32-ia32-msvc@npm:14.2.31":
version: 14.2.31
resolution: "@next/swc-win32-ia32-msvc@npm:14.2.31"
@ -10348,6 +10612,13 @@ __metadata:
languageName: node
linkType: hard
"@next/swc-win32-x64-msvc@npm:15.5.4":
version: 15.5.4
resolution: "@next/swc-win32-x64-msvc@npm:15.5.4"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@nivo/annotations@npm:0.99.0":
version: 0.99.0
resolution: "@nivo/annotations@npm:0.99.0"
@ -30252,6 +30523,13 @@ __metadata:
languageName: node
linkType: hard
"detect-libc@npm:^2.1.0":
version: 2.1.2
resolution: "detect-libc@npm:2.1.2"
checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4
languageName: node
linkType: hard
"detect-newline@npm:^3.0.0, detect-newline@npm:^3.1.0":
version: 3.1.0
resolution: "detect-newline@npm:3.1.0"
@ -31950,11 +32228,11 @@ __metadata:
languageName: node
linkType: hard
"eslint-config-next@npm:^15.1.0":
version: 15.4.6
resolution: "eslint-config-next@npm:15.4.6"
"eslint-config-next@npm:^15.5.4":
version: 15.5.4
resolution: "eslint-config-next@npm:15.5.4"
dependencies:
"@next/eslint-plugin-next": "npm:15.4.6"
"@next/eslint-plugin-next": "npm:15.5.4"
"@rushstack/eslint-patch": "npm:^1.10.3"
"@typescript-eslint/eslint-plugin": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0"
"@typescript-eslint/parser": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0"
@ -31970,7 +32248,7 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
checksum: 10c0/06d139af13a03d196509a905375730280f928e9609d79934d8be49126899739580117a28473ba4fbaad47a3dfd6b0623c1cd5b73c9f3be910bcae4ff03d5a340
checksum: 10c0/5e2065ca17f16a85fdde7791b593890f8180e9c8cba7ecff12248d76afdb8f3de2c1f6f0440ac54d9fd0d2e86dbddb968bc263e77f663edaa6cc30b2a8c43b1f
languageName: node
linkType: hard
@ -43283,16 +43561,16 @@ __metadata:
languageName: node
linkType: hard
"next-runtime-env@npm:^3.2.2":
version: 3.2.2
resolution: "next-runtime-env@npm:3.2.2"
"next-runtime-env@npm:^3.3.0":
version: 3.3.0
resolution: "next-runtime-env@npm:3.3.0"
dependencies:
next: "npm:^14"
react: "npm:^18"
peerDependencies:
next: ^14
react: ^18
checksum: 10c0/9ac2649fd765b82f340af5d77083f851a4e865acc9e32e9df092ba06cf5f4066b94ee7a3994677ef362d59802457f5becad8d49f3c9a75e77b68179e65c5ecee
checksum: 10c0/7e59dfd138badc7925cd3f42ff826d7121f8e53399957f61906d1e10957a855b1f21f750984431cb448c9371f400170898e5e3125beef58ac7e9d1b74e073a87
languageName: node
linkType: hard
@ -43364,7 +43642,7 @@ __metadata:
languageName: node
linkType: hard
"next@npm:^14, next@npm:^14.2.0":
"next@npm:^14":
version: 14.2.31
resolution: "next@npm:14.2.31"
dependencies:
@ -43422,6 +43700,65 @@ __metadata:
languageName: node
linkType: hard
"next@npm:^15.5.4":
version: 15.5.4
resolution: "next@npm:15.5.4"
dependencies:
"@next/env": "npm:15.5.4"
"@next/swc-darwin-arm64": "npm:15.5.4"
"@next/swc-darwin-x64": "npm:15.5.4"
"@next/swc-linux-arm64-gnu": "npm:15.5.4"
"@next/swc-linux-arm64-musl": "npm:15.5.4"
"@next/swc-linux-x64-gnu": "npm:15.5.4"
"@next/swc-linux-x64-musl": "npm:15.5.4"
"@next/swc-win32-arm64-msvc": "npm:15.5.4"
"@next/swc-win32-x64-msvc": "npm:15.5.4"
"@swc/helpers": "npm:0.5.15"
caniuse-lite: "npm:^1.0.30001579"
postcss: "npm:8.4.31"
sharp: "npm:^0.34.3"
styled-jsx: "npm:5.1.6"
peerDependencies:
"@opentelemetry/api": ^1.1.0
"@playwright/test": ^1.51.1
babel-plugin-react-compiler: "*"
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
sass: ^1.3.0
dependenciesMeta:
"@next/swc-darwin-arm64":
optional: true
"@next/swc-darwin-x64":
optional: true
"@next/swc-linux-arm64-gnu":
optional: true
"@next/swc-linux-arm64-musl":
optional: true
"@next/swc-linux-x64-gnu":
optional: true
"@next/swc-linux-x64-musl":
optional: true
"@next/swc-win32-arm64-msvc":
optional: true
"@next/swc-win32-x64-msvc":
optional: true
sharp:
optional: true
peerDependenciesMeta:
"@opentelemetry/api":
optional: true
"@playwright/test":
optional: true
babel-plugin-react-compiler:
optional: true
sass:
optional: true
bin:
next: dist/bin/next
checksum: 10c0/3b5f04ed86d863bd5942b8ffb1ba8343da707579e720225c262d833d1b36c0daa0dbc3e6b24192280d0e02b066ac006a2b78673bbced19ca829de09bb4a2d73c
languageName: node
linkType: hard
"nice-napi@npm:^1.0.2":
version: 1.0.2
resolution: "nice-napi@npm:1.0.2"
@ -49617,6 +49954,84 @@ __metadata:
languageName: node
linkType: hard
"sharp@npm:^0.34.3":
version: 0.34.4
resolution: "sharp@npm:0.34.4"
dependencies:
"@img/colour": "npm:^1.0.0"
"@img/sharp-darwin-arm64": "npm:0.34.4"
"@img/sharp-darwin-x64": "npm:0.34.4"
"@img/sharp-libvips-darwin-arm64": "npm:1.2.3"
"@img/sharp-libvips-darwin-x64": "npm:1.2.3"
"@img/sharp-libvips-linux-arm": "npm:1.2.3"
"@img/sharp-libvips-linux-arm64": "npm:1.2.3"
"@img/sharp-libvips-linux-ppc64": "npm:1.2.3"
"@img/sharp-libvips-linux-s390x": "npm:1.2.3"
"@img/sharp-libvips-linux-x64": "npm:1.2.3"
"@img/sharp-libvips-linuxmusl-arm64": "npm:1.2.3"
"@img/sharp-libvips-linuxmusl-x64": "npm:1.2.3"
"@img/sharp-linux-arm": "npm:0.34.4"
"@img/sharp-linux-arm64": "npm:0.34.4"
"@img/sharp-linux-ppc64": "npm:0.34.4"
"@img/sharp-linux-s390x": "npm:0.34.4"
"@img/sharp-linux-x64": "npm:0.34.4"
"@img/sharp-linuxmusl-arm64": "npm:0.34.4"
"@img/sharp-linuxmusl-x64": "npm:0.34.4"
"@img/sharp-wasm32": "npm:0.34.4"
"@img/sharp-win32-arm64": "npm:0.34.4"
"@img/sharp-win32-ia32": "npm:0.34.4"
"@img/sharp-win32-x64": "npm:0.34.4"
detect-libc: "npm:^2.1.0"
semver: "npm:^7.7.2"
dependenciesMeta:
"@img/sharp-darwin-arm64":
optional: true
"@img/sharp-darwin-x64":
optional: true
"@img/sharp-libvips-darwin-arm64":
optional: true
"@img/sharp-libvips-darwin-x64":
optional: true
"@img/sharp-libvips-linux-arm":
optional: true
"@img/sharp-libvips-linux-arm64":
optional: true
"@img/sharp-libvips-linux-ppc64":
optional: true
"@img/sharp-libvips-linux-s390x":
optional: true
"@img/sharp-libvips-linux-x64":
optional: true
"@img/sharp-libvips-linuxmusl-arm64":
optional: true
"@img/sharp-libvips-linuxmusl-x64":
optional: true
"@img/sharp-linux-arm":
optional: true
"@img/sharp-linux-arm64":
optional: true
"@img/sharp-linux-ppc64":
optional: true
"@img/sharp-linux-s390x":
optional: true
"@img/sharp-linux-x64":
optional: true
"@img/sharp-linuxmusl-arm64":
optional: true
"@img/sharp-linuxmusl-x64":
optional: true
"@img/sharp-wasm32":
optional: true
"@img/sharp-win32-arm64":
optional: true
"@img/sharp-win32-ia32":
optional: true
"@img/sharp-win32-x64":
optional: true
checksum: 10c0/c2d8afab823a53bb720c42aaddde2031d7a1e25b7f1bd123e342b6b77ffce5e2730017fd52282cadf6109b325bc16f35be4771caa040cf2855978b709be35f05
languageName: node
linkType: hard
"shasum-object@npm:^1.0.0":
version: 1.0.0
resolution: "shasum-object@npm:1.0.0"
@ -52839,17 +53254,17 @@ __metadata:
"@keystatic/core": "npm:^0.5.45"
"@keystatic/next": "npm:^5.0.3"
"@markdoc/markdoc": "npm:^0.5.1"
"@next/eslint-plugin-next": "npm:^14.1.4"
"@next/eslint-plugin-next": "npm:^15.5.4"
"@nivo/calendar": "npm:^0.99.0"
"@types/facepaint": "npm:^1.2.5"
date-fns: "npm:^2.30.0"
drizzle-kit: "npm:^0.20.14"
eslint-config-next: "npm:^15.1.0"
eslint-config-next: "npm:^15.5.4"
facepaint: "npm:^1.2.1"
gray-matter: "npm:^4.0.3"
next: "npm:^14.2.0"
next: "npm:^15.5.4"
next-mdx-remote: "npm:^4.4.1"
next-runtime-env: "npm:^3.2.2"
next-runtime-env: "npm:^3.3.0"
postgres: "npm:^3.4.3"
react-tooltip: "npm:^5.13.1"
twenty-ui: "workspace:*"