diff --git a/apps/web/app/(app)/[emailAccountId]/briefs/Onboarding.tsx b/apps/web/app/(app)/[emailAccountId]/briefs/Onboarding.tsx new file mode 100644 index 0000000000..e620510ba7 --- /dev/null +++ b/apps/web/app/(app)/[emailAccountId]/briefs/Onboarding.tsx @@ -0,0 +1,117 @@ +"use client"; + +import { + Card, + CardContent, + CardHeader, + CardFooter, + CardTitle, + CardDescription, +} from "@/components/ui/card"; +import { + SectionHeader, + SectionDescription, + MessageText, +} from "@/components/Typography"; +import { ConnectCalendar } from "@/app/(app)/[emailAccountId]/calendars/ConnectCalendar"; +import { IconCircle } from "@/app/(app)/[emailAccountId]/onboarding/IconCircle"; +import { + User, + Mail, + Lightbulb, + UserIcon, + MailIcon, + LightbulbIcon, + InboxIcon, +} from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { + Item, + ItemActions, + ItemContent, + ItemDescription, + ItemGroup, + ItemMedia, + ItemTitle, +} from "@/components/ui/item"; + +export function BriefsOnboarding({ + emailAccountId, + hasCalendarConnected = false, + onEnable, + isEnabling = false, +}: { + emailAccountId: string; + hasCalendarConnected?: boolean; + onEnable?: () => void; + isEnabling?: boolean; +}) { + return ( +
+ + Meeting Briefs + + Receive email briefings before meetings with external guests. + + + + + + + + + + + Attendee research + + Who they are, their company, and role + + + + + + + + + Email history + + Recent conversations with this person + + + + + + + + + Key context + + Important details from past discussions + + + + + + + + {hasCalendarConnected ? ( + <> + + You're all set! Enable meeting briefs to get started: + + + + ) : ( + <> + Connect your calendar to get started: + + + )} + +
+ ); +} diff --git a/apps/web/app/(app)/[emailAccountId]/briefs/UpcomingMeetings.tsx b/apps/web/app/(app)/[emailAccountId]/briefs/UpcomingMeetings.tsx new file mode 100644 index 0000000000..1f730b8795 --- /dev/null +++ b/apps/web/app/(app)/[emailAccountId]/briefs/UpcomingMeetings.tsx @@ -0,0 +1,199 @@ +"use client"; + +import { useCallback, useState } from "react"; +import { format, formatDistanceToNow } from "date-fns"; +import { CalendarIcon, SendIcon } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { toastSuccess, toastError } from "@/components/Toast"; +import { LoadingContent } from "@/components/LoadingContent"; +import { useAction } from "next-safe-action/hooks"; +import { sendBriefAction } from "@/utils/actions/meeting-briefs"; +import { useMeetingBriefsHistory } from "@/hooks/useMeetingBriefs"; +import { useCalendarUpcomingEvents } from "@/hooks/useCalendarUpcomingEvents"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { + Item, + ItemContent, + ItemTitle, + ItemDescription, + ItemActions, + ItemGroup, + ItemMedia, +} from "@/components/ui/item"; +import { TypographyH3 } from "@/components/Typography"; +import { ConfirmDialog } from "@/components/ConfirmDialog"; +import { Skeleton } from "@/components/ui/skeleton"; + +export function UpcomingMeetings({ + emailAccountId, +}: { + emailAccountId: string; +}) { + const { data, isLoading, error } = useCalendarUpcomingEvents(); + const [sendingEventId, setSendingEventId] = useState(null); + + const { execute } = useAction(sendBriefAction.bind(null, emailAccountId), { + onSuccess: ({ data: result }) => { + toastSuccess({ + description: result.message || "Test brief sent!", + }); + }, + onError: ({ error }) => { + toastError({ + description: error.serverError || "Failed to send brief", + }); + }, + onSettled: () => { + setSendingEventId(null); + }, + }); + + const handleSendTestBrief = useCallback( + (event: NonNullable["events"][number]) => { + setSendingEventId(event.id); + execute({ + event: { + id: event.id, + title: event.title, + description: event.description, + location: event.location, + eventUrl: event.eventUrl, + videoConferenceLink: event.videoConferenceLink, + startTime: new Date(event.startTime).toISOString(), + endTime: new Date(event.endTime).toISOString(), + attendees: event.attendees, + }, + }); + }, + [execute], + ); + + return ( + <> + Upcoming Meetings + + + {!data?.events.length ? ( + + + + + + No upcoming calendar events found + + + ) : ( + <> + + {data?.events.map((event) => ( + + + {event.title} + + {format( + new Date(event.startTime), + "EEE, MMM d 'at' h:mm a", + )} + + + + + Send test brief + + } + title="Send test brief?" + description="This will send you a briefing email for this meeting now. Use this to verify briefs are working correctly." + confirmText="Send" + onConfirm={() => handleSendTestBrief(event)} + /> + + + ))} + + +
+ +
+ + )} +
+ + ); +} + +function SendHistoryLink() { + const { data, isLoading, error } = useMeetingBriefsHistory(); + + return ( + + + + + + + Send History + + + } + > + {!data?.briefings.length ? ( + + + + + + No briefings have been sent yet + + + ) : ( + + {data?.briefings.map((briefing) => ( + + + {briefing.eventTitle} + + {briefing.guestCount} guest + {briefing.guestCount !== 1 ? "s" : ""} •{" "} + {formatDistanceToNow(new Date(briefing.createdAt), { + addSuffix: true, + })} + + + + + {briefing.status} + + + + ))} + + )} + + + + ); +} diff --git a/apps/web/app/(app)/[emailAccountId]/briefs/page.tsx b/apps/web/app/(app)/[emailAccountId]/briefs/page.tsx index 686fe8bfca..598522430e 100644 --- a/apps/web/app/(app)/[emailAccountId]/briefs/page.tsx +++ b/apps/web/app/(app)/[emailAccountId]/briefs/page.tsx @@ -1,13 +1,8 @@ "use client"; -import { useCallback, useState } from "react"; -import Link from "next/link"; -import { format, formatDistanceToNow } from "date-fns"; -import { AlertCircleIcon, CalendarIcon, SendIcon } from "lucide-react"; import { PageWrapper } from "@/components/PageWrapper"; import { PageHeader } from "@/components/PageHeader"; import { SettingCard } from "@/components/SettingCard"; -import { Button } from "@/components/ui/button"; import { Toggle } from "@/components/Toggle"; import { toastSuccess, toastError } from "@/components/Toast"; import { LoadingContent } from "@/components/LoadingContent"; @@ -15,35 +10,11 @@ import { PremiumAlertWithData } from "@/components/PremiumAlert"; import { useCalendars } from "@/hooks/useCalendars"; import { useAccount } from "@/providers/EmailAccountProvider"; import { useAction } from "next-safe-action/hooks"; -import { - updateMeetingBriefsEnabledAction, - sendBriefAction, -} from "@/utils/actions/meeting-briefs"; -import { - useMeetingBriefSettings, - useMeetingBriefsHistory, -} from "@/hooks/useMeetingBriefs"; -import { useCalendarUpcomingEvents } from "@/hooks/useCalendarUpcomingEvents"; -import { - Dialog, - DialogContent, - DialogHeader, - DialogTitle, - DialogTrigger, -} from "@/components/ui/dialog"; -import { - Item, - ItemContent, - ItemTitle, - ItemDescription, - ItemActions, - ItemGroup, - ItemMedia, -} from "@/components/ui/item"; -import { TypographyH3 } from "@/components/Typography"; +import { updateMeetingBriefsEnabledAction } from "@/utils/actions/meeting-briefs"; +import { useMeetingBriefSettings } from "@/hooks/useMeetingBriefs"; import { TimeDurationSetting } from "@/app/(app)/[emailAccountId]/briefs/TimeDurationSetting"; -import { ConfirmDialog } from "@/components/ConfirmDialog"; -import { Skeleton } from "@/components/ui/skeleton"; +import { UpcomingMeetings } from "@/app/(app)/[emailAccountId]/briefs/UpcomingMeetings"; +import { BriefsOnboarding } from "@/app/(app)/[emailAccountId]/briefs/Onboarding"; export default function MeetingBriefsPage() { const { emailAccountId } = useAccount(); @@ -53,7 +24,7 @@ export default function MeetingBriefsPage() { const hasCalendarConnected = calendarsData?.connections && calendarsData.connections.length > 0; - const { execute } = useAction( + const { execute, status } = useAction( updateMeetingBriefsEnabledAction.bind(null, emailAccountId), { onSuccess: () => { @@ -66,6 +37,27 @@ export default function MeetingBriefsPage() { }, ); + if (isLoadingCalendars || isLoading || error) { + return ( + + +
+ + + ); + } + + if (!hasCalendarConnected || !data?.enabled) { + return ( + execute({ enabled: true })} + isEnabling={status === "executing"} + /> + ); + } + return ( @@ -73,27 +65,6 @@ export default function MeetingBriefsPage() {
- {!isLoadingCalendars && !hasCalendarConnected && ( - - - - - - Calendar Required - - Connect a calendar to enable meeting briefings. - - - - - - - )} -
); } - -function UpcomingMeetings({ emailAccountId }: { emailAccountId: string }) { - const { data, isLoading, error } = useCalendarUpcomingEvents(); - const [sendingEventId, setSendingEventId] = useState(null); - - const { execute } = useAction(sendBriefAction.bind(null, emailAccountId), { - onSuccess: ({ data: result }) => { - toastSuccess({ - description: result.message || "Test brief sent!", - }); - }, - onError: ({ error }) => { - toastError({ - description: error.serverError || "Failed to send brief", - }); - }, - onSettled: () => { - setSendingEventId(null); - }, - }); - - const handleSendTestBrief = useCallback( - (event: NonNullable["events"][number]) => { - setSendingEventId(event.id); - execute({ - event: { - id: event.id, - title: event.title, - description: event.description, - location: event.location, - eventUrl: event.eventUrl, - videoConferenceLink: event.videoConferenceLink, - startTime: new Date(event.startTime).toISOString(), - endTime: new Date(event.endTime).toISOString(), - attendees: event.attendees, - }, - }); - }, - [execute], - ); - - return ( - <> - Upcoming Meetings - - - {!data?.events.length ? ( - - - - - - No upcoming calendar events found - - - ) : ( - <> - - {data?.events.map((event) => ( - - - {event.title} - - {format( - new Date(event.startTime), - "EEE, MMM d 'at' h:mm a", - )} - - - - - Send test brief - - } - title="Send test brief?" - description="This will send you a briefing email for this meeting now. Use this to verify briefs are working correctly." - confirmText="Send" - onConfirm={() => handleSendTestBrief(event)} - /> - - - ))} - - -
- -
- - )} -
- - ); -} - -function SendHistoryLink() { - const { data, isLoading, error } = useMeetingBriefsHistory(); - - return ( - - - - - - - Send History - - - } - > - {!data?.briefings.length ? ( - - - - - - No briefings have been sent yet - - - ) : ( - - {data?.briefings.map((briefing) => ( - - - {briefing.eventTitle} - - {briefing.guestCount} guest - {briefing.guestCount !== 1 ? "s" : ""} •{" "} - {formatDistanceToNow(new Date(briefing.createdAt), { - addSuffix: true, - })} - - - - - {briefing.status} - - - - ))} - - )} - - - - ); -} diff --git a/apps/web/package.json b/apps/web/package.json index 4e7fef6406..e6dd462d46 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -46,8 +46,8 @@ "@microsoft/microsoft-graph-client": "3.0.7", "@modelcontextprotocol/sdk": "1.24.3", "@mux/mux-player-react": "3.6.1", - "@next/mdx": "16.0.10", - "@next/third-parties": "16.0.10", + "@next/mdx": "16.1.1", + "@next/third-parties": "16.1.1", "@openrouter/ai-sdk-provider": "1.4.0", "@portabletext/react": "4.0.3", "@prisma/adapter-pg": "7.1.0", @@ -75,7 +75,7 @@ "@radix-ui/react-use-controllable-state": "1.2.2", "@react-email/render": "1.4.0", "@sentry/nextjs": "10.28.0", - "@serwist/next": "9.2.3", + "@serwist/next": "9.4.2", "@stripe/stripe-js": "8.5.3", "@t3-oss/env-nextjs": "0.13.8", "@tailwindcss/forms": "0.5.10", @@ -127,7 +127,7 @@ "lodash": "4.17.21", "lucide-react": "0.555.0", "motion": "12.23.25", - "next": "16.0.10", + "next": "16.1.1", "next-axiom": "1.9.3", "next-safe-action": "8.0.11", "next-themes": "0.4.6", @@ -197,7 +197,7 @@ "cross-env": "10.1.0", "dotenv": "17.2.3", "postcss": "8.5.6", - "serwist": "9.2.3", + "serwist": "9.4.2", "tailwindcss": "3.4.17", "tsconfig": "workspace:*", "vite-tsconfig-paths": "5.1.4", diff --git a/package.json b/package.json index e38c528890..cd8de21ffc 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "turbo": "2.6.3", "ultracite": "5.3.3" }, - "packageManager": "pnpm@10.24.0", + "packageManager": "pnpm@10.27.0", "lint-staged": { "*.{js,jsx,ts,tsx,json,jsonc,css,scss,md,mdx}": [ "ultracite fix" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69475da27c..92144def5b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,7 +132,7 @@ importers: version: 7.3.4(zod@3.25.46) '@better-auth/sso': specifier: 1.3.28 - version: 1.3.28(better-auth@1.4.5(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3))) + version: 1.3.28(better-auth@1.4.5(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3))) '@date-fns/tz': specifier: 1.4.1 version: 1.4.1 @@ -188,11 +188,11 @@ importers: specifier: 3.6.1 version: 3.6.1(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@next/mdx': - specifier: 16.0.10 - version: 16.0.10(@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.27.0)))(@mdx-js/react@3.1.1(@types/react@19.0.10)(react@19.2.3)) + specifier: 16.1.1 + version: 16.1.1(@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.27.0)))(@mdx-js/react@3.1.1(@types/react@19.0.10)(react@19.2.3)) '@next/third-parties': - specifier: 16.0.10 - version: 16.0.10(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + specifier: 16.1.1 + version: 16.1.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) '@openrouter/ai-sdk-provider': specifier: 1.4.0 version: 1.4.0(ai@5.0.106(zod@3.25.46))(zod@3.25.46) @@ -273,10 +273,10 @@ importers: version: 1.4.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@sentry/nextjs': specifier: 10.28.0 - version: 10.28.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.101.3(esbuild@0.27.0)) + version: 10.28.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.101.3(esbuild@0.27.0)) '@serwist/next': - specifier: 9.2.3 - version: 9.2.3(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)(webpack@5.101.3(esbuild@0.27.0)) + specifier: 9.4.2 + version: 9.4.2(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(webpack@5.101.3(esbuild@0.27.0)) '@stripe/stripe-js': specifier: 8.5.3 version: 8.5.3 @@ -324,16 +324,16 @@ importers: version: 1.35.7 '@vercel/analytics': specifier: 1.6.1 - version: 1.6.1(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)) + version: 1.6.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)) '@vercel/speed-insights': specifier: 1.3.1 - version: 1.3.1(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)) + version: 1.3.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)) ai: specifier: 5.0.106 version: 5.0.106(zod@3.25.46) better-auth: specifier: 1.4.5 - version: 1.4.5(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)) + version: 1.4.5(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)) braintrust: specifier: 0.4.10 version: 0.4.10(@aws-sdk/credential-provider-web-identity@3.911.0)(zod@3.25.46) @@ -431,14 +431,14 @@ importers: specifier: 12.23.25 version: 12.23.25(@emotion/is-prop-valid@1.2.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next: - specifier: 16.0.10 - version: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: 16.1.1 + version: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next-axiom: specifier: 1.9.3 - version: 1.9.3(@aws-sdk/credential-provider-web-identity@3.911.0)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + version: 1.9.3(@aws-sdk/credential-provider-web-identity@3.911.0)(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) next-safe-action: specifier: 8.0.11 - version: 8.0.11(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 8.0.11(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3) next-themes: specifier: 0.4.6 version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -447,7 +447,7 @@ importers: version: 7.0.11 nuqs: specifier: 2.8.2 - version: 2.8.2(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + version: 2.8.2(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) ollama-ai-provider-v2: specifier: 1.5.5 version: 1.5.5(zod@3.25.46) @@ -636,8 +636,8 @@ importers: specifier: 8.5.6 version: 8.5.6 serwist: - specifier: 9.2.3 - version: 9.2.3(typescript@5.9.3) + specifier: 9.4.2 + version: 9.4.2(typescript@5.9.3) tailwindcss: specifier: 3.4.17 version: 3.4.17(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) @@ -668,7 +668,7 @@ importers: version: 4.6.1(@babel/runtime@7.28.3)(@codemirror/lint@6.8.5)(@codemirror/theme-one-dark@6.1.3)(@emotion/is-prop-valid@1.2.2)(codemirror@6.0.2)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3)) next-sanity: specifier: '11' - version: 11.5.5(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.13.1)(@sanity/icons@3.7.4(react@19.2.3))(@sanity/types@4.20.3(@types/react@19.0.10))(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1))(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(svelte@5.38.6)(typescript@5.9.3) + version: 11.5.5(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.13.1)(@sanity/icons@3.7.4(react@19.2.3))(@sanity/types@4.20.3(@types/react@19.0.10))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1))(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(svelte@5.38.6)(typescript@5.9.3) sanity: specifier: 4.20.3 version: 4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1) @@ -3416,11 +3416,11 @@ packages: '@next/env@15.5.2': resolution: {integrity: sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg==} - '@next/env@16.0.10': - resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==} + '@next/env@16.1.1': + resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==} - '@next/mdx@16.0.10': - resolution: {integrity: sha512-i2DXv8Ga+BXvo7XlHhgutnguH9a5Txix3j760RlKctZ22yXHhYhXsie1UCouEff4mxY04nVS+Bz6Jbaq9N+w0g==} + '@next/mdx@16.1.1': + resolution: {integrity: sha512-XvlZ28/K7kXb1vgTeZWHjjfxDx9BVz/s1bbVlsFOvPfYuSVRmlUkhaiyJTA/7mm9OdpeC57+uHR6k1fUcn5AaA==} peerDependencies: '@mdx-js/loader': '>=0.15.0' '@mdx-js/react': '>=0.15.0' @@ -3436,8 +3436,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@16.0.10': - resolution: {integrity: sha512-4XgdKtdVsaflErz+B5XeG0T5PeXKDdruDf3CRpnhN+8UebNa5N2H58+3GDgpn/9GBurrQ1uWW768FfscwYkJRg==} + '@next/swc-darwin-arm64@16.1.1': + resolution: {integrity: sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -3448,8 +3448,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@16.0.10': - resolution: {integrity: sha512-spbEObMvRKkQ3CkYVOME+ocPDFo5UqHb8EMTS78/0mQ+O1nqE8toHJVioZo4TvebATxgA8XMTHHrScPrn68OGw==} + '@next/swc-darwin-x64@16.1.1': + resolution: {integrity: sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -3460,8 +3460,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@16.0.10': - resolution: {integrity: sha512-uQtWE3X0iGB8apTIskOMi2w/MKONrPOUCi5yLO+v3O8Mb5c7K4Q5KD1jvTpTF5gJKa3VH/ijKjKUq9O9UhwOYw==} + '@next/swc-linux-arm64-gnu@16.1.1': + resolution: {integrity: sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3472,8 +3472,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@16.0.10': - resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==} + '@next/swc-linux-arm64-musl@16.1.1': + resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -3484,8 +3484,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@16.0.10': - resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==} + '@next/swc-linux-x64-gnu@16.1.1': + resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3496,8 +3496,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@16.0.10': - resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==} + '@next/swc-linux-x64-musl@16.1.1': + resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -3508,8 +3508,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@16.0.10': - resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==} + '@next/swc-win32-arm64-msvc@16.1.1': + resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -3520,14 +3520,14 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@16.0.10': - resolution: {integrity: sha512-E+njfCoFLb01RAFEnGZn6ERoOqhK1Gl3Lfz1Kjnj0Ulfu7oJbuMyvBKNj/bw8XZnenHDASlygTjZICQW+rYW1Q==} + '@next/swc-win32-x64-msvc@16.1.1': + resolution: {integrity: sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@next/third-parties@16.0.10': - resolution: {integrity: sha512-hu6M1uCiHyfVNv6m50Ix/5+vi4RfLkS4k5Ls7sjSN3aS9lZ6LRop9KTTKPbFfwh85p3Vlnq3fenh5HgL51UieA==} + '@next/third-parties@16.1.1': + resolution: {integrity: sha512-i3NWXWiNpXGaUi6vGDrK7rC5qLhuCmuhD1BeaOh4Ma8piUBeUhOjEa1UfpVndeC3JcqWXPaYzqO1Hd1U6hql/w==} peerDependencies: next: ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0-beta.0 react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 @@ -5345,8 +5345,8 @@ packages: peerDependencies: webpack: '>=4.40.0' - '@serwist/build@9.2.3': - resolution: {integrity: sha512-UU38GDsTerzoCRDIT5v62W/CcTMLfGZm/tAa+u8XLBU0y0f2aJ2GCfsHnI1eXhEuWvt4Y7Imx/uG2ww2KWIBWQ==} + '@serwist/build@9.4.2': + resolution: {integrity: sha512-DVwXEs8zbYxkm9FlwRVGtsnakWuJ5wfre4UL9CABbjh4lzkqrLidkrZZA0zc33kqUtDEfxhG/QWukOl+ujJDlA==} engines: {node: '>=18.0.0'} peerDependencies: typescript: '>=5.0.0' @@ -5354,18 +5354,22 @@ packages: typescript: optional: true - '@serwist/next@9.2.3': - resolution: {integrity: sha512-sbStIaen8H6ZhNCtfxAuZ2haujJe8nPFRBiq5KQFYYi5iyFrDGLpYICmRTBP6Oc1pQBmsAqbBZzIjjC60d+7zg==} + '@serwist/next@9.4.2': + resolution: {integrity: sha512-S7LYUGDd1Cc/HGrfitSPeeew1I++VAVcgTFToXe6lejz1JpjjlyTmM060r3aZvqb6lAvyukZ27DT21WUjSogSA==} engines: {node: '>=18.0.0'} peerDependencies: + '@serwist/cli': ^9.4.2 next: '>=14.0.0' + react: '>=18.0.0' typescript: '>=5.0.0' peerDependenciesMeta: + '@serwist/cli': + optional: true typescript: optional: true - '@serwist/webpack-plugin@9.2.3': - resolution: {integrity: sha512-y1Ag1a7LARo/LtPVRSrfGO5PG4BZdc1NiMGAq+CGlBH/PJa7RQimo4iq9C94pjxusEsP4yHnsDQ06+GVTQ6gww==} + '@serwist/webpack-plugin@9.4.2': + resolution: {integrity: sha512-pj7NxWkEB9yG6xQJ3NKGnbw+sFdzIi66eLgfvVIPco2toBbNllC/SFLo3+VtE0ITi5XcMAgfT87dT1Y/0iVGVA==} engines: {node: '>=18.0.0'} peerDependencies: typescript: '>=5.0.0' @@ -5376,8 +5380,8 @@ packages: webpack: optional: true - '@serwist/window@9.2.3': - resolution: {integrity: sha512-6bK01QAaFI+oXTmDSQHvsw0kTTNlj79PFkox+0Z9XYNqTVLoXY9C6BFmZNvxNxEinOqCSm7cms4I5V54E9/1XA==} + '@serwist/window@9.4.2': + resolution: {integrity: sha512-v1PqWOHj/ysNg9G84hq2ej4FzOQZsbld74QmsI4AXGYCji/dP+wcpvz/I6kw+fRH2/9ZhX3KuJHWHPUebBe5+Q==} peerDependencies: typescript: '>=5.0.0' peerDependenciesMeta: @@ -9955,8 +9959,8 @@ packages: sass: optional: true - next@16.0.10: - resolution: {integrity: sha512-RtWh5PUgI+vxlV3HdR+IfWA1UUHu0+Ram/JBO4vWB54cVPentCD0e+lxyAYEsDTqGGMg7qpjhKh6dc6aW7W/sA==} + next@16.1.1: + resolution: {integrity: sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -11473,8 +11477,8 @@ packages: server-only@0.0.1: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} - serwist@9.2.3: - resolution: {integrity: sha512-menorUH09SpLvU7R25TvG0TuQ12MUDpQ5NKGohbtREF8YI+0D++Abn59XCmvvMp2n740rBizIkeqWq0m6U+++g==} + serwist@9.4.2: + resolution: {integrity: sha512-IHbZjUTAOdUstD/ZWRxgG4aCaxyZtQVLxkvVIGHJh3u0+uIMXweBSDaOOXZCP8luXYdbpfb5AdSU8oQiFKlHCQ==} peerDependencies: typescript: '>=5.0.0' peerDependenciesMeta: @@ -12804,6 +12808,7 @@ packages: whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} @@ -13032,6 +13037,9 @@ packages: zod@4.1.13: resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} + zod@4.2.1: + resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==} + zustand@5.0.8: resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} engines: {node: '>=12.20.0'} @@ -14552,10 +14560,10 @@ snapshots: nanostores: 1.1.0 zod: 4.1.13 - '@better-auth/sso@1.3.28(better-auth@1.4.5(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)))': + '@better-auth/sso@1.3.28(better-auth@1.4.5(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)))': dependencies: '@better-fetch/fetch': 1.1.18 - better-auth: 1.4.5(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)) + better-auth: 1.4.5(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)) fast-xml-parser: 5.3.2 jose: 6.1.0 oauth2-mock-server: 7.2.1 @@ -15895,9 +15903,9 @@ snapshots: '@next/env@15.5.2': {} - '@next/env@16.0.10': {} + '@next/env@16.1.1': {} - '@next/mdx@16.0.10(@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.27.0)))(@mdx-js/react@3.1.1(@types/react@19.0.10)(react@19.2.3))': + '@next/mdx@16.1.1(@mdx-js/loader@3.1.1(webpack@5.101.3(esbuild@0.27.0)))(@mdx-js/react@3.1.1(@types/react@19.0.10)(react@19.2.3))': dependencies: source-map: 0.7.6 optionalDependencies: @@ -15907,54 +15915,54 @@ snapshots: '@next/swc-darwin-arm64@15.5.2': optional: true - '@next/swc-darwin-arm64@16.0.10': + '@next/swc-darwin-arm64@16.1.1': optional: true '@next/swc-darwin-x64@15.5.2': optional: true - '@next/swc-darwin-x64@16.0.10': + '@next/swc-darwin-x64@16.1.1': optional: true '@next/swc-linux-arm64-gnu@15.5.2': optional: true - '@next/swc-linux-arm64-gnu@16.0.10': + '@next/swc-linux-arm64-gnu@16.1.1': optional: true '@next/swc-linux-arm64-musl@15.5.2': optional: true - '@next/swc-linux-arm64-musl@16.0.10': + '@next/swc-linux-arm64-musl@16.1.1': optional: true '@next/swc-linux-x64-gnu@15.5.2': optional: true - '@next/swc-linux-x64-gnu@16.0.10': + '@next/swc-linux-x64-gnu@16.1.1': optional: true '@next/swc-linux-x64-musl@15.5.2': optional: true - '@next/swc-linux-x64-musl@16.0.10': + '@next/swc-linux-x64-musl@16.1.1': optional: true '@next/swc-win32-arm64-msvc@15.5.2': optional: true - '@next/swc-win32-arm64-msvc@16.0.10': + '@next/swc-win32-arm64-msvc@16.1.1': optional: true '@next/swc-win32-x64-msvc@15.5.2': optional: true - '@next/swc-win32-x64-msvc@16.0.10': + '@next/swc-win32-x64-msvc@16.1.1': optional: true - '@next/third-parties@16.0.10(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': + '@next/third-parties@16.1.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': dependencies: - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 third-party-capital: 1.0.20 @@ -18346,7 +18354,7 @@ snapshots: optionalDependencies: '@sanity/types': 4.20.3(@types/react@19.0.10)(debug@4.4.3) - '@sanity/visual-editing@3.2.4(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.13.1)(@sanity/types@4.20.3(@types/react@19.0.10))(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1))(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(svelte@5.38.6)(typescript@5.9.3)': + '@sanity/visual-editing@3.2.4(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.13.1)(@sanity/types@4.20.3(@types/react@19.0.10))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1))(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(svelte@5.38.6)(typescript@5.9.3)': dependencies: '@sanity/comlink': 3.1.1 '@sanity/icons': 3.7.4(react@19.2.3) @@ -18369,7 +18377,7 @@ snapshots: xstate: 5.21.0 optionalDependencies: '@sanity/client': 7.13.1(debug@4.4.3) - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) svelte: 5.38.6 transitivePeerDependencies: - '@emotion/is-prop-valid' @@ -18500,7 +18508,7 @@ snapshots: '@sentry/core@8.55.0': {} - '@sentry/nextjs@10.28.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.101.3(esbuild@0.27.0))': + '@sentry/nextjs@10.28.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.101.3(esbuild@0.27.0))': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.37.0 @@ -18513,7 +18521,7 @@ snapshots: '@sentry/react': 10.28.0(react@19.2.3) '@sentry/vercel-edge': 10.28.0 '@sentry/webpack-plugin': 4.6.1(encoding@0.1.13)(webpack@5.101.3(esbuild@0.27.0)) - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) resolve: 1.22.8 rollup: 4.50.0 stacktrace-parser: 0.1.11 @@ -18621,44 +18629,47 @@ snapshots: - encoding - supports-color - '@serwist/build@9.2.3(typescript@5.9.3)': + '@serwist/build@9.4.2(typescript@5.9.3)': dependencies: common-tags: 1.8.2 glob: 10.5.0 pretty-bytes: 6.1.1 source-map: 0.8.0-beta.0 - zod: 4.1.12 + zod: 4.2.1 optionalDependencies: typescript: 5.9.3 - '@serwist/next@9.2.3(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)(webpack@5.101.3(esbuild@0.27.0))': + '@serwist/next@9.4.2(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(typescript@5.9.3)(webpack@5.101.3(esbuild@0.27.0))': dependencies: - '@serwist/build': 9.2.3(typescript@5.9.3) - '@serwist/webpack-plugin': 9.2.3(typescript@5.9.3)(webpack@5.101.3(esbuild@0.27.0)) - '@serwist/window': 9.2.3(typescript@5.9.3) - chalk: 5.6.2 + '@serwist/build': 9.4.2(typescript@5.9.3) + '@serwist/webpack-plugin': 9.4.2(typescript@5.9.3)(webpack@5.101.3(esbuild@0.27.0)) + '@serwist/window': 9.4.2(typescript@5.9.3) + browserslist: 4.28.1 glob: 10.5.0 - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - serwist: 9.2.3(typescript@5.9.3) - zod: 4.1.12 + kolorist: 1.8.0 + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + semver: 7.7.3 + serwist: 9.4.2(typescript@5.9.3) + zod: 4.2.1 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - webpack - '@serwist/webpack-plugin@9.2.3(typescript@5.9.3)(webpack@5.101.3(esbuild@0.27.0))': + '@serwist/webpack-plugin@9.4.2(typescript@5.9.3)(webpack@5.101.3(esbuild@0.27.0))': dependencies: - '@serwist/build': 9.2.3(typescript@5.9.3) + '@serwist/build': 9.4.2(typescript@5.9.3) pretty-bytes: 6.1.1 - zod: 4.1.12 + zod: 4.2.1 optionalDependencies: typescript: 5.9.3 webpack: 5.101.3(esbuild@0.27.0) - '@serwist/window@9.2.3(typescript@5.9.3)': + '@serwist/window@9.4.2(typescript@5.9.3)': dependencies: '@types/trusted-types': 2.0.7 - serwist: 9.2.3(typescript@5.9.3) + serwist: 9.4.2(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 @@ -19701,9 +19712,9 @@ snapshots: dependencies: uncrypto: 0.1.3 - '@vercel/analytics@1.6.1(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3))': + '@vercel/analytics@1.6.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3))': optionalDependencies: - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 svelte: 5.38.6 vue: 3.5.20(typescript@5.9.3) @@ -19727,9 +19738,9 @@ snapshots: '@vercel/oidc@3.0.5': {} - '@vercel/speed-insights@1.3.1(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3))': + '@vercel/speed-insights@1.3.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3))': optionalDependencies: - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 svelte: 5.38.6 vue: 3.5.20(typescript@5.9.3) @@ -20305,7 +20316,7 @@ snapshots: before-after-hook@2.2.3: {} - better-auth@1.4.5(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)): + better-auth@1.4.5(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(svelte@5.38.6)(vue@3.5.20(typescript@5.9.3)): dependencies: '@better-auth/core': 1.4.5(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.1.4(zod@4.1.13))(jose@6.1.3)(kysely@0.28.8)(nanostores@1.1.0) '@better-auth/telemetry': 1.4.5(@better-auth/core@1.4.5(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.18)(better-call@1.1.4(zod@4.1.13))(jose@6.1.3)(kysely@0.28.8)(nanostores@1.1.0)) @@ -20321,7 +20332,7 @@ snapshots: nanostores: 1.1.0 zod: 4.1.13 optionalDependencies: - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) svelte: 5.38.6 @@ -24103,34 +24114,34 @@ snapshots: neverthrow@7.2.0: {} - next-axiom@1.9.3(@aws-sdk/credential-provider-web-identity@3.911.0)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3): + next-axiom@1.9.3(@aws-sdk/credential-provider-web-identity@3.911.0)(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3): dependencies: '@vercel/functions': 2.2.13(@aws-sdk/credential-provider-web-identity@3.911.0) - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 use-deep-compare: 1.3.0(react@19.2.3) whatwg-fetch: 3.6.20 transitivePeerDependencies: - '@aws-sdk/credential-provider-web-identity' - next-safe-action@8.0.11(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next-safe-action@8.0.11(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - next-sanity@11.5.5(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.13.1)(@sanity/icons@3.7.4(react@19.2.3))(@sanity/types@4.20.3(@types/react@19.0.10))(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1))(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(svelte@5.38.6)(typescript@5.9.3): + next-sanity@11.5.5(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.13.1)(@sanity/icons@3.7.4(react@19.2.3))(@sanity/types@4.20.3(@types/react@19.0.10))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1))(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(svelte@5.38.6)(typescript@5.9.3): dependencies: '@portabletext/react': 4.0.3(react@19.2.3) '@sanity/client': 7.13.1(debug@4.4.3) '@sanity/comlink': 3.1.1 '@sanity/presentation-comlink': 1.0.33(@sanity/client@7.13.1)(@sanity/types@4.20.3(@types/react@19.0.10)) '@sanity/preview-url-secret': 2.1.15(@sanity/client@7.13.1)(@sanity/icons@3.7.4(react@19.2.3))(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1)) - '@sanity/visual-editing': 3.2.4(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.13.1)(@sanity/types@4.20.3(@types/react@19.0.10))(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1))(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(svelte@5.38.6)(typescript@5.9.3) + '@sanity/visual-editing': 3.2.4(@emotion/is-prop-valid@1.2.2)(@sanity/client@7.13.1)(@sanity/types@4.20.3(@types/react@19.0.10))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react-is@19.2.1)(react@19.2.3)(sanity@4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1))(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(svelte@5.38.6)(typescript@5.9.3) dequal: 2.0.3 groq: 4.10.3 history: 5.3.0 - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 react-dom: 19.2.3(react@19.2.3) sanity: 4.20.3(@emotion/is-prop-valid@1.2.2)(@portabletext/sanity-bridge@1.2.9(@sanity/schema@4.20.3(@types/react@19.0.10)(debug@4.4.3))(@sanity/types@4.20.3(@types/react@19.0.10)))(@types/node@24.10.1)(@types/react-dom@19.0.4(@types/react@19.0.10))(@types/react@19.0.10)(immer@11.0.1)(jiti@2.6.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(styled-components@6.1.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1) @@ -24179,24 +24190,25 @@ snapshots: - '@babel/core' - babel-plugin-macros - next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@next/env': 16.0.10 + '@next/env': 16.1.1 '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.9.2 caniuse-lite: 1.0.30001759 postcss: 8.4.31 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 16.0.10 - '@next/swc-darwin-x64': 16.0.10 - '@next/swc-linux-arm64-gnu': 16.0.10 - '@next/swc-linux-arm64-musl': 16.0.10 - '@next/swc-linux-x64-gnu': 16.0.10 - '@next/swc-linux-x64-musl': 16.0.10 - '@next/swc-win32-arm64-msvc': 16.0.10 - '@next/swc-win32-x64-msvc': 16.0.10 + '@next/swc-darwin-arm64': 16.1.1 + '@next/swc-darwin-x64': 16.1.1 + '@next/swc-linux-arm64-gnu': 16.1.1 + '@next/swc-linux-arm64-musl': 16.1.1 + '@next/swc-linux-x64-gnu': 16.1.1 + '@next/swc-linux-x64-musl': 16.1.1 + '@next/swc-win32-arm64-msvc': 16.1.1 + '@next/swc-win32-x64-msvc': 16.1.1 '@opentelemetry/api': 1.9.0 sharp: 0.34.5 transitivePeerDependencies: @@ -24289,12 +24301,12 @@ snapshots: dependencies: boolbase: 1.0.0 - nuqs@2.8.2(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3): + nuqs@2.8.2(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3): dependencies: '@standard-schema/spec': 1.0.0 react: 19.2.3 optionalDependencies: - next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) nwsapi@2.2.21: {} @@ -26141,7 +26153,7 @@ snapshots: server-only@0.0.1: {} - serwist@9.2.3(typescript@5.9.3): + serwist@9.4.2(typescript@5.9.3): dependencies: idb: 8.0.3 optionalDependencies: @@ -27953,6 +27965,8 @@ snapshots: zod@4.1.13: {} + zod@4.2.1: {} + zustand@5.0.8(@types/react@19.0.10)(immer@11.0.1)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): optionalDependencies: '@types/react': 19.0.10