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";
interface Props {
params: { package: string };
params: Promise<{ package: string }>;
}
export default function Page({ params }: Props) {
if (!packages.map((p) => p.name).includes(params.package)) {
export default async function Page({ params }: Props) {
const packageName = (await params).package;
if (!packages.map((p) => p.name).includes(packageName)) {
return notFound();
}
return <PackageDocs package={params.package} />;
return <PackageDocs package={packageName} />;
}
export async function generateMetadata({ params }: Props) {
const packageName = params.package;
const packageName = (await params).package;
return {
title: `${packageName} - jazz`,
description: `API reference for ${packageName}.`,

View File

@@ -15,8 +15,9 @@ async function getMdxSource(slugPath: string, framework: string) {
}
export async function generateMetadata({
params: { slug, framework },
}: { params: { slug: string[]; framework: string } }) {
params,
}: { params: Promise<{ slug: string[]; framework: string }> }) {
const { slug, framework } = await params;
const slugPath = slug.join("/");
try {
const mdxSource = await getMdxSource(slugPath, framework);
@@ -39,8 +40,9 @@ export async function generateMetadata({
}
export default async function Page({
params: { slug, framework },
}: { params: { slug: string[]; framework: string } }) {
params,
}: { params: Promise<{ slug: string[]; framework: string }> }) {
const { slug, framework } = await params;
const slugPath = slug.join("/");
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 />
<ProblemStatementSection />
<div className="container flex flex-col gap-12 mt-12 lg:gap-20 lg:mt-20">
<HowJazzWorksSection />
@@ -32,6 +30,8 @@ export default function Home() {
</p>
</Testimonial>
<ProblemStatementSection />
<ChatDemoSection />
<LocalFirstFeaturesSection />

View File

@@ -1,3 +1,4 @@
import LatencyChart from "@/components/LatencyChart";
import { clsx } from "clsx";
import { HeroHeader } from "gcmp-design-system/src/app/components/molecules/HeroHeader";
import type { Metadata } from "next";
@@ -13,10 +14,6 @@ export const metadata: Metadata = {
},
};
const LatencyChart = dynamic(() => import("@/components/LatencyChart"), {
ssr: false,
});
interface DataRow {
up: boolean;
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
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) {
const spacing = parseFloat(req.nextUrl.searchParams.get("spacing") || "1.5");

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
import CoPlainTextDescription from "@/app/(home)/coValueDescriptions/coPlainTextDescription.mdx";
import CursorsAndCaretsDescription from "@/app/(home)/toolkit/cursorsAndCarets.mdx";
import TwoWaySyncDescription from "@/app/(home)/toolkit/twoWaySync.mdx";
import VideoPresenceCallsDescription from "@/app/(home)/toolkit/videoPresenceCalls.mdx";
import CoPlainTextDescription from "@/app/(others)/(home)/coValueDescriptions/coPlainTextDescription.mdx";
import CursorsAndCaretsDescription from "@/app/(others)/(home)/toolkit/cursorsAndCarets.mdx";
import TwoWaySyncDescription from "@/app/(others)/(home)/toolkit/twoWaySync.mdx";
import VideoPresenceCallsDescription from "@/app/(others)/(home)/toolkit/videoPresenceCalls.mdx";
import { CodeRef } from "gcmp-design-system/src/app/components/atoms/CodeRef";
import { P } from "gcmp-design-system/src/app/components/atoms/Paragraph";
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="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">
Local-first development toolkit
Toolkit for cloud-synced local state
</p>
<H1>
<span className="inline-block">Ship top-tier apps</span>{" "}
<span className="inline-block">at high tempo.</span>
<span className="inline-block">Whip up an app.</span>
</H1>
<Prose size="lg" className="text-pretty max-w-2xl dark:text-stone-200">
<p>
Jazz is a framework for building local-first apps
&mdash;&nbsp;an&nbsp;architecture that lets companies like Figma and
Linear play in a league of their own.
Jazz lets you build with cloud-synced local state, completely
replacing backends and databases. You'll ship better apps, much faster.
</p>
<p>
Open source. Self-host or use{" "}
<Link className="text-reset" href="/cloud">
Jazz Cloud
</Link>{" "}
for zero-config magic.
for an &ldquo;it just works&rdquo; DX.
</p>
</Prose>

View File

@@ -76,17 +76,11 @@ function Step({
}
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 (
<div className="grid gap-8">
<div className="grid gap-3">
<p className="uppercase text-blue tracking-widest text-sm font-medium dark:text-stone-400">
Collaborative Values
State with built-in collaboration
</p>
<H2>Build entire apps using only client-side code</H2>
@@ -94,7 +88,7 @@ export function HowJazzWorksSection() {
<GappedGrid>
<Step
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">
<CodeStepSchema />
@@ -110,7 +104,7 @@ export function HowJazzWorksSection() {
</Step>
<Step
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">
<CodeStepAction />
@@ -118,7 +112,7 @@ export function HowJazzWorksSection() {
</Step>
<Step
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">
<CodeStepRender />

View File

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

View File

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

View File

@@ -4,7 +4,7 @@
"private": true,
"type": "module",
"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": "next build",
"start": "next start",
@@ -40,7 +40,7 @@
"mdast-util-from-markdown": "^2.0.0",
"mdast-util-mdx": "^3.0.0",
"micromark-extension-mdxjs": "^3.0.0",
"next": "14.2.15",
"next": "15.2.1",
"next-themes": "^0.2.1",
"qrcode": "^1.5.4",
"react": "^18",

443
homepage/pnpm-lock.yaml generated
View File

@@ -207,10 +207,10 @@ importers:
version: 3.1.5
'@vercel/analytics':
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':
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:
specifier: ^2.1.1
version: 2.1.1
@@ -245,11 +245,11 @@ importers:
specifier: ^3.0.0
version: 3.0.0
next:
specifier: 14.2.15
version: 14.2.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
specifier: 15.2.1
version: 15.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
next-themes:
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:
specifier: ^1.5.4
version: 1.5.4
@@ -414,6 +414,9 @@ packages:
peerDependencies:
postcss: ^8.4
'@emnapi/runtime@1.3.1':
resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
'@evilmartians/harmony@1.2.0':
resolution: {integrity: sha512-Ua8gpC+28Eo9D2/xynTrrZIrSawgtobwtRLLYq4wH8N19qoMspWZ1vqfsDDVPgQFa+iHsVAk/SbdmoPAj6OH1g==}
@@ -450,6 +453,111 @@ packages:
peerDependencies:
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':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -494,6 +602,9 @@ packages:
'@next/env@14.2.7':
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':
resolution: {integrity: sha512-2AMyCrz1SxSWNUpADyLz3RbPbq0GHrchbO7Msvg7IsH8MrTw3VYaZSI1KNa6JzZIoykwtNVSEL+uBmPZi106Jw==}
peerDependencies:
@@ -517,6 +628,12 @@ packages:
cpu: [arm64]
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':
resolution: {integrity: sha512-5TGyjFcf8ampZP3e+FyCax5zFVHi+Oe7sZyaKOngsqyaNEpOgkKB3sqmymkZfowy3ufGA/tUgDPPxpQx931lHg==}
engines: {node: '>= 10'}
@@ -529,6 +646,12 @@ packages:
cpu: [x64]
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':
resolution: {integrity: sha512-3Bwv4oc08ONiQ3FiOLKT72Q+ndEMyLNsc/D3qnLMbtUYTQAmkx9E/JRu0DBpHxNddBmNT5hxz1mYBphJ3mfrrw==}
engines: {node: '>= 10'}
@@ -541,6 +664,12 @@ packages:
cpu: [arm64]
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':
resolution: {integrity: sha512-k5xf/tg1FBv/M4CMd8S+JL3uV9BnnRmoe7F+GWC3DxkTCD9aewFRH1s5rJ1zkzDa+Do4zyN8qD0N8c84Hu96FQ==}
engines: {node: '>= 10'}
@@ -553,6 +682,12 @@ packages:
cpu: [arm64]
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':
resolution: {integrity: sha512-kE6q38hbrRbKEkkVn62reLXhThLRh6/TvgSP56GkFNhU22TbIrQDEMrO7j0IcQHcew2wfykq8lZyHFabz0oBrA==}
engines: {node: '>= 10'}
@@ -565,6 +700,12 @@ packages:
cpu: [x64]
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':
resolution: {integrity: sha512-PZ5YE9ouy/IdO7QVJeIcyLn/Rc4ml9M2G4y3kCM9MNf1YKvFY4heg3pVa/jQbMro+tP6yc4G2o9LjAz1zxD7tQ==}
engines: {node: '>= 10'}
@@ -577,6 +718,12 @@ packages:
cpu: [x64]
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':
resolution: {integrity: sha512-2raR16703kBvYEQD9HNLyb0/394yfqzmIeyp2nDzcPV4yPjqNUG3ohX6jX00WryXz6s1FXpVhsCo3i+g4RUX+g==}
engines: {node: '>= 10'}
@@ -589,6 +736,12 @@ packages:
cpu: [arm64]
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':
resolution: {integrity: sha512-fyTE8cklgkyR1p03kJa5zXEaZ9El+kDNM5A+66+8evQS5e/6v0Gk28LqA0Jet8gKSOyP+OTm/tJHzMlGdQerdQ==}
engines: {node: '>= 10'}
@@ -613,6 +766,12 @@ packages:
cpu: [x64]
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':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -880,6 +1039,9 @@ packages:
'@swc/counter@0.1.3':
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
'@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
'@swc/helpers@0.5.5':
resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==}
@@ -1576,6 +1738,13 @@ packages:
color-name@1.1.4:
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:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -1641,6 +1810,10 @@ packages:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
detect-libc@2.0.3:
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
engines: {node: '>=8'}
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
@@ -1883,6 +2056,9 @@ packages:
is-alphanumerical@2.0.1:
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:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
@@ -2351,6 +2527,27 @@ packages:
sass:
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:
resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
@@ -2611,6 +2808,11 @@ packages:
engines: {node: '>=10'}
hasBin: true
semver@7.7.1:
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
engines: {node: '>=10'}
hasBin: true
serialize-javascript@6.0.2:
resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
@@ -2620,6 +2822,10 @@ packages:
set-blocking@2.0.0:
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:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -2643,6 +2849,9 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
simple-swizzle@0.2.2:
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
skmeans@0.9.7:
resolution: {integrity: sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==}
@@ -2710,6 +2919,19 @@ packages:
babel-plugin-macros:
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:
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -3039,6 +3261,11 @@ snapshots:
dependencies:
postcss: 8.4.38
'@emnapi/runtime@1.3.1':
dependencies:
tslib: 2.8.1
optional: true
'@evilmartians/harmony@1.2.0': {}
'@floating-ui/core@1.6.8':
@@ -3079,6 +3306,81 @@ snapshots:
dependencies:
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':
dependencies:
string-width: 5.1.2
@@ -3150,6 +3452,8 @@ snapshots:
'@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))':
dependencies:
source-map: 0.7.4
@@ -3163,42 +3467,63 @@ snapshots:
'@next/swc-darwin-arm64@14.2.7':
optional: true
'@next/swc-darwin-arm64@15.2.1':
optional: true
'@next/swc-darwin-x64@14.2.15':
optional: true
'@next/swc-darwin-x64@14.2.7':
optional: true
'@next/swc-darwin-x64@15.2.1':
optional: true
'@next/swc-linux-arm64-gnu@14.2.15':
optional: true
'@next/swc-linux-arm64-gnu@14.2.7':
optional: true
'@next/swc-linux-arm64-gnu@15.2.1':
optional: true
'@next/swc-linux-arm64-musl@14.2.15':
optional: true
'@next/swc-linux-arm64-musl@14.2.7':
optional: true
'@next/swc-linux-arm64-musl@15.2.1':
optional: true
'@next/swc-linux-x64-gnu@14.2.15':
optional: true
'@next/swc-linux-x64-gnu@14.2.7':
optional: true
'@next/swc-linux-x64-gnu@15.2.1':
optional: true
'@next/swc-linux-x64-musl@14.2.15':
optional: true
'@next/swc-linux-x64-musl@14.2.7':
optional: true
'@next/swc-linux-x64-musl@15.2.1':
optional: true
'@next/swc-win32-arm64-msvc@14.2.15':
optional: true
'@next/swc-win32-arm64-msvc@14.2.7':
optional: true
'@next/swc-win32-arm64-msvc@15.2.1':
optional: true
'@next/swc-win32-ia32-msvc@14.2.15':
optional: true
@@ -3211,6 +3536,9 @@ snapshots:
'@next/swc-win32-x64-msvc@14.2.7':
optional: true
'@next/swc-win32-x64-msvc@15.2.1':
optional: true
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -3459,6 +3787,10 @@ snapshots:
'@swc/counter@0.1.3': {}
'@swc/helpers@0.5.15':
dependencies:
tslib: 2.8.1
'@swc/helpers@0.5.5':
dependencies:
'@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)
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)':
optionalDependencies:
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@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':
dependencies:
'@webassemblyjs/helper-numbers': 1.13.2
@@ -4922,6 +5266,18 @@ snapshots:
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: {}
commander@10.0.1: {}
@@ -4974,6 +5330,9 @@ snapshots:
dequal@2.0.3: {}
detect-libc@2.0.3:
optional: true
devlop@1.1.0:
dependencies:
dequal: 2.0.3
@@ -5234,6 +5593,9 @@ snapshots:
is-alphabetical: 2.0.1
is-decimal: 2.0.1
is-arrayish@0.3.2:
optional: true
is-binary-path@2.1.0:
dependencies:
binary-extensions: 2.3.0
@@ -5997,6 +6359,12 @@ snapshots:
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):
dependencies:
'@next/env': 14.2.15
@@ -6047,6 +6415,31 @@ snapshots:
- '@babel/core'
- 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.18: {}
@@ -6310,6 +6703,9 @@ snapshots:
semver@7.6.1: {}
semver@7.7.1:
optional: true
serialize-javascript@6.0.2:
dependencies:
randombytes: 2.1.0
@@ -6318,6 +6714,33 @@ snapshots:
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:
dependencies:
shebang-regex: 3.0.0
@@ -6349,6 +6772,11 @@ snapshots:
signal-exit@4.1.0: {}
simple-swizzle@0.2.2:
dependencies:
is-arrayish: 0.3.2
optional: true
skmeans@0.9.7: {}
source-map-js@1.2.0: {}
@@ -6404,6 +6832,11 @@ snapshots:
client-only: 0.0.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:
dependencies:
'@jridgewell/gen-mapping': 0.3.5