diff --git a/.gitignore b/.gitignore
index b8753d48c..1e84cb7b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@ dist/
storybook-static/
next-env.d.ts
+packages/icons-react/icons.tsx
# editors
.idea/
@@ -17,5 +18,4 @@ next-env.d.ts
# Secrets
.FIGMA_TOKEN
-.vercel
-packages/icons-react/icons.tsx
\ No newline at end of file
+.env.local
diff --git a/apps/docs/.env.example b/apps/docs/.env.example
new file mode 100644
index 000000000..0581ae91a
--- /dev/null
+++ b/apps/docs/.env.example
@@ -0,0 +1,2 @@
+# Creata a viewer token at sanity.io/manage
+SANITY_VIEWER_TOKEN=
diff --git a/apps/docs/.gitignore b/apps/docs/.gitignore
index 841efc183..ec44b59aa 100644
--- a/apps/docs/.gitignore
+++ b/apps/docs/.gitignore
@@ -4,3 +4,6 @@
public/resources/icons/
public/storybook
component-props.ts
+docgen.ts
+
+.env
diff --git a/apps/docs/app/routes/_docs.tsx b/apps/docs/app/routes/_docs.tsx
new file mode 100644
index 000000000..975b29f5a
--- /dev/null
+++ b/apps/docs/app/routes/_docs.tsx
@@ -0,0 +1,97 @@
+import { previewMiddleware } from '@/lib/preview-middleware';
+import { sanityFetch } from '@/lib/sanity';
+import { VisualEditing } from '@/lib/visual-editing';
+import appCss from '@/styles/app.css?url';
+import { DisablePreviewMode } from '@/ui/disable-preview-mode';
+import { Footer } from '@/ui/footer';
+import { MainNav } from '@/ui/main-nav';
+import { GrunnmurenProvider } from '@obosbbl/grunnmuren-react';
+import {
+ type NavigateOptions,
+ Outlet,
+ ScrollRestoration,
+ type ToOptions,
+ createFileRoute,
+ useRouter,
+} from '@tanstack/react-router';
+import { createServerFn } from '@tanstack/start';
+import { defineQuery } from 'groq';
+
+const COMPONENTS_NAVIGATION_QUERY = defineQuery(
+ // make sure the slug is always a string so we don't have add fallback value in code just to make TypeScript happy
+ `*[_type == "component"]{ _id, name, 'slug': coalesce(slug.current, '')} | order(name asc)`,
+);
+
+const checkIsPreview = createServerFn({ method: 'GET' })
+ .middleware([previewMiddleware])
+ .handler(({ context }) => {
+ return context.previewMode;
+ });
+
+// This is the shared layout for all the Grunnmuren docs pages that are "public", ie not the Sanity studio
+export const Route = createFileRoute('/_docs')({
+ component: RootLayout,
+ head: () => ({
+ links: [{ rel: 'stylesheet', href: appCss }],
+ meta: [
+ {
+ title: "Grunnmuren - OBOS' Design System",
+ },
+ ],
+ }),
+ beforeLoad: async () => {
+ const isPreview = await checkIsPreview();
+ return { isPreview };
+ },
+ loader: async ({ context }) => {
+ return {
+ componentsNavItems: (
+ await sanityFetch({ query: COMPONENTS_NAVIGATION_QUERY })
+ ).data,
+ isPreview: context.isPreview,
+ };
+ },
+});
+
+function RootLayout() {
+ const router = useRouter();
+ const { isPreview } = Route.useLoaderData();
+
+ return (
+ <>
+ router.navigate({ to, ...options })}
+ useHref={(to) => router.buildLocation({ to }).href}
+ >
+ {isPreview && (
+ <>
+
+
+ >
+ )}
+
+
+
+ >
+ );
+}
+
+// See comments on GrunnmurenProvider in
+declare module 'react-aria-components' {
+ interface RouterConfig {
+ href: ToOptions['to'];
+ routerOptions: Omit;
+ }
+}
diff --git a/apps/docs/app/routes/_docs/komponenter/$slug.tsx b/apps/docs/app/routes/_docs/komponenter/$slug.tsx
new file mode 100644
index 000000000..b04ff96bf
--- /dev/null
+++ b/apps/docs/app/routes/_docs/komponenter/$slug.tsx
@@ -0,0 +1,54 @@
+import * as badgeExamples from '@/examples/badge';
+import * as buttonExamples from '@/examples/button';
+import { sanityFetch } from '@/lib/sanity.server';
+import { Content } from '@/ui/content';
+import { PropsTable } from '@/ui/props-table';
+import { createFileRoute, notFound } from '@tanstack/react-router';
+import * as props from 'docgen';
+import { defineQuery } from 'groq';
+
+const COMPONENT_QUERY = defineQuery(
+ `*[_type == "component" && slug.current == $slug][0]{ content, "name": coalesce(name, '') }`,
+);
+
+export const Route = createFileRoute('/_docs/komponenter/$slug')({
+ component: Page,
+ loader: async ({ params, context }) => {
+ console.log('context in component route', context);
+ const res = await sanityFetch({
+ data: {
+ query: COMPONENT_QUERY,
+ params: { slug: params.slug },
+ },
+ });
+
+ if (res.data == null) {
+ throw notFound();
+ }
+
+ const componentName = res.data.name;
+ const componentProps = props[componentName].props;
+
+ return { data: res.data, componentProps };
+ },
+});
+
+function Page() {
+ const { data, componentProps } = Route.useLoaderData();
+
+ // @ts-expect-error this works for now until we figure how to make the examples work better with Sanity
+ const { scope, examples } = {
+ Button: buttonExamples,
+ Badge: badgeExamples,
+ }[data.name];
+
+ return (
+ <>
+ {data.name}
+
+
+
+
+ >
+ );
+}
diff --git a/apps/docs/app/routes/api/preview-mode/disable.ts b/apps/docs/app/routes/api/preview-mode/disable.ts
new file mode 100644
index 000000000..3e393cd70
--- /dev/null
+++ b/apps/docs/app/routes/api/preview-mode/disable.ts
@@ -0,0 +1,14 @@
+import { createAPIFileRoute } from '@tanstack/start/api';
+import { deleteCookie, sendRedirect } from 'vinxi/http';
+
+export const APIRoute = createAPIFileRoute('/api/preview-mode/disable')({
+ GET: () => {
+ deleteCookie('__sanity_preview', {
+ path: '/',
+ secure: import.meta.env.PROD,
+ httpOnly: true,
+ sameSite: 'strict',
+ });
+ sendRedirect('/');
+ },
+});
diff --git a/apps/docs/app/routes/api/preview-mode/enable.ts b/apps/docs/app/routes/api/preview-mode/enable.ts
new file mode 100644
index 000000000..d1e719a66
--- /dev/null
+++ b/apps/docs/app/routes/api/preview-mode/enable.ts
@@ -0,0 +1,37 @@
+import { randomBytes } from 'node:crypto';
+import { client } from '@/lib/sanity';
+import { validatePreviewUrl } from '@sanity/preview-url-secret';
+import { createAPIFileRoute } from '@tanstack/start/api';
+import { SanityClient } from 'sanity';
+import { sendRedirect, setCookie } from 'vinxi/http';
+
+export const APIRoute = createAPIFileRoute('/api/preview-mode/enable')({
+ GET: async ({ request }) => {
+ if (!process.env.SANITY_VIEWER_TOKEN) {
+ throw new Response('Preview mode missing token', { status: 401 });
+ }
+
+ const clientWithToken = client.withConfig({
+ token: process.env.SANITY_VIEWER_TOKEN,
+ });
+
+ const { isValid, redirectTo = '/' } = await validatePreviewUrl(
+ clientWithToken,
+ request.url,
+ );
+
+ if (!isValid) {
+ throw new Response('Invalid secret', { status: 401 });
+ }
+
+ // we can use sameSite: 'strict' because we're running an embedded studio
+ // setCookie('__sanity_preview', randomBytes(16).toString('hex'), {
+ setCookie('__sanity_preview', 'true', {
+ path: '/',
+ secure: import.meta.env.PROD,
+ httpOnly: true,
+ sameSite: 'strict',
+ });
+ sendRedirect(redirectTo);
+ },
+});
diff --git a/apps/docs/dktp/main.yml b/apps/docs/dktp/main.yml
index f873e4973..c9fe44e54 100644
--- a/apps/docs/dktp/main.yml
+++ b/apps/docs/dktp/main.yml
@@ -16,6 +16,9 @@ properties:
containers:
- image: dktprodacr.azurecr.io/grunnmuren/docs:${IMAGE_TAG}
name: docs
+ env:
+ - name: SANITY_VIEWER_TOKEN
+ secretRef: ${todo}
resources:
cpu: 0.25
memory: 0.5Gi
diff --git a/apps/docs/package.json b/apps/docs/package.json
index 7ea096060..4caeced5c 100644
--- a/apps/docs/package.json
+++ b/apps/docs/package.json
@@ -29,8 +29,10 @@
"@sanity/client": "7.12.1",
"@sanity/code-input": "6.0.3",
"@sanity/image-url": "^1.2.0",
+ "@sanity/preview-url-secret": "2.1.15",
"@sanity/table": "2.0.0",
"@sanity/vision": "4.14.2",
+ "@sanity/visual-editing": "4.0.0",
"@tanstack/nitro-v2-vite-plugin": "1.133.19",
"@tanstack/react-router": "1.135.0",
"@tanstack/react-start": "1.135.0",
diff --git a/apps/docs/sanity.config.ts b/apps/docs/sanity.config.ts
index 34f6c295b..505d12e63 100644
--- a/apps/docs/sanity.config.ts
+++ b/apps/docs/sanity.config.ts
@@ -3,6 +3,7 @@ import { codeInput } from '@sanity/code-input';
import { table } from '@sanity/table';
import { visionTool } from '@sanity/vision';
import { defineConfig } from 'sanity';
+import { defineDocuments, presentationTool } from 'sanity/presentation';
import { structureTool } from 'sanity/structure';
import { schemaTypes } from './studio/schema-types';
@@ -70,6 +71,22 @@ export default defineConfig({
visionTool(),
codeInput(),
table(),
+ presentationTool({
+ previewUrl: {
+ previewMode: {
+ enable: '/api/preview-mode/enable',
+ disable: '/api/preview-mode/disable',
+ },
+ },
+ resolve: {
+ mainDocuments: defineDocuments([
+ {
+ route: '/komponenter/:slug',
+ filter: `_type == "component" && slug.current == $slug`,
+ },
+ ]),
+ },
+ }),
],
schema: {
types: schemaTypes,
diff --git a/apps/docs/src/lib/preview-middleware.ts b/apps/docs/src/lib/preview-middleware.ts
new file mode 100644
index 000000000..0870bda75
--- /dev/null
+++ b/apps/docs/src/lib/preview-middleware.ts
@@ -0,0 +1,12 @@
+import { createMiddleware } from '@tanstack/start';
+import { getCookie } from 'vinxi/http';
+
+export const previewMiddleware = createMiddleware().server(({ next }) => {
+ const isPreview = getCookie('__sanity_preview') === 'true';
+ console.log('middleware', { isPreview });
+ return next({
+ context: {
+ previewMode: isPreview,
+ },
+ });
+});
diff --git a/apps/docs/src/lib/sanity.server.ts b/apps/docs/src/lib/sanity.server.ts
new file mode 100644
index 000000000..e9df71aec
--- /dev/null
+++ b/apps/docs/src/lib/sanity.server.ts
@@ -0,0 +1,22 @@
+import type { QueryParams } from '@sanity/client';
+import { createServerFn } from '@tanstack/start';
+import { previewMiddleware } from './preview-middleware';
+import { sanityFetch as _sanityFetch, client } from './sanity';
+
+export const sanityFetch = createServerFn({ method: 'GET' })
+ .middleware([previewMiddleware])
+ .validator((data: { query: string; params: QueryParams }) => data)
+ .handler(async ({ data, context }) => {
+ const { query, params } = data;
+
+ if (context.previewMode) {
+ const previewClient = client.withConfig({
+ perspective: 'previewDrafts',
+ token: process.env.SANITY_VIEWER_TOKEN, // Needed for accessing previewDrafts perspective
+ useCdn: false, // the previewDrafts perspective requires this to be `false
+ });
+ return _sanityFetch({ query, params, client: previewClient });
+ }
+
+ return _sanityFetch({ query, params });
+ });
diff --git a/apps/docs/src/lib/sanity.ts b/apps/docs/src/lib/sanity.ts
index 62117192a..405c0a6d3 100644
--- a/apps/docs/src/lib/sanity.ts
+++ b/apps/docs/src/lib/sanity.ts
@@ -5,17 +5,20 @@ export const client = createClient({
dataset: 'grunnmuren',
apiVersion: '2024-09-18',
useCdn: true,
+ perspective: 'published',
});
export async function sanityFetch({
query,
params = {},
+ client: _client = client,
}: {
query: QueryString;
params?: QueryParams;
+ client?: typeof client;
}) {
// Not sure what's happening here, but I need to set filterReponse to false to get the data as an array?
- const { result } = await client.fetch(query, params, {
+ const { result } = await _client.fetch(query, params, {
filterResponse: false,
});
diff --git a/apps/docs/src/lib/visual-editing.ts b/apps/docs/src/lib/visual-editing.ts
new file mode 100644
index 000000000..3ec4ad795
--- /dev/null
+++ b/apps/docs/src/lib/visual-editing.ts
@@ -0,0 +1,41 @@
+import { enableVisualEditing } from '@sanity/visual-editing'
+import { useNavigate, useRouter } from '@tanstack/react-router';
+import { useEffect } from 'react'
+
+export function VisualEditing() {
+ const router = useRouter();
+
+
+ useEffect(() => {
+ const disable = enableVisualEditing({
+ history: {
+ // subscribe: (_navigate) => {
+ // router.history.subscribe
+ // },
+ // subscribe: (_navigate) => {
+ // },
+ // subscribe: (_navigate) => {
+ // setNavigate(() => _navigate)
+ // return () => setNavigate(undefined)
+ // },
+ update: (update) => {
+ console.log(update);
+ switch (update.type) {
+ case 'push':
+ router.history.push(update.url);
+ break;
+ case 'replace':
+ router.history.replace(update.url);
+ break;
+ case 'pop':
+ router.history.back();
+ break;
+ }
+ },
+ }
+ })
+
+ }, [router]);
+
+ return null;
+}
diff --git a/apps/docs/src/lib/visual-editing.tsx b/apps/docs/src/lib/visual-editing.tsx
new file mode 100644
index 000000000..de178fc64
--- /dev/null
+++ b/apps/docs/src/lib/visual-editing.tsx
@@ -0,0 +1,57 @@
+import {
+ type HistoryAdapterNavigate,
+ enableVisualEditing,
+} from '@sanity/visual-editing';
+import { useNavigate, useRouter } from '@tanstack/react-router';
+import { useEffect, useState } from 'react';
+
+export function VisualEditing() {
+ const router = useRouter();
+ const [navigate, setNavigate] = useState<
+ HistoryAdapterNavigate | undefined
+ >();
+
+ useEffect(() => {
+ const disable = enableVisualEditing({
+ history: {
+ subscribe: (_navigate) => {
+ console.log('subscribe');
+ setNavigate(() => {
+ _navigate({ type: 'replace', url: router.state.location.href });
+ return _navigate;
+ });
+ return () => setNavigate(undefined);
+ },
+ update: (update) => {
+ console.log('update', update);
+ switch (update.type) {
+ case 'push':
+ router.history.push(update.url);
+ break;
+ case 'replace':
+ router.history.replace(update.url);
+ break;
+ case 'pop':
+ router.history.back();
+ break;
+ }
+ },
+ },
+ });
+
+ return disable;
+ }, [router]);
+
+ useEffect(() => {
+ if (navigate) {
+ const unsubscribe = router.subscribe('onResolved', (evt) => {
+ console.log(evt);
+ navigate({ type: 'push', url: evt.toLocation.href });
+ });
+
+ return unsubscribe;
+ }
+ }, [router, navigate]);
+
+ return null;
+}
diff --git a/apps/docs/src/ui/disable-preview-mode.tsx b/apps/docs/src/ui/disable-preview-mode.tsx
new file mode 100644
index 000000000..2deecfc59
--- /dev/null
+++ b/apps/docs/src/ui/disable-preview-mode.tsx
@@ -0,0 +1,10 @@
+export function DisablePreviewMode() {
+ return (
+
+ Disable preview mode
+
+ );
+}
diff --git a/packages/react/package.json b/packages/react/package.json
index 72510b84c..5d48e4f70 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -22,22 +22,22 @@
},
"dependencies": {
"@obosbbl/grunnmuren-icons-react": "workspace:^2.1.0",
- "@react-aria/form": "^3.0.18",
- "@react-aria/interactions": "^3.25.3",
- "@react-aria/utils": "^3.29.1",
- "@react-stately/form": "^3.1.5",
- "@react-stately/utils": "^3.10.7",
+ "@react-aria/form": "^3.1.2",
+ "@react-aria/interactions": "^3.25.6",
+ "@react-aria/utils": "^3.31.0",
+ "@react-stately/form": "^3.2.2",
+ "@react-stately/utils": "^3.10.8",
"cva": "^1.0.0-0",
- "react-aria": "^3.41.1",
- "react-aria-components": "^1.10.1",
- "react-stately": "^3.39.0",
- "use-debounce": "^10.0.4"
+ "react-aria": "^3.44.0",
+ "react-aria-components": "^1.13.0",
+ "react-stately": "^3.42.0",
+ "use-debounce": "^10.0.6"
},
"peerDependencies": {
"react": "^19"
},
"devDependencies": {
- "@types/node": "^24.0.0",
+ "@types/node": "^24.10.0",
"tailwindcss": "4.1.17"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9b75f8df9..56a3f7b42 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -79,7 +79,7 @@ importers:
dependencies:
'@code-obos/sanity-auth':
specifier: 1.4.3
- version: 1.4.3(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ version: 1.4.3(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
'@obosbbl/grunnmuren-icons-react':
specifier: workspace:*
version: link:../../packages/icons-react
@@ -103,16 +103,22 @@ importers:
version: 7.12.1(debug@4.4.3)
'@sanity/code-input':
specifier: 6.0.3
- version: 6.0.3(@babel/runtime@7.28.4)(@codemirror/lint@6.8.4)(@codemirror/theme-one-dark@6.1.2)(@emotion/is-prop-valid@1.2.2)(codemirror@6.0.1)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ version: 6.0.3(@babel/runtime@7.28.4)(@codemirror/lint@6.8.4)(@codemirror/theme-one-dark@6.1.2)(@emotion/is-prop-valid@1.2.2)(codemirror@6.0.1)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
'@sanity/image-url':
specifier: ^1.2.0
version: 1.2.0
+ '@sanity/preview-url-secret':
+ specifier: 2.1.15
+ version: 2.1.15(@sanity/client@7.12.1)(@sanity/icons@3.7.4(react@19.2.0))(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))
'@sanity/table':
specifier: 2.0.0
- version: 2.0.0(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ version: 2.0.0(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
'@sanity/vision':
specifier: 4.14.2
version: 4.14.2(@babel/runtime@7.28.4)(@codemirror/lint@6.8.4)(@codemirror/theme-one-dark@6.1.2)(@emotion/is-prop-valid@1.2.2)(codemirror@6.0.1)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ '@sanity/visual-editing':
+ specifier: 4.0.0
+ version: 4.0.0(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))(next@16.0.1(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
'@tanstack/nitro-v2-vite-plugin':
specifier: 1.133.19
version: 1.133.19(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))
@@ -151,7 +157,7 @@ importers:
version: 4.1.8(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
sanity:
specifier: 4.14.2
- version: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
+ version: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
use-debounce:
specifier: 10.0.6
version: 10.0.6(react@19.2.0)
@@ -249,19 +255,19 @@ importers:
specifier: workspace:^2.1.0
version: link:../icons-react
'@react-aria/form':
- specifier: ^3.0.18
+ specifier: ^3.1.2
version: 3.1.2(react-dom@19.2.0(react@19.0.0))(react@19.0.0)
'@react-aria/interactions':
- specifier: ^3.25.3
+ specifier: ^3.25.6
version: 3.25.6(react-dom@19.2.0(react@19.0.0))(react@19.0.0)
'@react-aria/utils':
- specifier: ^3.29.1
+ specifier: ^3.31.0
version: 3.31.0(react-dom@19.2.0(react@19.0.0))(react@19.0.0)
'@react-stately/form':
- specifier: ^3.1.5
+ specifier: ^3.2.2
version: 3.2.2(react@19.0.0)
'@react-stately/utils':
- specifier: ^3.10.7
+ specifier: ^3.10.8
version: 3.10.8(react@19.0.0)
cva:
specifier: ^1.0.0-0
@@ -270,20 +276,20 @@ importers:
specifier: ^19
version: 19.0.0
react-aria:
- specifier: ^3.41.1
+ specifier: ^3.44.0
version: 3.44.0(react-dom@19.2.0(react@19.0.0))(react@19.0.0)
react-aria-components:
- specifier: ^1.10.1
+ specifier: ^1.13.0
version: 1.13.0(react-dom@19.2.0(react@19.0.0))(react@19.0.0)
react-stately:
- specifier: ^3.39.0
+ specifier: ^3.42.0
version: 3.42.0(react@19.0.0)
use-debounce:
- specifier: ^10.0.4
+ specifier: ^10.0.6
version: 10.0.6(react@19.0.0)
devDependencies:
'@types/node':
- specifier: ^24.0.0
+ specifier: ^24.10.0
version: 24.10.0
tailwindcss:
specifier: 4.1.17
@@ -3639,6 +3645,15 @@ packages:
resolution: {integrity: sha512-ThMeZDWvib5N5OxcJuEh8qGZInPaTR4zizSG5FaLDB6yfrhRh3eOOFCVj0CBklTv1hrrQ5lDwZMn3fb0yZKLvA==}
engines: {node: '>=20.19 <22 || >=22.12'}
+ '@sanity/mutate@0.11.0-canary.4':
+ resolution: {integrity: sha512-82jU3PvxQepY+jVJU1WaXQOf2Q9Q/fOCE2ksJZ4cnH3/WFOsg7RceYoOWb1XKthchTCD9zSBS9DRmb7FQ0Jlsg==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ xstate: ^5.19.0
+ peerDependenciesMeta:
+ xstate:
+ optional: true
+
'@sanity/mutate@0.12.4':
resolution: {integrity: sha512-CBPOOTCTyHFyhBL+seWpkGKJIE6lpaFd9yIeTIDt6miluBz6W8OKTNbaU6gPzOztqrr8KbrTaROiQAaMQDndQA==}
engines: {node: '>=18'}
@@ -3732,6 +3747,12 @@ packages:
react: ^18 || ^19.0.0
styled-components: ^6.1.15
+ '@sanity/visual-editing-csm@2.0.26':
+ resolution: {integrity: sha512-u4Rgy526YIJ6kDjM76UdnBGDEW+b+4vtHBVmXgiqYo5PGpgmWn1Tly+5uhqZLbYJ63dqyh1iFLlM0+S7ljrzPQ==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ '@sanity/client': ^7.11.2
+
'@sanity/visual-editing-types@1.1.8':
resolution: {integrity: sha512-4Hu3J8qDLanymnSapRzKwHlQl6SCsBbkL1o5fSMVbWVHvTk/j2uGLLNTsjASICTqUwSm3fwWlyahzCy2uS/LvQ==}
engines: {node: '>=18'}
@@ -3742,6 +3763,34 @@ packages:
'@sanity/types':
optional: true
+ '@sanity/visual-editing@4.0.0':
+ resolution: {integrity: sha512-GKhcOecukj9IW1y+uXjY1eT+PJHgUz+HNvf1RoMDMbDtUV4+e/mA3xLSkXkphN/iCNLHgNGhbdhAhVr7x9Iy9g==}
+ engines: {node: '>=20.19'}
+ peerDependencies:
+ '@remix-run/react': '>= 2'
+ '@sanity/client': ^7.12.0
+ '@sveltejs/kit': '>= 2'
+ next: '>= 13 || >=14.3.0-canary.0 <14.3.0 || >=15.0.0-rc || >=16.0.0-0'
+ react: ^18.3 || ^19
+ react-dom: ^18.3 || ^19
+ react-is: ^18.3 || ^19
+ react-router: '>= 6 || >= 7'
+ styled-components: ^6.1.19
+ svelte: '>= 4'
+ peerDependenciesMeta:
+ '@remix-run/react':
+ optional: true
+ '@sanity/client':
+ optional: true
+ '@sveltejs/kit':
+ optional: true
+ next:
+ optional: true
+ react-router:
+ optional: true
+ svelte:
+ optional: true
+
'@sentry-internal/browser-utils@8.55.0':
resolution: {integrity: sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==}
engines: {node: '>=14.18'}
@@ -4564,6 +4613,9 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ '@vercel/stega@0.1.2':
+ resolution: {integrity: sha512-P7mafQXjkrsoyTRppnt0N21udKS9wUmLXHRyP9saLXLHw32j/FgUJ3FscSWgvSqRs4cj7wKZtwqJEvWJ2jbGmA==}
+
'@vitejs/plugin-react@4.7.0':
resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -5558,6 +5610,9 @@ packages:
dom-serializer@2.0.0:
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
+ dom-walk@0.1.2:
+ resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==}
+
domelementtype@1.3.1:
resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==}
@@ -6073,6 +6128,13 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
+ get-random-values-esm@1.0.2:
+ resolution: {integrity: sha512-HMSDTgj1HPFAuZG0FqxzHbYt5JeEGDUeT9r1RLXhS6RZQS8rLRjokgjZ0Pd28CN0lhXlRwfH6eviZqZEJ2kIoA==}
+
+ get-random-values@1.2.2:
+ resolution: {integrity: sha512-lMyPjQyl0cNNdDf2oR+IQ/fM3itDvpoHy45Ymo2r0L1EjazeSl13SfbKZs7KtZ/3MDCeueiaJiuOEfKqRTsSgA==}
+ engines: {node: 10 || 12 || >=14}
+
get-stream@5.2.0:
resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
engines: {node: '>=8'}
@@ -6125,6 +6187,9 @@ packages:
resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==}
engines: {node: '>=0.10.0'}
+ global@4.4.0:
+ resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==}
+
globals@11.12.0:
resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
engines: {node: '>=4'}
@@ -7185,6 +7250,9 @@ packages:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
+ min-document@2.19.2:
+ resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==}
+
min-indent@1.0.1:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
@@ -9181,6 +9249,14 @@ packages:
resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==}
engines: {node: '>=10.12.0'}
+ valibot@1.1.0:
+ resolution: {integrity: sha512-Nk8lX30Qhu+9txPYTwM0cFlWLdPFsFr6LblzqIySfbZph9+BFsAHsNvHOymEviUepeIW6KFHzpX8TKhbptBXXw==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
@@ -10700,9 +10776,9 @@ snapshots:
dependencies:
mime: 3.0.0
- '@code-obos/sanity-auth@1.4.3(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))':
+ '@code-obos/sanity-auth@1.4.3(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))':
dependencies:
- sanity: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
+ sanity: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
styled-components: 6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@codemirror/autocomplete@6.19.1':
@@ -12063,21 +12139,21 @@ snapshots:
'@poppinss/exception@1.2.2': {}
- '@portabletext/block-tools@4.0.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))':
+ '@portabletext/block-tools@4.0.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))':
dependencies:
- '@portabletext/sanity-bridge': 1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))
+ '@portabletext/sanity-bridge': 1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))
'@portabletext/schema': 2.0.0
'@sanity/types': 4.14.2(@types/react@19.2.2)(debug@4.4.3)
lodash: 4.17.21
transitivePeerDependencies:
- '@sanity/schema'
- '@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)':
+ '@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)':
dependencies:
- '@portabletext/block-tools': 4.0.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))
+ '@portabletext/block-tools': 4.0.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))
'@portabletext/keyboard-shortcuts': 2.1.0
'@portabletext/patches': 2.0.0
- '@portabletext/sanity-bridge': 1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))
+ '@portabletext/sanity-bridge': 1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))
'@portabletext/schema': 2.0.0
'@portabletext/to-html': 4.0.1
'@sanity/schema': 4.14.2(@types/react@19.2.2)(debug@4.4.3)
@@ -12106,9 +12182,9 @@ snapshots:
'@sanity/diff-match-patch': 3.2.0
lodash: 4.17.21
- '@portabletext/plugin-character-pair-decorator@3.0.6(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)':
+ '@portabletext/plugin-character-pair-decorator@3.0.6(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)':
dependencies:
- '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
+ '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
'@xstate/react': 6.0.0(@types/react@19.2.2)(react@19.2.0)(xstate@5.24.0)
react: 19.2.0
react-compiler-runtime: 1.0.0(react@19.2.0)
@@ -12117,9 +12193,9 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@portabletext/plugin-input-rule@0.6.0(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)':
+ '@portabletext/plugin-input-rule@0.6.0(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)':
dependencies:
- '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
+ '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
'@xstate/react': 6.0.0(@types/react@19.2.2)(react@19.2.0)(xstate@5.24.0)
react: 19.2.0
react-compiler-runtime: 1.0.0(react@19.2.0)
@@ -12127,19 +12203,19 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
- '@portabletext/plugin-markdown-shortcuts@3.0.7(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)':
+ '@portabletext/plugin-markdown-shortcuts@3.0.7(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)':
dependencies:
- '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
- '@portabletext/plugin-character-pair-decorator': 3.0.6(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)
- '@portabletext/plugin-input-rule': 0.6.0(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)
+ '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
+ '@portabletext/plugin-character-pair-decorator': 3.0.6(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)
+ '@portabletext/plugin-input-rule': 0.6.0(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)
react: 19.2.0
react-compiler-runtime: 1.0.0(react@19.2.0)
transitivePeerDependencies:
- '@types/react'
- '@portabletext/plugin-one-line@2.1.5(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(react@19.2.0)':
+ '@portabletext/plugin-one-line@2.1.5(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(react@19.2.0)':
dependencies:
- '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
+ '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
react: 19.2.0
react-compiler-runtime: 1.0.0(react@19.2.0)
@@ -12149,7 +12225,7 @@ snapshots:
'@portabletext/types': 3.0.0
react: 19.2.0
- '@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))':
+ '@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))':
dependencies:
'@portabletext/schema': 2.0.0
'@sanity/schema': 4.14.2(@types/react@19.2.2)(debug@4.4.3)
@@ -14461,7 +14537,7 @@ snapshots:
transitivePeerDependencies:
- debug
- '@sanity/code-input@6.0.3(@babel/runtime@7.28.4)(@codemirror/lint@6.8.4)(@codemirror/theme-one-dark@6.1.2)(@emotion/is-prop-valid@1.2.2)(codemirror@6.0.1)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))':
+ '@sanity/code-input@6.0.3(@babel/runtime@7.28.4)(@codemirror/lint@6.8.4)(@codemirror/theme-one-dark@6.1.2)(@emotion/is-prop-valid@1.2.2)(codemirror@6.0.1)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))':
dependencies:
'@codemirror/autocomplete': 6.19.1
'@codemirror/commands': 6.9.0
@@ -14486,7 +14562,7 @@ snapshots:
'@uiw/react-codemirror': 4.25.2(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.19.1)(@codemirror/language@6.11.3)(@codemirror/lint@6.8.4)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.2)(@codemirror/view@6.38.6)(codemirror@6.0.1)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- sanity: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
+ sanity: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
styled-components: 6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
transitivePeerDependencies:
- '@babel/runtime'
@@ -14630,7 +14706,7 @@ snapshots:
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
- '@sanity/insert-menu@2.1.0(@emotion/is-prop-valid@1.2.2)(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))':
+ '@sanity/insert-menu@2.1.0(@emotion/is-prop-valid@1.2.2)(@sanity/types@4.14.2(@types/react@19.2.2))(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))':
dependencies:
'@sanity/icons': 3.7.4(react@19.2.0)
'@sanity/types': 4.14.2(@types/react@19.2.2)(debug@4.4.3)
@@ -14676,6 +14752,20 @@ snapshots:
- '@types/react'
- supports-color
+ '@sanity/mutate@0.11.0-canary.4(xstate@5.24.0)':
+ dependencies:
+ '@sanity/client': 6.28.4(debug@4.4.3)
+ '@sanity/diff-match-patch': 3.2.0
+ hotscript: 1.0.13
+ lodash: 4.17.21
+ lodash-es: 4.17.21
+ mendoza: 3.0.8
+ rxjs: 7.8.2
+ optionalDependencies:
+ xstate: 5.24.0
+ transitivePeerDependencies:
+ - debug
+
'@sanity/mutate@0.12.4(debug@4.4.3)':
dependencies:
'@sanity/client': 6.28.4(debug@4.4.3)
@@ -14724,21 +14814,21 @@ snapshots:
- '@types/react'
- supports-color
- '@sanity/presentation-comlink@2.0.0(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))':
+ '@sanity/presentation-comlink@2.0.0(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))':
dependencies:
'@sanity/comlink': 4.0.0
- '@sanity/visual-editing-types': 1.1.8(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))
+ '@sanity/visual-editing-types': 1.1.8(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))
transitivePeerDependencies:
- '@sanity/client'
- '@sanity/types'
- '@sanity/preview-url-secret@2.1.15(@sanity/client@7.12.1)(@sanity/icons@3.7.4(react@19.2.0))(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))':
+ '@sanity/preview-url-secret@2.1.15(@sanity/client@7.12.1)(@sanity/icons@3.7.4(react@19.2.0))(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))':
dependencies:
'@sanity/client': 7.12.1(debug@4.4.3)
'@sanity/uuid': 3.0.2
optionalDependencies:
'@sanity/icons': 3.7.4(react@19.2.0)
- sanity: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
+ sanity: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
'@sanity/runtime-cli@11.1.2(@types/node@24.10.0)(debug@4.4.3)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)':
dependencies:
@@ -14821,13 +14911,13 @@ snapshots:
- react
- use-sync-external-store
- '@sanity/table@2.0.0(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))':
+ '@sanity/table@2.0.0(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))':
dependencies:
'@sanity/icons': 3.7.0(react@19.2.0)
'@sanity/incompatible-plugin': 1.0.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@sanity/ui': 3.1.11(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
react: 19.2.0
- sanity: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
+ sanity: 4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0)
transitivePeerDependencies:
- '@emotion/is-prop-valid'
- react-dom
@@ -14937,12 +15027,52 @@ snapshots:
- react-dom
- react-is
- '@sanity/visual-editing-types@1.1.8(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))':
+ '@sanity/visual-editing-csm@2.0.26(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))(typescript@5.9.3)':
+ dependencies:
+ '@sanity/client': 7.12.1(debug@4.4.3)
+ '@sanity/visual-editing-types': 1.1.8(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))
+ valibot: 1.1.0(typescript@5.9.3)
+ transitivePeerDependencies:
+ - '@sanity/types'
+ - typescript
+
+ '@sanity/visual-editing-types@1.1.8(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))':
dependencies:
'@sanity/client': 7.12.1(debug@4.4.3)
optionalDependencies:
'@sanity/types': 4.14.2(@types/react@19.2.2)(debug@4.4.3)
+ '@sanity/visual-editing@4.0.0(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))(next@16.0.1(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)':
+ dependencies:
+ '@sanity/comlink': 4.0.0
+ '@sanity/icons': 3.7.4(react@19.2.0)
+ '@sanity/insert-menu': 2.1.0(@emotion/is-prop-valid@1.2.2)(@sanity/types@4.14.2(@types/react@19.2.2))(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ '@sanity/mutate': 0.11.0-canary.4(xstate@5.24.0)
+ '@sanity/presentation-comlink': 2.0.0(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))
+ '@sanity/preview-url-secret': 2.1.15(@sanity/client@7.12.1)(@sanity/icons@3.7.4(react@19.2.0))(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))
+ '@sanity/ui': 3.1.11(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ '@sanity/visual-editing-csm': 2.0.26(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))(typescript@5.9.3)
+ '@vercel/stega': 0.1.2
+ get-random-values-esm: 1.0.2
+ react: 19.2.0
+ react-compiler-runtime: 1.0.0(react@19.2.0)
+ react-dom: 19.2.0(react@19.2.0)
+ react-is: 19.2.0
+ rxjs: 7.8.2
+ scroll-into-view-if-needed: 3.1.0
+ styled-components: 6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ use-effect-event: 2.0.3(react@19.2.0)
+ xstate: 5.24.0
+ optionalDependencies:
+ '@sanity/client': 7.12.1(debug@4.4.3)
+ next: 16.0.1(@babel/core@7.28.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ transitivePeerDependencies:
+ - '@emotion/is-prop-valid'
+ - '@sanity/types'
+ - debug
+ - sanity
+ - typescript
+
'@sentry-internal/browser-utils@8.55.0':
dependencies:
'@sentry/core': 8.55.0
@@ -15914,6 +16044,8 @@ snapshots:
- rollup
- supports-color
+ '@vercel/stega@0.1.2': {}
+
'@vitejs/plugin-react@4.7.0(vite@7.2.2(@types/node@24.10.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.37.0)(tsx@4.19.2)(yaml@2.7.0))':
dependencies:
'@babel/core': 7.28.4
@@ -16904,6 +17036,8 @@ snapshots:
domhandler: 5.0.3
entities: 4.5.0
+ dom-walk@0.1.2: {}
+
domelementtype@1.3.1: {}
domelementtype@2.3.0: {}
@@ -17501,6 +17635,14 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
+ get-random-values-esm@1.0.2:
+ dependencies:
+ get-random-values: 1.2.2
+
+ get-random-values@1.2.2:
+ dependencies:
+ global: 4.4.0
+
get-stream@5.2.0:
dependencies:
pump: 3.0.2
@@ -17584,6 +17726,11 @@ snapshots:
is-windows: 0.2.0
which: 1.3.1
+ global@4.4.0:
+ dependencies:
+ min-document: 2.19.2
+ process: 0.11.10
+
globals@11.12.0: {}
globby@11.1.0:
@@ -18878,6 +19025,10 @@ snapshots:
mimic-response@3.1.0: {}
+ min-document@2.19.2:
+ dependencies:
+ dom-walk: 0.1.2
+
min-indent@1.0.1: {}
minimatch@10.0.3:
@@ -20288,7 +20439,7 @@ snapshots:
safer-buffer@2.1.2: {}
- sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0):
+ sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0):
dependencies:
'@dnd-kit/core': 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)
@@ -20297,11 +20448,11 @@ snapshots:
'@isaacs/ttlcache': 1.4.1
'@juggle/resize-observer': 3.4.0
'@mux/mux-player-react': 3.7.0(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- '@portabletext/block-tools': 4.0.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))
- '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
+ '@portabletext/block-tools': 4.0.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))
+ '@portabletext/editor': 2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2)
'@portabletext/patches': 2.0.0
- '@portabletext/plugin-markdown-shortcuts': 3.0.7(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)
- '@portabletext/plugin-one-line': 2.1.5(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(react@19.2.0)
+ '@portabletext/plugin-markdown-shortcuts': 3.0.7(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(@types/react@19.2.2)(react@19.2.0)
+ '@portabletext/plugin-one-line': 2.1.5(@portabletext/editor@2.21.0(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(rxjs@7.8.2))(react@19.2.0)
'@portabletext/react': 5.0.0(react@19.2.0)
'@portabletext/toolkit': 4.0.0
'@rexxars/react-json-inspector': 9.0.1(react@19.2.0)
@@ -20320,14 +20471,14 @@ snapshots:
'@sanity/id-utils': 1.0.0
'@sanity/image-url': 1.2.0
'@sanity/import': 3.38.3(@types/react@19.2.2)
- '@sanity/insert-menu': 2.1.0(@emotion/is-prop-valid@1.2.2)(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
+ '@sanity/insert-menu': 2.1.0(@emotion/is-prop-valid@1.2.2)(@sanity/types@4.14.2(@types/react@19.2.2))(react-dom@19.2.0(react@19.2.0))(react-is@19.2.0)(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))
'@sanity/logos': 2.2.2(react@19.2.0)
'@sanity/media-library-types': 1.0.1
'@sanity/message-protocol': 0.17.4
'@sanity/migrate': 4.14.2(@types/react@19.2.2)
'@sanity/mutator': 4.14.2(@types/react@19.2.2)
- '@sanity/presentation-comlink': 2.0.0(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3))
- '@sanity/preview-url-secret': 2.1.15(@sanity/client@7.12.1)(@sanity/icons@3.7.4(react@19.2.0))(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)(debug@4.4.3)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))
+ '@sanity/presentation-comlink': 2.0.0(@sanity/client@7.12.1)(@sanity/types@4.14.2(@types/react@19.2.2))
+ '@sanity/preview-url-secret': 2.1.15(@sanity/client@7.12.1)(@sanity/icons@3.7.4(react@19.2.0))(sanity@4.14.2(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.2(@sanity/schema@4.14.2(@types/react@19.2.2)(debug@4.4.3))(@sanity/types@4.14.2(@types/react@19.2.2)))(@types/node@24.10.0)(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(immer@10.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(postcss@8.5.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(styled-components@6.1.14(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.37.0)(tsx@4.19.2)(typescript@5.9.3)(yaml@2.7.0))
'@sanity/schema': 4.14.2(@types/react@19.2.2)(debug@4.4.3)
'@sanity/sdk': 2.1.2(@types/react@19.2.2)(debug@4.4.3)(immer@10.2.0)(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0))
'@sanity/telemetry': 0.8.1(react@19.2.0)
@@ -21406,6 +21557,10 @@ snapshots:
'@types/istanbul-lib-coverage': 2.0.6
convert-source-map: 2.0.0
+ valibot@1.1.0(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
validate-npm-package-license@3.0.4:
dependencies:
spdx-correct: 3.2.0