chore: upgrade Next.js, next-intl, and Headless UI to latest versions

This commit is contained in:
Mauricio Siu
2025-03-02 18:50:34 -06:00
parent 06b33b6d8d
commit 9d8df9986e
11 changed files with 295 additions and 184 deletions

View File

@@ -13,3 +13,11 @@ yarn dev
``` ```
Open http://localhost:3000 with your browser to see the result. Open http://localhost:3000 with your browser to see the result.
For Blog Page, you can use the following command to generate the static pages:
```
GHOST_URL=""
GHOST_KEY=""
```

View File

@@ -1,7 +1,7 @@
import { CopyButton } from "@/components/ui/copy-button"; import { CopyButton } from "@/components/ui/copy-button";
import { getPost, getPosts } from "@/lib/ghost"; import { getPost, getPosts } from "@/lib/ghost";
import type { Metadata, ResolvingMetadata } from "next"; import type { Metadata, ResolvingMetadata } from "next";
import { getTranslations } from "next-intl/server"; import { getTranslations, setRequestLocale } from "next-intl/server";
import Image from "next/image"; import Image from "next/image";
import Link from "next/link"; import Link from "next/link";
import { notFound } from "next/navigation"; import { notFound } from "next/navigation";
@@ -27,7 +27,8 @@ export async function generateMetadata(
{ params }: Props, { params }: Props,
parent: ResolvingMetadata, parent: ResolvingMetadata,
): Promise<Metadata> { ): Promise<Metadata> {
const post = await getPost(params.slug); const { locale, slug } = await params;
const post = await getPost(slug);
if (!post) { if (!post) {
return { return {
@@ -36,10 +37,10 @@ export async function generateMetadata(
} }
const ogUrl = new URL( const ogUrl = new URL(
`/${params.locale}/api/og`, `/${locale}/api/og`,
process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000", process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000",
); );
ogUrl.searchParams.set("slug", params.slug); ogUrl.searchParams.set("slug", slug);
return { return {
title: post.title, title: post.title,
@@ -69,10 +70,14 @@ export async function generateMetadata(
export async function generateStaticParams() { export async function generateStaticParams() {
const posts = await getPosts(); const posts = await getPosts();
const locales = ["en", "fr", "zh-Hans"];
return posts.map((post) => ({ return posts.flatMap((post) =>
slug: post.slug, locales.map((locale) => ({
})); locale,
slug: post.slug,
})),
);
} }
interface CodeProps interface CodeProps
@@ -126,13 +131,14 @@ async function CodeBlock(props: LanguageProps) {
<CopyButton text={format} /> <CopyButton text={format} />
<div <div
dangerouslySetInnerHTML={{ __html: out }} dangerouslySetInnerHTML={{ __html: out }}
className="text-sm p-4 rounded-lg bg-[#18191F]" className="text-sm p-4 rounded-lg bg-[#18191F] overflow-auto"
/> />
</div> </div>
); );
} }
export default async function BlogPostPage({ params }: Props) { export default async function BlogPostPage({ params }: Props) {
const { locale, slug } = params; const { locale, slug } = await params;
// setRequestLocale(locale);
const t = await getTranslations({ locale, namespace: "blog" }); const t = await getTranslations({ locale, namespace: "blog" });
const post = await getPost(slug); const post = await getPost(slug);
const allPosts = await getPosts(); const allPosts = await getPosts();
@@ -164,7 +170,10 @@ export default async function BlogPostPage({ params }: Props) {
const components: Partial<Components> = { const components: Partial<Components> = {
h1: ({ node, ...props }) => ( h1: ({ node, ...props }) => (
<h1 className="text-3xl text-primary font-bold mt-8 mb-4" {...props} /> <h1
className="text-xl md:text-2xl xl:text-3xl text-primary font-bold mt-8 mb-4"
{...props}
/>
), ),
h2: ({ node, ...props }) => ( h2: ({ node, ...props }) => (
<h2 className="text-2xl text-primary/90 font-bold mt-6 mb-3" {...props} /> <h2 className="text-2xl text-primary/90 font-bold mt-6 mb-3" {...props} />
@@ -230,7 +239,7 @@ export default async function BlogPostPage({ params }: Props) {
<ZoomableImage <ZoomableImage
src={src || ""} src={src || ""}
alt={alt || ""} alt={alt || ""}
className="object-cover max-w-lg mx-auto rounded-lg border border-border" className="object-cover max-w-lg mx-auto rounded-lg border max-lg:w-64 border-border overflow-hidden"
/> />
), ),
code: ({ inline, className, children, ...props }: CodeProps) => { code: ({ inline, className, children, ...props }: CodeProps) => {
@@ -245,7 +254,7 @@ export default async function BlogPostPage({ params }: Props) {
}; };
return ( return (
<article className="container mx-auto px-4 py-12 max-w-5xl"> <article className="container mx-auto px-4 pb-12 max-w-5xl">
<Link <Link
href="/blog" href="/blog"
className="inline-flex items-center mb-8 text-primary hover:text-primary/80 transition-colors" className="inline-flex items-center mb-8 text-primary hover:text-primary/80 transition-colors"
@@ -267,7 +276,9 @@ export default async function BlogPostPage({ params }: Props) {
<div className=" rounded-lg p-8 shadow-lg border border-border"> <div className=" rounded-lg p-8 shadow-lg border border-border">
<header className="mb-8"> <header className="mb-8">
<h1 className="text-4xl font-bold mb-4">{post.title}</h1> <h1 className="text-2xl md:text-3xl xl:text-4xl font-bold mb-4">
{post.title}
</h1>
<div className="flex items-center mb-6"> <div className="flex items-center mb-6">
{post.primary_author?.profile_image && ( {post.primary_author?.profile_image && (
<div className="relative h-12 w-12 rounded-full overflow-hidden mr-4"> <div className="relative h-12 w-12 rounded-full overflow-hidden mr-4">

View File

@@ -2,7 +2,7 @@ import { getPosts, getTags } from "@/lib/ghost";
import type { Post } from "@/lib/ghost"; import type { Post } from "@/lib/ghost";
import { RssIcon } from "lucide-react"; import { RssIcon } from "lucide-react";
import type { Metadata } from "next"; import type { Metadata } from "next";
import { getTranslations } from "next-intl/server"; import { getTranslations, setRequestLocale } from "next-intl/server";
import Link from "next/link"; import Link from "next/link";
import { BlogPostCard } from "./components/BlogPostCard"; import { BlogPostCard } from "./components/BlogPostCard";
import { SearchAndFilter } from "./components/SearchAndFilter"; import { SearchAndFilter } from "./components/SearchAndFilter";
@@ -19,19 +19,22 @@ export const metadata: Metadata = {
}; };
export default async function BlogPage({ export default async function BlogPage({
params: { locale }, params,
searchParams, searchParams,
}: { }: {
params: { locale: string }; params: { locale: string };
searchParams: { [key: string]: string | string[] | undefined }; searchParams: { [key: string]: string | string[] | undefined };
}) { }) {
const { locale } = await params;
const searchParams2 = await searchParams;
setRequestLocale(locale);
const t = await getTranslations({ locale, namespace: "blog" }); const t = await getTranslations({ locale, namespace: "blog" });
const posts = await getPosts(); const posts = await getPosts();
const tags = (await getTags()) as Tag[]; const tags = (await getTags()) as Tag[];
const search = const search =
typeof searchParams.search === "string" ? searchParams.search : ""; typeof searchParams2.search === "string" ? searchParams2.search : "";
const selectedTag = const selectedTag =
typeof searchParams.tag === "string" ? searchParams.tag : ""; typeof searchParams2.tag === "string" ? searchParams2.tag : "";
const filteredPosts = posts.filter((post) => { const filteredPosts = posts.filter((post) => {
const matchesSearch = const matchesSearch =

View File

@@ -4,6 +4,7 @@ import "react-photo-view/dist/react-photo-view.css";
import { Footer } from "@/components/Footer"; import { Footer } from "@/components/Footer";
import { Header } from "@/components/Header"; import { Header } from "@/components/Header";
import type { Metadata } from "next"; import type { Metadata } from "next";
import { setRequestLocale } from "next-intl/server";
export const metadata: Metadata = { export const metadata: Metadata = {
metadataBase: new URL("https://dokploy.com"), metadataBase: new URL("https://dokploy.com"),
@@ -75,6 +76,8 @@ export default async function RootLayout({
children: React.ReactNode; children: React.ReactNode;
params: { locale: string }; params: { locale: string };
}) { }) {
const { locale } = await params;
setRequestLocale(locale);
return ( return (
<div className="flex h-full flex-col"> <div className="flex h-full flex-col">
<Header /> <Header />

View File

@@ -1,5 +0,0 @@
import { SlimLayout } from "@/components/SlimLayout";
export default function NotFound() {
return <SlimLayout />;
}

View File

@@ -7,8 +7,11 @@ import { Pricing } from "@/components/pricing";
import { SecondaryFeaturesSections } from "@/components/secondary-features"; import { SecondaryFeaturesSections } from "@/components/secondary-features";
import { Sponsors } from "@/components/sponsors"; import { Sponsors } from "@/components/sponsors";
import { StatsSection } from "@/components/stats"; import { StatsSection } from "@/components/stats";
import { setRequestLocale } from "next-intl/server";
export default function Home() { export default async function Home({ params }: { params: { locale: string } }) {
const { locale } = await params;
setRequestLocale(locale);
return ( return (
<div> <div>
<main> <main>

View File

@@ -1,20 +1,18 @@
import { Link } from "@/i18n/routing"; import { Link } from "@/i18n/routing";
import { useTranslations } from "next-intl";
export function SlimLayout() { export function SlimLayout() {
const t = useTranslations("404");
return ( return (
<> <>
<main className="flex flex-auto items-center justify-center text-center"> <main className="flex flex-auto items-center justify-center text-center">
<div> <div>
<h1 className="mb-4 text-6xl font-semibold text-primary">404</h1> <h1 className="mb-4 text-6xl font-semibold text-primary">404</h1>
<p className="mb-4 text-lg text-muted-foreground">{t("title")}</p> <p className="mb-4 text-lg text-muted-foreground">Not found.</p>
<p className="mt-4 text-muted-foreground"> <p className="mt-4 text-muted-foreground">
{t("des")}{" "} Go back to home
<Link href="/" className="text-primary"> <Link href="/" className="text-primary">
{t("action")} Go back to home
</Link> </Link>
p{" "} .
</p> </p>
</div> </div>
</main> </main>

View File

@@ -6,8 +6,6 @@ import { useEffect, useState } from "react";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
import { useTranslations } from "next-intl"; import { useTranslations } from "next-intl";
import { Container } from "./Container";
import Safari from "./ui/safari";
const features = [ const features = [
{ {

View File

@@ -1,12 +1,15 @@
import { getRequestConfig } from "next-intl/server"; import { getRequestConfig } from "next-intl/server";
import { notFound } from "next/navigation";
import { routing } from "./routing"; import { routing } from "./routing";
export default getRequestConfig(async ({ locale }) => { export default getRequestConfig(async ({ requestLocale }) => {
let locale = await requestLocale;
// Validate that the incoming `locale` parameter is valid // Validate that the incoming `locale` parameter is valid
if (!routing.locales.includes(locale as any)) notFound(); if (!locale || !routing.locales.includes(locale as any)) {
locale = routing.defaultLocale;
}
return { return {
locale,
messages: (await import(`../locales/${locale}.json`)).default, messages: (await import(`../locales/${locale}.json`)).default,
}; };
}); });

View File

@@ -12,7 +12,7 @@
}, },
"browserslist": "defaults, not ie <= 11", "browserslist": "defaults, not ie <= 11",
"dependencies": { "dependencies": {
"@headlessui/react": "^1.7.17", "@headlessui/react": "^2.2.0",
"@headlessui/tailwindcss": "^0.2.0", "@headlessui/tailwindcss": "^0.2.0",
"@radix-ui/react-accordion": "^1.2.1", "@radix-ui/react-accordion": "^1.2.1",
"@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-avatar": "^1.1.1",
@@ -32,8 +32,8 @@
"clsx": "^2.1.0", "clsx": "^2.1.0",
"framer-motion": "^11.3.19", "framer-motion": "^11.3.19",
"lucide-react": "0.364.0", "lucide-react": "0.364.0",
"next": "14.2.2", "next": "15.2.0",
"next-intl": "^3.19.0", "next-intl": "^3.26.5",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",
"react-ga4": "^2.1.0", "react-ga4": "^2.1.0",

383
pnpm-lock.yaml generated
View File

@@ -92,8 +92,8 @@ importers:
apps/website: apps/website:
dependencies: dependencies:
'@headlessui/react': '@headlessui/react':
specifier: ^1.7.17 specifier: ^2.2.0
version: 1.7.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0) version: 2.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@headlessui/tailwindcss': '@headlessui/tailwindcss':
specifier: ^0.2.0 specifier: ^0.2.0
version: 0.2.1(tailwindcss@3.4.7) version: 0.2.1(tailwindcss@3.4.7)
@@ -155,11 +155,11 @@ importers:
specifier: 0.364.0 specifier: 0.364.0
version: 0.364.0(react@18.2.0) version: 0.364.0(react@18.2.0)
next: next:
specifier: 14.2.2 specifier: 15.2.0
version: 14.2.2(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) version: 15.2.0(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
next-intl: next-intl:
specifier: ^3.19.0 specifier: ^3.26.5
version: 3.19.0(next@14.2.2(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) version: 3.26.5(next@15.2.0(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)
react: react:
specifier: 18.2.0 specifier: 18.2.0
version: 18.2.0 version: 18.2.0
@@ -814,9 +814,24 @@ packages:
react: '>=16.8.0' react: '>=16.8.0'
react-dom: '>=16.8.0' react-dom: '>=16.8.0'
'@floating-ui/react-dom@2.1.2':
resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
'@floating-ui/react@0.26.28':
resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==}
peerDependencies:
react: '>=16.8.0'
react-dom: '>=16.8.0'
'@floating-ui/utils@0.2.5': '@floating-ui/utils@0.2.5':
resolution: {integrity: sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==} resolution: {integrity: sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==}
'@floating-ui/utils@0.2.9':
resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
'@formatjs/ecma402-abstract@2.0.0': '@formatjs/ecma402-abstract@2.0.0':
resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==} resolution: {integrity: sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==}
@@ -839,12 +854,12 @@ packages:
resolution: {integrity: sha512-vVnuwLqW8WJsg09EanNHnXnzsjYYsZE7JlD4M1sLvDnWGjvYJKNU6VpRqDxOiDChUszDZFKhxQSNYGShF0bKJg==} resolution: {integrity: sha512-vVnuwLqW8WJsg09EanNHnXnzsjYYsZE7JlD4M1sLvDnWGjvYJKNU6VpRqDxOiDChUszDZFKhxQSNYGShF0bKJg==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
'@headlessui/react@1.7.19': '@headlessui/react@2.2.0':
resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} resolution: {integrity: sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
react: ^16 || ^17 || ^18 react: ^18 || ^19 || ^19.0.0-rc
react-dom: ^16 || ^17 || ^18 react-dom: ^18 || ^19 || ^19.0.0-rc
'@headlessui/tailwindcss@0.2.1': '@headlessui/tailwindcss@0.2.1':
resolution: {integrity: sha512-2+5+NZ+RzMyrVeCZOxdbvkUSssSxGvcUxphkIfSVLpRiKsj+/63T2TOL9dBYMXVfj/CGr6hMxSRInzXv6YY7sA==} resolution: {integrity: sha512-2+5+NZ+RzMyrVeCZOxdbvkUSssSxGvcUxphkIfSVLpRiKsj+/63T2TOL9dBYMXVfj/CGr6hMxSRInzXv6YY7sA==}
@@ -988,17 +1003,11 @@ packages:
'@mixmark-io/domino@2.2.0': '@mixmark-io/domino@2.2.0':
resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==} resolution: {integrity: sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==}
'@next/env@14.2.2':
resolution: {integrity: sha512-sk72qRfM1Q90XZWYRoJKu/UWlTgihrASiYw/scb15u+tyzcze3bOuJ/UV6TBOQEeUaxOkRqGeuGUdiiuxc5oqw==}
'@next/env@15.0.3': '@next/env@15.0.3':
resolution: {integrity: sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==} resolution: {integrity: sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==}
'@next/swc-darwin-arm64@14.2.2': '@next/env@15.2.0':
resolution: {integrity: sha512-3iPgMhzbalizGwHNFUcGnDhFPSgVBHQ8aqSTAMxB5BvJG0oYrDf1WOJZlbXBgunOEj/8KMVbejEur/FpvFsgFQ==} resolution: {integrity: sha512-eMgJu1RBXxxqqnuRJQh5RozhskoNUDHBFybvi+Z+yK9qzKeG7dadhv/Vp1YooSZmCnegf7JxWuapV77necLZNA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@next/swc-darwin-arm64@15.0.3': '@next/swc-darwin-arm64@15.0.3':
resolution: {integrity: sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==} resolution: {integrity: sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==}
@@ -1006,10 +1015,10 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@next/swc-darwin-x64@14.2.2': '@next/swc-darwin-arm64@15.2.0':
resolution: {integrity: sha512-x7Afi/jt0ZBRUZHTi49yyej4o8znfIMHO4RvThuoc0P+uli8Jd99y5GKjxoYunPKsXL09xBXEM1+OQy2xEL0Ag==} resolution: {integrity: sha512-rlp22GZwNJjFCyL7h5wz9vtpBVuCt3ZYjFWpEPBGzG712/uL1bbSkS675rVAUCRZ4hjoTJ26Q7IKhr5DfJrHDA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [arm64]
os: [darwin] os: [darwin]
'@next/swc-darwin-x64@15.0.3': '@next/swc-darwin-x64@15.0.3':
@@ -1018,11 +1027,11 @@ packages:
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@next/swc-linux-arm64-gnu@14.2.2': '@next/swc-darwin-x64@15.2.0':
resolution: {integrity: sha512-zbfPtkk7L41ODMJwSp5VbmPozPmMMQrzAc0HAUomVeVIIwlDGs/UCqLJvLNDt4jpWgc21SjjyIn762lNGrMaUA==} resolution: {integrity: sha512-DiU85EqSHogCz80+sgsx90/ecygfCSGl5P3b4XDRVZpgujBm5lp4ts7YaHru7eVTyZMjHInzKr+w0/7+qDrvMA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [x64]
os: [linux] os: [darwin]
'@next/swc-linux-arm64-gnu@15.0.3': '@next/swc-linux-arm64-gnu@15.0.3':
resolution: {integrity: sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==} resolution: {integrity: sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==}
@@ -1030,8 +1039,8 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@next/swc-linux-arm64-musl@14.2.2': '@next/swc-linux-arm64-gnu@15.2.0':
resolution: {integrity: sha512-wPbS3pI/JU16rm3XdLvvTmlsmm1nd+sBa2ohXgBZcShX4TgOjD4R+RqHKlI1cjo/jDZKXt6OxmcU0Iys0OC/yg==} resolution: {integrity: sha512-VnpoMaGukiNWVxeqKHwi8MN47yKGyki5q+7ql/7p/3ifuU2341i/gDwGK1rivk0pVYbdv5D8z63uu9yMw0QhpQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@@ -1042,10 +1051,10 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@next/swc-linux-x64-gnu@14.2.2': '@next/swc-linux-arm64-musl@15.2.0':
resolution: {integrity: sha512-NqWOHqqq8iC9tuHvZxjQ2tX+jWy2X9y8NX2mcB4sj2bIccuCxbIZrU/ThFPZZPauygajZuVQ6zediejQHwZHwQ==} resolution: {integrity: sha512-ka97/ssYE5nPH4Qs+8bd8RlYeNeUVBhcnsNUmFM6VWEob4jfN9FTr0NBhXVi1XEJpj3cMfgSRW+LdE3SUZbPrw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [arm64]
os: [linux] os: [linux]
'@next/swc-linux-x64-gnu@15.0.3': '@next/swc-linux-x64-gnu@15.0.3':
@@ -1054,8 +1063,8 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@next/swc-linux-x64-musl@14.2.2': '@next/swc-linux-x64-gnu@15.2.0':
resolution: {integrity: sha512-lGepHhwb9sGhCcU7999+iK1ZZT+6rrIoVg40MP7DZski9GIZP80wORSbt5kJzh9v2x2ev2lxC6VgwMQT0PcgTA==} resolution: {integrity: sha512-zY1JduE4B3q0k2ZCE+DAF/1efjTXUsKP+VXRtrt/rJCTgDlUyyryx7aOgYXNc1d8gobys/Lof9P9ze8IyRDn7Q==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@@ -1066,11 +1075,11 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@next/swc-win32-arm64-msvc@14.2.2': '@next/swc-linux-x64-musl@15.2.0':
resolution: {integrity: sha512-TZSh/48SfcLEQ4rD25VVn2kdIgUWmMflRX3OiyPwGNXn3NiyPqhqei/BaqCYXViIQ+6QsG9R0C8LftMqy8JPMA==} resolution: {integrity: sha512-QqvLZpurBD46RhaVaVBepkVQzh8xtlUN00RlG4Iq1sBheNugamUNPuZEH1r9X1YGQo1KqAe1iiShF0acva3jHQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [x64]
os: [win32] os: [linux]
'@next/swc-win32-arm64-msvc@15.0.3': '@next/swc-win32-arm64-msvc@15.0.3':
resolution: {integrity: sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==} resolution: {integrity: sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==}
@@ -1078,16 +1087,10 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@next/swc-win32-ia32-msvc@14.2.2': '@next/swc-win32-arm64-msvc@15.2.0':
resolution: {integrity: sha512-M0tBVNMEBJN2ZNQWlcekMn6pvLria7Sa2Fai5znm7CCJz4pP3lrvlSxhKdkCerk0D9E0bqx5yAo3o2Q7RrD4gA==} resolution: {integrity: sha512-ODZ0r9WMyylTHAN6pLtvUtQlGXBL9voljv6ujSlcsjOxhtXPI1Ag6AhZK0SE8hEpR1374WZZ5w33ChpJd5fsjw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [ia32] cpu: [arm64]
os: [win32]
'@next/swc-win32-x64-msvc@14.2.2':
resolution: {integrity: sha512-a/20E/wtTJZ3Ykv3f/8F0l7TtgQa2LWHU2oNB9bsu0VjqGuGGHmm/q6waoUNQYTVPYrrlxxaHjJcDV6aiSTt/w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32] os: [win32]
'@next/swc-win32-x64-msvc@15.0.3': '@next/swc-win32-x64-msvc@15.0.3':
@@ -1096,6 +1099,12 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@next/swc-win32-x64-msvc@15.2.0':
resolution: {integrity: sha512-8+4Z3Z7xa13NdUuUAcpVNA6o76lNPniBd9Xbo02bwXQXnZgFvEopwY2at5+z7yHl47X9qbZpvwatZ2BRo3EdZw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
@@ -1577,6 +1586,40 @@ packages:
'@radix-ui/rect@1.1.0': '@radix-ui/rect@1.1.0':
resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
'@react-aria/focus@3.19.1':
resolution: {integrity: sha512-bix9Bu1Ue7RPcYmjwcjhB14BMu2qzfJ3tMQLqDc9pweJA66nOw8DThy3IfVr8Z7j2PHktOLf9kcbiZpydKHqzg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/interactions@3.23.0':
resolution: {integrity: sha512-0qR1atBIWrb7FzQ+Tmr3s8uH5mQdyRH78n0krYaG8tng9+u1JlSi8DGRSaC9ezKyNB84m7vHT207xnHXGeJ3Fg==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/ssr@3.9.7':
resolution: {integrity: sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==}
engines: {node: '>= 12'}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-aria/utils@3.27.0':
resolution: {integrity: sha512-p681OtApnKOdbeN8ITfnnYqfdHS0z7GE+4l8EXlfLnr70Rp/9xicBO6d2rU+V/B3JujDw2gPWxYKEnEeh0CGCw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-stately/utils@3.10.5':
resolution: {integrity: sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@react-types/shared@3.27.0':
resolution: {integrity: sha512-gvznmLhi6JPEf0bsq7SwRYTHAKKq/wcmKqFez9sRdbED+SPMUmK5omfZ6w3EwUFQHbYUa4zPBYedQ7Knv70RMw==}
peerDependencies:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
'@resvg/resvg-js-android-arm-eabi@2.6.2': '@resvg/resvg-js-android-arm-eabi@2.6.2':
resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==} resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -1682,8 +1725,8 @@ packages:
'@swc/helpers@0.5.13': '@swc/helpers@0.5.13':
resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==}
'@swc/helpers@0.5.5': '@swc/helpers@0.5.15':
resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
'@tabler/icons-react@3.21.0': '@tabler/icons-react@3.21.0':
resolution: {integrity: sha512-Qq0GnZzzccbv/zuMyXAUUPlogNAqx9KsF8cr/ev3bxs+GMObqNEjXv1eZl9GFzxyQTS435siJNU8A1BaIYhX8g==} resolution: {integrity: sha512-Qq0GnZzzccbv/zuMyXAUUPlogNAqx9KsF8cr/ev3bxs+GMObqNEjXv1eZl9GFzxyQTS435siJNU8A1BaIYhX8g==}
@@ -2447,9 +2490,6 @@ packages:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
gray-matter@4.0.3: gray-matter@4.0.3:
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
engines: {node: '>=6.0'} engines: {node: '>=6.0'}
@@ -2981,19 +3021,15 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true hasBin: true
negotiator@0.6.3:
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
engines: {node: '>= 0.6'}
negotiator@1.0.0: negotiator@1.0.0:
resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
next-intl@3.19.0: next-intl@3.26.5:
resolution: {integrity: sha512-ciiHYBwR3ztoMdJZgFmt0LII7GYTsLA/MFt3y681q4Lw4fI5EYNCZSYb9XA/BIt3ZX5S1TLUP1uOERy1dIQvMg==} resolution: {integrity: sha512-EQlCIfY0jOhRldiFxwSXG+ImwkQtDEfQeSOEQp6ieAGSLWGlgjdb/Ck/O7wMfC430ZHGeUKVKax8KGusTPKCgg==}
peerDependencies: peerDependencies:
next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 next: ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0
next-themes@0.4.3: next-themes@0.4.3:
resolution: {integrity: sha512-nG84VPkTdUHR2YeD89YchvV4I9RbiMAql3GiLEQlPvq1ioaqPaIReK+yMRdg/zgiXws620qS1rU30TiWmmG9lA==} resolution: {integrity: sha512-nG84VPkTdUHR2YeD89YchvV4I9RbiMAql3GiLEQlPvq1ioaqPaIReK+yMRdg/zgiXws620qS1rU30TiWmmG9lA==}
@@ -3001,24 +3037,6 @@ packages:
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
next@14.2.2:
resolution: {integrity: sha512-oGwUaa2bCs47FbuxWMpOoXtBMPYpvTPgdZr3UAo+pu7Ns00z9otmYpoeV1HEiYL06AlRQQIA/ypK526KjJfaxg==}
engines: {node: '>=18.17.0'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
'@playwright/test': ^1.41.2
react: ^18.2.0
react-dom: ^18.2.0
sass: ^1.3.0
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
'@playwright/test':
optional: true
sass:
optional: true
next@15.0.3: next@15.0.3:
resolution: {integrity: sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==} resolution: {integrity: sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
@@ -3040,6 +3058,27 @@ packages:
sass: sass:
optional: true optional: true
next@15.2.0:
resolution: {integrity: sha512-VaiM7sZYX8KIAHBrRGSFytKknkrexNfGb8GlG6e93JqueCspuGte8i4ybn8z4ww1x3f2uzY4YpTaBEW4/hvsoQ==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
'@playwright/test': ^1.41.2
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
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
'@playwright/test':
optional: true
babel-plugin-react-compiler:
optional: true
sass:
optional: true
node-releases@2.0.18: node-releases@2.0.18:
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
@@ -3568,19 +3607,6 @@ packages:
style-to-object@1.0.6: style-to-object@1.0.6:
resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==} resolution: {integrity: sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==}
styled-jsx@5.1.1:
resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==}
engines: {node: '>= 12.0.0'}
peerDependencies:
'@babel/core': '*'
babel-plugin-macros: '*'
react: '>= 16.8.0 || 17.x.x || ^18.0.0-0'
peerDependenciesMeta:
'@babel/core':
optional: true
babel-plugin-macros:
optional: true
styled-jsx@5.1.6: styled-jsx@5.1.6:
resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
engines: {node: '>= 12.0.0'} engines: {node: '>= 12.0.0'}
@@ -3607,6 +3633,9 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
tabbable@6.2.0:
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
tailwind-merge@2.4.0: tailwind-merge@2.4.0:
resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==}
@@ -3661,6 +3690,9 @@ packages:
tslib@2.6.3: tslib@2.6.3:
resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
tsx@4.19.2: tsx@4.19.2:
resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
@@ -3738,10 +3770,10 @@ packages:
'@types/react': '@types/react':
optional: true optional: true
use-intl@3.19.0: use-intl@3.26.5:
resolution: {integrity: sha512-JOA73+YdtArxkvFKrneLAhH55m+x+sA9Wj8w8rYkHkHvcW/76w5T3szSmBG063vH3UqLoIKlsDVBBUfpkB7GMg==} resolution: {integrity: sha512-OdsJnC/znPvHCHLQH/duvQNXnP1w0hPfS+tkSi3mAbfjYBGh4JnyfdwkQBfIVf7t8gs9eSX/CntxUMvtKdG2MQ==}
peerDependencies: peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0
use-sidecar@1.1.2: use-sidecar@1.1.2:
resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==}
@@ -4303,8 +4335,24 @@ snapshots:
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
'@floating-ui/react-dom@2.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@floating-ui/dom': 1.6.8
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
'@floating-ui/react@0.26.28(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@floating-ui/react-dom': 2.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@floating-ui/utils': 0.2.9
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
tabbable: 6.2.0
'@floating-ui/utils@0.2.5': {} '@floating-ui/utils@0.2.5': {}
'@floating-ui/utils@0.2.9': {}
'@formatjs/ecma402-abstract@2.0.0': '@formatjs/ecma402-abstract@2.0.0':
dependencies: dependencies:
'@formatjs/intl-localematcher': 0.5.4 '@formatjs/intl-localematcher': 0.5.4
@@ -4339,10 +4387,12 @@ snapshots:
js-yaml: 4.1.0 js-yaml: 4.1.0
prettier: 3.3.3 prettier: 3.3.3
'@headlessui/react@1.7.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': '@headlessui/react@2.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies: dependencies:
'@floating-ui/react': 0.26.28(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@react-aria/focus': 3.19.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@react-aria/interactions': 3.23.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@tanstack/react-virtual': 3.8.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@tanstack/react-virtual': 3.8.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
client-only: 0.0.1
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
@@ -4485,61 +4535,58 @@ snapshots:
'@mixmark-io/domino@2.2.0': {} '@mixmark-io/domino@2.2.0': {}
'@next/env@14.2.2': {}
'@next/env@15.0.3': {} '@next/env@15.0.3': {}
'@next/swc-darwin-arm64@14.2.2': '@next/env@15.2.0': {}
optional: true
'@next/swc-darwin-arm64@15.0.3': '@next/swc-darwin-arm64@15.0.3':
optional: true optional: true
'@next/swc-darwin-x64@14.2.2': '@next/swc-darwin-arm64@15.2.0':
optional: true optional: true
'@next/swc-darwin-x64@15.0.3': '@next/swc-darwin-x64@15.0.3':
optional: true optional: true
'@next/swc-linux-arm64-gnu@14.2.2': '@next/swc-darwin-x64@15.2.0':
optional: true optional: true
'@next/swc-linux-arm64-gnu@15.0.3': '@next/swc-linux-arm64-gnu@15.0.3':
optional: true optional: true
'@next/swc-linux-arm64-musl@14.2.2': '@next/swc-linux-arm64-gnu@15.2.0':
optional: true optional: true
'@next/swc-linux-arm64-musl@15.0.3': '@next/swc-linux-arm64-musl@15.0.3':
optional: true optional: true
'@next/swc-linux-x64-gnu@14.2.2': '@next/swc-linux-arm64-musl@15.2.0':
optional: true optional: true
'@next/swc-linux-x64-gnu@15.0.3': '@next/swc-linux-x64-gnu@15.0.3':
optional: true optional: true
'@next/swc-linux-x64-musl@14.2.2': '@next/swc-linux-x64-gnu@15.2.0':
optional: true optional: true
'@next/swc-linux-x64-musl@15.0.3': '@next/swc-linux-x64-musl@15.0.3':
optional: true optional: true
'@next/swc-win32-arm64-msvc@14.2.2': '@next/swc-linux-x64-musl@15.2.0':
optional: true optional: true
'@next/swc-win32-arm64-msvc@15.0.3': '@next/swc-win32-arm64-msvc@15.0.3':
optional: true optional: true
'@next/swc-win32-ia32-msvc@14.2.2': '@next/swc-win32-arm64-msvc@15.2.0':
optional: true
'@next/swc-win32-x64-msvc@14.2.2':
optional: true optional: true
'@next/swc-win32-x64-msvc@15.0.3': '@next/swc-win32-x64-msvc@15.0.3':
optional: true optional: true
'@next/swc-win32-x64-msvc@15.2.0':
optional: true
'@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir@2.1.5':
dependencies: dependencies:
'@nodelib/fs.stat': 2.0.5 '@nodelib/fs.stat': 2.0.5
@@ -5311,6 +5358,49 @@ snapshots:
'@radix-ui/rect@1.1.0': {} '@radix-ui/rect@1.1.0': {}
'@react-aria/focus@3.19.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@react-aria/interactions': 3.23.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@react-aria/utils': 3.27.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@react-types/shared': 3.27.0(react@18.2.0)
'@swc/helpers': 0.5.15
clsx: 2.1.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
'@react-aria/interactions@3.23.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@react-aria/ssr': 3.9.7(react@18.2.0)
'@react-aria/utils': 3.27.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@react-types/shared': 3.27.0(react@18.2.0)
'@swc/helpers': 0.5.15
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
'@react-aria/ssr@3.9.7(react@18.2.0)':
dependencies:
'@swc/helpers': 0.5.15
react: 18.2.0
'@react-aria/utils@3.27.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@react-aria/ssr': 3.9.7(react@18.2.0)
'@react-stately/utils': 3.10.5(react@18.2.0)
'@react-types/shared': 3.27.0(react@18.2.0)
'@swc/helpers': 0.5.15
clsx: 2.1.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
'@react-stately/utils@3.10.5(react@18.2.0)':
dependencies:
'@swc/helpers': 0.5.15
react: 18.2.0
'@react-types/shared@3.27.0(react@18.2.0)':
dependencies:
react: 18.2.0
'@resvg/resvg-js-android-arm-eabi@2.6.2': '@resvg/resvg-js-android-arm-eabi@2.6.2':
optional: true optional: true
@@ -5409,10 +5499,9 @@ snapshots:
dependencies: dependencies:
tslib: 2.6.3 tslib: 2.6.3
'@swc/helpers@0.5.5': '@swc/helpers@0.5.15':
dependencies: dependencies:
'@swc/counter': 0.1.3 tslib: 2.8.1
tslib: 2.6.3
'@tabler/icons-react@3.21.0(react@18.2.0)': '@tabler/icons-react@3.21.0(react@18.2.0)':
dependencies: dependencies:
@@ -6246,8 +6335,6 @@ snapshots:
gopd@1.2.0: {} gopd@1.2.0: {}
graceful-fs@4.2.11: {}
gray-matter@4.0.3: gray-matter@4.0.3:
dependencies: dependencies:
js-yaml: 3.14.1 js-yaml: 3.14.1
@@ -7077,48 +7164,21 @@ snapshots:
nanoid@3.3.7: {} nanoid@3.3.7: {}
negotiator@0.6.3: {}
negotiator@1.0.0: {} negotiator@1.0.0: {}
next-intl@3.19.0(next@14.2.2(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): next-intl@3.26.5(next@15.2.0(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0):
dependencies: dependencies:
'@formatjs/intl-localematcher': 0.5.4 '@formatjs/intl-localematcher': 0.5.7
negotiator: 0.6.3 negotiator: 1.0.0
next: 14.2.2(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) next: 15.2.0(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react: 18.2.0 react: 18.2.0
use-intl: 3.19.0(react@18.2.0) use-intl: 3.26.5(react@18.2.0)
next-themes@0.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): next-themes@0.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
next@14.2.2(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
dependencies:
'@next/env': 14.2.2
'@swc/helpers': 0.5.5
busboy: 1.6.0
caniuse-lite: 1.0.30001643
graceful-fs: 4.2.11
postcss: 8.4.31
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
styled-jsx: 5.1.1(@babel/core@7.26.9)(react@18.2.0)
optionalDependencies:
'@next/swc-darwin-arm64': 14.2.2
'@next/swc-darwin-x64': 14.2.2
'@next/swc-linux-arm64-gnu': 14.2.2
'@next/swc-linux-arm64-musl': 14.2.2
'@next/swc-linux-x64-gnu': 14.2.2
'@next/swc-linux-x64-musl': 14.2.2
'@next/swc-win32-arm64-msvc': 14.2.2
'@next/swc-win32-ia32-msvc': 14.2.2
'@next/swc-win32-x64-msvc': 14.2.2
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): next@15.0.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies: dependencies:
'@next/env': 15.0.3 '@next/env': 15.0.3
@@ -7144,6 +7204,31 @@ snapshots:
- '@babel/core' - '@babel/core'
- babel-plugin-macros - babel-plugin-macros
next@15.2.0(@babel/core@7.26.9)(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
dependencies:
'@next/env': 15.2.0
'@swc/counter': 0.1.3
'@swc/helpers': 0.5.15
busboy: 1.6.0
caniuse-lite: 1.0.30001679
postcss: 8.4.31
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
styled-jsx: 5.1.6(@babel/core@7.26.9)(react@18.2.0)
optionalDependencies:
'@next/swc-darwin-arm64': 15.2.0
'@next/swc-darwin-x64': 15.2.0
'@next/swc-linux-arm64-gnu': 15.2.0
'@next/swc-linux-arm64-musl': 15.2.0
'@next/swc-linux-x64-gnu': 15.2.0
'@next/swc-linux-x64-musl': 15.2.0
'@next/swc-win32-arm64-msvc': 15.2.0
'@next/swc-win32-x64-msvc': 15.2.0
sharp: 0.33.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
node-releases@2.0.18: {} node-releases@2.0.18: {}
normalize-path@3.0.0: {} normalize-path@3.0.0: {}
@@ -7714,7 +7799,7 @@ snapshots:
dependencies: dependencies:
inline-style-parser: 0.2.3 inline-style-parser: 0.2.3
styled-jsx@5.1.1(@babel/core@7.26.9)(react@18.2.0): styled-jsx@5.1.6(@babel/core@7.26.9)(react@18.2.0):
dependencies: dependencies:
client-only: 0.0.1 client-only: 0.0.1
react: 18.2.0 react: 18.2.0
@@ -7742,6 +7827,8 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {} supports-preserve-symlinks-flag@1.0.0: {}
tabbable@6.2.0: {}
tailwind-merge@2.4.0: {} tailwind-merge@2.4.0: {}
tailwind-merge@2.5.4: {} tailwind-merge@2.5.4: {}
@@ -7830,6 +7917,8 @@ snapshots:
tslib@2.6.3: {} tslib@2.6.3: {}
tslib@2.8.1: {}
tsx@4.19.2: tsx@4.19.2:
dependencies: dependencies:
esbuild: 0.23.1 esbuild: 0.23.1
@@ -7924,7 +8013,7 @@ snapshots:
optionalDependencies: optionalDependencies:
'@types/react': 18.3.5 '@types/react': 18.3.5
use-intl@3.19.0(react@18.2.0): use-intl@3.26.5(react@18.2.0):
dependencies: dependencies:
'@formatjs/fast-memoize': 2.2.0 '@formatjs/fast-memoize': 2.2.0
intl-messageformat: 10.5.14 intl-messageformat: 10.5.14