Compare commits

...

7 Commits

Author SHA1 Message Date
Anselm
58c7305e47 More explanation improvements 2025-03-11 13:33:09 +00:00
Anselm
c05dd58c7d Slight wording changes 2025-03-11 13:25:25 +00:00
Anselm
cc3d31fc3b Address PR comments 2025-03-11 13:14:24 +00:00
Anselm
b1be0bbdf3 Fix more NextJS issues 2025-03-10 13:36:54 +00:00
Anselm
d4f2f6fd99 Fix NextJS issues 2025-03-10 13:32:48 +00:00
Anselm
f901c4628d More improvements and fixes 2025-03-10 13:27:12 +00:00
Anselm
ca909a09a5 First pass 2025-03-07 11:00:37 +00:00
24 changed files with 507 additions and 103 deletions

View File

@@ -3,19 +3,20 @@ import { packages } from "@/lib/packages";
import { notFound } from "next/navigation"; import { notFound } from "next/navigation";
interface Props { interface Props {
params: { package: string }; params: Promise<{ package: string }>;
} }
export default function Page({ params }: Props) { export default async function Page({ params }: Props) {
if (!packages.map((p) => p.name).includes(params.package)) { const packageName = (await params).package;
if (!packages.map((p) => p.name).includes(packageName)) {
return notFound(); return notFound();
} }
return <PackageDocs package={params.package} />; return <PackageDocs package={packageName} />;
} }
export async function generateMetadata({ params }: Props) { export async function generateMetadata({ params }: Props) {
const packageName = params.package; const packageName = (await params).package;
return { return {
title: `${packageName} - jazz`, title: `${packageName} - jazz`,
description: `API reference for ${packageName}.`, description: `API reference for ${packageName}.`,

View File

@@ -15,8 +15,9 @@ async function getMdxSource(slugPath: string, framework: string) {
} }
export async function generateMetadata({ export async function generateMetadata({
params: { slug, framework }, params,
}: { params: { slug: string[]; framework: string } }) { }: { params: Promise<{ slug: string[]; framework: string }> }) {
const { slug, framework } = await params;
const slugPath = slug.join("/"); const slugPath = slug.join("/");
try { try {
const mdxSource = await getMdxSource(slugPath, framework); const mdxSource = await getMdxSource(slugPath, framework);
@@ -39,8 +40,9 @@ export async function generateMetadata({
} }
export default async function Page({ export default async function Page({
params: { slug, framework }, params,
}: { params: { slug: string[]; framework: string } }) { }: { params: Promise<{ slug: string[]; framework: string }> }) {
const { slug, framework } = await params;
const slugPath = slug.join("/"); const slugPath = slug.join("/");
const bodyClassName = "overflow-x-hidden lg:flex-1 py-10 max-w-3xl mx-auto"; const bodyClassName = "overflow-x-hidden lg:flex-1 py-10 max-w-3xl mx-auto";

View File

@@ -16,8 +16,6 @@ export default function Home() {
<> <>
<HeroSection /> <HeroSection />
<ProblemStatementSection />
<div className="container flex flex-col gap-12 mt-12 lg:gap-20 lg:mt-20"> <div className="container flex flex-col gap-12 mt-12 lg:gap-20 lg:mt-20">
<HowJazzWorksSection /> <HowJazzWorksSection />
@@ -32,6 +30,8 @@ export default function Home() {
</p> </p>
</Testimonial> </Testimonial>
<ProblemStatementSection />
<ChatDemoSection /> <ChatDemoSection />
<LocalFirstFeaturesSection /> <LocalFirstFeaturesSection />

View File

@@ -1,3 +1,4 @@
import LatencyChart from "@/components/LatencyChart";
import { clsx } from "clsx"; import { clsx } from "clsx";
import { HeroHeader } from "gcmp-design-system/src/app/components/molecules/HeroHeader"; import { HeroHeader } from "gcmp-design-system/src/app/components/molecules/HeroHeader";
import type { Metadata } from "next"; import type { Metadata } from "next";
@@ -13,10 +14,6 @@ export const metadata: Metadata = {
}, },
}; };
const LatencyChart = dynamic(() => import("@/components/LatencyChart"), {
ssr: false,
});
interface DataRow { interface DataRow {
up: boolean; up: boolean;
latencyOverTime: [number[], number[]]; latencyOverTime: [number[], number[]];

View File

@@ -7,7 +7,7 @@ import { pingColorThresholds } from "../../../components/cloud/pingColorThreshol
// generated with: globalping ping cloud.jazz.tools from world --limit 500 --packets 16 --json | jq "del(.results[].result.rawOutput)" > pings.json // generated with: globalping ping cloud.jazz.tools from world --limit 500 --packets 16 --json | jq "del(.results[].result.rawOutput)" > pings.json
import pings from "../../../components/cloud/pings.json"; import pings from "../../../components/cloud/pings.json";
export const revalidate = 2 * 60 * 60; // 2 hours export const revalidate = 7200; // 2 hours
export async function GET(req: NextRequest) { export async function GET(req: NextRequest) {
const spacing = parseFloat(req.nextUrl.searchParams.get("spacing") || "1.5"); const spacing = parseFloat(req.nextUrl.searchParams.get("spacing") || "1.5");

View File

@@ -1,7 +1,7 @@
```ts ```ts
const message = Message.create({ const message = Message.create({
text: “Hello world!” text: “Hello world!”
}, { owner: ... }) }, chat._owner)
chat.push(message) chat.push(message)
``` ```

View File

@@ -1,8 +1,6 @@
```tsx ```tsx
<JazzProvider <JazzProvider
sync={{ sync={{ peer: "wss://cloud.jazz.tools/?key=you@example.com" }}
peer: "wss://cloud.jazz.tools/?key=you@example.com",
}}
> >
{children} {children}
</JazzProvider> </JazzProvider>

View File

@@ -1,5 +1,5 @@
```tsx ```tsx
const ChatScreen = (id) => { const ChatScreen = ({ id }) => {
const chat = useCoState(Chat, id) const chat = useCoState(Chat, id)
return chat.messages.map(msg => ( return chat.messages.map(msg => (

View File

@@ -1,10 +1,8 @@
```ts ```ts
export class Message extends CoMap { class Message extends CoMap {
text = co.string; text = co.string;
} }
export class Chat extends CoList.Of( class Chat extends CoList.Of(co.ref(Message)) {}
co.ref(Message)
) {}
``` ```

View File

@@ -10,18 +10,18 @@ const data = [
{ {
title: "Private", title: "Private",
description: description:
"Create a CoValue visible only to you by assigning your Account as an owner.", "By default, CoValues are visible only to you.",
codeSample: CollaborationPrivate, codeSample: CollaborationPrivate,
}, },
{ {
title: "Public", title: "Shared",
description: "Start collaborating by giving write access to everyone.", description: "Use Groups for precise access control.",
codeSample: CollaborationPublic, codeSample: CollaborationPublic,
}, },
{ {
title: "Invite-only", title: "By Invitation",
description: description:
"Generate an invite link, and share only with people you want to collaborate with.", "Create links that allow anyone to join.",
codeSample: CollaborationInvite, codeSample: CollaborationInvite,
}, },
]; ];
@@ -34,9 +34,7 @@ export function CollaborationFeaturesSection() {
title="Making secure collaboration the default" title="Making secure collaboration the default"
slogan={ slogan={
<> <>
Every piece of data is assigned a role-based permission on creation Every CoValue belongs to a <code>Group</code>, where you can assign roles to users to control access &mdash; all from the client.
&mdash; reader, writer, or admin. These permissions are defined in
an <code>Account</code> or <code>Group</code>.
</> </>
} }
></SectionHeader> ></SectionHeader>

View File

@@ -1,6 +1,7 @@
```tsx ```tsx
// links to message, Group is inferred
createInviteLink( createInviteLink(
chatId, messageId,
"writer", // or reader or admin "writer", // role that recipient gets
); );
``` ```

View File

@@ -1,8 +1,5 @@
```tsx ```tsx
const { me } = useAccount(); Message.create({
text: "Private message to myself."
Message.create( });
{ text: ... },
{ owner: me }
);
``` ```

View File

@@ -1,9 +1,7 @@
```tsx ```tsx
const group = Group.create({ const group = Group.create();
owner: me group.addMember(Alice, "writer");
}); group.addMember("everyone", "reader");
group.addMember("everyone", "writer"); Message.create({ text: "..." }, group);
Chat.create([], { owner: group })
``` ```

View File

@@ -1,7 +1,7 @@
import CoPlainTextDescription from "@/app/(home)/coValueDescriptions/coPlainTextDescription.mdx"; import CoPlainTextDescription from "@/app/(others)/(home)/coValueDescriptions/coPlainTextDescription.mdx";
import CursorsAndCaretsDescription from "@/app/(home)/toolkit/cursorsAndCarets.mdx"; import CursorsAndCaretsDescription from "@/app/(others)/(home)/toolkit/cursorsAndCarets.mdx";
import TwoWaySyncDescription from "@/app/(home)/toolkit/twoWaySync.mdx"; import TwoWaySyncDescription from "@/app/(others)/(home)/toolkit/twoWaySync.mdx";
import VideoPresenceCallsDescription from "@/app/(home)/toolkit/videoPresenceCalls.mdx"; import VideoPresenceCallsDescription from "@/app/(others)/(home)/toolkit/videoPresenceCalls.mdx";
import { CodeRef } from "gcmp-design-system/src/app/components/atoms/CodeRef"; import { CodeRef } from "gcmp-design-system/src/app/components/atoms/CodeRef";
import { P } from "gcmp-design-system/src/app/components/atoms/Paragraph"; import { P } from "gcmp-design-system/src/app/components/atoms/Paragraph";
import { FeatureCard } from "gcmp-design-system/src/app/components/molecules/FeatureCard"; import { FeatureCard } from "gcmp-design-system/src/app/components/molecules/FeatureCard";

View File

@@ -46,25 +46,23 @@ export function HeroSection() {
<div className="container grid items-center gap-x-8 gap-y-10 py-12 md:py-16 lg:py-24 lg:gap-x-10 lg:grid-cols-3"> <div className="container grid items-center gap-x-8 gap-y-10 py-12 md:py-16 lg:py-24 lg:gap-x-10 lg:grid-cols-3">
<div className="flex flex-col justify-center gap-5 lg:col-span-2 lg:gap-8"> <div className="flex flex-col justify-center gap-5 lg:col-span-2 lg:gap-8">
<p className="uppercase text-blue tracking-widest text-sm font-medium dark:text-stone-400"> <p className="uppercase text-blue tracking-widest text-sm font-medium dark:text-stone-400">
Local-first development toolkit Toolkit for cloud-synced local state
</p> </p>
<H1> <H1>
<span className="inline-block">Ship top-tier apps</span>{" "} <span className="inline-block">Whip up an app.</span>
<span className="inline-block">at high tempo.</span>
</H1> </H1>
<Prose size="lg" className="text-pretty max-w-2xl dark:text-stone-200"> <Prose size="lg" className="text-pretty max-w-2xl dark:text-stone-200">
<p> <p>
Jazz is a framework for building local-first apps Jazz lets you build with cloud-synced local state, completely
&mdash;&nbsp;an&nbsp;architecture that lets companies like Figma and replacing backends and databases. You'll ship better apps, much faster.
Linear play in a league of their own.
</p> </p>
<p> <p>
Open source. Self-host or use{" "} Open source. Self-host or use{" "}
<Link className="text-reset" href="/cloud"> <Link className="text-reset" href="/cloud">
Jazz Cloud Jazz Cloud
</Link>{" "} </Link>{" "}
for zero-config magic. for an &ldquo;it just works&rdquo; DX.
</p> </p>
</Prose> </Prose>

View File

@@ -76,17 +76,11 @@ function Step({
} }
export function HowJazzWorksSection() { export function HowJazzWorksSection() {
const imageProps = {
alt: "Code samples for defining a schema for Jazz, pushing data, and subscribing to changes.",
width: 1100,
height: 852,
};
return ( return (
<div className="grid gap-8"> <div className="grid gap-8">
<div className="grid gap-3"> <div className="grid gap-3">
<p className="uppercase text-blue tracking-widest text-sm font-medium dark:text-stone-400"> <p className="uppercase text-blue tracking-widest text-sm font-medium dark:text-stone-400">
Collaborative Values State with built-in collaboration
</p> </p>
<H2>Build entire apps using only client-side code</H2> <H2>Build entire apps using only client-side code</H2>
@@ -94,7 +88,7 @@ export function HowJazzWorksSection() {
<GappedGrid> <GappedGrid>
<Step <Step
step={1} step={1}
description="Define your schema using Collaborative Values &mdash; your new building blocks." description={"Describe your apps state with CoValues (\"collaborative values\"), your new cloud-synced building blocks."}
> >
<Code fileName="schema.ts"> <Code fileName="schema.ts">
<CodeStepSchema /> <CodeStepSchema />
@@ -110,7 +104,7 @@ export function HowJazzWorksSection() {
</Step> </Step>
<Step <Step
step={3} step={3}
description="Create a Collaborative Value, and it will be synced and persisted automatically." description="Create and edit CoValues, and they will be synced and persisted automatically."
> >
<Code fileName="sendMessage.ts"> <Code fileName="sendMessage.ts">
<CodeStepAction /> <CodeStepAction />
@@ -118,7 +112,7 @@ export function HowJazzWorksSection() {
</Step> </Step>
<Step <Step
step={4} step={4}
description="Read your data like simple local state. Get instant sync and UI updates across all devices and users. 🎉" description="Use CoValues like reactive local state. Get instant UI updates on every edit &mdash; across all devices and users. 🎉"
> >
<Code fileName="ChatScreen.tsx"> <Code fileName="ChatScreen.tsx">
<CodeStepRender /> <CodeStepRender />

View File

@@ -48,13 +48,11 @@ export function LocalFirstFeaturesSection() {
return ( return (
<div> <div>
<SectionHeader <SectionHeader
title="Why local-first?" title="The best of all worlds"
slogan={ slogan={
<> <>
<p> <p>
With local-first, your data is stored locally, then synced to the With cloud-synced local state, your data is kept on-device, and synced whenever possible.
server.
<br /> This comes with the following benefits.
</p> </p>
</> </>
} }

View File

@@ -9,8 +9,8 @@ export default function ProblemStatementSection() {
<div className="container grid gap-4 lg:gap-8"> <div className="container grid gap-4 lg:gap-8">
<SectionHeader <SectionHeader
className="sm:text-center sm:mx-auto" className="sm:text-center sm:mx-auto"
title="Hard things are easy now." title={"Powered by the first “flat stack”"}
slogan="" slogan="A perspective shift worth 10,000 hours"
/> />
<div className="grid sm:grid-cols-2 border rounded-lg shadow-sm md:rounded-xl overflow-hidden dark:border-stone-900"> <div className="grid sm:grid-cols-2 border rounded-lg shadow-sm md:rounded-xl overflow-hidden dark:border-stone-900">
@@ -27,12 +27,7 @@ export default function ProblemStatementSection() {
</span> </span>
<Prose> <Prose>
<p className="font-display text-lg md:text-xl font-semibold text-stone-900 dark:text-white"> <p className="font-display text-lg md:text-xl font-semibold text-stone-900 dark:text-white">
The sad truth is... Every stack is a re-invention of shared state.
</p>
<p>
<strong>
Every stack reinvents how users and machines share state.
</strong>
</p> </p>
</Prose> </Prose>
<div className="relative flex items-center flex-1"> <div className="relative flex items-center flex-1">
@@ -46,26 +41,20 @@ export default function ProblemStatementSection() {
<Prose> <Prose>
<p> <p>
For each new app you tackle a{" "} For each new app you tackle a{" "}
<strong> <strong>mess of moving parts and infra worries.</strong> Or, you
mess of moving parts, tech choices &amp; deployment woes. haven't even tried because "you're not full-stack".
</strong>{" "}
Your code? <strong>All over the place.</strong>
</p> </p>
<p> <p>
<strong>Its holding you back</strong> from shipping{" "} Want to build a <strong>modern app</strong> with multiplayer or
<strong>what your app could be.</strong> offline-support? <strong>Figma, Notion and Linear</strong> all had
to spend <strong>years</strong> on completely custom stacks.
</p> </p>
</Prose> </Prose>
</div> </div>
<div className="flex flex-col gap-3 p-4 pt-8 md:p-8 md:gap-5"> <div className="flex flex-col gap-3 p-4 pt-8 md:p-8 md:gap-5">
<Prose> <Prose>
<p className="font-display text-lg md:text-xl font-semibold text-stone-900 dark:text-white"> <p className="font-display text-lg md:text-xl font-semibold text-stone-900 dark:text-white">
The good news is... What if we started from shared state?
</p>
<p>
<strong>
Theres a single new abstraction that does the whole job.
</strong>
</p> </p>
</Prose> </Prose>
<div className="flex items-center flex-1"> <div className="flex items-center flex-1">
@@ -73,13 +62,15 @@ export default function ProblemStatementSection() {
</div> </div>
<Prose> <Prose>
<p> <p>
Jazz gives you <strong>mutable local state</strong> thats{" "} Jazz gives you <strong>local state</strong> thats{" "}
<strong>instantly synced.</strong> Including binary blobs.{" "} <strong>instantly synced and stored in the cloud.</strong>{" "}
Including images and files.{" "}
<strong>With users &amp; permissions built-in.</strong> <strong>With users &amp; permissions built-in.</strong>
</p> </p>
<p> <p>
All thats left is{" "} With completely <strong>app-independent infra,</strong> you get to focus on{" "}
<strong>building the UX that makes your app special.</strong> <strong>building the app your users want.</strong> You'll notice
that <strong>90% of the work is now the UI.</strong>
</p> </p>
</Prose> </Prose>
</div> </div>

View File

@@ -4,7 +4,7 @@
"private": true, "private": true,
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "NODE_OPTIONS=--max-old-space-size=8192 next dev", "dev": "next dev",
"build:generate-docs": "pnpm run generate:docs && pnpm run generate:llm-docs", "build:generate-docs": "pnpm run generate:docs && pnpm run generate:llm-docs",
"build": "next build", "build": "next build",
"start": "next start", "start": "next start",
@@ -40,7 +40,7 @@
"mdast-util-from-markdown": "^2.0.0", "mdast-util-from-markdown": "^2.0.0",
"mdast-util-mdx": "^3.0.0", "mdast-util-mdx": "^3.0.0",
"micromark-extension-mdxjs": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0",
"next": "14.2.15", "next": "15.2.1",
"next-themes": "^0.2.1", "next-themes": "^0.2.1",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
"react": "^18", "react": "^18",

443
homepage/pnpm-lock.yaml generated
View File

@@ -207,10 +207,10 @@ importers:
version: 3.1.5 version: 3.1.5
'@vercel/analytics': '@vercel/analytics':
specifier: ^1.3.1 specifier: ^1.3.1
version: 1.3.1(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) version: 1.3.1(next@15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
'@vercel/speed-insights': '@vercel/speed-insights':
specifier: ^1.0.12 specifier: ^1.0.12
version: 1.0.12(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) version: 1.0.12(next@15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)
clsx: clsx:
specifier: ^2.1.1 specifier: ^2.1.1
version: 2.1.1 version: 2.1.1
@@ -245,11 +245,11 @@ importers:
specifier: ^3.0.0 specifier: ^3.0.0
version: 3.0.0 version: 3.0.0
next: next:
specifier: 14.2.15 specifier: 15.2.1
version: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) version: 15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-themes: next-themes:
specifier: ^0.2.1 specifier: ^0.2.1
version: 0.2.1(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) version: 0.2.1(next@15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
qrcode: qrcode:
specifier: ^1.5.4 specifier: ^1.5.4
version: 1.5.4 version: 1.5.4
@@ -414,6 +414,9 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.4 postcss: ^8.4
'@emnapi/runtime@1.3.1':
resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
'@evilmartians/harmony@1.2.0': '@evilmartians/harmony@1.2.0':
resolution: {integrity: sha512-Ua8gpC+28Eo9D2/xynTrrZIrSawgtobwtRLLYq4wH8N19qoMspWZ1vqfsDDVPgQFa+iHsVAk/SbdmoPAj6OH1g==} resolution: {integrity: sha512-Ua8gpC+28Eo9D2/xynTrrZIrSawgtobwtRLLYq4wH8N19qoMspWZ1vqfsDDVPgQFa+iHsVAk/SbdmoPAj6OH1g==}
@@ -450,6 +453,111 @@ packages:
peerDependencies: peerDependencies:
react: ^16.13 || ^17 || ^18 react: ^16.13 || ^17 || ^18
'@img/sharp-darwin-arm64@0.33.5':
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [darwin]
'@img/sharp-darwin-x64@0.33.5':
resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [darwin]
'@img/sharp-libvips-darwin-arm64@1.0.4':
resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
cpu: [arm64]
os: [darwin]
'@img/sharp-libvips-darwin-x64@1.0.4':
resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
cpu: [x64]
os: [darwin]
'@img/sharp-libvips-linux-arm64@1.0.4':
resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
cpu: [arm64]
os: [linux]
'@img/sharp-libvips-linux-arm@1.0.5':
resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
cpu: [arm]
os: [linux]
'@img/sharp-libvips-linux-s390x@1.0.4':
resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
cpu: [s390x]
os: [linux]
'@img/sharp-libvips-linux-x64@1.0.4':
resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
cpu: [x64]
os: [linux]
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
cpu: [arm64]
os: [linux]
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
cpu: [x64]
os: [linux]
'@img/sharp-linux-arm64@0.33.5':
resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
'@img/sharp-linux-arm@0.33.5':
resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
'@img/sharp-linux-s390x@0.33.5':
resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
'@img/sharp-linux-x64@0.33.5':
resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
'@img/sharp-linuxmusl-arm64@0.33.5':
resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
'@img/sharp-linuxmusl-x64@0.33.5':
resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
'@img/sharp-wasm32@0.33.5':
resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
'@img/sharp-win32-ia32@0.33.5':
resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
'@img/sharp-win32-x64@0.33.5':
resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [win32]
'@isaacs/cliui@8.0.2': '@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'} engines: {node: '>=12'}
@@ -494,6 +602,9 @@ packages:
'@next/env@14.2.7': '@next/env@14.2.7':
resolution: {integrity: sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==} resolution: {integrity: sha512-OTx9y6I3xE/eih+qtthppwLytmpJVPM5PPoJxChFsbjIEFXIayG0h/xLzefHGJviAa3Q5+Fd+9uYojKkHDKxoQ==}
'@next/env@15.2.1':
resolution: {integrity: sha512-JmY0qvnPuS2NCWOz2bbby3Pe0VzdAQ7XpEB6uLIHmtXNfAsAO0KLQLkuAoc42Bxbo3/jMC3dcn9cdf+piCcG2Q==}
'@next/mdx@13.5.6': '@next/mdx@13.5.6':
resolution: {integrity: sha512-2AMyCrz1SxSWNUpADyLz3RbPbq0GHrchbO7Msvg7IsH8MrTw3VYaZSI1KNa6JzZIoykwtNVSEL+uBmPZi106Jw==} resolution: {integrity: sha512-2AMyCrz1SxSWNUpADyLz3RbPbq0GHrchbO7Msvg7IsH8MrTw3VYaZSI1KNa6JzZIoykwtNVSEL+uBmPZi106Jw==}
peerDependencies: peerDependencies:
@@ -517,6 +628,12 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@next/swc-darwin-arm64@15.2.1':
resolution: {integrity: sha512-aWXT+5KEREoy3K5AKtiKwioeblmOvFFjd+F3dVleLvvLiQ/mD//jOOuUcx5hzcO9ISSw4lrqtUPntTpK32uXXQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@next/swc-darwin-x64@14.2.15': '@next/swc-darwin-x64@14.2.15':
resolution: {integrity: sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==} resolution: {integrity: sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -529,6 +646,12 @@ packages:
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@next/swc-darwin-x64@15.2.1':
resolution: {integrity: sha512-E/w8ervu4fcG5SkLhvn1NE/2POuDCDEy5gFbfhmnYXkyONZR68qbUlJlZwuN82o7BrBVAw+tkR8nTIjGiMW1jQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@next/swc-linux-arm64-gnu@14.2.15': '@next/swc-linux-arm64-gnu@14.2.15':
resolution: {integrity: sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==} resolution: {integrity: sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -541,6 +664,12 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@next/swc-linux-arm64-gnu@15.2.1':
resolution: {integrity: sha512-gXDX5lIboebbjhiMT6kFgu4svQyjoSed6dHyjx5uZsjlvTwOAnZpn13w9XDaIMFFHw7K8CpBK7HfDKw0VZvUXQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@next/swc-linux-arm64-musl@14.2.15': '@next/swc-linux-arm64-musl@14.2.15':
resolution: {integrity: sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==} resolution: {integrity: sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -553,6 +682,12 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@next/swc-linux-arm64-musl@15.2.1':
resolution: {integrity: sha512-3v0pF/adKZkBWfUffmB/ROa+QcNTrnmYG4/SS+r52HPwAK479XcWoES2I+7F7lcbqc7mTeVXrIvb4h6rR/iDKg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@next/swc-linux-x64-gnu@14.2.15': '@next/swc-linux-x64-gnu@14.2.15':
resolution: {integrity: sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==} resolution: {integrity: sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -565,6 +700,12 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@next/swc-linux-x64-gnu@15.2.1':
resolution: {integrity: sha512-RbsVq2iB6KFJRZ2cHrU67jLVLKeuOIhnQB05ygu5fCNgg8oTewxweJE8XlLV+Ii6Y6u4EHwETdUiRNXIAfpBww==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@next/swc-linux-x64-musl@14.2.15': '@next/swc-linux-x64-musl@14.2.15':
resolution: {integrity: sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==} resolution: {integrity: sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -577,6 +718,12 @@ packages:
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@next/swc-linux-x64-musl@15.2.1':
resolution: {integrity: sha512-QHsMLAyAIu6/fWjHmkN/F78EFPKmhQlyX5C8pRIS2RwVA7z+t9cTb0IaYWC3EHLOTjsU7MNQW+n2xGXr11QPpg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@next/swc-win32-arm64-msvc@14.2.15': '@next/swc-win32-arm64-msvc@14.2.15':
resolution: {integrity: sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==} resolution: {integrity: sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -589,6 +736,12 @@ packages:
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@next/swc-win32-arm64-msvc@15.2.1':
resolution: {integrity: sha512-Gk42XZXo1cE89i3hPLa/9KZ8OuupTjkDmhLaMKFohjf9brOeZVEa3BQy1J9s9TWUqPhgAEbwv6B2+ciGfe54Vw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@next/swc-win32-ia32-msvc@14.2.15': '@next/swc-win32-ia32-msvc@14.2.15':
resolution: {integrity: sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==} resolution: {integrity: sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
@@ -613,6 +766,12 @@ packages:
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@next/swc-win32-x64-msvc@15.2.1':
resolution: {integrity: sha512-YjqXCl8QGhVlMR8uBftWk0iTmvtntr41PhG1kvzGp0sUP/5ehTM+cwx25hKE54J0CRnHYjSGjSH3gkHEaHIN9g==}
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'}
@@ -880,6 +1039,9 @@ packages:
'@swc/counter@0.1.3': '@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
'@swc/helpers@0.5.5': '@swc/helpers@0.5.5':
resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
@@ -1576,6 +1738,13 @@ packages:
color-name@1.1.4: color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
color-string@1.9.1:
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
color@4.2.3:
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
engines: {node: '>=12.5.0'}
comma-separated-tokens@2.0.3: comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -1641,6 +1810,10 @@ packages:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'} engines: {node: '>=6'}
detect-libc@2.0.3:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
devlop@1.1.0: devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
@@ -1883,6 +2056,9 @@ packages:
is-alphanumerical@2.0.1: is-alphanumerical@2.0.1:
resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
is-binary-path@2.1.0: is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -2351,6 +2527,27 @@ packages:
sass: sass:
optional: true optional: true
next@15.2.1:
resolution: {integrity: sha512-zxbsdQv3OqWXybK5tMkPCBKyhIz63RstJ+NvlfkaLMc/m5MwXgz2e92k+hSKcyBpyADhMk2C31RIiaDjUZae7g==}
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.14: node-releases@2.0.14:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
@@ -2611,6 +2808,11 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
hasBin: true hasBin: true
semver@7.7.1:
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
engines: {node: '>=10'}
hasBin: true
serialize-javascript@6.0.2: serialize-javascript@6.0.2:
resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
@@ -2620,6 +2822,10 @@ packages:
set-blocking@2.0.0: set-blocking@2.0.0:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
sharp@0.33.5:
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
shebang-command@2.0.0: shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -2643,6 +2849,9 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'} engines: {node: '>=14'}
simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
skmeans@0.9.7: skmeans@0.9.7:
resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==} resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==}
@@ -2710,6 +2919,19 @@ packages:
babel-plugin-macros: babel-plugin-macros:
optional: true optional: true
styled-jsx@5.1.6:
resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==}
engines: {node: '>= 12.0.0'}
peerDependencies:
'@babel/core': '*'
babel-plugin-macros: '*'
react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0'
peerDependenciesMeta:
'@babel/core':
optional: true
babel-plugin-macros:
optional: true
sucrase@3.35.0: sucrase@3.35.0:
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
@@ -3039,6 +3261,11 @@ snapshots:
dependencies: dependencies:
postcss: 8.4.38 postcss: 8.4.38
'@emnapi/runtime@1.3.1':
dependencies:
tslib: 2.8.1
optional: true
'@evilmartians/harmony@1.2.0': {} '@evilmartians/harmony@1.2.0': {}
'@floating-ui/core@1.6.8': '@floating-ui/core@1.6.8':
@@ -3079,6 +3306,81 @@ snapshots:
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
'@img/sharp-darwin-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-arm64': 1.0.4
optional: true
'@img/sharp-darwin-x64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.0.4
optional: true
'@img/sharp-libvips-darwin-arm64@1.0.4':
optional: true
'@img/sharp-libvips-darwin-x64@1.0.4':
optional: true
'@img/sharp-libvips-linux-arm64@1.0.4':
optional: true
'@img/sharp-libvips-linux-arm@1.0.5':
optional: true
'@img/sharp-libvips-linux-s390x@1.0.4':
optional: true
'@img/sharp-libvips-linux-x64@1.0.4':
optional: true
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
optional: true
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
optional: true
'@img/sharp-linux-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.0.4
optional: true
'@img/sharp-linux-arm@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linux-arm': 1.0.5
optional: true
'@img/sharp-linux-s390x@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linux-s390x': 1.0.4
optional: true
'@img/sharp-linux-x64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.0.4
optional: true
'@img/sharp-linuxmusl-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
optional: true
'@img/sharp-linuxmusl-x64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
optional: true
'@img/sharp-wasm32@0.33.5':
dependencies:
'@emnapi/runtime': 1.3.1
optional: true
'@img/sharp-win32-ia32@0.33.5':
optional: true
'@img/sharp-win32-x64@0.33.5':
optional: true
'@isaacs/cliui@8.0.2': '@isaacs/cliui@8.0.2':
dependencies: dependencies:
string-width: 5.1.2 string-width: 5.1.2
@@ -3150,6 +3452,8 @@ snapshots:
'@next/env@14.2.7': {} '@next/env@14.2.7': {}
'@next/env@15.2.1': {}
'@next/mdx@13.5.6(@mdx-js/loader@2.3.0(webpack@5.91.0))(@mdx-js/react@2.3.0(react@18.3.1))': '@next/mdx@13.5.6(@mdx-js/loader@2.3.0(webpack@5.91.0))(@mdx-js/react@2.3.0(react@18.3.1))':
dependencies: dependencies:
source-map: 0.7.4 source-map: 0.7.4
@@ -3163,42 +3467,63 @@ snapshots:
'@next/swc-darwin-arm64@14.2.7': '@next/swc-darwin-arm64@14.2.7':
optional: true optional: true
'@next/swc-darwin-arm64@15.2.1':
optional: true
'@next/swc-darwin-x64@14.2.15': '@next/swc-darwin-x64@14.2.15':
optional: true optional: true
'@next/swc-darwin-x64@14.2.7': '@next/swc-darwin-x64@14.2.7':
optional: true optional: true
'@next/swc-darwin-x64@15.2.1':
optional: true
'@next/swc-linux-arm64-gnu@14.2.15': '@next/swc-linux-arm64-gnu@14.2.15':
optional: true optional: true
'@next/swc-linux-arm64-gnu@14.2.7': '@next/swc-linux-arm64-gnu@14.2.7':
optional: true optional: true
'@next/swc-linux-arm64-gnu@15.2.1':
optional: true
'@next/swc-linux-arm64-musl@14.2.15': '@next/swc-linux-arm64-musl@14.2.15':
optional: true optional: true
'@next/swc-linux-arm64-musl@14.2.7': '@next/swc-linux-arm64-musl@14.2.7':
optional: true optional: true
'@next/swc-linux-arm64-musl@15.2.1':
optional: true
'@next/swc-linux-x64-gnu@14.2.15': '@next/swc-linux-x64-gnu@14.2.15':
optional: true optional: true
'@next/swc-linux-x64-gnu@14.2.7': '@next/swc-linux-x64-gnu@14.2.7':
optional: true optional: true
'@next/swc-linux-x64-gnu@15.2.1':
optional: true
'@next/swc-linux-x64-musl@14.2.15': '@next/swc-linux-x64-musl@14.2.15':
optional: true optional: true
'@next/swc-linux-x64-musl@14.2.7': '@next/swc-linux-x64-musl@14.2.7':
optional: true optional: true
'@next/swc-linux-x64-musl@15.2.1':
optional: true
'@next/swc-win32-arm64-msvc@14.2.15': '@next/swc-win32-arm64-msvc@14.2.15':
optional: true optional: true
'@next/swc-win32-arm64-msvc@14.2.7': '@next/swc-win32-arm64-msvc@14.2.7':
optional: true optional: true
'@next/swc-win32-arm64-msvc@15.2.1':
optional: true
'@next/swc-win32-ia32-msvc@14.2.15': '@next/swc-win32-ia32-msvc@14.2.15':
optional: true optional: true
@@ -3211,6 +3536,9 @@ snapshots:
'@next/swc-win32-x64-msvc@14.2.7': '@next/swc-win32-x64-msvc@14.2.7':
optional: true optional: true
'@next/swc-win32-x64-msvc@15.2.1':
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
@@ -3459,6 +3787,10 @@ snapshots:
'@swc/counter@0.1.3': {} '@swc/counter@0.1.3': {}
'@swc/helpers@0.5.15':
dependencies:
tslib: 2.8.1
'@swc/helpers@0.5.5': '@swc/helpers@0.5.5':
dependencies: dependencies:
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
@@ -4691,11 +5023,23 @@ snapshots:
next: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1 react: 18.3.1
'@vercel/analytics@1.3.1(next@15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
dependencies:
server-only: 0.0.1
optionalDependencies:
next: 15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
'@vercel/speed-insights@1.0.12(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': '@vercel/speed-insights@1.0.12(next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
optionalDependencies: optionalDependencies:
next: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1 react: 18.3.1
'@vercel/speed-insights@1.0.12(next@15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)':
optionalDependencies:
next: 15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
'@webassemblyjs/ast@1.14.1': '@webassemblyjs/ast@1.14.1':
dependencies: dependencies:
'@webassemblyjs/helper-numbers': 1.13.2 '@webassemblyjs/helper-numbers': 1.13.2
@@ -4922,6 +5266,18 @@ snapshots:
color-name@1.1.4: {} color-name@1.1.4: {}
color-string@1.9.1:
dependencies:
color-name: 1.1.4
simple-swizzle: 0.2.2
optional: true
color@4.2.3:
dependencies:
color-convert: 2.0.1
color-string: 1.9.1
optional: true
comma-separated-tokens@2.0.3: {} comma-separated-tokens@2.0.3: {}
commander@10.0.1: {} commander@10.0.1: {}
@@ -4974,6 +5330,9 @@ snapshots:
dequal@2.0.3: {} dequal@2.0.3: {}
detect-libc@2.0.3:
optional: true
devlop@1.1.0: devlop@1.1.0:
dependencies: dependencies:
dequal: 2.0.3 dequal: 2.0.3
@@ -5234,6 +5593,9 @@ snapshots:
is-alphabetical: 2.0.1 is-alphabetical: 2.0.1
is-decimal: 2.0.1 is-decimal: 2.0.1
is-arrayish@0.3.2:
optional: true
is-binary-path@2.1.0: is-binary-path@2.1.0:
dependencies: dependencies:
binary-extensions: 2.3.0 binary-extensions: 2.3.0
@@ -5997,6 +6359,12 @@ 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)
next-themes@0.2.1(next@15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
next: 15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1): next@14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies: dependencies:
'@next/env': 14.2.15 '@next/env': 14.2.15
@@ -6047,6 +6415,31 @@ snapshots:
- '@babel/core' - '@babel/core'
- babel-plugin-macros - babel-plugin-macros
next@15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@next/env': 15.2.1
'@swc/counter': 0.1.3
'@swc/helpers': 0.5.15
busboy: 1.6.0
caniuse-lite: 1.0.30001683
postcss: 8.4.31
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
styled-jsx: 5.1.6(react@18.3.1)
optionalDependencies:
'@next/swc-darwin-arm64': 15.2.1
'@next/swc-darwin-x64': 15.2.1
'@next/swc-linux-arm64-gnu': 15.2.1
'@next/swc-linux-arm64-musl': 15.2.1
'@next/swc-linux-x64-gnu': 15.2.1
'@next/swc-linux-x64-musl': 15.2.1
'@next/swc-win32-arm64-msvc': 15.2.1
'@next/swc-win32-x64-msvc': 15.2.1
sharp: 0.33.5
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
node-releases@2.0.14: {} node-releases@2.0.14: {}
node-releases@2.0.18: {} node-releases@2.0.18: {}
@@ -6310,6 +6703,9 @@ snapshots:
semver@7.6.1: {} semver@7.6.1: {}
semver@7.7.1:
optional: true
serialize-javascript@6.0.2: serialize-javascript@6.0.2:
dependencies: dependencies:
randombytes: 2.1.0 randombytes: 2.1.0
@@ -6318,6 +6714,33 @@ snapshots:
set-blocking@2.0.0: {} set-blocking@2.0.0: {}
sharp@0.33.5:
dependencies:
color: 4.2.3
detect-libc: 2.0.3
semver: 7.7.1
optionalDependencies:
'@img/sharp-darwin-arm64': 0.33.5
'@img/sharp-darwin-x64': 0.33.5
'@img/sharp-libvips-darwin-arm64': 1.0.4
'@img/sharp-libvips-darwin-x64': 1.0.4
'@img/sharp-libvips-linux-arm': 1.0.5
'@img/sharp-libvips-linux-arm64': 1.0.4
'@img/sharp-libvips-linux-s390x': 1.0.4
'@img/sharp-libvips-linux-x64': 1.0.4
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
'@img/sharp-linux-arm': 0.33.5
'@img/sharp-linux-arm64': 0.33.5
'@img/sharp-linux-s390x': 0.33.5
'@img/sharp-linux-x64': 0.33.5
'@img/sharp-linuxmusl-arm64': 0.33.5
'@img/sharp-linuxmusl-x64': 0.33.5
'@img/sharp-wasm32': 0.33.5
'@img/sharp-win32-ia32': 0.33.5
'@img/sharp-win32-x64': 0.33.5
optional: true
shebang-command@2.0.0: shebang-command@2.0.0:
dependencies: dependencies:
shebang-regex: 3.0.0 shebang-regex: 3.0.0
@@ -6349,6 +6772,11 @@ snapshots:
signal-exit@4.1.0: {} signal-exit@4.1.0: {}
simple-swizzle@0.2.2:
dependencies:
is-arrayish: 0.3.2
optional: true
skmeans@0.9.7: {} skmeans@0.9.7: {}
source-map-js@1.2.0: {} source-map-js@1.2.0: {}
@@ -6404,6 +6832,11 @@ snapshots:
client-only: 0.0.1 client-only: 0.0.1
react: 18.3.1 react: 18.3.1
styled-jsx@5.1.6(react@18.3.1):
dependencies:
client-only: 0.0.1
react: 18.3.1
sucrase@3.35.0: sucrase@3.35.0:
dependencies: dependencies:
'@jridgewell/gen-mapping': 0.3.5 '@jridgewell/gen-mapping': 0.3.5