From fbe031bfe990c2aefeebc85f0f90f7c54d13b49c Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Wed, 7 Jan 2026 09:30:59 -0800 Subject: [PATCH 01/18] update pixel/link edit form on save. --- src/app/(main)/links/LinkDeleteButton.tsx | 5 +++-- src/app/(main)/links/LinkEditForm.tsx | 1 + src/app/(main)/pixels/PixelEditForm.tsx | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/app/(main)/links/LinkDeleteButton.tsx b/src/app/(main)/links/LinkDeleteButton.tsx index 78f85f89..32ccbaf7 100644 --- a/src/app/(main)/links/LinkDeleteButton.tsx +++ b/src/app/(main)/links/LinkDeleteButton.tsx @@ -1,5 +1,5 @@ import { ConfirmationForm } from '@/components/common/ConfirmationForm'; -import { useDeleteQuery, useMessages } from '@/components/hooks'; +import { useDeleteQuery, useMessages, useModified } from '@/components/hooks'; import { Trash } from '@/components/icons'; import { DialogButton } from '@/components/input/DialogButton'; import { messages } from '@/components/messages'; @@ -15,7 +15,8 @@ export function LinkDeleteButton({ onSave?: () => void; }) { const { formatMessage, labels, getErrorMessage, FormattedMessage } = useMessages(); - const { mutateAsync, isPending, error, touch } = useDeleteQuery(`/links/${linkId}`); + const { mutateAsync, isPending, error } = useDeleteQuery(`/links/${linkId}`); + const { touch } = useModified(); const handleConfirm = async (close: () => void) => { await mutateAsync(null, { diff --git a/src/app/(main)/links/LinkEditForm.tsx b/src/app/(main)/links/LinkEditForm.tsx index e9ad18f4..a6c0164d 100644 --- a/src/app/(main)/links/LinkEditForm.tsx +++ b/src/app/(main)/links/LinkEditForm.tsx @@ -50,6 +50,7 @@ export function LinkEditForm({ onSuccess: async () => { toast(formatMessage(messages.saved)); touch('links'); + touch(`link:${linkId}`); onSave?.(); onClose?.(); }, diff --git a/src/app/(main)/pixels/PixelEditForm.tsx b/src/app/(main)/pixels/PixelEditForm.tsx index aedd3a3b..46241c1c 100644 --- a/src/app/(main)/pixels/PixelEditForm.tsx +++ b/src/app/(main)/pixels/PixelEditForm.tsx @@ -48,6 +48,7 @@ export function PixelEditForm({ onSuccess: async () => { toast(formatMessage(messages.saved)); touch('pixels'); + touch(`pixel:${pixelId}`); onSave?.(); onClose?.(); }, From fbf03d65636c5368e5daa4844b81abed4671830d Mon Sep 17 00:00:00 2001 From: AymanAlSuleihi Date: Fri, 9 Jan 2026 19:25:07 +0000 Subject: [PATCH 02/18] Fix metrics bar not updating on compare mode switch --- src/app/api/websites/[websiteId]/stats/route.ts | 7 ++++++- src/components/hooks/queries/useWebsiteStatsQuery.ts | 9 +++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/app/api/websites/[websiteId]/stats/route.ts b/src/app/api/websites/[websiteId]/stats/route.ts index 07c8b969..09d691f1 100644 --- a/src/app/api/websites/[websiteId]/stats/route.ts +++ b/src/app/api/websites/[websiteId]/stats/route.ts @@ -12,6 +12,7 @@ export async function GET( ) { const schema = z.object({ ...dateRangeParams, + compare: z.enum(['prev', 'yoy']).optional(), ...filterParams, }); @@ -31,7 +32,11 @@ export async function GET( const data = await getWebsiteStats(websiteId, filters); - const { startDate, endDate } = getCompareDate('prev', filters.startDate, filters.endDate); + const { startDate, endDate } = getCompareDate( + filters.compare || 'prev', + filters.startDate, + filters.endDate, + ); const comparison = await getWebsiteStats(websiteId, { ...filters, diff --git a/src/components/hooks/queries/useWebsiteStatsQuery.ts b/src/components/hooks/queries/useWebsiteStatsQuery.ts index e9a0c48c..69bae09f 100644 --- a/src/components/hooks/queries/useWebsiteStatsQuery.ts +++ b/src/components/hooks/queries/useWebsiteStatsQuery.ts @@ -1,5 +1,6 @@ import type { UseQueryOptions } from '@tanstack/react-query'; import { useDateParameters } from '@/components/hooks/useDateParameters'; +import { useDateRange } from '@/components/hooks/useDateRange'; import { useApi } from '../useApi'; import { useFilterParameters } from '../useFilterParameters'; @@ -24,12 +25,16 @@ export function useWebsiteStatsQuery( ) { const { get, useQuery } = useApi(); const { startAt, endAt, unit, timezone } = useDateParameters(); + const { compare } = useDateRange(); const filters = useFilterParameters(); return useQuery({ - queryKey: ['websites:stats', { websiteId, startAt, endAt, unit, timezone, ...filters }], + queryKey: [ + 'websites:stats', + { websiteId, startAt, endAt, unit, timezone, compare, ...filters }, + ], queryFn: () => - get(`/websites/${websiteId}/stats`, { startAt, endAt, unit, timezone, ...filters }), + get(`/websites/${websiteId}/stats`, { startAt, endAt, unit, timezone, compare, ...filters }), enabled: !!websiteId, ...options, }); From 6420f2c81338705d1ad83295fb5b53dcfb8aa8b1 Mon Sep 17 00:00:00 2001 From: AymanAlSuleihi Date: Fri, 9 Jan 2026 22:54:50 +0000 Subject: [PATCH 03/18] Remove redundant compare param definition --- src/app/api/websites/[websiteId]/stats/route.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/app/api/websites/[websiteId]/stats/route.ts b/src/app/api/websites/[websiteId]/stats/route.ts index 09d691f1..12492537 100644 --- a/src/app/api/websites/[websiteId]/stats/route.ts +++ b/src/app/api/websites/[websiteId]/stats/route.ts @@ -12,7 +12,6 @@ export async function GET( ) { const schema = z.object({ ...dateRangeParams, - compare: z.enum(['prev', 'yoy']).optional(), ...filterParams, }); @@ -32,11 +31,9 @@ export async function GET( const data = await getWebsiteStats(websiteId, filters); - const { startDate, endDate } = getCompareDate( - filters.compare || 'prev', - filters.startDate, - filters.endDate, - ); + const compare = filters.compare === 'yoy' ? 'yoy' : 'prev'; + + const { startDate, endDate } = getCompareDate(compare, filters.startDate, filters.endDate); const comparison = await getWebsiteStats(websiteId, { ...filters, From a049fbb5b0b2e8c3325f058bea26050c849bd91f Mon Sep 17 00:00:00 2001 From: AymanAlSuleihi Date: Fri, 9 Jan 2026 23:41:16 +0000 Subject: [PATCH 04/18] Update compare parameter to use enum for valid values --- src/app/api/websites/[websiteId]/stats/route.ts | 2 +- src/lib/schema.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/api/websites/[websiteId]/stats/route.ts b/src/app/api/websites/[websiteId]/stats/route.ts index 12492537..b7177b5d 100644 --- a/src/app/api/websites/[websiteId]/stats/route.ts +++ b/src/app/api/websites/[websiteId]/stats/route.ts @@ -31,7 +31,7 @@ export async function GET( const data = await getWebsiteStats(websiteId, filters); - const compare = filters.compare === 'yoy' ? 'yoy' : 'prev'; + const compare = filters.compare ?? 'prev'; const { startDate, endDate } = getCompareDate(compare, filters.startDate, filters.endDate); diff --git a/src/lib/schema.ts b/src/lib/schema.ts index 38f7339a..aafd8e43 100644 --- a/src/lib/schema.ts +++ b/src/lib/schema.ts @@ -20,7 +20,7 @@ export const dateRangeParams = { endDate: z.coerce.date().optional(), timezone: timezoneParam.optional(), unit: unitParam.optional(), - compare: z.string().optional(), + compare: z.enum(['prev', 'yoy']).optional(), }; export const filterParams = { From ebfbc282eebbe9dd87f6255129bc6417549faa3a Mon Sep 17 00:00:00 2001 From: Dorian TETU Date: Tue, 13 Jan 2026 16:39:39 +0100 Subject: [PATCH 05/18] fix: autofill background color --- src/styles/global.css | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/styles/global.css b/src/styles/global.css index e9fca9fd..6e767563 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -41,3 +41,18 @@ a:hover { border: 4px solid rgba(0, 0, 0, 0); background-clip: padding-box; } + +/* Fix autofill background color to match dark theme */ +input:-webkit-autofill, +input:-webkit-autofill:hover, +input:-webkit-autofill:focus, +input:-webkit-autofill:active, +textarea:-webkit-autofill, +textarea:-webkit-autofill:hover, +textarea:-webkit-autofill:focus, +select:-webkit-autofill, +select:-webkit-autofill:hover, +select:-webkit-autofill:focus { + -webkit-box-shadow: 0 0 0 1000px var(--background-color) inset !important; + transition: color 5000s ease-in-out 0s; +} From b6013c3ee8d21a6b82efc398e2fa103c71a9e425 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Wed, 14 Jan 2026 10:28:48 -0800 Subject: [PATCH 06/18] Revert "refactor 6 month retention. use auth instead of cache:website". Fix share page retention bug. This reverts commit 741c6039e60020e62dd81c20f3f01e365d7d2b73. --- src/app/api/reports/attribution/route.ts | 4 ++-- src/app/api/reports/breakdown/route.ts | 4 ++-- src/app/api/reports/funnel/route.ts | 4 ++-- src/app/api/reports/goal/route.ts | 4 ++-- src/app/api/reports/retention/route.ts | 4 ++-- src/app/api/reports/revenue/route.ts | 4 ++-- src/app/api/reports/utm/route.ts | 4 ++-- .../api/websites/[websiteId]/event-data/events/route.ts | 2 +- .../api/websites/[websiteId]/event-data/fields/route.ts | 2 +- .../websites/[websiteId]/event-data/properties/route.ts | 2 +- src/app/api/websites/[websiteId]/event-data/stats/route.ts | 2 +- .../api/websites/[websiteId]/event-data/values/route.ts | 2 +- src/app/api/websites/[websiteId]/events/route.ts | 2 +- src/app/api/websites/[websiteId]/events/series/route.ts | 2 +- src/app/api/websites/[websiteId]/export/route.ts | 2 +- src/app/api/websites/[websiteId]/metrics/expanded/route.ts | 2 +- src/app/api/websites/[websiteId]/metrics/route.ts | 2 +- src/app/api/websites/[websiteId]/pageviews/route.ts | 2 +- .../websites/[websiteId]/session-data/properties/route.ts | 2 +- .../api/websites/[websiteId]/session-data/values/route.ts | 2 +- .../[websiteId]/sessions/[sessionId]/activity/route.ts | 2 +- src/app/api/websites/[websiteId]/sessions/route.ts | 2 +- src/app/api/websites/[websiteId]/sessions/stats/route.ts | 2 +- src/app/api/websites/[websiteId]/sessions/weekly/route.ts | 2 +- src/app/api/websites/[websiteId]/stats/route.ts | 2 +- src/app/api/websites/[websiteId]/values/route.ts | 2 +- src/lib/request.ts | 7 +++---- 27 files changed, 36 insertions(+), 37 deletions(-) diff --git a/src/app/api/reports/attribution/route.ts b/src/app/api/reports/attribution/route.ts index ab9b1ddb..bd7d86dc 100644 --- a/src/app/api/reports/attribution/route.ts +++ b/src/app/api/reports/attribution/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); + const parameters = await setWebsiteDate(websiteId, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId); const data = await getAttribution(websiteId, parameters as AttributionParameters, filters); diff --git a/src/app/api/reports/breakdown/route.ts b/src/app/api/reports/breakdown/route.ts index a06636c7..3c593145 100644 --- a/src/app/api/reports/breakdown/route.ts +++ b/src/app/api/reports/breakdown/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); + const parameters = await setWebsiteDate(websiteId, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId); const data = await getBreakdown(websiteId, parameters as BreakdownParameters, filters); diff --git a/src/app/api/reports/funnel/route.ts b/src/app/api/reports/funnel/route.ts index f6e21029..c13f6f1c 100644 --- a/src/app/api/reports/funnel/route.ts +++ b/src/app/api/reports/funnel/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); + const parameters = await setWebsiteDate(websiteId, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId); const data = await getFunnel(websiteId, parameters as FunnelParameters, filters); diff --git a/src/app/api/reports/goal/route.ts b/src/app/api/reports/goal/route.ts index db2aabce..3bd0415d 100644 --- a/src/app/api/reports/goal/route.ts +++ b/src/app/api/reports/goal/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); + const parameters = await setWebsiteDate(websiteId, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId); const data = await getGoal(websiteId, parameters as GoalParameters, filters); diff --git a/src/app/api/reports/retention/route.ts b/src/app/api/reports/retention/route.ts index 5adf7bb8..d1a7d698 100644 --- a/src/app/api/reports/retention/route.ts +++ b/src/app/api/reports/retention/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); - const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId); + const parameters = await setWebsiteDate(websiteId, body.parameters); const data = await getRetention(websiteId, parameters as RetentionParameters, filters); diff --git a/src/app/api/reports/revenue/route.ts b/src/app/api/reports/revenue/route.ts index f4146b96..6a556612 100644 --- a/src/app/api/reports/revenue/route.ts +++ b/src/app/api/reports/revenue/route.ts @@ -17,8 +17,8 @@ export async function POST(request: Request) { return unauthorized(); } - const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); - const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); + const parameters = await setWebsiteDate(websiteId, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId); const data = await getRevenue(websiteId, parameters as RevenuParameters, filters); diff --git a/src/app/api/reports/utm/route.ts b/src/app/api/reports/utm/route.ts index d4af4da0..577fdab7 100644 --- a/src/app/api/reports/utm/route.ts +++ b/src/app/api/reports/utm/route.ts @@ -18,8 +18,8 @@ export async function POST(request: Request) { return unauthorized(); } - const filters = await getQueryFilters(body.filters, websiteId, auth.user?.id); - const parameters = await setWebsiteDate(websiteId, auth.user.id, body.parameters); + const filters = await getQueryFilters(body.filters, websiteId); + const parameters = await setWebsiteDate(websiteId, body.parameters); const data = { utm_source: [], diff --git a/src/app/api/websites/[websiteId]/event-data/events/route.ts b/src/app/api/websites/[websiteId]/event-data/events/route.ts index 444afa27..eb6ee6ed 100644 --- a/src/app/api/websites/[websiteId]/event-data/events/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/events/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getEventDataEvents(websiteId, { ...filters, diff --git a/src/app/api/websites/[websiteId]/event-data/fields/route.ts b/src/app/api/websites/[websiteId]/event-data/fields/route.ts index e034d937..bce6a977 100644 --- a/src/app/api/websites/[websiteId]/event-data/fields/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/fields/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getEventDataFields(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/event-data/properties/route.ts b/src/app/api/websites/[websiteId]/event-data/properties/route.ts index 29719fb2..52d15cfb 100644 --- a/src/app/api/websites/[websiteId]/event-data/properties/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/properties/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getEventDataProperties(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/event-data/stats/route.ts b/src/app/api/websites/[websiteId]/event-data/stats/route.ts index 1d1e76df..042e989a 100644 --- a/src/app/api/websites/[websiteId]/event-data/stats/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/stats/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getEventDataStats(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/event-data/values/route.ts b/src/app/api/websites/[websiteId]/event-data/values/route.ts index ed01fb2b..12e8f2dc 100644 --- a/src/app/api/websites/[websiteId]/event-data/values/route.ts +++ b/src/app/api/websites/[websiteId]/event-data/values/route.ts @@ -30,7 +30,7 @@ export async function GET( } const { propertyName } = query; - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getEventDataValues(websiteId, { ...filters, diff --git a/src/app/api/websites/[websiteId]/events/route.ts b/src/app/api/websites/[websiteId]/events/route.ts index dfabb87f..74ec3ece 100644 --- a/src/app/api/websites/[websiteId]/events/route.ts +++ b/src/app/api/websites/[websiteId]/events/route.ts @@ -29,7 +29,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getWebsiteEvents(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/events/series/route.ts b/src/app/api/websites/[websiteId]/events/series/route.ts index d5b92559..977e9c81 100644 --- a/src/app/api/websites/[websiteId]/events/series/route.ts +++ b/src/app/api/websites/[websiteId]/events/series/route.ts @@ -29,7 +29,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getEventStats(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/export/route.ts b/src/app/api/websites/[websiteId]/export/route.ts index f9749f34..eec81c6d 100644 --- a/src/app/api/websites/[websiteId]/export/route.ts +++ b/src/app/api/websites/[websiteId]/export/route.ts @@ -28,7 +28,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const [events, pages, referrers, browsers, os, devices, countries] = await Promise.all([ getEventMetrics(websiteId, { type: 'event' }, filters), diff --git a/src/app/api/websites/[websiteId]/metrics/expanded/route.ts b/src/app/api/websites/[websiteId]/metrics/expanded/route.ts index 7e6fbbfd..d52c1773 100644 --- a/src/app/api/websites/[websiteId]/metrics/expanded/route.ts +++ b/src/app/api/websites/[websiteId]/metrics/expanded/route.ts @@ -37,7 +37,7 @@ export async function GET( } const { type, limit, offset, search } = query; - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); if (search) { filters[type] = `c.${search}`; diff --git a/src/app/api/websites/[websiteId]/metrics/route.ts b/src/app/api/websites/[websiteId]/metrics/route.ts index 2d0e6a60..12784adb 100644 --- a/src/app/api/websites/[websiteId]/metrics/route.ts +++ b/src/app/api/websites/[websiteId]/metrics/route.ts @@ -37,7 +37,7 @@ export async function GET( } const { type, limit, offset, search } = query; - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); if (search) { filters[type] = `c.${search}`; diff --git a/src/app/api/websites/[websiteId]/pageviews/route.ts b/src/app/api/websites/[websiteId]/pageviews/route.ts index dc921bc0..af59bce4 100644 --- a/src/app/api/websites/[websiteId]/pageviews/route.ts +++ b/src/app/api/websites/[websiteId]/pageviews/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const [pageviews, sessions] = await Promise.all([ getPageviewStats(websiteId, filters), diff --git a/src/app/api/websites/[websiteId]/session-data/properties/route.ts b/src/app/api/websites/[websiteId]/session-data/properties/route.ts index a0aed73c..2d8db153 100644 --- a/src/app/api/websites/[websiteId]/session-data/properties/route.ts +++ b/src/app/api/websites/[websiteId]/session-data/properties/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getSessionDataProperties(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/session-data/values/route.ts b/src/app/api/websites/[websiteId]/session-data/values/route.ts index db710654..7d06870a 100644 --- a/src/app/api/websites/[websiteId]/session-data/values/route.ts +++ b/src/app/api/websites/[websiteId]/session-data/values/route.ts @@ -29,7 +29,7 @@ export async function GET( } const { propertyName } = query; - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getSessionDataValues(websiteId, { ...filters, diff --git a/src/app/api/websites/[websiteId]/sessions/[sessionId]/activity/route.ts b/src/app/api/websites/[websiteId]/sessions/[sessionId]/activity/route.ts index 3e70bea0..41b766d0 100644 --- a/src/app/api/websites/[websiteId]/sessions/[sessionId]/activity/route.ts +++ b/src/app/api/websites/[websiteId]/sessions/[sessionId]/activity/route.ts @@ -25,7 +25,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getSessionActivity(websiteId, sessionId, filters); diff --git a/src/app/api/websites/[websiteId]/sessions/route.ts b/src/app/api/websites/[websiteId]/sessions/route.ts index f344476c..ed4757a1 100644 --- a/src/app/api/websites/[websiteId]/sessions/route.ts +++ b/src/app/api/websites/[websiteId]/sessions/route.ts @@ -28,7 +28,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getWebsiteSessions(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/sessions/stats/route.ts b/src/app/api/websites/[websiteId]/sessions/stats/route.ts index 74b4e5e8..459830ed 100644 --- a/src/app/api/websites/[websiteId]/sessions/stats/route.ts +++ b/src/app/api/websites/[websiteId]/sessions/stats/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const metrics = await getWebsiteSessionStats(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/sessions/weekly/route.ts b/src/app/api/websites/[websiteId]/sessions/weekly/route.ts index f6dfd206..b9ccf3ef 100644 --- a/src/app/api/websites/[websiteId]/sessions/weekly/route.ts +++ b/src/app/api/websites/[websiteId]/sessions/weekly/route.ts @@ -28,7 +28,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getWeeklyTraffic(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/stats/route.ts b/src/app/api/websites/[websiteId]/stats/route.ts index a96fa5b0..b7177b5d 100644 --- a/src/app/api/websites/[websiteId]/stats/route.ts +++ b/src/app/api/websites/[websiteId]/stats/route.ts @@ -27,7 +27,7 @@ export async function GET( return unauthorized(); } - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); const data = await getWebsiteStats(websiteId, filters); diff --git a/src/app/api/websites/[websiteId]/values/route.ts b/src/app/api/websites/[websiteId]/values/route.ts index c2c95b37..172325e3 100644 --- a/src/app/api/websites/[websiteId]/values/route.ts +++ b/src/app/api/websites/[websiteId]/values/route.ts @@ -42,7 +42,7 @@ export async function GET( value: segment.name, })); } else { - const filters = await getQueryFilters(query, websiteId, auth.user?.id); + const filters = await getQueryFilters(query, websiteId); values = await getValues(websiteId, FILTER_COLUMNS[type], filters); } diff --git a/src/lib/request.ts b/src/lib/request.ts index d6543b18..7f9163cc 100644 --- a/src/lib/request.ts +++ b/src/lib/request.ts @@ -81,12 +81,12 @@ export function getRequestFilters(query: Record) { return result; } -export async function setWebsiteDate(websiteId: string, userId: string, data: Record) { +export async function setWebsiteDate(websiteId: string, data: Record) { const website = await fetchWebsite(websiteId); const cloudMode = !!process.env.CLOUD_MODE; if (cloudMode && website && !website.teamId) { - const account = await fetchAccount(userId); + const account = await fetchAccount(website.userId); if (!account?.hasSubscription) { data.startDate = maxDate(data.startDate, startOfMonth(subMonths(new Date(), 6))); @@ -103,13 +103,12 @@ export async function setWebsiteDate(websiteId: string, userId: string, data: Re export async function getQueryFilters( params: Record, websiteId?: string, - userId?: string, ): Promise { const dateRange = getRequestDateRange(params); const filters = getRequestFilters(params); if (websiteId) { - await setWebsiteDate(websiteId, userId, dateRange); + await setWebsiteDate(websiteId, dateRange); if (params.segment) { const segmentParams = (await getWebsiteSegment(websiteId, params.segment)) From 1e0620c544954003ff8b3015b4f6ebb3e45f9092 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 14 Jan 2026 12:53:13 -0800 Subject: [PATCH 07/18] Updated packages. --- package.json | 34 +- pnpm-lock.yaml | 3286 ++++++++++++++++++++++-------------------------- 2 files changed, 1533 insertions(+), 1787 deletions(-) diff --git a/package.json b/package.json index c4c832c0..e9d91cb2 100644 --- a/package.json +++ b/package.json @@ -61,18 +61,18 @@ ".next/cache" ], "dependencies": { - "@clickhouse/client": "^1.12.0", + "@clickhouse/client": "^1.16.0", "@date-fns/utc": "^1.2.0", "@dicebear/collection": "^9.2.3", "@dicebear/core": "^9.2.3", "@fontsource/inter": "^5.2.8", "@hello-pangea/dnd": "^17.0.0", - "@prisma/adapter-pg": "^7.1.0", - "@prisma/client": "^7.1.0", + "@prisma/adapter-pg": "^7.2.0", + "@prisma/client": "^7.2.0", "@prisma/extension-read-replicas": "^0.5.0", "@react-spring/web": "^10.0.3", "@svgr/cli": "^8.1.0", - "@tanstack/react-query": "^5.90.12", + "@tanstack/react-query": "^5.90.17", "@umami/react-zen": "^0.216.0", "@umami/redis-client": "^0.30.0", "bcryptjs": "^3.0.2", @@ -90,7 +90,7 @@ "detect-browser": "^5.2.0", "dotenv": "^17.2.3", "esbuild": "^0.25.11", - "fs-extra": "^11.3.2", + "fs-extra": "^11.3.3", "immer": "^10.2.0", "ipaddr.js": "^2.3.0", "is-ci": "^3.0.1", @@ -101,13 +101,13 @@ "jszip": "^3.10.1", "kafkajs": "^2.1.0", "lucide-react": "^0.543.0", - "maxmind": "^5.0.0", + "maxmind": "^5.0.3", "next": "^15.5.9", "node-fetch": "^3.2.8", "npm-run-all": "^4.1.5", "papaparse": "^5.5.3", - "pg": "^8.16.3", - "prisma": "^7.1.0", + "pg": "^8.17.0", + "prisma": "^7.2.0", "pure-rand": "^7.0.1", "react": "^19.2.3", "react-dom": "^19.2.3", @@ -120,15 +120,15 @@ "semver": "^7.7.3", "serialize-error": "^12.0.0", "thenby": "^1.3.4", - "ua-parser-js": "^2.0.6", + "ua-parser-js": "^2.0.8", "uuid": "^13.0.0", - "zod": "^4.1.13", - "zustand": "^5.0.9" + "zod": "^4.3.5", + "zustand": "^5.0.10" }, "devDependencies": { - "@biomejs/biome": "^2.3.8", + "@biomejs/biome": "^2.3.11", "@formatjs/cli": "^4.2.29", - "@netlify/plugin-nextjs": "^5.15.1", + "@netlify/plugin-nextjs": "^5.15.5", "@rollup/plugin-alias": "^5.0.0", "@rollup/plugin-commonjs": "^25.0.4", "@rollup/plugin-json": "^6.0.0", @@ -137,8 +137,8 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^12.3.0", "@types/jest": "^30.0.0", - "@types/node": "^24.9.2", - "@types/react": "^19.2.7", + "@types/node": "^24.10.8", + "@types/react": "^19.2.8", "@types/react-dom": "^19.2.2", "@types/react-window": "^1.8.8", "babel-plugin-react-compiler": "19.1.0-rc.2", @@ -153,9 +153,9 @@ "postcss-import": "^15.1.0", "postcss-preset-env": "7.8.3", "prompts": "2.4.2", - "rollup": "^4.52.5", + "rollup": "^4.55.1", "rollup-plugin-copy": "^3.4.0", - "rollup-plugin-delete": "^3.0.1", + "rollup-plugin-delete": "^3.0.2", "rollup-plugin-dts": "^6.3.0", "rollup-plugin-node-externals": "^8.1.1", "rollup-plugin-peer-deps-external": "^2.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c4badb24..d8fe45f8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@clickhouse/client': - specifier: ^1.12.0 - version: 1.14.0 + specifier: ^1.16.0 + version: 1.16.0 '@date-fns/utc': specifier: ^1.2.0 version: 1.2.0 @@ -25,28 +25,28 @@ importers: version: 5.2.8 '@hello-pangea/dnd': specifier: ^17.0.0 - version: 17.0.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + version: 17.0.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@prisma/adapter-pg': - specifier: ^7.1.0 - version: 7.1.0 + specifier: ^7.2.0 + version: 7.2.0 '@prisma/client': - specifier: ^7.1.0 - version: 7.1.0(prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(typescript@5.9.3) + specifier: ^7.2.0 + version: 7.2.0(prisma@7.2.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3) '@prisma/extension-read-replicas': specifier: ^0.5.0 - version: 0.5.0(@prisma/client@7.1.0(prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(typescript@5.9.3)) + version: 0.5.0(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3)) '@react-spring/web': specifier: ^10.0.3 - version: 10.0.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + version: 10.0.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@svgr/cli': specifier: ^8.1.0 version: 8.1.0(typescript@5.9.3) '@tanstack/react-query': - specifier: ^5.90.12 - version: 5.90.12(react@19.2.1) + specifier: ^5.90.17 + version: 5.90.17(react@19.2.3) '@umami/react-zen': specifier: ^0.216.0 - version: 0.216.0(@babel/core@7.28.3)(@types/react@19.2.7)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.2.0)(use-sync-external-store@1.6.0(react@19.2.1)) + version: 0.216.0(@babel/core@7.28.3)(@types/react@19.2.8)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.2.0)(use-sync-external-store@1.6.0(react@19.2.3)) '@umami/redis-client': specifier: ^0.30.0 version: 0.30.0 @@ -96,8 +96,8 @@ importers: specifier: ^0.25.11 version: 0.25.12 fs-extra: - specifier: ^11.3.2 - version: 11.3.2 + specifier: ^11.3.3 + version: 11.3.3 immer: specifier: ^10.2.0 version: 10.2.0 @@ -127,13 +127,13 @@ importers: version: 2.2.4 lucide-react: specifier: ^0.543.0 - version: 0.543.0(react@19.2.1) + version: 0.543.0(react@19.2.3) maxmind: - specifier: ^5.0.0 - version: 5.0.1 + specifier: ^5.0.3 + version: 5.0.3 next: - specifier: ^15.5.7 - version: 15.5.7(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + specifier: ^15.5.9 + version: 15.5.9(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) node-fetch: specifier: ^3.2.8 version: 3.3.2 @@ -144,35 +144,35 @@ importers: specifier: ^5.5.3 version: 5.5.3 pg: - specifier: ^8.16.3 - version: 8.16.3 + specifier: ^8.17.0 + version: 8.17.0 prisma: - specifier: ^7.1.0 - version: 7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) + specifier: ^7.2.0 + version: 7.2.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) pure-rand: specifier: ^7.0.1 version: 7.0.1 react: - specifier: ^19.2.1 - version: 19.2.1 + specifier: ^19.2.3 + version: 19.2.3 react-dom: - specifier: ^19.2.1 - version: 19.2.1(react@19.2.1) + specifier: ^19.2.3 + version: 19.2.3(react@19.2.3) react-error-boundary: specifier: ^4.0.4 - version: 4.1.2(react@19.2.1) + version: 4.1.2(react@19.2.3) react-intl: specifier: ^7.1.14 - version: 7.1.14(react@19.2.1)(typescript@5.9.3) + version: 7.1.14(react@19.2.3)(typescript@5.9.3) react-simple-maps: specifier: ^2.3.0 - version: 2.3.0(prop-types@15.8.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + version: 2.3.0(prop-types@15.8.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react-use-measure: specifier: ^2.0.4 - version: 2.1.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + version: 2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react-window: specifier: ^1.8.6 - version: 1.8.11(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + version: 1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3) request-ip: specifier: ^3.3.0 version: 3.3.0 @@ -186,60 +186,60 @@ importers: specifier: ^1.3.4 version: 1.3.4 ua-parser-js: - specifier: ^2.0.6 - version: 2.0.6 + specifier: ^2.0.8 + version: 2.0.8 uuid: specifier: ^13.0.0 version: 13.0.0 zod: - specifier: ^4.1.13 - version: 4.1.13 + specifier: ^4.3.5 + version: 4.3.5 zustand: - specifier: ^5.0.9 - version: 5.0.9(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)(use-sync-external-store@1.6.0(react@19.2.1)) + specifier: ^5.0.10 + version: 5.0.10(@types/react@19.2.8)(immer@10.2.0)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) devDependencies: '@biomejs/biome': - specifier: ^2.3.8 - version: 2.3.8 + specifier: ^2.3.11 + version: 2.3.11 '@formatjs/cli': specifier: ^4.2.29 - version: 4.8.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3)) + version: 4.8.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3)) '@netlify/plugin-nextjs': - specifier: ^5.15.1 - version: 5.15.1 + specifier: ^5.15.5 + version: 5.15.5 '@rollup/plugin-alias': specifier: ^5.0.0 - version: 5.1.1(rollup@4.53.3) + version: 5.1.1(rollup@4.55.1) '@rollup/plugin-commonjs': specifier: ^25.0.4 - version: 25.0.8(rollup@4.53.3) + version: 25.0.8(rollup@4.55.1) '@rollup/plugin-json': specifier: ^6.0.0 - version: 6.1.0(rollup@4.53.3) + version: 6.1.0(rollup@4.55.1) '@rollup/plugin-node-resolve': specifier: ^15.2.0 - version: 15.3.1(rollup@4.53.3) + version: 15.3.1(rollup@4.55.1) '@rollup/plugin-replace': specifier: ^5.0.2 - version: 5.0.7(rollup@4.53.3) + version: 5.0.7(rollup@4.55.1) '@rollup/plugin-terser': specifier: ^0.4.4 - version: 0.4.4(rollup@4.53.3) + version: 0.4.4(rollup@4.55.1) '@rollup/plugin-typescript': specifier: ^12.3.0 - version: 12.3.0(rollup@4.53.3)(tslib@2.8.1)(typescript@5.9.3) + version: 12.3.0(rollup@4.55.1)(tslib@2.8.1)(typescript@5.9.3) '@types/jest': specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^24.9.2 - version: 24.10.1 + specifier: ^24.10.8 + version: 24.10.8 '@types/react': - specifier: ^19.2.7 - version: 19.2.7 + specifier: ^19.2.8 + version: 19.2.8 '@types/react-dom': specifier: ^19.2.2 - version: 19.2.3(@types/react@19.2.7) + version: 19.2.3(@types/react@19.2.8) '@types/react-window': specifier: ^1.8.8 version: 1.8.8 @@ -254,13 +254,13 @@ importers: version: 13.17.0 extract-react-intl-messages: specifier: ^4.1.1 - version: 4.1.1(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3)) + version: 4.1.1(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3)) husky: specifier: ^9.1.7 version: 9.1.7 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + version: 29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) lint-staged: specifier: ^16.2.6 version: 16.2.7 @@ -280,26 +280,26 @@ importers: specifier: 2.4.2 version: 2.4.2 rollup: - specifier: ^4.52.5 - version: 4.53.3 + specifier: ^4.55.1 + version: 4.55.1 rollup-plugin-copy: specifier: ^3.4.0 version: 3.5.0 rollup-plugin-delete: - specifier: ^3.0.1 - version: 3.0.1(rollup@4.53.3) + specifier: ^3.0.2 + version: 3.0.2(rollup@4.55.1) rollup-plugin-dts: specifier: ^6.3.0 - version: 6.3.0(rollup@4.53.3)(typescript@5.9.3) + version: 6.3.0(rollup@4.55.1)(typescript@5.9.3) rollup-plugin-node-externals: specifier: ^8.1.1 - version: 8.1.2(rollup@4.53.3) + version: 8.1.2(rollup@4.55.1) rollup-plugin-peer-deps-external: specifier: ^2.2.4 - version: 2.2.4(rollup@4.53.3) + version: 2.2.4(rollup@4.55.1) rollup-plugin-postcss: specifier: ^4.0.2 - version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) stylelint: specifier: ^15.10.1 version: 15.11.0(typescript@5.9.3) @@ -317,10 +317,10 @@ importers: version: 6.2.1 ts-jest: specifier: ^29.4.6 - version: 29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3) ts-node: specifier: ^10.9.1 - version: 10.9.2(@types/node@24.10.1)(typescript@5.9.3) + version: 10.9.2(@types/node@24.10.8)(typescript@5.9.3) tsup: specifier: ^8.5.0 version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.1) @@ -508,55 +508,55 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@biomejs/biome@2.3.8': - resolution: {integrity: sha512-Qjsgoe6FEBxWAUzwFGFrB+1+M8y/y5kwmg5CHac+GSVOdmOIqsAiXM5QMVGZJ1eCUCLlPZtq4aFAQ0eawEUuUA==} + '@biomejs/biome@2.3.11': + resolution: {integrity: sha512-/zt+6qazBWguPG6+eWmiELqO+9jRsMZ/DBU3lfuU2ngtIQYzymocHhKiZRyrbra4aCOoyTg/BmY+6WH5mv9xmQ==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@2.3.8': - resolution: {integrity: sha512-HM4Zg9CGQ3txTPflxD19n8MFPrmUAjaC7PQdLkugeeC0cQ+PiVrd7i09gaBS/11QKsTDBJhVg85CEIK9f50Qww==} + '@biomejs/cli-darwin-arm64@2.3.11': + resolution: {integrity: sha512-/uXXkBcPKVQY7rc9Ys2CrlirBJYbpESEDme7RKiBD6MmqR2w3j0+ZZXRIL2xiaNPsIMMNhP1YnA+jRRxoOAFrA==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@2.3.8': - resolution: {integrity: sha512-lUDQ03D7y/qEao7RgdjWVGCu+BLYadhKTm40HkpJIi6kn8LSv5PAwRlew/DmwP4YZ9ke9XXoTIQDO1vAnbRZlA==} + '@biomejs/cli-darwin-x64@2.3.11': + resolution: {integrity: sha512-fh7nnvbweDPm2xEmFjfmq7zSUiox88plgdHF9OIW4i99WnXrAC3o2P3ag9judoUMv8FCSUnlwJCM1B64nO5Fbg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@2.3.8': - resolution: {integrity: sha512-PShR4mM0sjksUMyxbyPNMxoKFPVF48fU8Qe8Sfx6w6F42verbwRLbz+QiKNiDPRJwUoMG1nPM50OBL3aOnTevA==} + '@biomejs/cli-linux-arm64-musl@2.3.11': + resolution: {integrity: sha512-XPSQ+XIPZMLaZ6zveQdwNjbX+QdROEd1zPgMwD47zvHV+tCGB88VH+aynyGxAHdzL+Tm/+DtKST5SECs4iwCLg==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-arm64@2.3.8': - resolution: {integrity: sha512-Uo1OJnIkJgSgF+USx970fsM/drtPcQ39I+JO+Fjsaa9ZdCN1oysQmy6oAGbyESlouz+rzEckLTF6DS7cWse95g==} + '@biomejs/cli-linux-arm64@2.3.11': + resolution: {integrity: sha512-l4xkGa9E7Uc0/05qU2lMYfN1H+fzzkHgaJoy98wO+b/7Gl78srbCRRgwYSW+BTLixTBrM6Ede5NSBwt7rd/i6g==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] - '@biomejs/cli-linux-x64-musl@2.3.8': - resolution: {integrity: sha512-YGLkqU91r1276uwSjiUD/xaVikdxgV1QpsicT0bIA1TaieM6E5ibMZeSyjQ/izBn4tKQthUSsVZacmoJfa3pDA==} + '@biomejs/cli-linux-x64-musl@2.3.11': + resolution: {integrity: sha512-vU7a8wLs5C9yJ4CB8a44r12aXYb8yYgBn+WeyzbMjaCMklzCv1oXr8x+VEyWodgJt9bDmhiaW/I0RHbn7rsNmw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-linux-x64@2.3.8': - resolution: {integrity: sha512-QDPMD5bQz6qOVb3kiBui0zKZXASLo0NIQ9JVJio5RveBEFgDgsvJFUvZIbMbUZT3T00M/1wdzwWXk4GIh0KaAw==} + '@biomejs/cli-linux-x64@2.3.11': + resolution: {integrity: sha512-/1s9V/H3cSe0r0Mv/Z8JryF5x9ywRxywomqZVLHAoa/uN0eY7F8gEngWKNS5vbbN/BsfpCG5yeBT5ENh50Frxg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] - '@biomejs/cli-win32-arm64@2.3.8': - resolution: {integrity: sha512-H4IoCHvL1fXKDrTALeTKMiE7GGWFAraDwBYFquE/L/5r1927Te0mYIGseXi4F+lrrwhSWbSGt5qPFswNoBaCxg==} + '@biomejs/cli-win32-arm64@2.3.11': + resolution: {integrity: sha512-PZQ6ElCOnkYapSsysiTy0+fYX+agXPlWugh6+eQ6uPKI3vKAqNp6TnMhoM3oY2NltSB89hz59o8xIfOdyhi9Iw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@2.3.8': - resolution: {integrity: sha512-RguzimPoZWtBapfKhKjcWXBVI91tiSprqdBYu7tWhgN8pKRZhw24rFeNZTNf6UiBfjCYCi9eFQs/JzJZIhuK4w==} + '@biomejs/cli-win32-x64@2.3.11': + resolution: {integrity: sha512-43VrG813EW+b5+YbDbz31uUsheX+qFKCpXeY9kfdAx+ww3naKxeVkTD9zLIWxUPfJquANMHrmW3wbe/037G0Qg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -573,11 +573,11 @@ packages: '@chevrotain/utils@10.5.0': resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} - '@clickhouse/client-common@1.14.0': - resolution: {integrity: sha512-CyUcv2iCkZ1A++vmOSufYRpHR3aAWVfbrWed7ATzf0yyx/BW/2SEqlL07vBpSRa3BIkQe/DSOHVv8JkWZpUOwQ==} + '@clickhouse/client-common@1.16.0': + resolution: {integrity: sha512-qMzkI1NmV29ZjFkNpVSvGNfA0c7sCExlufAQMv+V+5xtNeYXnRfdqzmBLIQoq6Pf1ij0kw/wGLD3HQrl7pTFLA==} - '@clickhouse/client@1.14.0': - resolution: {integrity: sha512-co2spjR7wZoZ3Ck0H/jv76bpiuO3oJHtOmq9/gxFiod2DcT9NFg01u/hXcG8MJFnEJuMB6e3vGqS6IOnLwHqRw==} + '@clickhouse/client@1.16.0': + resolution: {integrity: sha512-ThPhoRMsKsf/hmBEgWlUsGxFecsr3i+k3JI8JV0Od7UpH2BSmk9VKMGJoyPCrTL0vPUs5rJH+7o4iCqBF09Xvg==} engines: {node: '>=16'} '@colors/colors@1.5.0': @@ -915,11 +915,8 @@ packages: '@electric-sql/pglite@0.3.2': resolution: {integrity: sha512-zfWWa+V2ViDCY/cmUfRqeWY1yLto+EpxjXnZzenB1TyxsTiXaTWeZFIZw6mac52BsuQm0RjCnisjBtdBaXOI6w==} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - - '@emnapi/runtime@1.7.1': - resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} + '@emnapi/runtime@1.8.1': + resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@epic-web/invariant@1.0.0': resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} @@ -1322,75 +1319,38 @@ packages: resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.3': - resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [darwin] - '@img/sharp-darwin-arm64@0.34.5': resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.3': - resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [darwin] - '@img/sharp-darwin-x64@0.34.5': resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.0': - resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==} - cpu: [arm64] - os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.0': - resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==} - cpu: [x64] - os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.0': - resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==} - cpu: [arm64] - os: [linux] - '@img/sharp-libvips-linux-arm64@1.2.4': resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.2.0': - resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==} - cpu: [arm] - os: [linux] - '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.2.0': - resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==} - cpu: [ppc64] - os: [linux] - '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] @@ -1401,76 +1361,38 @@ packages: cpu: [riscv64] os: [linux] - '@img/sharp-libvips-linux-s390x@1.2.0': - resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==} - cpu: [s390x] - os: [linux] - '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.2.0': - resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==} - cpu: [x64] - os: [linux] - '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.2.0': - resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==} - cpu: [arm64] - os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.2.0': - resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==} - cpu: [x64] - os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.34.3': - resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.34.3': - resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm] - os: [linux] - '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-ppc64@0.34.3': - resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ppc64] - os: [linux] - '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1483,94 +1405,47 @@ packages: cpu: [riscv64] os: [linux] - '@img/sharp-linux-s390x@0.34.3': - resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [s390x] - os: [linux] - '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.34.3': - resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.3': - resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.3': - resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [linux] - '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.34.3': - resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [wasm32] - '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.3': - resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [arm64] - os: [win32] - '@img/sharp-win32-arm64@0.34.5': resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.3': - resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [ia32] - os: [win32] - '@img/sharp-win32-ia32@0.34.5': resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.3': - resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - cpu: [x64] - os: [win32] - '@img/sharp-win32-x64@0.34.5': resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1725,15 +1600,15 @@ packages: resolution: {integrity: sha512-JwqeCQ1U3fvccttHZq7Tk0m/TMC6WcFAQZdukypW3AzlJYKYTGNVd1ANU2GuhKnv4UQuOFj3oAl0LLG/gxFN1w==} engines: {node: '>=16'} - '@netlify/plugin-nextjs@5.15.1': - resolution: {integrity: sha512-HXm94tteOuA0FYwhkxjYIPe0zta+Dsu0wz7LnhfqVlaYcRaOLjHtd2vgfmpz3np/fx9TQg3gCfqGkXt2a9i7Aw==} + '@netlify/plugin-nextjs@5.15.5': + resolution: {integrity: sha512-Lvix59vHCEfvopILvdfIK2EPe/CrLH5qrIdwYnJbxpp/SSVgklsHpBrfNM9ADTr310r+WJRDz11NcDyHu3iT9w==} engines: {node: '>=18.0.0'} - '@next/env@15.5.7': - resolution: {integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==} + '@next/env@15.5.9': + resolution: {integrity: sha512-4GlTZ+EJM7WaW2HEZcyU317tIQDjkQIyENDLxYJfSWlfqguN+dHkZgyQTV/7ykvobU7yEH5gKvreNrH4B6QgIg==} - '@next/env@16.0.7': - resolution: {integrity: sha512-gpaNgUh5nftFKRkRQGnVi5dpcYSKGcZZkQffZ172OrG/XkrnS7UBTQ648YY+8ME92cC4IojpI2LqTC8sTDhAaw==} + '@next/env@16.1.1': + resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==} '@next/swc-darwin-arm64@15.5.7': resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==} @@ -1741,8 +1616,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-arm64@16.0.7': - resolution: {integrity: sha512-LlDtCYOEj/rfSnEn/Idi+j1QKHxY9BJFmxx7108A6D8K0SB+bNgfYQATPk/4LqOl4C0Wo3LACg2ie6s7xqMpJg==} + '@next/swc-darwin-arm64@16.1.1': + resolution: {integrity: sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -1753,8 +1628,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-darwin-x64@16.0.7': - resolution: {integrity: sha512-rtZ7BhnVvO1ICf3QzfW9H3aPz7GhBrnSIMZyr4Qy6boXF0b5E3QLs+cvJmg3PsTCG2M1PBoC+DANUi4wCOKXpA==} + '@next/swc-darwin-x64@16.1.1': + resolution: {integrity: sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -1765,8 +1640,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-gnu@16.0.7': - resolution: {integrity: sha512-mloD5WcPIeIeeZqAIP5c2kdaTa6StwP4/2EGy1mUw8HiexSHGK/jcM7lFuS3u3i2zn+xH9+wXJs6njO7VrAqww==} + '@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] @@ -1777,8 +1652,8 @@ packages: cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@16.0.7': - resolution: {integrity: sha512-+ksWNrZrthisXuo9gd1XnjHRowCbMtl/YgMpbRvFeDEqEBd523YHPWpBuDjomod88U8Xliw5DHhekBC3EOOd9g==} + '@next/swc-linux-arm64-musl@16.1.1': + resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -1789,8 +1664,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-gnu@16.0.7': - resolution: {integrity: sha512-4WtJU5cRDxpEE44Ana2Xro1284hnyVpBb62lIpU5k85D8xXxatT+rXxBgPkc7C1XwkZMWpK5rXLXTh9PFipWsA==} + '@next/swc-linux-x64-gnu@16.1.1': + resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1801,8 +1676,8 @@ packages: cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@16.0.7': - resolution: {integrity: sha512-HYlhqIP6kBPXalW2dbMTSuB4+8fe+j9juyxwfMwCe9kQPPeiyFn7NMjNfoFOfJ2eXkeQsoUGXg+O2SE3m4Qg2w==} + '@next/swc-linux-x64-musl@16.1.1': + resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -1813,8 +1688,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-arm64-msvc@16.0.7': - resolution: {integrity: sha512-EviG+43iOoBRZg9deGauXExjRphhuYmIOJ12b9sAPy0eQ6iwcPxfED2asb/s2/yiLYOdm37kPaiZu8uXSYPs0Q==} + '@next/swc-win32-arm64-msvc@16.1.1': + resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -1825,8 +1700,8 @@ packages: cpu: [x64] os: [win32] - '@next/swc-win32-x64-msvc@16.0.7': - resolution: {integrity: sha512-gniPjy55zp5Eg0896qSrf3yB1dw4F/3s8VK1ephdsZZ129j2n6e1WqCbE2YgcKhW9hPB9TVZENugquWJD5x0ug==} + '@next/swc-win32-x64-msvc@16.1.1': + resolution: {integrity: sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1847,14 +1722,14 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@prisma/adapter-pg@7.1.0': - resolution: {integrity: sha512-DSAnUwkKfX4bUzhkrjGN4IBQzwg0nvFw2W17H0Oa532I5w9nLtTJ9mAEGDs1nUBEGRAsa0c7qsf8CSgfJ4DsBQ==} + '@prisma/adapter-pg@7.2.0': + resolution: {integrity: sha512-euIdQ13cRB2wZ3jPsnDnFhINquo1PYFPCg6yVL8b2rp3EdinQHsX9EDdCtRr489D5uhphcRk463OdQAFlsCr0w==} - '@prisma/client-runtime-utils@7.1.0': - resolution: {integrity: sha512-39xmeBrNTN40FzF34aJMjfX1PowVCqoT3UKUWBBSP3aXV05NRqGBC3x2wCDs96ti6ZgdiVzqnRDHtbzU8X+lPQ==} + '@prisma/client-runtime-utils@7.2.0': + resolution: {integrity: sha512-dn7oB53v0tqkB0wBdMuTNFNPdEbfICEUe82Tn9FoKAhJCUkDH+fmyEp0ClciGh+9Hp2Tuu2K52kth2MTLstvmA==} - '@prisma/client@7.1.0': - resolution: {integrity: sha512-qf7GPYHmS/xybNiSOpzv9wBo+UwqfL2PeyX+08v+KVHDI0AlSCQIh5bBySkH3alu06NX9wy98JEnckhMHoMFfA==} + '@prisma/client@7.2.0': + resolution: {integrity: sha512-JdLF8lWZ+LjKGKpBqyAlenxd/kXjd1Abf/xK+6vUA7R7L2Suo6AFTHFRpPSdAKCan9wzdFApsUpSa/F6+t1AtA==} engines: {node: ^20.19 || ^22.12 || >=24.0} peerDependencies: prisma: '*' @@ -1865,46 +1740,46 @@ packages: typescript: optional: true - '@prisma/config@7.1.0': - resolution: {integrity: sha512-Uz+I43Wn1RYNHtuYtOhOnUcNMWp2Pd3GUDDKs37xlHptCGpzEG3MRR9L+8Y2ISMsMI24z/Ni+ww6OB/OO8M0sQ==} + '@prisma/config@7.2.0': + resolution: {integrity: sha512-qmvSnfQ6l/srBW1S7RZGfjTQhc44Yl3ldvU6y3pgmuLM+83SBDs6UQVgMtQuMRe9J3gGqB0RF8wER6RlXEr6jQ==} '@prisma/debug@6.8.2': resolution: {integrity: sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg==} - '@prisma/debug@7.1.0': - resolution: {integrity: sha512-pPAckG6etgAsEBusmZiFwM9bldLSNkn++YuC4jCTJACdK5hLOVnOzX7eSL2FgaU6Gomd6wIw21snUX2dYroMZQ==} + '@prisma/debug@7.2.0': + resolution: {integrity: sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==} - '@prisma/dev@0.15.0': - resolution: {integrity: sha512-KhWaipnFlS/fWEs6I6Oqjcy2S08vKGmxJ5LexqUl/3Ve0EgLUsZwdKF0MvqPM5F5ttw8GtfZarjM5y7VLwv9Ow==} + '@prisma/dev@0.17.0': + resolution: {integrity: sha512-6sGebe5jxX+FEsQTpjHLzvOGPn6ypFQprcs3jcuIWv1Xp/5v6P/rjfdvAwTkP2iF6pDx2tCd8vGLNWcsWzImTA==} - '@prisma/driver-adapter-utils@7.1.0': - resolution: {integrity: sha512-AlVLzeXkw81+47MvQ9M8DvTiHkRfJ8xzklTbYjpskb0cTTDVHboTI/OVwT6Wcep/bNvfLKJYO0nylBiM5rxgww==} + '@prisma/driver-adapter-utils@7.2.0': + resolution: {integrity: sha512-gzrUcbI9VmHS24Uf+0+7DNzdIw7keglJsD5m/MHxQOU68OhGVzlphQRobLiDMn8CHNA2XN8uugwKjudVtnfMVQ==} - '@prisma/engines-version@7.1.0-6.ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba': - resolution: {integrity: sha512-qZUevUh+yPhGT28rDQnV8V2kLnFjirzhVD67elRPIJHRsUV/mkII10HSrJrhK/U2GYgAxXR2VEREtq7AsfS8qw==} + '@prisma/engines-version@7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3': + resolution: {integrity: sha512-KezsjCZDsbjNR7SzIiVlUsn9PnLePI7r5uxABlwL+xoerurZTfgQVbIjvjF2sVr3Uc0ZcsnREw3F84HvbggGdA==} - '@prisma/engines@7.1.0': - resolution: {integrity: sha512-KQlraOybdHAzVv45KWKJzpR9mJLkib7/TyApQpqrsL7FUHfgjIcy8jrVGt3iNfG6/GDDl+LNlJ84JSQwIfdzxA==} + '@prisma/engines@7.2.0': + resolution: {integrity: sha512-HUeOI/SvCDsHrR9QZn24cxxZcujOjcS3w1oW/XVhnSATAli5SRMOfp/WkG3TtT5rCxDA4xOnlJkW7xkho4nURA==} '@prisma/extension-read-replicas@0.5.0': resolution: {integrity: sha512-t0kLjqFMte4wwGrZFhya4iFoyoOY4kjlyyE60WXZL66PqP6PcBpW/35eKb/3UcxgjJxcDlaJKfmGokFLOyafiQ==} peerDependencies: '@prisma/client': ^7.0.0 - '@prisma/fetch-engine@7.1.0': - resolution: {integrity: sha512-GZYF5Q8kweXWGfn87hTu17kw7x1DgnehgKoE4Zg1BmHYF3y1Uu0QRY/qtSE4veH3g+LW8f9HKqA0tARG66bxxQ==} + '@prisma/fetch-engine@7.2.0': + resolution: {integrity: sha512-Z5XZztJ8Ap+wovpjPD2lQKnB8nWFGNouCrglaNFjxIWAGWz0oeHXwUJRiclIoSSXN/ptcs9/behptSk8d0Yy6w==} '@prisma/get-platform@6.8.2': resolution: {integrity: sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow==} - '@prisma/get-platform@7.1.0': - resolution: {integrity: sha512-lq8hMdjKiZftuT5SssYB3EtQj8+YjL24/ZTLflQqzFquArKxBcyp6Xrblto+4lzIKJqnpOjfMiBjMvl7YuD7+Q==} + '@prisma/get-platform@7.2.0': + resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==} '@prisma/query-plan-executor@6.18.0': resolution: {integrity: sha512-jZ8cfzFgL0jReE1R10gT8JLHtQxjWYLiQ//wHmVYZ2rVkFHoh0DT8IXsxcKcFlfKN7ak7k6j0XMNn2xVNyr5cA==} - '@prisma/studio-core@0.8.2': - resolution: {integrity: sha512-/iAEWEUpTja+7gVMu1LtR2pPlvDmveAwMHdTWbDeGlT7yiv0ZTCPpmeAGdq/Y9aJ9Zj1cEGBXGRbmmNPj022PQ==} + '@prisma/studio-core@0.9.0': + resolution: {integrity: sha512-xA2zoR/ADu/NCSQuriBKTh6Ps4XjU0bErkEcgMfnSGh346K1VI7iWKnoq1l2DoxUqiddPHIEWwtxJ6xCHG6W7g==} peerDependencies: '@types/react': ^18.0.0 || ^19.0.0 react: ^18.0.0 || ^19.0.0 @@ -2655,113 +2530,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.53.3': - resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} + '@rollup/rollup-android-arm-eabi@4.55.1': + resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.3': - resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} + '@rollup/rollup-android-arm64@4.55.1': + resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.3': - resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} + '@rollup/rollup-darwin-arm64@4.55.1': + resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.3': - resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} + '@rollup/rollup-darwin-x64@4.55.1': + resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.3': - resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} + '@rollup/rollup-freebsd-arm64@4.55.1': + resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.3': - resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} + '@rollup/rollup-freebsd-x64@4.55.1': + resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': - resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': + resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.3': - resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} + '@rollup/rollup-linux-arm-musleabihf@4.55.1': + resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.3': - resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} + '@rollup/rollup-linux-arm64-gnu@4.55.1': + resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.3': - resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} + '@rollup/rollup-linux-arm64-musl@4.55.1': + resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.3': - resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} + '@rollup/rollup-linux-loong64-gnu@4.55.1': + resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.3': - resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} + '@rollup/rollup-linux-loong64-musl@4.55.1': + resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.55.1': + resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.3': - resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} + '@rollup/rollup-linux-ppc64-musl@4.55.1': + resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.55.1': + resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.3': - resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} + '@rollup/rollup-linux-riscv64-musl@4.55.1': + resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.3': - resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} + '@rollup/rollup-linux-s390x-gnu@4.55.1': + resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.3': - resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} + '@rollup/rollup-linux-x64-gnu@4.55.1': + resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.3': - resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} + '@rollup/rollup-linux-x64-musl@4.55.1': + resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.3': - resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} + '@rollup/rollup-openbsd-x64@4.55.1': + resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.55.1': + resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.3': - resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} + '@rollup/rollup-win32-arm64-msvc@4.55.1': + resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.3': - resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} + '@rollup/rollup-win32-ia32-msvc@4.55.1': + resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.3': - resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} + '@rollup/rollup-win32-x64-gnu@4.55.1': + resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.3': - resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} + '@rollup/rollup-win32-x64-msvc@4.55.1': + resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==} cpu: [x64] os: [win32] @@ -2781,8 +2671,8 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@standard-schema/spec@1.0.0': - resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} @@ -2872,14 +2762,14 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@swc/helpers@0.5.18': + resolution: {integrity: sha512-TXTnIcNJQEKwThMMqBXsZ4VGAza6bvN4pa41Rkqoio6QBKMvo+5lexeTMScGCIxtzgQJzElcvIltani+adC5PQ==} - '@tanstack/query-core@5.90.12': - resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==} + '@tanstack/query-core@5.90.17': + resolution: {integrity: sha512-hDww+RyyYhjhUfoYQ4es6pbgxY7LNiPWxt4l1nJqhByjndxJ7HIjDxTBtfvMr5HwjYavMrd+ids5g4Rfev3lVQ==} - '@tanstack/react-query@5.90.12': - resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==} + '@tanstack/react-query@5.90.17': + resolution: {integrity: sha512-PGc2u9KLwohDUSchjW9MZqeDQJfJDON7y4W7REdNBgiFKxQy+Pf7eGjiFWEj5xPqKzAeHYdAb62IWI1a9UJyGQ==} peerDependencies: react: ^18 || ^19 @@ -2963,8 +2853,8 @@ packages: '@types/node@14.18.63': resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - '@types/node@24.10.1': - resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + '@types/node@24.10.8': + resolution: {integrity: sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -2977,8 +2867,8 @@ packages: '@types/react-window@1.8.8': resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} - '@types/react@19.2.7': - resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} + '@types/react@19.2.8': + resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==} '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -3229,6 +3119,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.9.14: + resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==} + hasBin: true + bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} @@ -3339,11 +3233,8 @@ packages: caniuse-lite@1.0.30001735: resolution: {integrity: sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==} - caniuse-lite@1.0.30001741: - resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} - - caniuse-lite@1.0.30001759: - resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==} + caniuse-lite@1.0.30001764: + resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -3465,13 +3356,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} @@ -3818,8 +3702,8 @@ packages: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} - del@8.0.0: - resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==} + del@8.0.1: + resolution: {integrity: sha512-gPqh0mKTPvaUZGAuHbrBUYKZWBNAeHG7TU3QH5EhVwPMyKvmfJaNXhcD2jTcXsJRRcffuho4vaYweu80dRrMGA==} engines: {node: '>=18'} delayed-stream@1.0.0: @@ -3843,10 +3727,6 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} - engines: {node: '>=8'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -4171,8 +4051,8 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.3.2: - resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + fs-extra@11.3.3: + resolution: {integrity: sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==} engines: {node: '>=14.14'} fs-extra@8.1.0: @@ -4520,9 +4400,6 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -5206,8 +5083,8 @@ packages: mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} - maxmind@5.0.1: - resolution: {integrity: sha512-hYxQxvHkBUlyF34f7IlQOb60rytezCi2oZ8H/BtZpcoodXTlcK1eLgf7kY2TofHqBC3o+Hqtvde9kS72gFQSDw==} + maxmind@5.0.3: + resolution: {integrity: sha512-oMtZwLrsp0LcZehfYKIirtwKMBycMMqMA1/Dc9/BlUqIEtXO75mIzMJ3PYCV1Ji+BpoUCk+lTzRfh9c+ptGdyQ==} engines: {node: '>=12', npm: '>=6'} mdn-data@2.0.14: @@ -5357,8 +5234,8 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next@15.5.7: - resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==} + next@15.5.9: + resolution: {integrity: sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -5378,8 +5255,8 @@ packages: sass: optional: true - next@16.0.7: - resolution: {integrity: sha512-3mBRJyPxT4LOxAJI6IsXeFtKfiJUbjCLgvXO02fV8Wy/lIhPvP94Fe7dGhUgHXcQy4sSuYwQNcOLhIfOm0rL0A==} + next@16.1.1: + resolution: {integrity: sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -5520,8 +5397,8 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} - p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} + p-map@7.0.4: + resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} p-queue@6.6.2: @@ -5608,30 +5485,30 @@ packages: performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - pg-cloudflare@1.2.7: - resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} + pg-cloudflare@1.3.0: + resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} - pg-connection-string@2.9.1: - resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} + pg-connection-string@2.10.0: + resolution: {integrity: sha512-ur/eoPKzDx2IjPaYyXS6Y8NSblxM7X64deV2ObV57vhjsWiwLvUD6meukAzogiOsu60GO8m/3Cb6FdJsWNjwXg==} pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-pool@3.10.1: - resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} + pg-pool@3.11.0: + resolution: {integrity: sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==} peerDependencies: pg: '>=8.0' - pg-protocol@1.10.3: - resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} + pg-protocol@1.11.0: + resolution: {integrity: sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==} pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg@8.16.3: - resolution: {integrity: sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==} + pg@8.17.0: + resolution: {integrity: sha512-SRl6PbO7zqhD5bZ6lVtEFWknVeWv6Eab+PKzowWTEAce5MFiHTcSdi2N9M9m7VYAv1Hc3OOCxSka3hPBYoXHJA==} engines: {node: '>= 16.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -6149,6 +6026,10 @@ packages: resolution: {integrity: sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw==} engines: {node: '>=12'} + presentable-error@0.0.1: + resolution: {integrity: sha512-E6rsNU1QNJgB3sjj7OANinGncFKuK+164sLXw1/CqBjj/EkXSoSdHCtWQGBNlREIGLnL7IEUEGa08YFVUbrhVg==} + engines: {node: '>=16'} + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -6166,8 +6047,8 @@ packages: resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - prisma@7.1.0: - resolution: {integrity: sha512-dy/3urE4JjhdiW5b09pGjVhGI7kPESK2VlCDrCqeYK5m5SslAtG5FCGnZWP7E8Sdg+Ow1wV2mhJH5RTFL5gEsw==} + prisma@7.2.0: + resolution: {integrity: sha512-jSdHWgWOgFF24+nRyyNRVBIgGDQEsMEF8KPHvhBBg3jWyR9fUAK0Nq9ThUmiGlNgq2FA7vSk/ZoCvefod+a8qg==} engines: {node: ^20.19 || ^22.12 || >=24.0} hasBin: true peerDependencies: @@ -6252,10 +6133,10 @@ packages: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - react-dom@19.2.1: - resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==} + react-dom@19.2.3: + resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} peerDependencies: - react: ^19.2.1 + react: ^19.2.3 react-error-boundary@4.1.2: resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} @@ -6328,8 +6209,8 @@ packages: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react@19.2.1: - resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==} + react@19.2.3: + resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} engines: {node: '>=0.10.0'} read-babelrc-up@1.1.0: @@ -6460,8 +6341,8 @@ packages: resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} engines: {node: '>=8.3'} - rollup-plugin-delete@3.0.1: - resolution: {integrity: sha512-4tyijMQFwSDLA04DAHwbI2TrRwPiRwAqBQ17dxyr9CgHeHXLdgk8IDVWHFWPrL3UZJWrAmHohQ2MgmVghQDrlg==} + rollup-plugin-delete@3.0.2: + resolution: {integrity: sha512-26GSi/aeYQ/hEBdG1rjEMeh+WUhiPZ3hGmSr9Ucj7mhLQ1P9j8KEgtYoybDp7OlIMj3eQjHHB9fnqhxNuVgfzA==} engines: {node: '>=18'} peerDependencies: rollup: '*' @@ -6493,8 +6374,8 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.53.3: - resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} + rollup@4.55.1: + resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -6573,10 +6454,6 @@ packages: setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - sharp@0.34.3: - resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -6624,9 +6501,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -7120,8 +6994,8 @@ packages: ua-is-frozen@0.1.2: resolution: {integrity: sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw==} - ua-parser-js@2.0.6: - resolution: {integrity: sha512-EmaxXfltJaDW75SokrY4/lXMrVyXomE/0FpIIqP2Ctic93gK7rlme55Cwkz8l3YZ6gqf94fCU7AnIkidd/KXPg==} + ua-parser-js@2.0.8: + resolution: {integrity: sha512-BdnBM5waFormdrOFBU+cA90R689V0tWUWlIG2i30UXxElHjuCu5+dOV2Etw3547jcQ/yaLtPm9wrqIuOY2bSJg==} hasBin: true ufo@1.6.1: @@ -7346,11 +7220,11 @@ packages: zeptomatch@2.0.2: resolution: {integrity: sha512-H33jtSKf8Ijtb5BW6wua3G5DhnFjbFML36eFu+VdOoVY4HD9e7ggjqdM6639B+L87rjnR6Y+XeRzBXZdy52B/g==} - zod@4.1.13: - resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} + zod@4.3.5: + resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==} - zustand@5.0.9: - resolution: {integrity: sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==} + zustand@5.0.10: + resolution: {integrity: sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=18.0.0' @@ -7565,39 +7439,39 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@biomejs/biome@2.3.8': + '@biomejs/biome@2.3.11': optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.3.8 - '@biomejs/cli-darwin-x64': 2.3.8 - '@biomejs/cli-linux-arm64': 2.3.8 - '@biomejs/cli-linux-arm64-musl': 2.3.8 - '@biomejs/cli-linux-x64': 2.3.8 - '@biomejs/cli-linux-x64-musl': 2.3.8 - '@biomejs/cli-win32-arm64': 2.3.8 - '@biomejs/cli-win32-x64': 2.3.8 + '@biomejs/cli-darwin-arm64': 2.3.11 + '@biomejs/cli-darwin-x64': 2.3.11 + '@biomejs/cli-linux-arm64': 2.3.11 + '@biomejs/cli-linux-arm64-musl': 2.3.11 + '@biomejs/cli-linux-x64': 2.3.11 + '@biomejs/cli-linux-x64-musl': 2.3.11 + '@biomejs/cli-win32-arm64': 2.3.11 + '@biomejs/cli-win32-x64': 2.3.11 - '@biomejs/cli-darwin-arm64@2.3.8': + '@biomejs/cli-darwin-arm64@2.3.11': optional: true - '@biomejs/cli-darwin-x64@2.3.8': + '@biomejs/cli-darwin-x64@2.3.11': optional: true - '@biomejs/cli-linux-arm64-musl@2.3.8': + '@biomejs/cli-linux-arm64-musl@2.3.11': optional: true - '@biomejs/cli-linux-arm64@2.3.8': + '@biomejs/cli-linux-arm64@2.3.11': optional: true - '@biomejs/cli-linux-x64-musl@2.3.8': + '@biomejs/cli-linux-x64-musl@2.3.11': optional: true - '@biomejs/cli-linux-x64@2.3.8': + '@biomejs/cli-linux-x64@2.3.11': optional: true - '@biomejs/cli-win32-arm64@2.3.8': + '@biomejs/cli-win32-arm64@2.3.11': optional: true - '@biomejs/cli-win32-x64@2.3.8': + '@biomejs/cli-win32-x64@2.3.11': optional: true '@chevrotain/cst-dts-gen@10.5.0': @@ -7615,11 +7489,11 @@ snapshots: '@chevrotain/utils@10.5.0': {} - '@clickhouse/client-common@1.14.0': {} + '@clickhouse/client-common@1.16.0': {} - '@clickhouse/client@1.14.0': + '@clickhouse/client@1.16.0': dependencies: - '@clickhouse/client-common': 1.14.0 + '@clickhouse/client-common': 1.16.0 '@colors/colors@1.5.0': optional: true @@ -7919,12 +7793,7 @@ snapshots: '@electric-sql/pglite@0.3.2': {} - '@emnapi/runtime@1.5.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.7.1': + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 optional: true @@ -8091,10 +7960,10 @@ snapshots: '@fontsource/jetbrains-mono@5.2.8': {} - '@formatjs/cli@4.8.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3))': + '@formatjs/cli@4.8.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3))': dependencies: '@formatjs/icu-messageformat-parser': 2.1.0 - '@formatjs/ts-transformer': 3.9.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3)) + '@formatjs/ts-transformer': 3.9.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3)) '@types/estree': 0.0.50 '@types/fs-extra': 9.0.13 '@types/json-stable-stringify': 1.2.0 @@ -8181,15 +8050,15 @@ snapshots: optionalDependencies: typescript: 5.9.3 - '@formatjs/ts-transformer@2.13.0(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3))': + '@formatjs/ts-transformer@2.13.0(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3))': dependencies: intl-messageformat-parser: 6.1.2 tslib: 2.8.1 typescript: 4.9.5 optionalDependencies: - ts-jest: 29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3) + ts-jest: 29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3) - '@formatjs/ts-transformer@3.9.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3))': + '@formatjs/ts-transformer@3.9.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3))': dependencies: '@formatjs/icu-messageformat-parser': 2.1.0 '@types/node': 14.18.63 @@ -8197,19 +8066,19 @@ snapshots: tslib: 2.8.1 typescript: 4.9.5 optionalDependencies: - ts-jest: 29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3) + ts-jest: 29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3) - '@hello-pangea/dnd@17.0.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@hello-pangea/dnd@17.0.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@babel/runtime': 7.28.3 css-box-model: 1.2.1 memoize-one: 6.0.0 raf-schd: 4.0.3 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) - react-redux: 9.2.0(@types/react@19.2.7)(react@19.2.1)(redux@5.0.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-redux: 9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1) redux: 5.0.1 - use-memo-one: 1.1.3(react@19.2.1) + use-memo-one: 1.1.3(react@19.2.3) transitivePeerDependencies: - '@types/react' @@ -8220,108 +8089,56 @@ snapshots: '@img/colour@1.0.0': optional: true - '@img/sharp-darwin-arm64@0.34.3': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.0 - optional: true - '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true - '@img/sharp-darwin-x64@0.34.3': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.0 - optional: true - '@img/sharp-darwin-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.0': - optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true - '@img/sharp-libvips-darwin-x64@1.2.0': - optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm64@1.2.0': - optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm@1.2.0': - optional: true - '@img/sharp-libvips-linux-arm@1.2.4': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.0': - optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true - '@img/sharp-libvips-linux-s390x@1.2.0': - optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': optional: true - '@img/sharp-libvips-linux-x64@1.2.0': - optional: true - '@img/sharp-libvips-linux-x64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.0': - optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.0': - optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true - '@img/sharp-linux-arm64@0.34.3': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.0 - optional: true - '@img/sharp-linux-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true - '@img/sharp-linux-arm@0.34.3': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.0 - optional: true - '@img/sharp-linux-arm@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.2.4 optional: true - '@img/sharp-linux-ppc64@0.34.3': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.0 - optional: true - '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.2.4 @@ -8332,90 +8149,56 @@ snapshots: '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true - '@img/sharp-linux-s390x@0.34.3': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.0 - optional: true - '@img/sharp-linux-s390x@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true - '@img/sharp-linux-x64@0.34.3': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.0 - optional: true - '@img/sharp-linux-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.2.4 optional: true - '@img/sharp-linuxmusl-arm64@0.34.3': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 - optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true - '@img/sharp-linuxmusl-x64@0.34.3': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.0 - optional: true - '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true - '@img/sharp-wasm32@0.34.3': - dependencies: - '@emnapi/runtime': 1.5.0 - optional: true - '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.7.1 - optional: true - - '@img/sharp-win32-arm64@0.34.3': + '@emnapi/runtime': 1.8.1 optional: true '@img/sharp-win32-arm64@0.34.5': optional: true - '@img/sharp-win32-ia32@0.34.3': - optional: true - '@img/sharp-win32-ia32@0.34.5': optional: true - '@img/sharp-win32-x64@0.34.3': - optional: true - '@img/sharp-win32-x64@0.34.5': optional: true '@internationalized/date@3.10.0': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@internationalized/message@3.1.8': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 intl-messageformat: 10.7.18 '@internationalized/number@3.6.5': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@internationalized/string@3.2.7': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 '@isaacs/balanced-match@4.0.1': {} @@ -8445,27 +8228,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8492,7 +8275,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -8514,7 +8297,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 24.10.1 + '@types/node': 24.10.8 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -8532,7 +8315,7 @@ snapshots: '@jest/pattern@30.0.1': dependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.8 jest-regex-util: 30.0.1 '@jest/reporters@29.7.0': @@ -8543,7 +8326,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.30 - '@types/node': 24.10.1 + '@types/node': 24.10.8 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -8617,7 +8400,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.10.1 + '@types/node': 24.10.8 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -8627,7 +8410,7 @@ snapshots: '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.10.1 + '@types/node': 24.10.8 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -8662,58 +8445,58 @@ snapshots: chevrotain: 10.5.0 lilconfig: 2.1.0 - '@netlify/plugin-nextjs@5.15.1': {} + '@netlify/plugin-nextjs@5.15.5': {} - '@next/env@15.5.7': {} + '@next/env@15.5.9': {} - '@next/env@16.0.7': {} + '@next/env@16.1.1': {} '@next/swc-darwin-arm64@15.5.7': optional: true - '@next/swc-darwin-arm64@16.0.7': + '@next/swc-darwin-arm64@16.1.1': optional: true '@next/swc-darwin-x64@15.5.7': optional: true - '@next/swc-darwin-x64@16.0.7': + '@next/swc-darwin-x64@16.1.1': optional: true '@next/swc-linux-arm64-gnu@15.5.7': optional: true - '@next/swc-linux-arm64-gnu@16.0.7': + '@next/swc-linux-arm64-gnu@16.1.1': optional: true '@next/swc-linux-arm64-musl@15.5.7': optional: true - '@next/swc-linux-arm64-musl@16.0.7': + '@next/swc-linux-arm64-musl@16.1.1': optional: true '@next/swc-linux-x64-gnu@15.5.7': optional: true - '@next/swc-linux-x64-gnu@16.0.7': + '@next/swc-linux-x64-gnu@16.1.1': optional: true '@next/swc-linux-x64-musl@15.5.7': optional: true - '@next/swc-linux-x64-musl@16.0.7': + '@next/swc-linux-x64-musl@16.1.1': optional: true '@next/swc-win32-arm64-msvc@15.5.7': optional: true - '@next/swc-win32-arm64-msvc@16.0.7': + '@next/swc-win32-arm64-msvc@16.1.1': optional: true '@next/swc-win32-x64-msvc@15.5.7': optional: true - '@next/swc-win32-x64-msvc@16.0.7': + '@next/swc-win32-x64-msvc@16.1.1': optional: true '@nodelib/fs.scandir@2.1.5': @@ -8731,24 +8514,24 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@prisma/adapter-pg@7.1.0': + '@prisma/adapter-pg@7.2.0': dependencies: - '@prisma/driver-adapter-utils': 7.1.0 - pg: 8.16.3 + '@prisma/driver-adapter-utils': 7.2.0 + pg: 8.17.0 postgres-array: 3.0.4 transitivePeerDependencies: - pg-native - '@prisma/client-runtime-utils@7.1.0': {} + '@prisma/client-runtime-utils@7.2.0': {} - '@prisma/client@7.1.0(prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(typescript@5.9.3)': + '@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3)': dependencies: - '@prisma/client-runtime-utils': 7.1.0 + '@prisma/client-runtime-utils': 7.2.0 optionalDependencies: - prisma: 7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3) + prisma: 7.2.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) typescript: 5.9.3 - '@prisma/config@7.1.0': + '@prisma/config@7.2.0': dependencies: c12: 3.1.0 deepmerge-ts: 7.1.5 @@ -8759,9 +8542,9 @@ snapshots: '@prisma/debug@6.8.2': {} - '@prisma/debug@7.1.0': {} + '@prisma/debug@7.2.0': {} - '@prisma/dev@0.15.0(typescript@5.9.3)': + '@prisma/dev@0.17.0(typescript@5.9.3)': dependencies: '@electric-sql/pglite': 0.3.2 '@electric-sql/pglite-socket': 0.0.6(@electric-sql/pglite@0.3.2) @@ -8783,1149 +8566,1149 @@ snapshots: transitivePeerDependencies: - typescript - '@prisma/driver-adapter-utils@7.1.0': + '@prisma/driver-adapter-utils@7.2.0': dependencies: - '@prisma/debug': 7.1.0 + '@prisma/debug': 7.2.0 - '@prisma/engines-version@7.1.0-6.ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba': {} + '@prisma/engines-version@7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3': {} - '@prisma/engines@7.1.0': + '@prisma/engines@7.2.0': dependencies: - '@prisma/debug': 7.1.0 - '@prisma/engines-version': 7.1.0-6.ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba - '@prisma/fetch-engine': 7.1.0 - '@prisma/get-platform': 7.1.0 + '@prisma/debug': 7.2.0 + '@prisma/engines-version': 7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + '@prisma/fetch-engine': 7.2.0 + '@prisma/get-platform': 7.2.0 - '@prisma/extension-read-replicas@0.5.0(@prisma/client@7.1.0(prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(typescript@5.9.3))': + '@prisma/extension-read-replicas@0.5.0(@prisma/client@7.2.0(prisma@7.2.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3))': dependencies: - '@prisma/client': 7.1.0(prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3))(typescript@5.9.3) + '@prisma/client': 7.2.0(prisma@7.2.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3))(typescript@5.9.3) - '@prisma/fetch-engine@7.1.0': + '@prisma/fetch-engine@7.2.0': dependencies: - '@prisma/debug': 7.1.0 - '@prisma/engines-version': 7.1.0-6.ab635e6b9d606fa5c8fb8b1a7f909c3c3c1c98ba - '@prisma/get-platform': 7.1.0 + '@prisma/debug': 7.2.0 + '@prisma/engines-version': 7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 + '@prisma/get-platform': 7.2.0 '@prisma/get-platform@6.8.2': dependencies: '@prisma/debug': 6.8.2 - '@prisma/get-platform@7.1.0': + '@prisma/get-platform@7.2.0': dependencies: - '@prisma/debug': 7.1.0 + '@prisma/debug': 7.2.0 '@prisma/query-plan-executor@6.18.0': {} - '@prisma/studio-core@0.8.2(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@prisma/studio-core@0.9.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@types/react': 19.2.7 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@types/react': 19.2.8 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/autocomplete@3.0.0-rc.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/autocomplete@3.0.0-rc.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/combobox': 3.14.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/listbox': 3.15.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/searchfield': 3.8.9(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/textfield': 3.18.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/autocomplete': 3.0.0-beta.3(react@19.2.1) - '@react-stately/combobox': 3.12.0(react@19.2.1) - '@react-types/autocomplete': 3.0.0-alpha.35(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/combobox': 3.14.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/listbox': 3.15.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/searchfield': 3.8.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/textfield': 3.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/autocomplete': 3.0.0-beta.3(react@19.2.3) + '@react-stately/combobox': 3.12.0(react@19.2.3) + '@react-types/autocomplete': 3.0.0-alpha.35(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/breadcrumbs@3.5.29(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/breadcrumbs@3.5.29(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/link': 3.8.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/breadcrumbs': 3.7.17(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/link': 3.8.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/breadcrumbs': 3.7.17(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/button@3.14.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/button@3.14.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/toolbar': 3.0.0-beta.21(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/toggle': 3.9.2(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/toolbar': 3.0.0-beta.21(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/toggle': 3.9.2(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/calendar@3.9.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/calendar@3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@internationalized/date': 3.10.0 - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/calendar': 3.9.0(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/calendar': 3.8.0(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/calendar': 3.9.0(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/calendar': 3.8.0(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/checkbox@3.16.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/checkbox@3.16.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/form': 3.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/toggle': 3.12.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/checkbox': 3.7.2(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/toggle': 3.9.2(react@19.2.1) - '@react-types/checkbox': 3.10.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/form': 3.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/toggle': 3.12.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/checkbox': 3.7.2(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/toggle': 3.9.2(react@19.2.3) + '@react-types/checkbox': 3.10.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/collections@3.0.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/collections@3.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/ssr': 3.9.10(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) - use-sync-external-store: 1.6.0(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + use-sync-external-store: 1.6.0(react@19.2.3) - '@react-aria/color@3.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/color@3.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/numberfield': 3.12.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/slider': 3.8.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/spinbutton': 3.6.19(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/textfield': 3.18.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/color': 3.9.2(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-types/color': 3.1.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/numberfield': 3.12.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/slider': 3.8.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/spinbutton': 3.6.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/textfield': 3.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/color': 3.9.2(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-types/color': 3.1.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/combobox@3.14.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/combobox@3.14.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/listbox': 3.15.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/listbox': 3.15.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/live-announcer': 3.4.4 - '@react-aria/menu': 3.19.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/overlays': 3.30.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/textfield': 3.18.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/combobox': 3.12.0(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/combobox': 3.13.9(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/menu': 3.19.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/overlays': 3.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/textfield': 3.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/combobox': 3.12.0(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/combobox': 3.13.9(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/datepicker@3.15.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/datepicker@3.15.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@internationalized/date': 3.10.0 '@internationalized/number': 3.6.5 '@internationalized/string': 3.2.7 - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/form': 3.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/spinbutton': 3.6.19(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/datepicker': 3.15.2(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/calendar': 3.8.0(react@19.2.1) - '@react-types/datepicker': 3.13.2(react@19.2.1) - '@react-types/dialog': 3.5.22(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/form': 3.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/spinbutton': 3.6.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/datepicker': 3.15.2(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/calendar': 3.8.0(react@19.2.3) + '@react-types/datepicker': 3.13.2(react@19.2.3) + '@react-types/dialog': 3.5.22(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/dialog@3.5.31(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/dialog@3.5.31(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/overlays': 3.30.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/dialog': 3.5.22(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/overlays': 3.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/dialog': 3.5.22(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/disclosure@3.1.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/disclosure@3.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/disclosure': 3.0.8(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/disclosure': 3.0.8(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/dnd@3.11.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/dnd@3.11.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@internationalized/string': 3.2.7 - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/live-announcer': 3.4.4 - '@react-aria/overlays': 3.30.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/dnd': 3.7.1(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/overlays': 3.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/dnd': 3.7.1(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/focus@3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/focus@3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 clsx: 2.1.1 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/form@3.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/form@3.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/grid@3.14.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/grid@3.14.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/live-announcer': 3.4.4 - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/grid': 3.11.6(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-types/checkbox': 3.10.2(react@19.2.1) - '@react-types/grid': 3.3.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/grid': 3.11.6(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-types/checkbox': 3.10.2(react@19.2.3) + '@react-types/grid': 3.3.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/gridlist@3.14.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/gridlist@3.14.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/grid': 3.14.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/list': 3.13.1(react@19.2.1) - '@react-stately/tree': 3.9.3(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/grid': 3.14.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/list': 3.13.1(react@19.2.3) + '@react-stately/tree': 3.9.3(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/i18n@3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/i18n@3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@internationalized/date': 3.10.0 '@internationalized/message': 3.1.8 '@internationalized/number': 3.6.5 '@internationalized/string': 3.2.7 - '@react-aria/ssr': 3.9.10(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/interactions@3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/interactions@3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-stately/flags': 3.1.2 - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/label@3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/label@3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/landmark@3.0.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/landmark@3.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) - use-sync-external-store: 1.6.0(react@19.2.1) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + use-sync-external-store: 1.6.0(react@19.2.3) - '@react-aria/link@3.8.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/link@3.8.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/link': 3.6.5(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/link': 3.6.5(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/listbox@3.15.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/listbox@3.15.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/list': 3.13.1(react@19.2.1) - '@react-types/listbox': 3.7.4(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/list': 3.13.1(react@19.2.3) + '@react-types/listbox': 3.7.4(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) '@react-aria/live-announcer@3.4.4': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 - '@react-aria/menu@3.19.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/menu@3.19.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/overlays': 3.30.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/menu': 3.9.8(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-stately/tree': 3.9.3(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/menu': 3.10.5(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/overlays': 3.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/menu': 3.9.8(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-stately/tree': 3.9.3(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/menu': 3.10.5(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/meter@3.4.27(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/meter@3.4.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/progress': 3.4.27(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/meter': 3.4.13(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/progress': 3.4.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/meter': 3.4.13(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/numberfield@3.12.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/numberfield@3.12.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/spinbutton': 3.6.19(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/textfield': 3.18.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/numberfield': 3.10.2(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/numberfield': 3.8.15(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/spinbutton': 3.6.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/textfield': 3.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/numberfield': 3.10.2(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/numberfield': 3.8.15(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/overlays@3.30.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/overlays@3.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/ssr': 3.9.10(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/overlays': 3.6.20(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/overlays': 3.9.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/overlays': 3.6.20(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/overlays': 3.9.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/progress@3.4.27(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/progress@3.4.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/progress': 3.5.16(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/progress': 3.5.16(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/radio@3.12.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/radio@3.12.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/form': 3.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/radio': 3.11.2(react@19.2.1) - '@react-types/radio': 3.9.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/form': 3.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/radio': 3.11.2(react@19.2.3) + '@react-types/radio': 3.9.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/searchfield@3.8.9(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/searchfield@3.8.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/textfield': 3.18.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/searchfield': 3.5.16(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/searchfield': 3.6.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/textfield': 3.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/searchfield': 3.5.16(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/searchfield': 3.6.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/select@3.17.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/select@3.17.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/form': 3.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/listbox': 3.15.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/menu': 3.19.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/select': 3.8.0(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/select': 3.11.0(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/form': 3.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/listbox': 3.15.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/menu': 3.19.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/select': 3.8.0(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/select': 3.11.0(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/selection@3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/selection@3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/separator@3.4.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/separator@3.4.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/slider@3.8.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/slider@3.8.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/slider': 3.7.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/slider': 3.8.2(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/slider': 3.7.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/slider': 3.8.2(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/spinbutton@3.6.19(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/spinbutton@3.6.19(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/ssr@3.9.10(react@19.2.1)': + '@react-aria/ssr@3.9.10(react@19.2.3)': dependencies: - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-aria/switch@3.7.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/switch@3.7.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/toggle': 3.12.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/toggle': 3.9.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/switch': 3.5.15(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/toggle': 3.12.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/toggle': 3.9.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/switch': 3.5.15(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/table@3.17.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/table@3.17.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/grid': 3.14.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/grid': 3.14.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/live-announcer': 3.4.4 - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/collections': 3.12.8(react@19.2.1) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/collections': 3.12.8(react@19.2.3) '@react-stately/flags': 3.1.2 - '@react-stately/table': 3.15.1(react@19.2.1) - '@react-types/checkbox': 3.10.2(react@19.2.1) - '@react-types/grid': 3.3.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/table': 3.13.4(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-stately/table': 3.15.1(react@19.2.3) + '@react-types/checkbox': 3.10.2(react@19.2.3) + '@react-types/grid': 3.3.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/table': 3.13.4(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/tabs@3.10.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/tabs@3.10.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/tabs': 3.8.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/tabs': 3.3.19(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/tabs': 3.8.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/tabs': 3.3.19(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/tag@3.7.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/tag@3.7.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/gridlist': 3.14.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/list': 3.13.1(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/gridlist': 3.14.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/list': 3.13.1(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/textfield@3.18.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/textfield@3.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/form': 3.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/textfield': 3.12.6(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/form': 3.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/textfield': 3.12.6(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/toast@3.0.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/toast@3.0.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/landmark': 3.0.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/toast': 3.1.2(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/landmark': 3.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/toast': 3.1.2(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/toggle@3.12.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/toggle@3.12.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/toggle': 3.9.2(react@19.2.1) - '@react-types/checkbox': 3.10.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/toggle': 3.9.2(react@19.2.3) + '@react-types/checkbox': 3.10.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/toolbar@3.0.0-beta.21(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/toolbar@3.0.0-beta.21(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/tooltip@3.8.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/tooltip@3.8.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/tooltip': 3.5.8(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/tooltip': 3.4.21(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/tooltip': 3.5.8(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/tooltip': 3.4.21(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/tree@3.1.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/tree@3.1.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/gridlist': 3.14.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/tree': 3.9.3(react@19.2.1) - '@react-types/button': 3.14.1(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/gridlist': 3.14.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/tree': 3.9.3(react@19.2.3) + '@react-types/button': 3.14.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/utils@3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/utils@3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/ssr': 3.9.10(react@19.2.1) + '@react-aria/ssr': 3.9.10(react@19.2.3) '@react-stately/flags': 3.1.2 - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 clsx: 2.1.1 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/virtualizer@4.1.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/virtualizer@4.1.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/virtualizer': 4.4.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/virtualizer': 4.4.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-aria/visually-hidden@3.8.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-aria/visually-hidden@3.8.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-spring/animated@10.0.3(react@19.2.1)': + '@react-spring/animated@10.0.3(react@19.2.3)': dependencies: - '@react-spring/shared': 10.0.3(react@19.2.1) + '@react-spring/shared': 10.0.3(react@19.2.3) '@react-spring/types': 10.0.3 - react: 19.2.1 + react: 19.2.3 - '@react-spring/animated@9.7.5(react@19.2.1)': + '@react-spring/animated@9.7.5(react@19.2.3)': dependencies: - '@react-spring/shared': 9.7.5(react@19.2.1) + '@react-spring/shared': 9.7.5(react@19.2.3) '@react-spring/types': 9.7.5 - react: 19.2.1 + react: 19.2.3 - '@react-spring/core@10.0.3(react@19.2.1)': + '@react-spring/core@10.0.3(react@19.2.3)': dependencies: - '@react-spring/animated': 10.0.3(react@19.2.1) - '@react-spring/shared': 10.0.3(react@19.2.1) + '@react-spring/animated': 10.0.3(react@19.2.3) + '@react-spring/shared': 10.0.3(react@19.2.3) '@react-spring/types': 10.0.3 - react: 19.2.1 + react: 19.2.3 - '@react-spring/core@9.7.5(react@19.2.1)': + '@react-spring/core@9.7.5(react@19.2.3)': dependencies: - '@react-spring/animated': 9.7.5(react@19.2.1) - '@react-spring/shared': 9.7.5(react@19.2.1) + '@react-spring/animated': 9.7.5(react@19.2.3) + '@react-spring/shared': 9.7.5(react@19.2.3) '@react-spring/types': 9.7.5 - react: 19.2.1 + react: 19.2.3 '@react-spring/rafz@10.0.3': {} '@react-spring/rafz@9.7.5': {} - '@react-spring/shared@10.0.3(react@19.2.1)': + '@react-spring/shared@10.0.3(react@19.2.3)': dependencies: '@react-spring/rafz': 10.0.3 '@react-spring/types': 10.0.3 - react: 19.2.1 + react: 19.2.3 - '@react-spring/shared@9.7.5(react@19.2.1)': + '@react-spring/shared@9.7.5(react@19.2.3)': dependencies: '@react-spring/rafz': 9.7.5 '@react-spring/types': 9.7.5 - react: 19.2.1 + react: 19.2.3 '@react-spring/types@10.0.3': {} '@react-spring/types@9.7.5': {} - '@react-spring/web@10.0.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-spring/web@10.0.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-spring/animated': 10.0.3(react@19.2.1) - '@react-spring/core': 10.0.3(react@19.2.1) - '@react-spring/shared': 10.0.3(react@19.2.1) + '@react-spring/animated': 10.0.3(react@19.2.3) + '@react-spring/core': 10.0.3(react@19.2.3) + '@react-spring/shared': 10.0.3(react@19.2.3) '@react-spring/types': 10.0.3 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-spring/web@9.7.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-spring/web@9.7.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-spring/animated': 9.7.5(react@19.2.1) - '@react-spring/core': 9.7.5(react@19.2.1) - '@react-spring/shared': 9.7.5(react@19.2.1) + '@react-spring/animated': 9.7.5(react@19.2.3) + '@react-spring/core': 9.7.5(react@19.2.3) + '@react-spring/shared': 9.7.5(react@19.2.3) '@react-spring/types': 9.7.5 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-stately/autocomplete@3.0.0-beta.3(react@19.2.1)': + '@react-stately/autocomplete@3.0.0-beta.3(react@19.2.3)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/calendar@3.9.0(react@19.2.1)': + '@react-stately/calendar@3.9.0(react@19.2.3)': dependencies: '@internationalized/date': 3.10.0 - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/calendar': 3.8.0(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/calendar': 3.8.0(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/checkbox@3.7.2(react@19.2.1)': + '@react-stately/checkbox@3.7.2(react@19.2.3)': dependencies: - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/checkbox': 3.10.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/checkbox': 3.10.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/collections@3.12.8(react@19.2.1)': + '@react-stately/collections@3.12.8(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/color@3.9.2(react@19.2.1)': + '@react-stately/color@3.9.2(react@19.2.3)': dependencies: '@internationalized/number': 3.6.5 '@internationalized/string': 3.2.7 - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/numberfield': 3.10.2(react@19.2.1) - '@react-stately/slider': 3.7.2(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/color': 3.1.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/numberfield': 3.10.2(react@19.2.3) + '@react-stately/slider': 3.7.2(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/color': 3.1.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/combobox@3.12.0(react@19.2.1)': + '@react-stately/combobox@3.12.0(react@19.2.3)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/list': 3.13.1(react@19.2.1) - '@react-stately/overlays': 3.6.20(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/combobox': 3.13.9(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/list': 3.13.1(react@19.2.3) + '@react-stately/overlays': 3.6.20(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/combobox': 3.13.9(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/data@3.14.1(react@19.2.1)': + '@react-stately/data@3.14.1(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/datepicker@3.15.2(react@19.2.1)': + '@react-stately/datepicker@3.15.2(react@19.2.3)': dependencies: '@internationalized/date': 3.10.0 '@internationalized/string': 3.2.7 - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/overlays': 3.6.20(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/datepicker': 3.13.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/overlays': 3.6.20(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/datepicker': 3.13.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/disclosure@3.0.8(react@19.2.1)': + '@react-stately/disclosure@3.0.8(react@19.2.3)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/dnd@3.7.1(react@19.2.1)': + '@react-stately/dnd@3.7.1(react@19.2.3)': dependencies: - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 '@react-stately/flags@3.1.2': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.18 - '@react-stately/form@3.2.2(react@19.2.1)': + '@react-stately/form@3.2.2(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/grid@3.11.6(react@19.2.1)': + '@react-stately/grid@3.11.6(react@19.2.3)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-types/grid': 3.3.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-types/grid': 3.3.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/layout@4.5.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-stately/layout@4.5.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/table': 3.15.1(react@19.2.1) - '@react-stately/virtualizer': 4.4.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/grid': 3.3.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/table': 3.13.4(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/table': 3.15.1(react@19.2.3) + '@react-stately/virtualizer': 4.4.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/grid': 3.3.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/table': 3.13.4(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-stately/list@3.13.1(react@19.2.1)': + '@react-stately/list@3.13.1(react@19.2.3)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/menu@3.9.8(react@19.2.1)': + '@react-stately/menu@3.9.8(react@19.2.3)': dependencies: - '@react-stately/overlays': 3.6.20(react@19.2.1) - '@react-types/menu': 3.10.5(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/overlays': 3.6.20(react@19.2.3) + '@react-types/menu': 3.10.5(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/numberfield@3.10.2(react@19.2.1)': + '@react-stately/numberfield@3.10.2(react@19.2.3)': dependencies: '@internationalized/number': 3.6.5 - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/numberfield': 3.8.15(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/numberfield': 3.8.15(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/overlays@3.6.20(react@19.2.1)': + '@react-stately/overlays@3.6.20(react@19.2.3)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/overlays': 3.9.2(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/overlays': 3.9.2(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/radio@3.11.2(react@19.2.1)': + '@react-stately/radio@3.11.2(react@19.2.3)': dependencies: - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/radio': 3.9.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/radio': 3.9.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/searchfield@3.5.16(react@19.2.1)': + '@react-stately/searchfield@3.5.16(react@19.2.3)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/searchfield': 3.6.6(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/searchfield': 3.6.6(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/select@3.8.0(react@19.2.1)': + '@react-stately/select@3.8.0(react@19.2.3)': dependencies: - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/list': 3.13.1(react@19.2.1) - '@react-stately/overlays': 3.6.20(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/select': 3.11.0(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/list': 3.13.1(react@19.2.3) + '@react-stately/overlays': 3.6.20(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/select': 3.11.0(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/selection@3.20.6(react@19.2.1)': + '@react-stately/selection@3.20.6(react@19.2.3)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/slider@3.7.2(react@19.2.1)': + '@react-stately/slider@3.7.2(react@19.2.3)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/slider': 3.8.2(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/slider': 3.8.2(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/table@3.15.1(react@19.2.1)': + '@react-stately/table@3.15.1(react@19.2.3)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.1) + '@react-stately/collections': 3.12.8(react@19.2.3) '@react-stately/flags': 3.1.2 - '@react-stately/grid': 3.11.6(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/grid': 3.3.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/table': 3.13.4(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/grid': 3.11.6(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/grid': 3.3.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/table': 3.13.4(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/tabs@3.8.6(react@19.2.1)': + '@react-stately/tabs@3.8.6(react@19.2.3)': dependencies: - '@react-stately/list': 3.13.1(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/tabs': 3.3.19(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/list': 3.13.1(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/tabs': 3.3.19(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/toast@3.1.2(react@19.2.1)': + '@react-stately/toast@3.1.2(react@19.2.3)': dependencies: - '@swc/helpers': 0.5.17 - react: 19.2.1 - use-sync-external-store: 1.6.0(react@19.2.1) + '@swc/helpers': 0.5.18 + react: 19.2.3 + use-sync-external-store: 1.6.0(react@19.2.3) - '@react-stately/toggle@3.9.2(react@19.2.1)': + '@react-stately/toggle@3.9.2(react@19.2.3)': dependencies: - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/checkbox': 3.10.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/checkbox': 3.10.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/tooltip@3.5.8(react@19.2.1)': + '@react-stately/tooltip@3.5.8(react@19.2.3)': dependencies: - '@react-stately/overlays': 3.6.20(react@19.2.1) - '@react-types/tooltip': 3.4.21(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/overlays': 3.6.20(react@19.2.3) + '@react-types/tooltip': 3.4.21(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/tree@3.9.3(react@19.2.1)': + '@react-stately/tree@3.9.3(react@19.2.3)': dependencies: - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/utils@3.10.8(react@19.2.1)': + '@react-stately/utils@3.10.8(react@19.2.3)': dependencies: - '@swc/helpers': 0.5.17 - react: 19.2.1 + '@swc/helpers': 0.5.18 + react: 19.2.3 - '@react-stately/virtualizer@4.4.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1)': + '@react-stately/virtualizer@4.4.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - '@swc/helpers': 0.5.17 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-types/shared': 3.32.1(react@19.2.3) + '@swc/helpers': 0.5.18 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - '@react-types/autocomplete@3.0.0-alpha.35(react@19.2.1)': + '@react-types/autocomplete@3.0.0-alpha.35(react@19.2.3)': dependencies: - '@react-types/combobox': 3.13.9(react@19.2.1) - '@react-types/searchfield': 3.6.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/combobox': 3.13.9(react@19.2.3) + '@react-types/searchfield': 3.6.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/breadcrumbs@3.7.17(react@19.2.1)': + '@react-types/breadcrumbs@3.7.17(react@19.2.3)': dependencies: - '@react-types/link': 3.6.5(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/link': 3.6.5(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/button@3.14.1(react@19.2.1)': + '@react-types/button@3.14.1(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/calendar@3.8.0(react@19.2.1)': + '@react-types/calendar@3.8.0(react@19.2.3)': dependencies: '@internationalized/date': 3.10.0 - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/checkbox@3.10.2(react@19.2.1)': + '@react-types/checkbox@3.10.2(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/color@3.1.2(react@19.2.1)': + '@react-types/color@3.1.2(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/slider': 3.8.2(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/slider': 3.8.2(react@19.2.3) + react: 19.2.3 - '@react-types/combobox@3.13.9(react@19.2.1)': + '@react-types/combobox@3.13.9(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/datepicker@3.13.2(react@19.2.1)': + '@react-types/datepicker@3.13.2(react@19.2.3)': dependencies: '@internationalized/date': 3.10.0 - '@react-types/calendar': 3.8.0(react@19.2.1) - '@react-types/overlays': 3.9.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/calendar': 3.8.0(react@19.2.3) + '@react-types/overlays': 3.9.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/dialog@3.5.22(react@19.2.1)': + '@react-types/dialog@3.5.22(react@19.2.3)': dependencies: - '@react-types/overlays': 3.9.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/overlays': 3.9.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/form@3.7.16(react@19.2.1)': + '@react-types/form@3.7.16(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/grid@3.3.6(react@19.2.1)': + '@react-types/grid@3.3.6(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/link@3.6.5(react@19.2.1)': + '@react-types/link@3.6.5(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/listbox@3.7.4(react@19.2.1)': + '@react-types/listbox@3.7.4(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/menu@3.10.5(react@19.2.1)': + '@react-types/menu@3.10.5(react@19.2.3)': dependencies: - '@react-types/overlays': 3.9.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/overlays': 3.9.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/meter@3.4.13(react@19.2.1)': + '@react-types/meter@3.4.13(react@19.2.3)': dependencies: - '@react-types/progress': 3.5.16(react@19.2.1) - react: 19.2.1 + '@react-types/progress': 3.5.16(react@19.2.3) + react: 19.2.3 - '@react-types/numberfield@3.8.15(react@19.2.1)': + '@react-types/numberfield@3.8.15(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/overlays@3.9.2(react@19.2.1)': + '@react-types/overlays@3.9.2(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/progress@3.5.16(react@19.2.1)': + '@react-types/progress@3.5.16(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/radio@3.9.2(react@19.2.1)': + '@react-types/radio@3.9.2(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/searchfield@3.6.6(react@19.2.1)': + '@react-types/searchfield@3.6.6(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/textfield': 3.12.6(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/textfield': 3.12.6(react@19.2.3) + react: 19.2.3 - '@react-types/select@3.11.0(react@19.2.1)': + '@react-types/select@3.11.0(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/shared@3.32.1(react@19.2.1)': + '@react-types/shared@3.32.1(react@19.2.3)': dependencies: - react: 19.2.1 + react: 19.2.3 - '@react-types/slider@3.8.2(react@19.2.1)': + '@react-types/slider@3.8.2(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/switch@3.5.15(react@19.2.1)': + '@react-types/switch@3.5.15(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/table@3.13.4(react@19.2.1)': + '@react-types/table@3.13.4(react@19.2.3)': dependencies: - '@react-types/grid': 3.3.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/grid': 3.3.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/tabs@3.3.19(react@19.2.1)': + '@react-types/tabs@3.3.19(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/textfield@3.12.6(react@19.2.1)': + '@react-types/textfield@3.12.6(react@19.2.3)': dependencies: - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - '@react-types/tooltip@3.4.21(react@19.2.1)': + '@react-types/tooltip@3.4.21(react@19.2.3)': dependencies: - '@react-types/overlays': 3.9.2(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-types/overlays': 3.9.2(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 '@redis/bloom@1.2.0(@redis/client@1.6.1)': dependencies: @@ -9953,133 +9736,142 @@ snapshots: dependencies: '@redis/client': 1.6.1 - '@rollup/plugin-alias@5.1.1(rollup@4.53.3)': + '@rollup/plugin-alias@5.1.1(rollup@4.55.1)': optionalDependencies: - rollup: 4.53.3 + rollup: 4.55.1 - '@rollup/plugin-commonjs@25.0.8(rollup@4.53.3)': + '@rollup/plugin-commonjs@25.0.8(rollup@4.55.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.3) + '@rollup/pluginutils': 5.2.0(rollup@4.55.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.17 optionalDependencies: - rollup: 4.53.3 + rollup: 4.55.1 - '@rollup/plugin-json@6.1.0(rollup@4.53.3)': + '@rollup/plugin-json@6.1.0(rollup@4.55.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.3) + '@rollup/pluginutils': 5.2.0(rollup@4.55.1) optionalDependencies: - rollup: 4.53.3 + rollup: 4.55.1 - '@rollup/plugin-node-resolve@15.3.1(rollup@4.53.3)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.55.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.3) + '@rollup/pluginutils': 5.2.0(rollup@4.55.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.53.3 + rollup: 4.55.1 - '@rollup/plugin-replace@5.0.7(rollup@4.53.3)': + '@rollup/plugin-replace@5.0.7(rollup@4.55.1)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.3) + '@rollup/pluginutils': 5.2.0(rollup@4.55.1) magic-string: 0.30.17 optionalDependencies: - rollup: 4.53.3 + rollup: 4.55.1 - '@rollup/plugin-terser@0.4.4(rollup@4.53.3)': + '@rollup/plugin-terser@0.4.4(rollup@4.55.1)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 terser: 5.43.1 optionalDependencies: - rollup: 4.53.3 + rollup: 4.55.1 - '@rollup/plugin-typescript@12.3.0(rollup@4.53.3)(tslib@2.8.1)(typescript@5.9.3)': + '@rollup/plugin-typescript@12.3.0(rollup@4.55.1)(tslib@2.8.1)(typescript@5.9.3)': dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.53.3) + '@rollup/pluginutils': 5.2.0(rollup@4.55.1) resolve: 1.22.10 typescript: 5.9.3 optionalDependencies: - rollup: 4.53.3 + rollup: 4.55.1 tslib: 2.8.1 - '@rollup/pluginutils@5.2.0(rollup@4.53.3)': + '@rollup/pluginutils@5.2.0(rollup@4.55.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.53.3 + rollup: 4.55.1 - '@rollup/rollup-android-arm-eabi@4.53.3': + '@rollup/rollup-android-arm-eabi@4.55.1': optional: true - '@rollup/rollup-android-arm64@4.53.3': + '@rollup/rollup-android-arm64@4.55.1': optional: true - '@rollup/rollup-darwin-arm64@4.53.3': + '@rollup/rollup-darwin-arm64@4.55.1': optional: true - '@rollup/rollup-darwin-x64@4.53.3': + '@rollup/rollup-darwin-x64@4.55.1': optional: true - '@rollup/rollup-freebsd-arm64@4.53.3': + '@rollup/rollup-freebsd-arm64@4.55.1': optional: true - '@rollup/rollup-freebsd-x64@4.53.3': + '@rollup/rollup-freebsd-x64@4.55.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + '@rollup/rollup-linux-arm-gnueabihf@4.55.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.3': + '@rollup/rollup-linux-arm-musleabihf@4.55.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.3': + '@rollup/rollup-linux-arm64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.3': + '@rollup/rollup-linux-arm64-musl@4.55.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.3': + '@rollup/rollup-linux-loong64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.3': + '@rollup/rollup-linux-loong64-musl@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.3': + '@rollup/rollup-linux-ppc64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.3': + '@rollup/rollup-linux-ppc64-musl@4.55.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.3': + '@rollup/rollup-linux-riscv64-gnu@4.55.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.3': + '@rollup/rollup-linux-riscv64-musl@4.55.1': optional: true - '@rollup/rollup-linux-x64-musl@4.53.3': + '@rollup/rollup-linux-s390x-gnu@4.55.1': optional: true - '@rollup/rollup-openharmony-arm64@4.53.3': + '@rollup/rollup-linux-x64-gnu@4.55.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.3': + '@rollup/rollup-linux-x64-musl@4.55.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.3': + '@rollup/rollup-openbsd-x64@4.55.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.3': + '@rollup/rollup-openharmony-arm64@4.55.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.3': + '@rollup/rollup-win32-arm64-msvc@4.55.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.55.1': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.55.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.55.1': optional: true '@sinclair/typebox@0.27.8': {} @@ -10096,7 +9888,7 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@standard-schema/spec@1.0.0': {} + '@standard-schema/spec@1.1.0': {} '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.3)': dependencies: @@ -10203,16 +9995,16 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/helpers@0.5.17': + '@swc/helpers@0.5.18': dependencies: tslib: 2.8.1 - '@tanstack/query-core@5.90.12': {} + '@tanstack/query-core@5.90.17': {} - '@tanstack/react-query@5.90.12(react@19.2.1)': + '@tanstack/react-query@5.90.17(react@19.2.3)': dependencies: - '@tanstack/query-core': 5.90.12 - react: 19.2.1 + '@tanstack/query-core': 5.90.17 + react: 19.2.3 '@trysound/sax@0.2.0': {} @@ -10251,24 +10043,24 @@ snapshots: '@types/fs-extra@8.1.5': dependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.8 '@types/fs-extra@9.0.13': dependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.8 '@types/glob@7.2.0': dependencies: '@types/minimatch': 6.0.0 - '@types/node': 24.10.1 + '@types/node': 24.10.8 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.8 - '@types/hoist-non-react-statics@3.3.7(@types/react@19.2.7)': + '@types/hoist-non-react-statics@3.3.7(@types/react@19.2.8)': dependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 hoist-non-react-statics: 3.3.2 '@types/istanbul-lib-coverage@2.0.6': {} @@ -10300,21 +10092,21 @@ snapshots: '@types/node@14.18.63': {} - '@types/node@24.10.1': + '@types/node@24.10.8': dependencies: undici-types: 7.16.0 '@types/normalize-package-data@2.4.4': {} - '@types/react-dom@19.2.3(@types/react@19.2.7)': + '@types/react-dom@19.2.3(@types/react@19.2.8)': dependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 '@types/react-window@1.8.8': dependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 - '@types/react@19.2.7': + '@types/react@19.2.8': dependencies: csstype: 3.2.3 @@ -10340,27 +10132,27 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.8 optional: true - '@umami/react-zen@0.216.0(@babel/core@7.28.3)(@types/react@19.2.7)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.2.0)(use-sync-external-store@1.6.0(react@19.2.1))': + '@umami/react-zen@0.216.0(@babel/core@7.28.3)(@types/react@19.2.8)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.2.0)(use-sync-external-store@1.6.0(react@19.2.3))': dependencies: '@fontsource/jetbrains-mono': 5.2.8 '@internationalized/date': 3.10.0 - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-spring/web': 9.7.5(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-spring/web': 9.7.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3) classnames: 2.5.1 glob: 13.0.0 highlight.js: 11.11.1 - lucide-react: 0.555.0(react@19.2.1) - next: 16.0.7(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - react: 19.2.1 - react-aria-components: 1.13.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - react-dom: 19.2.1(react@19.2.1) - react-hook-form: 7.68.0(react@19.2.1) - react-icons: 5.5.0(react@19.2.1) + lucide-react: 0.555.0(react@19.2.3) + next: 16.1.1(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: 19.2.3 + react-aria-components: 1.13.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react-dom: 19.2.3(react@19.2.3) + react-hook-form: 7.68.0(react@19.2.3) + react-icons: 5.5.0(react@19.2.3) thenby: 1.3.4 - zustand: 5.0.9(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)(use-sync-external-store@1.6.0(react@19.2.1)) + zustand: 5.0.10(@types/react@19.2.8)(immer@10.2.0)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) transitivePeerDependencies: - '@babel/core' - '@opentelemetry/api' @@ -10596,12 +10388,12 @@ snapshots: dependencies: '@babel/types': 7.28.2 - babel-plugin-react-intl@7.9.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3)): + babel-plugin-react-intl@7.9.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3)): dependencies: '@babel/core': 7.28.3 '@babel/helper-plugin-utils': 7.27.1 '@babel/types': 7.28.2 - '@formatjs/ts-transformer': 2.13.0(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3)) + '@formatjs/ts-transformer': 2.13.0(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3)) '@types/babel__core': 7.20.5 '@types/fs-extra': 9.0.13 '@types/schema-utils': 2.4.0 @@ -10643,6 +10435,8 @@ snapshots: base64-js@1.5.1: {} + baseline-browser-mapping@2.9.14: {} + bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 @@ -10757,15 +10551,13 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.25.2 - caniuse-lite: 1.0.30001741 + caniuse-lite: 1.0.30001764 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 caniuse-lite@1.0.30001735: {} - caniuse-lite@1.0.30001741: {} - - caniuse-lite@1.0.30001759: {} + caniuse-lite@1.0.30001764: {} caseless@0.12.0: {} @@ -10876,18 +10668,6 @@ snapshots: color-name@1.1.4: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - optional: true - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - optional: true - colord@2.9.3: {} colorette@1.4.0: {} @@ -10948,13 +10728,13 @@ snapshots: optionalDependencies: typescript: 5.9.3 - create-jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)): + create-jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -11289,13 +11069,14 @@ snapshots: rimraf: 3.0.2 slash: 3.0.0 - del@8.0.0: + del@8.0.1: dependencies: globby: 14.1.0 is-glob: 4.0.3 is-path-cwd: 3.0.0 is-path-inside: 4.0.0 - p-map: 7.0.3 + p-map: 7.0.4 + presentable-error: 0.0.1 slash: 5.1.0 delayed-stream@1.0.0: {} @@ -11310,9 +11091,6 @@ snapshots: detect-indent@6.1.0: {} - detect-libc@2.0.4: - optional: true - detect-libc@2.1.2: optional: true @@ -11388,7 +11166,7 @@ snapshots: effect@3.18.4: dependencies: - '@standard-schema/spec': 1.0.0 + '@standard-schema/spec': 1.1.0 fast-check: 3.23.2 electron-to-chromium@1.5.202: {} @@ -11627,10 +11405,10 @@ snapshots: extend@3.0.2: {} - extract-react-intl-messages@4.1.1(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3)): + extract-react-intl-messages@4.1.1(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3)): dependencies: '@babel/core': 7.28.3 - babel-plugin-react-intl: 7.9.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3)) + babel-plugin-react-intl: 7.9.4(ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3)) flat: 5.0.2 glob: 7.2.3 js-yaml: 3.14.1 @@ -11727,7 +11505,7 @@ snapshots: dependencies: magic-string: 0.30.21 mlly: 1.8.0 - rollup: 4.53.3 + rollup: 4.55.1 flat-cache@3.2.0: dependencies: @@ -11770,7 +11548,7 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@11.3.2: + fs-extra@11.3.3: dependencies: graceful-fs: 4.2.11 jsonfile: 6.2.0 @@ -12132,9 +11910,6 @@ snapshots: is-arrayish@0.2.1: {} - is-arrayish@0.3.2: - optional: true - is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -12358,7 +12133,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -12378,16 +12153,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)): + jest-cli@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + create-jest: 29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -12397,7 +12172,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)): + jest-config@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)): dependencies: '@babel/core': 7.28.3 '@jest/test-sequencer': 29.7.0 @@ -12422,8 +12197,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.10.1 - ts-node: 10.9.2(@types/node@24.10.1)(typescript@5.9.3) + '@types/node': 24.10.8 + ts-node: 10.9.2(@types/node@24.10.8)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -12459,7 +12234,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -12469,7 +12244,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 24.10.1 + '@types/node': 24.10.8 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -12527,13 +12302,13 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 jest-util: 29.7.0 jest-mock@30.0.5: dependencies: '@jest/types': 30.0.5 - '@types/node': 24.10.1 + '@types/node': 24.10.8 jest-util: 30.0.5 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -12570,7 +12345,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -12598,7 +12373,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -12644,7 +12419,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12653,7 +12428,7 @@ snapshots: jest-util@30.0.5: dependencies: '@jest/types': 30.0.5 - '@types/node': 24.10.1 + '@types/node': 24.10.8 chalk: 4.1.2 ci-info: 4.3.0 graceful-fs: 4.2.11 @@ -12672,7 +12447,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.10.1 + '@types/node': 24.10.8 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -12681,17 +12456,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 24.10.1 + '@types/node': 24.10.8 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)): + jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + jest-cli: 29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -12959,13 +12734,13 @@ snapshots: lru.min@1.1.3: {} - lucide-react@0.543.0(react@19.2.1): + lucide-react@0.543.0(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 - lucide-react@0.555.0(react@19.2.1): + lucide-react@0.555.0(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 magic-string@0.30.17: dependencies: @@ -12997,7 +12772,7 @@ snapshots: mathml-tag-names@2.1.3: {} - maxmind@5.0.1: + maxmind@5.0.3: dependencies: mmdb-lib: 3.0.1 tiny-lru: 11.4.5 @@ -13154,15 +12929,15 @@ snapshots: neo-async@2.6.2: {} - next@15.5.7(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): + next@15.5.9(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@next/env': 15.5.7 + '@next/env': 15.5.9 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001741 + caniuse-lite: 1.0.30001764 postcss: 8.4.31 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) - styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.2.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.2.3) optionalDependencies: '@next/swc-darwin-arm64': 15.5.7 '@next/swc-darwin-x64': 15.5.7 @@ -13173,29 +12948,30 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.5.7 '@next/swc-win32-x64-msvc': 15.5.7 babel-plugin-react-compiler: 19.1.0-rc.2 - sharp: 0.34.3 + sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - next@16.0.7(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): + next@16.1.1(@babel/core@7.28.3)(babel-plugin-react-compiler@19.1.0-rc.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - '@next/env': 16.0.7 + '@next/env': 16.1.1 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001759 + baseline-browser-mapping: 2.9.14 + caniuse-lite: 1.0.30001764 postcss: 8.4.31 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) - styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.2.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + styled-jsx: 5.1.6(@babel/core@7.28.3)(react@19.2.3) optionalDependencies: - '@next/swc-darwin-arm64': 16.0.7 - '@next/swc-darwin-x64': 16.0.7 - '@next/swc-linux-arm64-gnu': 16.0.7 - '@next/swc-linux-arm64-musl': 16.0.7 - '@next/swc-linux-x64-gnu': 16.0.7 - '@next/swc-linux-x64-musl': 16.0.7 - '@next/swc-win32-arm64-msvc': 16.0.7 - '@next/swc-win32-x64-msvc': 16.0.7 + '@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 babel-plugin-react-compiler: 19.1.0-rc.2 sharp: 0.34.5 transitivePeerDependencies: @@ -13330,7 +13106,7 @@ snapshots: dependencies: aggregate-error: 3.1.0 - p-map@7.0.3: {} + p-map@7.0.4: {} p-queue@6.6.2: dependencies: @@ -13401,18 +13177,18 @@ snapshots: performance-now@2.1.0: {} - pg-cloudflare@1.2.7: + pg-cloudflare@1.3.0: optional: true - pg-connection-string@2.9.1: {} + pg-connection-string@2.10.0: {} pg-int8@1.0.1: {} - pg-pool@3.10.1(pg@8.16.3): + pg-pool@3.11.0(pg@8.17.0): dependencies: - pg: 8.16.3 + pg: 8.17.0 - pg-protocol@1.10.3: {} + pg-protocol@1.11.0: {} pg-types@2.2.0: dependencies: @@ -13422,15 +13198,15 @@ snapshots: postgres-date: 1.0.7 postgres-interval: 1.2.0 - pg@8.16.3: + pg@8.17.0: dependencies: - pg-connection-string: 2.9.1 - pg-pool: 3.10.1(pg@8.16.3) - pg-protocol: 1.10.3 + pg-connection-string: 2.10.0 + pg-pool: 3.11.0(pg@8.17.0) + pg-protocol: 1.11.0 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: - pg-cloudflare: 1.2.7 + pg-cloudflare: 1.3.0 pgpass@1.0.5: dependencies: @@ -13608,13 +13384,13 @@ snapshots: postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)): + postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.2(@types/node@24.10.1)(typescript@5.9.3) + ts-node: 10.9.2(@types/node@24.10.8)(typescript@5.9.3) postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.1): dependencies: @@ -13916,6 +13692,8 @@ snapshots: postgres@3.4.7: {} + presentable-error@0.0.1: {} + prettier@2.8.8: {} pretty-bytes@5.6.0: {} @@ -13932,12 +13710,12 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - prisma@7.1.0(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3): + prisma@7.2.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3): dependencies: - '@prisma/config': 7.1.0 - '@prisma/dev': 0.15.0(typescript@5.9.3) - '@prisma/engines': 7.1.0 - '@prisma/studio-core': 0.8.2(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@prisma/config': 7.2.0 + '@prisma/dev': 0.17.0(typescript@5.9.3) + '@prisma/engines': 7.2.0 + '@prisma/studio-core': 0.9.0(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) mysql2: 3.15.3 postgres: 3.4.7 optionalDependencies: @@ -14005,115 +13783,115 @@ snapshots: defu: 6.1.4 destr: 2.0.5 - react-aria-components@1.13.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1): + react-aria-components@1.13.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@internationalized/date': 3.10.0 '@internationalized/string': 3.2.7 - '@react-aria/autocomplete': 3.0.0-rc.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/collections': 3.0.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/dnd': 3.11.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) + '@react-aria/autocomplete': 3.0.0-rc.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/collections': 3.0.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/dnd': 3.11.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@react-aria/live-announcer': 3.4.4 - '@react-aria/overlays': 3.30.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/ssr': 3.9.10(react@19.2.1) - '@react-aria/textfield': 3.18.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/toolbar': 3.0.0-beta.21(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/virtualizer': 4.1.10(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/autocomplete': 3.0.0-beta.3(react@19.2.1) - '@react-stately/layout': 4.5.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-stately/table': 3.15.1(react@19.2.1) - '@react-stately/utils': 3.10.8(react@19.2.1) - '@react-stately/virtualizer': 4.4.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/form': 3.7.16(react@19.2.1) - '@react-types/grid': 3.3.6(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - '@react-types/table': 3.13.4(react@19.2.1) - '@swc/helpers': 0.5.17 + '@react-aria/overlays': 3.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/textfield': 3.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/toolbar': 3.0.0-beta.21(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/virtualizer': 4.1.10(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/autocomplete': 3.0.0-beta.3(react@19.2.3) + '@react-stately/layout': 4.5.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-stately/table': 3.15.1(react@19.2.3) + '@react-stately/utils': 3.10.8(react@19.2.3) + '@react-stately/virtualizer': 4.4.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/form': 3.7.16(react@19.2.3) + '@react-types/grid': 3.3.6(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + '@react-types/table': 3.13.4(react@19.2.3) + '@swc/helpers': 0.5.18 client-only: 0.0.1 - react: 19.2.1 - react-aria: 3.44.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - react-dom: 19.2.1(react@19.2.1) - react-stately: 3.42.0(react@19.2.1) - use-sync-external-store: 1.6.0(react@19.2.1) + react: 19.2.3 + react-aria: 3.44.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react-dom: 19.2.3(react@19.2.3) + react-stately: 3.42.0(react@19.2.3) + use-sync-external-store: 1.6.0(react@19.2.3) - react-aria@3.44.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1): + react-aria@3.44.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@internationalized/string': 3.2.7 - '@react-aria/breadcrumbs': 3.5.29(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/button': 3.14.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/calendar': 3.9.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/checkbox': 3.16.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/color': 3.1.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/combobox': 3.14.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/datepicker': 3.15.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/dialog': 3.5.31(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/disclosure': 3.1.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/dnd': 3.11.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/gridlist': 3.14.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/i18n': 3.12.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/label': 3.7.22(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/landmark': 3.0.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/link': 3.8.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/listbox': 3.15.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/menu': 3.19.3(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/meter': 3.4.27(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/numberfield': 3.12.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/overlays': 3.30.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/progress': 3.4.27(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/radio': 3.12.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/searchfield': 3.8.9(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/select': 3.17.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/selection': 3.26.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/separator': 3.4.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/slider': 3.8.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/ssr': 3.9.10(react@19.2.1) - '@react-aria/switch': 3.7.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/table': 3.17.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/tabs': 3.10.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/tag': 3.7.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/textfield': 3.18.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/toast': 3.0.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/tooltip': 3.8.8(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/tree': 3.1.4(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + '@react-aria/breadcrumbs': 3.5.29(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/button': 3.14.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/calendar': 3.9.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/checkbox': 3.16.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/color': 3.1.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/combobox': 3.14.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/datepicker': 3.15.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/dialog': 3.5.31(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/disclosure': 3.1.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/dnd': 3.11.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/focus': 3.21.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/gridlist': 3.14.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/i18n': 3.12.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/label': 3.7.22(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/landmark': 3.0.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/link': 3.8.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/listbox': 3.15.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/menu': 3.19.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/meter': 3.4.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/numberfield': 3.12.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/overlays': 3.30.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/progress': 3.4.27(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/radio': 3.12.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/searchfield': 3.8.9(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/select': 3.17.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/selection': 3.26.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/separator': 3.4.13(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/slider': 3.8.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/ssr': 3.9.10(react@19.2.3) + '@react-aria/switch': 3.7.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/table': 3.17.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/tabs': 3.10.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/tag': 3.7.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/textfield': 3.18.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/toast': 3.0.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/tooltip': 3.8.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/tree': 3.1.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-aria/visually-hidden': 3.8.28(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - react-dom@19.2.1(react@19.2.1): + react-dom@19.2.3(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 scheduler: 0.27.0 - react-error-boundary@4.1.2(react@19.2.1): + react-error-boundary@4.1.2(react@19.2.3): dependencies: '@babel/runtime': 7.28.3 - react: 19.2.1 + react: 19.2.3 - react-hook-form@7.68.0(react@19.2.1): + react-hook-form@7.68.0(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 - react-icons@5.5.0(react@19.2.1): + react-icons@5.5.0(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 - react-intl@7.1.14(react@19.2.1)(typescript@5.9.3): + react-intl@7.1.14(react@19.2.3)(typescript@5.9.3): dependencies: '@formatjs/ecma402-abstract': 2.3.6 '@formatjs/icu-messageformat-parser': 2.11.4 '@formatjs/intl': 3.1.8(typescript@5.9.3) - '@types/hoist-non-react-statics': 3.3.7(@types/react@19.2.7) - '@types/react': 19.2.7 + '@types/hoist-non-react-statics': 3.3.7(@types/react@19.2.8) + '@types/react': 19.2.8 hoist-non-react-statics: 3.3.2 intl-messageformat: 10.7.18 - react: 19.2.1 + react: 19.2.3 tslib: 2.8.1 optionalDependencies: typescript: 5.9.3 @@ -14122,69 +13900,69 @@ snapshots: react-is@18.3.1: {} - react-redux@9.2.0(@types/react@19.2.7)(react@19.2.1)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.2.8)(react@19.2.3)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 - react: 19.2.1 - use-sync-external-store: 1.5.0(react@19.2.1) + react: 19.2.3 + use-sync-external-store: 1.5.0(react@19.2.3) optionalDependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 redux: 5.0.1 - react-simple-maps@2.3.0(prop-types@15.8.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1): + react-simple-maps@2.3.0(prop-types@15.8.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: d3-geo: 2.0.2 d3-selection: 2.0.0 d3-zoom: 2.0.0 prop-types: 15.8.1 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) topojson-client: 3.1.0 - react-stately@3.42.0(react@19.2.1): + react-stately@3.42.0(react@19.2.3): dependencies: - '@react-stately/calendar': 3.9.0(react@19.2.1) - '@react-stately/checkbox': 3.7.2(react@19.2.1) - '@react-stately/collections': 3.12.8(react@19.2.1) - '@react-stately/color': 3.9.2(react@19.2.1) - '@react-stately/combobox': 3.12.0(react@19.2.1) - '@react-stately/data': 3.14.1(react@19.2.1) - '@react-stately/datepicker': 3.15.2(react@19.2.1) - '@react-stately/disclosure': 3.0.8(react@19.2.1) - '@react-stately/dnd': 3.7.1(react@19.2.1) - '@react-stately/form': 3.2.2(react@19.2.1) - '@react-stately/list': 3.13.1(react@19.2.1) - '@react-stately/menu': 3.9.8(react@19.2.1) - '@react-stately/numberfield': 3.10.2(react@19.2.1) - '@react-stately/overlays': 3.6.20(react@19.2.1) - '@react-stately/radio': 3.11.2(react@19.2.1) - '@react-stately/searchfield': 3.5.16(react@19.2.1) - '@react-stately/select': 3.8.0(react@19.2.1) - '@react-stately/selection': 3.20.6(react@19.2.1) - '@react-stately/slider': 3.7.2(react@19.2.1) - '@react-stately/table': 3.15.1(react@19.2.1) - '@react-stately/tabs': 3.8.6(react@19.2.1) - '@react-stately/toast': 3.1.2(react@19.2.1) - '@react-stately/toggle': 3.9.2(react@19.2.1) - '@react-stately/tooltip': 3.5.8(react@19.2.1) - '@react-stately/tree': 3.9.3(react@19.2.1) - '@react-types/shared': 3.32.1(react@19.2.1) - react: 19.2.1 + '@react-stately/calendar': 3.9.0(react@19.2.3) + '@react-stately/checkbox': 3.7.2(react@19.2.3) + '@react-stately/collections': 3.12.8(react@19.2.3) + '@react-stately/color': 3.9.2(react@19.2.3) + '@react-stately/combobox': 3.12.0(react@19.2.3) + '@react-stately/data': 3.14.1(react@19.2.3) + '@react-stately/datepicker': 3.15.2(react@19.2.3) + '@react-stately/disclosure': 3.0.8(react@19.2.3) + '@react-stately/dnd': 3.7.1(react@19.2.3) + '@react-stately/form': 3.2.2(react@19.2.3) + '@react-stately/list': 3.13.1(react@19.2.3) + '@react-stately/menu': 3.9.8(react@19.2.3) + '@react-stately/numberfield': 3.10.2(react@19.2.3) + '@react-stately/overlays': 3.6.20(react@19.2.3) + '@react-stately/radio': 3.11.2(react@19.2.3) + '@react-stately/searchfield': 3.5.16(react@19.2.3) + '@react-stately/select': 3.8.0(react@19.2.3) + '@react-stately/selection': 3.20.6(react@19.2.3) + '@react-stately/slider': 3.7.2(react@19.2.3) + '@react-stately/table': 3.15.1(react@19.2.3) + '@react-stately/tabs': 3.8.6(react@19.2.3) + '@react-stately/toast': 3.1.2(react@19.2.3) + '@react-stately/toggle': 3.9.2(react@19.2.3) + '@react-stately/tooltip': 3.5.8(react@19.2.3) + '@react-stately/tree': 3.9.3(react@19.2.3) + '@react-types/shared': 3.32.1(react@19.2.3) + react: 19.2.3 - react-use-measure@2.1.7(react-dom@19.2.1(react@19.2.1))(react@19.2.1): + react-use-measure@2.1.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 optionalDependencies: - react-dom: 19.2.1(react@19.2.1) + react-dom: 19.2.3(react@19.2.3) - react-window@1.8.11(react-dom@19.2.1(react@19.2.1))(react@19.2.1): + react-window@1.8.11(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@babel/runtime': 7.28.3 memoize-one: 5.2.1 - react: 19.2.1 - react-dom: 19.2.1(react@19.2.1) + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) - react@19.2.1: {} + react@19.2.3: {} read-babelrc-up@1.1.0: dependencies: @@ -14342,28 +14120,28 @@ snapshots: globby: 10.0.1 is-plain-object: 3.0.1 - rollup-plugin-delete@3.0.1(rollup@4.53.3): + rollup-plugin-delete@3.0.2(rollup@4.55.1): dependencies: - del: 8.0.0 - rollup: 4.53.3 + del: 8.0.1 + rollup: 4.55.1 - rollup-plugin-dts@6.3.0(rollup@4.53.3)(typescript@5.9.3): + rollup-plugin-dts@6.3.0(rollup@4.55.1)(typescript@5.9.3): dependencies: magic-string: 0.30.21 - rollup: 4.53.3 + rollup: 4.55.1 typescript: 5.9.3 optionalDependencies: '@babel/code-frame': 7.27.1 - rollup-plugin-node-externals@8.1.2(rollup@4.53.3): + rollup-plugin-node-externals@8.1.2(rollup@4.55.1): dependencies: - rollup: 4.53.3 + rollup: 4.55.1 - rollup-plugin-peer-deps-external@2.2.4(rollup@4.53.3): + rollup-plugin-peer-deps-external@2.2.4(rollup@4.55.1): dependencies: - rollup: 4.53.3 + rollup: 4.55.1 - rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)): + rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)): dependencies: chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 @@ -14372,7 +14150,7 @@ snapshots: p-queue: 6.6.2 pify: 5.0.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) postcss-modules: 4.3.1(postcss@8.5.6) promise.series: 0.2.0 resolve: 1.22.10 @@ -14386,32 +14164,35 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@4.53.3: + rollup@4.55.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.3 - '@rollup/rollup-android-arm64': 4.53.3 - '@rollup/rollup-darwin-arm64': 4.53.3 - '@rollup/rollup-darwin-x64': 4.53.3 - '@rollup/rollup-freebsd-arm64': 4.53.3 - '@rollup/rollup-freebsd-x64': 4.53.3 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 - '@rollup/rollup-linux-arm-musleabihf': 4.53.3 - '@rollup/rollup-linux-arm64-gnu': 4.53.3 - '@rollup/rollup-linux-arm64-musl': 4.53.3 - '@rollup/rollup-linux-loong64-gnu': 4.53.3 - '@rollup/rollup-linux-ppc64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-gnu': 4.53.3 - '@rollup/rollup-linux-riscv64-musl': 4.53.3 - '@rollup/rollup-linux-s390x-gnu': 4.53.3 - '@rollup/rollup-linux-x64-gnu': 4.53.3 - '@rollup/rollup-linux-x64-musl': 4.53.3 - '@rollup/rollup-openharmony-arm64': 4.53.3 - '@rollup/rollup-win32-arm64-msvc': 4.53.3 - '@rollup/rollup-win32-ia32-msvc': 4.53.3 - '@rollup/rollup-win32-x64-gnu': 4.53.3 - '@rollup/rollup-win32-x64-msvc': 4.53.3 + '@rollup/rollup-android-arm-eabi': 4.55.1 + '@rollup/rollup-android-arm64': 4.55.1 + '@rollup/rollup-darwin-arm64': 4.55.1 + '@rollup/rollup-darwin-x64': 4.55.1 + '@rollup/rollup-freebsd-arm64': 4.55.1 + '@rollup/rollup-freebsd-x64': 4.55.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.55.1 + '@rollup/rollup-linux-arm-musleabihf': 4.55.1 + '@rollup/rollup-linux-arm64-gnu': 4.55.1 + '@rollup/rollup-linux-arm64-musl': 4.55.1 + '@rollup/rollup-linux-loong64-gnu': 4.55.1 + '@rollup/rollup-linux-loong64-musl': 4.55.1 + '@rollup/rollup-linux-ppc64-gnu': 4.55.1 + '@rollup/rollup-linux-ppc64-musl': 4.55.1 + '@rollup/rollup-linux-riscv64-gnu': 4.55.1 + '@rollup/rollup-linux-riscv64-musl': 4.55.1 + '@rollup/rollup-linux-s390x-gnu': 4.55.1 + '@rollup/rollup-linux-x64-gnu': 4.55.1 + '@rollup/rollup-linux-x64-musl': 4.55.1 + '@rollup/rollup-openbsd-x64': 4.55.1 + '@rollup/rollup-openharmony-arm64': 4.55.1 + '@rollup/rollup-win32-arm64-msvc': 4.55.1 + '@rollup/rollup-win32-ia32-msvc': 4.55.1 + '@rollup/rollup-win32-x64-gnu': 4.55.1 + '@rollup/rollup-win32-x64-msvc': 4.55.1 fsevents: 2.3.3 run-parallel@1.2.0: @@ -14497,36 +14278,6 @@ snapshots: setimmediate@1.0.5: {} - sharp@0.34.3: - dependencies: - color: 4.2.3 - detect-libc: 2.0.4 - semver: 7.7.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.3 - '@img/sharp-darwin-x64': 0.34.3 - '@img/sharp-libvips-darwin-arm64': 1.2.0 - '@img/sharp-libvips-darwin-x64': 1.2.0 - '@img/sharp-libvips-linux-arm': 1.2.0 - '@img/sharp-libvips-linux-arm64': 1.2.0 - '@img/sharp-libvips-linux-ppc64': 1.2.0 - '@img/sharp-libvips-linux-s390x': 1.2.0 - '@img/sharp-libvips-linux-x64': 1.2.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 - '@img/sharp-libvips-linuxmusl-x64': 1.2.0 - '@img/sharp-linux-arm': 0.34.3 - '@img/sharp-linux-arm64': 0.34.3 - '@img/sharp-linux-ppc64': 0.34.3 - '@img/sharp-linux-s390x': 0.34.3 - '@img/sharp-linux-x64': 0.34.3 - '@img/sharp-linuxmusl-arm64': 0.34.3 - '@img/sharp-linuxmusl-x64': 0.34.3 - '@img/sharp-wasm32': 0.34.3 - '@img/sharp-win32-arm64': 0.34.3 - '@img/sharp-win32-ia32': 0.34.3 - '@img/sharp-win32-x64': 0.34.3 - optional: true - sharp@0.34.5: dependencies: '@img/colour': 1.0.0 @@ -14605,11 +14356,6 @@ snapshots: signal-exit@4.1.0: {} - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - optional: true - sisteransi@1.0.5: {} slash@3.0.0: {} @@ -14799,10 +14545,10 @@ snapshots: style-search@0.1.0: {} - styled-jsx@5.1.6(@babel/core@7.28.3)(react@19.2.1): + styled-jsx@5.1.6(@babel/core@7.28.3)(react@19.2.3): dependencies: client-only: 0.0.1 - react: 19.2.1 + react: 19.2.3 optionalDependencies: '@babel/core': 7.28.3 @@ -15025,12 +14771,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 29.7.0(@types/node@24.10.1)(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3)) + jest: 29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -15046,14 +14792,14 @@ snapshots: esbuild: 0.25.12 jest-util: 30.0.5 - ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3): + ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.10.1 + '@types/node': 24.10.8 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -15079,7 +14825,7 @@ snapshots: picocolors: 1.1.1 postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.1) resolve-from: 5.0.0 - rollup: 4.53.3 + rollup: 4.55.1 source-map: 0.7.6 sucrase: 3.35.0 tinyexec: 0.3.2 @@ -15164,7 +14910,7 @@ snapshots: ua-is-frozen@0.1.2: {} - ua-parser-js@2.0.6: + ua-parser-js@2.0.8: dependencies: detect-europe-js: 0.1.2 is-standalone-pwa: 0.1.1 @@ -15202,17 +14948,17 @@ snapshots: dependencies: punycode: 2.3.1 - use-memo-one@1.1.3(react@19.2.1): + use-memo-one@1.1.3(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 - use-sync-external-store@1.5.0(react@19.2.1): + use-sync-external-store@1.5.0(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 - use-sync-external-store@1.6.0(react@19.2.1): + use-sync-external-store@1.6.0(react@19.2.3): dependencies: - react: 19.2.1 + react: 19.2.3 util-deprecate@1.0.2: {} @@ -15408,11 +15154,11 @@ snapshots: dependencies: grammex: 3.1.12 - zod@4.1.13: {} + zod@4.3.5: {} - zustand@5.0.9(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)(use-sync-external-store@1.6.0(react@19.2.1)): + zustand@5.0.10(@types/react@19.2.8)(immer@10.2.0)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): optionalDependencies: - '@types/react': 19.2.7 + '@types/react': 19.2.8 immer: 10.2.0 - react: 19.2.1 - use-sync-external-store: 1.6.0(react@19.2.1) + react: 19.2.3 + use-sync-external-store: 1.6.0(react@19.2.3) From 889a404650be079a4299c96c0c53456f57d83732 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Wed, 14 Jan 2026 15:33:06 -0800 Subject: [PATCH 08/18] share table schema + migration --- prisma/migrations/15_add_share/migration.sql | 41 ++++++++++++++++++++ prisma/schema.prisma | 15 ++++++- src/lib/constants.ts | 7 ++++ 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 prisma/migrations/15_add_share/migration.sql diff --git a/prisma/migrations/15_add_share/migration.sql b/prisma/migrations/15_add_share/migration.sql new file mode 100644 index 00000000..2a867bb5 --- /dev/null +++ b/prisma/migrations/15_add_share/migration.sql @@ -0,0 +1,41 @@ +-- CreateTable +CREATE TABLE "share" ( + "share_id" UUID NOT NULL, + "entity_id" UUID NOT NULL, + "share_type" INTEGER NOT NULL, + "share_code" VARCHAR(50), + "parameters" JSONB NOT NULL, + "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMPTZ(6), + + CONSTRAINT "share_pkey" PRIMARY KEY ("share_id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "share_share_id_key" ON "share"("share_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "share_share_code_key" ON "share"("share_code"); + +-- CreateIndex +CREATE INDEX "share_entity_id_idx" ON "share"("entity_id"); + +-- MigrateData +INSERT INTO "share" (share_id, entity_id, share_type, share_code, parameters, created_at) +SELECT gen_random_uuid(), + website_id, + 1, + share_id, + '{}'::jsonb, + now() +FROM "website" +WHERE share_id IS NOT NULL; + +-- DropIndex +DROP INDEX "website_share_id_idx"; + +-- DropIndex +DROP INDEX "website_share_id_key"; + +-- AlterTable +ALTER TABLE "website" DROP COLUMN "share_id"; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index aeb11648..e0600db0 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -67,7 +67,6 @@ model Website { id String @id @unique @map("website_id") @db.Uuid name String @db.VarChar(100) domain String? @db.VarChar(500) - shareId String? @unique @map("share_id") @db.VarChar(50) resetAt DateTime? @map("reset_at") @db.Timestamptz(6) userId String? @map("user_id") @db.Uuid teamId String? @map("team_id") @db.Uuid @@ -88,7 +87,6 @@ model Website { @@index([userId]) @@index([teamId]) @@index([createdAt]) - @@index([shareId]) @@index([createdBy]) @@map("website") } @@ -316,3 +314,16 @@ model Pixel { @@index([createdAt]) @@map("pixel") } + +model Share { + id String @id() @unique() @map("share_id") @db.Uuid + entityId String @map("entity_id") @db.Uuid + shareType Int @map("share_type") @db.Integer + shareCode String? @unique @map("share_code") @db.VarChar(50) + parameters Json + createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6) + updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz(6) + + @@index([entityId]) + @@map("share") +} diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 502a3df6..bfc80a13 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -95,6 +95,13 @@ export const EVENT_TYPE = { pixelEvent: 4, } as const; +export const ENTITY_TYPE = { + website: 1, + link: 2, + pixel: 3, + board: 4, +} as const; + export const DATA_TYPE = { string: 1, number: 2, From 29f2c7b7d46621a693cef0bb5ea7ed4f1baaae2d Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Thu, 15 Jan 2026 16:25:56 -0800 Subject: [PATCH 09/18] share api, queries, permissions, migration, entity lib --- prisma/migrations/15_add_share/migration.sql | 6 +- prisma/schema.prisma | 2 +- src/app/api/share/[shareId]/route.ts | 81 +++++++++++++++++--- src/app/api/share/[slug]/route.ts | 19 +++++ src/app/api/share/route.ts | 38 +++++++++ src/lib/entity.ts | 11 +++ src/permissions/entity.ts | 65 ++++++++++++++++ src/permissions/index.ts | 1 + src/queries/prisma/index.ts | 1 + src/queries/prisma/share.ts | 46 +++++++++++ src/queries/prisma/website.ts | 9 --- 11 files changed, 256 insertions(+), 23 deletions(-) create mode 100644 src/app/api/share/[slug]/route.ts create mode 100644 src/app/api/share/route.ts create mode 100644 src/lib/entity.ts create mode 100644 src/permissions/entity.ts create mode 100644 src/queries/prisma/share.ts diff --git a/prisma/migrations/15_add_share/migration.sql b/prisma/migrations/15_add_share/migration.sql index 2a867bb5..d9f1e7cf 100644 --- a/prisma/migrations/15_add_share/migration.sql +++ b/prisma/migrations/15_add_share/migration.sql @@ -3,7 +3,7 @@ CREATE TABLE "share" ( "share_id" UUID NOT NULL, "entity_id" UUID NOT NULL, "share_type" INTEGER NOT NULL, - "share_code" VARCHAR(50), + "slug" VARCHAR(100) NOT NULL, "parameters" JSONB NOT NULL, "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMPTZ(6), @@ -15,13 +15,13 @@ CREATE TABLE "share" ( CREATE UNIQUE INDEX "share_share_id_key" ON "share"("share_id"); -- CreateIndex -CREATE UNIQUE INDEX "share_share_code_key" ON "share"("share_code"); +CREATE UNIQUE INDEX "share_slug_key" ON "share"("slug"); -- CreateIndex CREATE INDEX "share_entity_id_idx" ON "share"("entity_id"); -- MigrateData -INSERT INTO "share" (share_id, entity_id, share_type, share_code, parameters, created_at) +INSERT INTO "share" (share_id, entity_id, share_type, slug, parameters, created_at) SELECT gen_random_uuid(), website_id, 1, diff --git a/prisma/schema.prisma b/prisma/schema.prisma index e0600db0..01cc372f 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -319,7 +319,7 @@ model Share { id String @id() @unique() @map("share_id") @db.Uuid entityId String @map("entity_id") @db.Uuid shareType Int @map("share_type") @db.Integer - shareCode String? @unique @map("share_code") @db.VarChar(50) + slug String @unique() @db.VarChar(100) parameters Json createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6) updatedAt DateTime? @updatedAt @map("updated_at") @db.Timestamptz(6) diff --git a/src/app/api/share/[shareId]/route.ts b/src/app/api/share/[shareId]/route.ts index bef87c4f..da7dcf56 100644 --- a/src/app/api/share/[shareId]/route.ts +++ b/src/app/api/share/[shareId]/route.ts @@ -1,19 +1,80 @@ -import { secret } from '@/lib/crypto'; -import { createToken } from '@/lib/jwt'; -import { json, notFound } from '@/lib/response'; -import { getSharedWebsite } from '@/queries/prisma'; +import z from 'zod'; +import { parseRequest } from '@/lib/request'; +import { json, notFound, ok, unauthorized } from '@/lib/response'; +import { anyObjectParam } from '@/lib/schema'; +import { canDeleteEntity, canUpdateEntity, canViewEntity } from '@/permissions'; +import { deleteShare, getShare, updateShare } from '@/queries/prisma'; + +export async function GET(request: Request, { params }: { params: Promise<{ shareId: string }> }) { + const { auth, error } = await parseRequest(request); + + if (error) { + return error(); + } -export async function GET(_request: Request, { params }: { params: Promise<{ shareId: string }> }) { const { shareId } = await params; - const website = await getSharedWebsite(shareId); + const share = await getShare(shareId); - if (!website) { + if (!(await canViewEntity(auth, share.entityId))) { + return unauthorized(); + } + + return json(share); +} + +export async function POST(request: Request, { params }: { params: Promise<{ shareId: string }> }) { + const schema = z.object({ + slug: z.string().max(100), + parameters: anyObjectParam, + }); + + const { auth, body, error } = await parseRequest(request, schema); + + if (error) { + return error(); + } + + const { shareId } = await params; + const { slug, parameters } = body; + + const share = await getShare(shareId); + + if (!share) { return notFound(); } - const data = { websiteId: website.id }; - const token = createToken(data, secret()); + if (!(await canUpdateEntity(auth, share.entityId))) { + return unauthorized(); + } - return json({ ...data, token }); + const result = await updateShare(shareId, { + slug, + parameters, + } as any); + + return json(result); +} + +export async function DELETE( + request: Request, + { params }: { params: Promise<{ shareId: string }> }, +) { + const { auth, error } = await parseRequest(request); + + if (error) { + return error(); + } + + const { shareId } = await params; + + const share = await getShare(shareId); + + if (!(await canDeleteEntity(auth, share.entityId))) { + return unauthorized(); + } + + await deleteShare(shareId); + + return ok(); } diff --git a/src/app/api/share/[slug]/route.ts b/src/app/api/share/[slug]/route.ts new file mode 100644 index 00000000..678795e0 --- /dev/null +++ b/src/app/api/share/[slug]/route.ts @@ -0,0 +1,19 @@ +import { secret } from '@/lib/crypto'; +import { createToken } from '@/lib/jwt'; +import { json, notFound } from '@/lib/response'; +import { getShareByCode } from '@/queries/prisma'; + +export async function GET(_request: Request, { params }: { params: Promise<{ slug: string }> }) { + const { slug } = await params; + + const share = await getShareByCode(slug); + + if (!share) { + return notFound(); + } + + const data = { shareId: share.id }; + const token = createToken(data, secret()); + + return json({ ...data, token }); +} diff --git a/src/app/api/share/route.ts b/src/app/api/share/route.ts new file mode 100644 index 00000000..99f5df0e --- /dev/null +++ b/src/app/api/share/route.ts @@ -0,0 +1,38 @@ +import z from 'zod'; +import { uuid } from '@/lib/crypto'; +import { parseRequest } from '@/lib/request'; +import { json, unauthorized } from '@/lib/response'; +import { anyObjectParam } from '@/lib/schema'; +import { canUpdateEntity } from '@/permissions'; +import { createShare } from '@/queries/prisma'; + +export async function POST(request: Request) { + const schema = z.object({ + entityId: z.uuid(), + shareType: z.coerce.number().int(), + slug: z.string().max(100), + parameters: anyObjectParam, + }); + + const { auth, body, error } = await parseRequest(request, schema); + + if (error) { + return error(); + } + + const { entityId, shareType, slug, parameters } = body; + + if (!(await canUpdateEntity(auth, entityId))) { + return unauthorized(); + } + + const share = await createShare({ + id: uuid(), + entityId, + shareType, + slug, + parameters, + }); + + return json(share); +} diff --git a/src/lib/entity.ts b/src/lib/entity.ts new file mode 100644 index 00000000..1b64e5dd --- /dev/null +++ b/src/lib/entity.ts @@ -0,0 +1,11 @@ +import { getLink, getPixel, getWebsite } from '@/queries/prisma'; + +export async function getEntity(entityId: string) { + const website = await getWebsite(entityId); + const link = await getLink(entityId); + const pixel = await getPixel(entityId); + + const entity = website || link || pixel; + + return entity; +} diff --git a/src/permissions/entity.ts b/src/permissions/entity.ts new file mode 100644 index 00000000..a9194d2c --- /dev/null +++ b/src/permissions/entity.ts @@ -0,0 +1,65 @@ +import { hasPermission } from '@/lib/auth'; +import { PERMISSIONS } from '@/lib/constants'; +import { getEntity } from '@/lib/entity'; +import type { Auth } from '@/lib/types'; +import { getTeamUser } from '@/queries/prisma'; + +export async function canViewEntity({ user }: Auth, entityId: string) { + if (user?.isAdmin) { + return true; + } + + const entity = await getEntity(entityId); + + if (entity.userId) { + return user.id === entity.userId; + } + + if (entity.teamId) { + const teamUser = await getTeamUser(entity.teamId, user.id); + + return !!teamUser; + } + + return false; +} + +export async function canUpdateEntity({ user }: Auth, entityId: string) { + if (user.isAdmin) { + return true; + } + + const entity = await getEntity(entityId); + + if (entity.userId) { + return user.id === entity.userId; + } + + if (entity.teamId) { + const teamUser = await getTeamUser(entity.teamId, user.id); + + return teamUser && hasPermission(teamUser.role, PERMISSIONS.websiteUpdate); + } + + return false; +} + +export async function canDeleteEntity({ user }: Auth, entityId: string) { + if (user.isAdmin) { + return true; + } + + const entity = await getEntity(entityId); + + if (entity.userId) { + return user.id === entity.userId; + } + + if (entity.teamId) { + const teamUser = await getTeamUser(entity.teamId, user.id); + + return teamUser && hasPermission(teamUser.role, PERMISSIONS.websiteDelete); + } + + return false; +} diff --git a/src/permissions/index.ts b/src/permissions/index.ts index a70808e6..475cdaa4 100644 --- a/src/permissions/index.ts +++ b/src/permissions/index.ts @@ -1,3 +1,4 @@ +export * from './entity'; export * from './link'; export * from './pixel'; export * from './report'; diff --git a/src/queries/prisma/index.ts b/src/queries/prisma/index.ts index b9730f51..4dedb2b5 100644 --- a/src/queries/prisma/index.ts +++ b/src/queries/prisma/index.ts @@ -2,6 +2,7 @@ export * from './link'; export * from './pixel'; export * from './report'; export * from './segment'; +export * from './share'; export * from './team'; export * from './teamUser'; export * from './user'; diff --git a/src/queries/prisma/share.ts b/src/queries/prisma/share.ts new file mode 100644 index 00000000..e37dc95b --- /dev/null +++ b/src/queries/prisma/share.ts @@ -0,0 +1,46 @@ +import type { Prisma } from '@/generated/prisma/client'; +import prisma from '@/lib/prisma'; + +export async function findShare(criteria: Prisma.ShareFindUniqueArgs) { + return prisma.client.share.findUnique(criteria); +} + +export async function getShare(entityId: string) { + return findShare({ + where: { + id: entityId, + }, + }); +} + +export async function getShareByCode(slug: string) { + return findShare({ + where: { + slug, + }, + }); +} + +export async function createShare( + data: Prisma.ShareCreateInput | Prisma.ShareUncheckedCreateInput, +) { + return prisma.client.share.create({ + data, + }); +} + +export async function updateShare( + shareId: string, + data: Prisma.ShareUpdateInput | Prisma.ShareUncheckedUpdateInput, +) { + return prisma.client.share.update({ + where: { + id: shareId, + }, + data, + }); +} + +export async function deleteShare(shareId: string) { + return prisma.client.share.delete({ where: { id: shareId } }); +} diff --git a/src/queries/prisma/website.ts b/src/queries/prisma/website.ts index 6c8625d0..fe57589c 100644 --- a/src/queries/prisma/website.ts +++ b/src/queries/prisma/website.ts @@ -16,15 +16,6 @@ export async function getWebsite(websiteId: string) { }); } -export async function getSharedWebsite(shareId: string) { - return findWebsite({ - where: { - shareId, - deletedAt: null, - }, - }); -} - export async function getWebsites(criteria: Prisma.WebsiteFindManyArgs, filters: QueryFilters) { const { search } = filters; const { getSearchParameters, pagedQuery } = prisma; From 520c91c62142476ace9ce5ae9954487a57615400 Mon Sep 17 00:00:00 2001 From: Francis Cao Date: Fri, 16 Jan 2026 16:29:08 -0800 Subject: [PATCH 10/18] fix share api routes --- src/app/api/share/{ => id}/[shareId]/route.ts | 0 src/components/hooks/queries/useShareTokenQuery.ts | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/app/api/share/{ => id}/[shareId]/route.ts (100%) diff --git a/src/app/api/share/[shareId]/route.ts b/src/app/api/share/id/[shareId]/route.ts similarity index 100% rename from src/app/api/share/[shareId]/route.ts rename to src/app/api/share/id/[shareId]/route.ts diff --git a/src/components/hooks/queries/useShareTokenQuery.ts b/src/components/hooks/queries/useShareTokenQuery.ts index dbad3dcd..446e33da 100644 --- a/src/components/hooks/queries/useShareTokenQuery.ts +++ b/src/components/hooks/queries/useShareTokenQuery.ts @@ -3,7 +3,7 @@ import { useApi } from '../useApi'; const selector = (state: { shareToken: string }) => state.shareToken; -export function useShareTokenQuery(shareId: string): { +export function useShareTokenQuery(slug: string): { shareToken: any; isLoading?: boolean; error?: Error; @@ -11,9 +11,9 @@ export function useShareTokenQuery(shareId: string): { const shareToken = useApp(selector); const { get, useQuery } = useApi(); const { isLoading, error } = useQuery({ - queryKey: ['share', shareId], + queryKey: ['share', slug], queryFn: async () => { - const data = await get(`/share/${shareId}`); + const data = await get(`/share/${slug}`); setShareToken(data); From e08907d9986549e6886eab346d49498810be48e2 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 16 Jan 2026 19:52:16 -0800 Subject: [PATCH 11/18] Board setup. --- .gitignore | 3 + CLAUDE.md | 92 +++++++++++++++++++ .../{15_boards => 16_boards}/migration.sql | 0 prisma/schema.prisma | 1 - src/app/(main)/boards/BoardProvider.tsx | 4 - .../(main)/boards/[boardId]/BoardHeader.tsx | 54 ++++++++--- src/app/(main)/boards/[boardId]/BoardPage.tsx | 2 + src/app/(main)/boards/[boardId]/page.tsx | 2 +- src/app/api/boards/[boardId]/route.ts | 6 +- 9 files changed, 141 insertions(+), 23 deletions(-) create mode 100644 CLAUDE.md rename prisma/migrations/{15_boards => 16_boards}/migration.sql (100%) diff --git a/.gitignore b/.gitignore index de893d0f..377e4be6 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,9 @@ pm2.yml *.log .vscode .tool-versions +.claude +tmpclaude* +nul # debug npm-debug.log* diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..883ee7f4 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,92 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +Umami is a privacy-focused web analytics platform built with Next.js 15, React 19, and TypeScript. It serves as an alternative to Google Analytics, storing data in PostgreSQL (primary) with optional ClickHouse for time-series analytics. + +## Common Commands + +```bash +# Development +npm run dev # Start dev server on port 3001 with Turbopack +npm run build # Full production build (includes db setup, tracker, geo data) +npm run start # Start production server + +# Database +npm run build-db # Generate Prisma client +npm run update-db # Run Prisma migrations +npm run check-db # Verify database connection +npm run seed-data # Seed test data + +# Code Quality +npm run lint # Lint with Biome +npm run format # Format with Biome +npm run check # Format and lint with Biome +npm run test # Run Jest tests + +# Building specific parts +npm run build-tracker # Build client-side tracking script (Rollup) +npm run build-geo # Build geolocation database +``` + +## Architecture + +### Directory Structure +- `src/app/` - Next.js App Router (routes and API endpoints) + - `(main)/` - Authenticated app routes (dashboard, websites, teams, boards, etc.) + - `(collect)/` - Data collection routes + - `api/` - REST API endpoints +- `src/components/` - React components (charts, forms, common UI, hooks) +- `src/lib/` - Core utilities (auth, crypto, date, prisma helpers, redis) +- `src/queries/` - Data access layer (Prisma queries and raw SQL) +- `src/store/` - Zustand state stores (app, dashboard, websites, cache) +- `src/tracker/` - Client-side tracking script (lightweight IIFE) +- `prisma/` - Database schema and migrations + +### Key Patterns + +**API Request Handling** - All API endpoints use Zod validation with `parseRequest`: +```typescript +const schema = z.object({ /* fields */ }); +const { body, error } = await parseRequest(request, schema); +if (error) return error(); +``` + +**Authentication** - JWT tokens via Bearer header, share tokens via `x-umami-share-token` header for public dashboards. Role-based access: admin, manager, user. + +**Data Fetching** - React Query with 60s stale time, no retry, no refetch on window focus. + +**State Management** - Zustand for client state, localStorage for user preferences. + +**Styling** - CSS Modules with CSS variables for theming (light/dark mode). + +### Database + +- **ORM**: Prisma 7.x with PostgreSQL adapter +- **Schema**: `prisma/schema.prisma` - 14 models (User, Team, Website, Session, WebsiteEvent, EventData, etc.) +- **Query helpers**: `src/lib/prisma.ts` has dynamic SQL generation functions (`getDateSQL`, `mapFilter`, `getSearchSQL`) +- **Raw SQL**: Complex analytics queries use `{{param}}` template placeholders for safe binding + +### Tracker Script + +The tracking script in `src/tracker/index.js` is a standalone IIFE (~3-4KB) built with Rollup. It sends events to `/api/send`. Alternative script names can be configured via `TRACKER_SCRIPT_NAME` env var. + +## Environment Variables + +Key variables in `.env`: +``` +DATABASE_URL # PostgreSQL connection string (required) +APP_SECRET # Encryption/signing secret +CLICKHOUSE_URL # Optional ClickHouse for analytics +REDIS_URL # Optional Redis for caching/sessions +BASE_PATH # App base path (e.g., /analytics) +DEBUG # Debug namespaces (e.g., umami:*) +``` + +## Requirements + +- Node.js 18.18+ +- PostgreSQL 12.14+ +- pnpm (package manager) diff --git a/prisma/migrations/15_boards/migration.sql b/prisma/migrations/16_boards/migration.sql similarity index 100% rename from prisma/migrations/15_boards/migration.sql rename to prisma/migrations/16_boards/migration.sql diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 435a406f..6e456a67 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -6,7 +6,6 @@ generator client { datasource db { provider = "postgresql" - url = env("DATABASE_URL") relationMode = "prisma" } diff --git a/src/app/(main)/boards/BoardProvider.tsx b/src/app/(main)/boards/BoardProvider.tsx index 36136614..93d4e6f0 100644 --- a/src/app/(main)/boards/BoardProvider.tsx +++ b/src/app/(main)/boards/BoardProvider.tsx @@ -13,9 +13,5 @@ export function BoardProvider({ boardId, children }: { boardId: string; children return ; } - if (!board) { - return null; - } - return {children}; } diff --git a/src/app/(main)/boards/[boardId]/BoardHeader.tsx b/src/app/(main)/boards/[boardId]/BoardHeader.tsx index 86bd822c..a86ddf58 100644 --- a/src/app/(main)/boards/[boardId]/BoardHeader.tsx +++ b/src/app/(main)/boards/[boardId]/BoardHeader.tsx @@ -1,21 +1,48 @@ -import { Button, Column, Grid, Heading, Row, TextField } from '@umami/react-zen'; -import { useMessages } from '@/components/hooks'; +import { Column, Grid, Heading, LoadingButton, Row, TextField, useToast } from '@umami/react-zen'; +import { useState } from 'react'; +import { useApi, useBoard, useMessages, useModified, useNavigation } from '@/components/hooks'; export function BoardHeader() { - const { formatMessage, labels } = useMessages(); + const board = useBoard(); + const { formatMessage, labels, messages } = useMessages(); + const { post, useMutation } = useApi(); + const { touch } = useModified(); + const { router, renderUrl } = useNavigation(); + const { toast } = useToast(); const defaultName = formatMessage(labels.untitled); - const name = ''; - const description = ''; - const handleNameChange = (name: string) => { - //updateReport({ name: name || defaultName }); + const [name, setName] = useState(board?.name ?? ''); + const [description, setDescription] = useState(board?.description ?? ''); + + const { mutateAsync, isPending } = useMutation({ + mutationFn: (data: { name: string; description: string }) => { + if (board) { + return post(`/boards/${board.id}`, data); + } + return post('/boards', { ...data, type: 'dashboard', slug: '' }); + }, + }); + + const handleNameChange = (value: string) => { + setName(value); }; - const handleDescriptionChange = (description: string) => { - //updateReport({ description }); + const handleDescriptionChange = (value: string) => { + setDescription(value); }; - return

asdgfviybiyu8oaero8g9873qrgb875qh0g8

; + const handleSave = async () => { + const result = await mutateAsync({ name: name || defaultName, description }); + + toast(formatMessage(messages.saved)); + touch('boards'); + + if (board) { + touch(`board:${board.id}`); + } else if (result?.id) { + router.push(renderUrl(`/boards/${result.id}`)); + } + }; return ( - asdfasdfds - + + {formatMessage(labels.save)} + ); diff --git a/src/app/(main)/boards/[boardId]/BoardPage.tsx b/src/app/(main)/boards/[boardId]/BoardPage.tsx index 858866c1..20bdd72c 100644 --- a/src/app/(main)/boards/[boardId]/BoardPage.tsx +++ b/src/app/(main)/boards/[boardId]/BoardPage.tsx @@ -1,5 +1,6 @@ 'use client'; import { Column } from '@umami/react-zen'; +import { BoardBody } from '@/app/(main)/boards/[boardId]/BoardBody'; import { BoardHeader } from '@/app/(main)/boards/[boardId]/BoardHeader'; import { BoardProvider } from '@/app/(main)/boards/BoardProvider'; import { PageBody } from '@/components/common/PageBody'; @@ -10,6 +11,7 @@ export function BoardPage({ boardId }: { boardId: string }) { + diff --git a/src/app/(main)/boards/[boardId]/page.tsx b/src/app/(main)/boards/[boardId]/page.tsx index 82300eb6..0eebdb2f 100644 --- a/src/app/(main)/boards/[boardId]/page.tsx +++ b/src/app/(main)/boards/[boardId]/page.tsx @@ -4,7 +4,7 @@ import { BoardPage } from './BoardPage'; export default async function ({ params }: { params: Promise<{ boardId: string }> }) { const { boardId } = await params; - return ; + return ; } export const metadata: Metadata = { diff --git a/src/app/api/boards/[boardId]/route.ts b/src/app/api/boards/[boardId]/route.ts index a5dfd2aa..2f94e527 100644 --- a/src/app/api/boards/[boardId]/route.ts +++ b/src/app/api/boards/[boardId]/route.ts @@ -26,7 +26,7 @@ export async function GET(request: Request, { params }: { params: Promise<{ boar export async function POST(request: Request, { params }: { params: Promise<{ boardId: string }> }) { const schema = z.object({ name: z.string().optional(), - domain: z.string().optional(), + description: z.string().optional(), shareId: z.string().regex(SHARE_ID_REGEX).nullable().optional(), }); @@ -37,14 +37,14 @@ export async function POST(request: Request, { params }: { params: Promise<{ boa } const { boardId } = await params; - const { name, domain, shareId } = body; + const { name, description, shareId } = body; if (!(await canUpdateBoard(auth, boardId))) { return unauthorized(); } try { - const board = await updateBoard(boardId, { name, domain, shareId }); + const board = await updateBoard(boardId, { name, description, shareId }); return Response.json(board); } catch (e: any) { From 68c56060b38fb545484b6199665a377eaed36582 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Fri, 16 Jan 2026 21:05:43 -0800 Subject: [PATCH 12/18] Add board state management with updateBoard and saveBoard methods. BoardProvider now manages local board state and exposes updateBoard for editing and saveBoard for persisting to the database. Supports both create and edit modes with proper redirect after creation. Co-Authored-By: Claude Opus 4.5 --- package.json | 1 + pnpm-lock.yaml | 14 ++++ src/app/(main)/boards/BoardProvider.tsx | 83 +++++++++++++++++-- src/app/(main)/boards/[boardId]/BoardBody.tsx | 68 ++++++++++++++- .../(main)/boards/[boardId]/BoardHeader.tsx | 50 +++-------- src/components/hooks/context/useBoard.ts | 4 +- src/lib/types.ts | 4 + 7 files changed, 176 insertions(+), 48 deletions(-) diff --git a/package.json b/package.json index e9d91cb2..dea505fe 100644 --- a/package.json +++ b/package.json @@ -113,6 +113,7 @@ "react-dom": "^19.2.3", "react-error-boundary": "^4.0.4", "react-intl": "^7.1.14", + "react-resizable-panels": "^4.4.1", "react-simple-maps": "^2.3.0", "react-use-measure": "^2.0.4", "react-window": "^1.8.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8fe45f8..f6292443 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,6 +164,9 @@ importers: react-intl: specifier: ^7.1.14 version: 7.1.14(react@19.2.3)(typescript@5.9.3) + react-resizable-panels: + specifier: ^4.4.1 + version: 4.4.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react-simple-maps: specifier: ^2.3.0 version: 2.3.0(prop-types@15.8.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -6181,6 +6184,12 @@ packages: redux: optional: true + react-resizable-panels@4.4.1: + resolution: {integrity: sha512-dpM9oI6rGlAq7VYDeafSRA1JmkJv8aNuKySR+tZLQQLfaeqTnQLSM52EcoI/QdowzsjVUCk6jViKS0xHWITVRQ==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + react-simple-maps@2.3.0: resolution: {integrity: sha512-IZVeiPSRZKwD6I/2NvXpQ2uENYGDGZp8DvZjkapcxuJ/LQHTfl+Byb+KNgY7s+iatRA2ad8LnZ3AgqcjziCCsw==} peerDependencies: @@ -13909,6 +13918,11 @@ snapshots: '@types/react': 19.2.8 redux: 5.0.1 + react-resizable-panels@4.4.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react-simple-maps@2.3.0(prop-types@15.8.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: d3-geo: 2.0.2 diff --git a/src/app/(main)/boards/BoardProvider.tsx b/src/app/(main)/boards/BoardProvider.tsx index 93d4e6f0..fa9c7c90 100644 --- a/src/app/(main)/boards/BoardProvider.tsx +++ b/src/app/(main)/boards/BoardProvider.tsx @@ -1,17 +1,86 @@ 'use client'; -import { Loading } from '@umami/react-zen'; -import { createContext, type ReactNode } from 'react'; +import { Loading, useToast } from '@umami/react-zen'; +import { createContext, type ReactNode, useCallback, useEffect, useState } from 'react'; +import { useApi, useMessages, useModified, useNavigation } from '@/components/hooks'; import { useBoardQuery } from '@/components/hooks/queries/useBoardQuery'; import type { Board } from '@/generated/prisma/client'; -export const BoardContext = createContext(null); +export interface BoardContextValue { + board: Partial; + updateBoard: (data: Partial) => void; + saveBoard: () => Promise; + isPending: boolean; +} -export function BoardProvider({ boardId, children }: { boardId: string; children: ReactNode }) { - const { data: board, isFetching, isLoading } = useBoardQuery(boardId); +export const BoardContext = createContext(null); - if (isFetching && isLoading) { +const defaultBoard: Partial = { + name: '', + description: '', +}; + +export function BoardProvider({ boardId, children }: { boardId?: string; children: ReactNode }) { + const { data, isFetching, isLoading } = useBoardQuery(boardId); + const { post, useMutation } = useApi(); + const { touch } = useModified(); + const { toast } = useToast(); + const { formatMessage, labels, messages } = useMessages(); + const { router, renderUrl } = useNavigation(); + + const [board, setBoard] = useState>(data ?? defaultBoard); + + useEffect(() => { + if (data) { + setBoard(data); + } + }, [data]); + + const { mutateAsync, isPending } = useMutation({ + mutationFn: (boardData: Partial) => { + if (boardData.id) { + return post(`/boards/${boardData.id}`, boardData); + } + return post('/boards', { ...boardData, type: 'dashboard', slug: '' }); + }, + }); + + const updateBoard = useCallback((data: Partial) => { + setBoard(current => ({ ...current, ...data })); + }, []); + + const saveBoard = useCallback(async () => { + const defaultName = formatMessage(labels.untitled); + const result = await mutateAsync({ ...board, name: board.name || defaultName }); + + toast(formatMessage(messages.saved)); + touch('boards'); + + if (board.id) { + touch(`board:${board.id}`); + } else if (result?.id) { + router.push(renderUrl(`/boards/${result.id}`)); + } + + return result; + }, [ + board, + mutateAsync, + toast, + formatMessage, + labels.untitled, + messages.saved, + touch, + router, + renderUrl, + ]); + + if (boardId && isFetching && isLoading) { return ; } - return {children}; + return ( + + {children} + + ); } diff --git a/src/app/(main)/boards/[boardId]/BoardBody.tsx b/src/app/(main)/boards/[boardId]/BoardBody.tsx index 1728a08d..64715872 100644 --- a/src/app/(main)/boards/[boardId]/BoardBody.tsx +++ b/src/app/(main)/boards/[boardId]/BoardBody.tsx @@ -1,3 +1,69 @@ +import { Button, Column, Icon, Row } from '@umami/react-zen'; +import { produce } from 'immer'; +import { v4 as uuid } from 'uuid'; +import { useBoard } from '@/components/hooks'; +import { Plus } from '@/components/icons'; + export function BoardBody() { - return

i am bored.

; + const { board, updateBoard, saveBoard, isPending } = useBoard(); + + console.log({ board }); + + const handleAddRow = () => { + updateBoard({ + parameters: produce(board.parameters, draft => { + if (!draft.rows) { + draft.rows = []; + } + draft.rows.push({ id: uuid(), components: [] }); + }), + }); + }; + + return ( + + {board?.parameters?.rows?.map((row, rowIndex) => { + return ; + })} + + + + + ); +} + +function BoardComponent() { + return hi; +} + +function BoardRow({ rowIndex, components }: { rowIndex: number; components: any[] }) { + const { board, updateBoard } = useBoard(); + + const handleAddComponent = () => { + updateBoard({ + parameters: produce(board.parameters, draft => { + if (!draft.rows[rowIndex]) { + draft.rows[rowIndex] = { id: uuid(), components: [] }; + } + draft.rows[rowIndex].components.push({ id: uuid(), type: 'text', value: '' }); + }), + }); + }; + + return ( + + {components?.map(component => { + return ; + })} + + + ); } diff --git a/src/app/(main)/boards/[boardId]/BoardHeader.tsx b/src/app/(main)/boards/[boardId]/BoardHeader.tsx index a86ddf58..18492e04 100644 --- a/src/app/(main)/boards/[boardId]/BoardHeader.tsx +++ b/src/app/(main)/boards/[boardId]/BoardHeader.tsx @@ -1,47 +1,21 @@ -import { Column, Grid, Heading, LoadingButton, Row, TextField, useToast } from '@umami/react-zen'; -import { useState } from 'react'; -import { useApi, useBoard, useMessages, useModified, useNavigation } from '@/components/hooks'; +import { Column, Grid, Heading, LoadingButton, Row, TextField } from '@umami/react-zen'; +import { useBoard, useMessages } from '@/components/hooks'; export function BoardHeader() { - const board = useBoard(); - const { formatMessage, labels, messages } = useMessages(); - const { post, useMutation } = useApi(); - const { touch } = useModified(); - const { router, renderUrl } = useNavigation(); - const { toast } = useToast(); + const { board, updateBoard, saveBoard, isPending } = useBoard(); + const { formatMessage, labels } = useMessages(); const defaultName = formatMessage(labels.untitled); - const [name, setName] = useState(board?.name ?? ''); - const [description, setDescription] = useState(board?.description ?? ''); - - const { mutateAsync, isPending } = useMutation({ - mutationFn: (data: { name: string; description: string }) => { - if (board) { - return post(`/boards/${board.id}`, data); - } - return post('/boards', { ...data, type: 'dashboard', slug: '' }); - }, - }); - const handleNameChange = (value: string) => { - setName(value); + updateBoard({ name: value }); }; const handleDescriptionChange = (value: string) => { - setDescription(value); + updateBoard({ description: value }); }; - const handleSave = async () => { - const result = await mutateAsync({ name: name || defaultName, description }); - - toast(formatMessage(messages.saved)); - touch('boards'); - - if (board) { - touch(`board:${board.id}`); - } else if (result?.id) { - router.push(renderUrl(`/boards/${result.id}`)); - } + const handleSave = () => { + saveBoard(); }; return ( @@ -57,26 +31,26 @@ export function BoardHeader() { - {name} + {board?.name} - {description} + {board?.description} diff --git a/src/components/hooks/context/useBoard.ts b/src/components/hooks/context/useBoard.ts index 0281dd8d..cb8b28d8 100644 --- a/src/components/hooks/context/useBoard.ts +++ b/src/components/hooks/context/useBoard.ts @@ -1,6 +1,6 @@ import { useContext } from 'react'; -import { BoardContext } from '@/app/(main)/boards/BoardProvider'; +import { BoardContext, type BoardContextValue } from '@/app/(main)/boards/BoardProvider'; -export function useBoard() { +export function useBoard(): BoardContextValue { return useContext(BoardContext); } diff --git a/src/lib/types.ts b/src/lib/types.ts index 9c061979..458f899d 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -141,3 +141,7 @@ export interface ApiError extends Error { code?: string; message: string; } + +export interface BoardData { + rows: { id: string; name: string; value: number }[]; +} From d9f698ca42a325446b9f3fd3fec93755d981182a Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sun, 18 Jan 2026 04:20:36 -0800 Subject: [PATCH 13/18] Board editing. --- CLAUDE.md | 4 + package.json | 2 +- pnpm-lock.yaml | 78 ++++------ scripts/check-db.js | 2 +- src/app/(main)/boards/BoardProvider.tsx | 3 +- src/app/(main)/boards/[boardId]/BoardBody.tsx | 147 ++++++++++++++---- src/app/api/boards/[boardId]/route.ts | 7 +- src/lib/types.ts | 26 +++- 8 files changed, 183 insertions(+), 86 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 883ee7f4..a7ad68f9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -90,3 +90,7 @@ DEBUG # Debug namespaces (e.g., umami:*) - Node.js 18.18+ - PostgreSQL 12.14+ - pnpm (package manager) + +## Git Workflow + +Always ask for confirmation before running `git commit` or `git push`. diff --git a/package.json b/package.json index dea505fe..326f1720 100644 --- a/package.json +++ b/package.json @@ -165,7 +165,7 @@ "stylelint-config-css-modules": "^4.5.1", "stylelint-config-prettier": "^9.0.3", "stylelint-config-recommended": "^14.0.0", - "tar": "^6.1.2", + "tar": "^7.5.3", "ts-jest": "^29.4.6", "ts-node": "^10.9.1", "tsup": "^8.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f6292443..daefaf06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -316,8 +316,8 @@ importers: specifier: ^14.0.0 version: 14.0.1(stylelint@15.11.0(typescript@5.9.3)) tar: - specifier: ^6.1.2 - version: 6.2.1 + specifier: ^7.5.3 + version: 7.5.3 ts-jest: specifier: ^29.4.6 version: 29.4.6(@babel/core@7.28.3)(@jest/transform@29.7.0)(@jest/types@30.0.5)(babel-jest@29.7.0(@babel/core@7.28.3))(esbuild@0.25.12)(jest-util@30.0.5)(jest@29.7.0(@types/node@24.10.8)(ts-node@10.9.2(@types/node@24.10.8)(typescript@5.9.3)))(typescript@5.9.3) @@ -1479,6 +1479,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -3279,9 +3283,9 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} @@ -4066,10 +4070,6 @@ packages: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} - fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -5180,21 +5180,13 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - - minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} - minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} @@ -6781,9 +6773,9 @@ packages: resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} engines: {node: '>=10.0.0'} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} - engines: {node: '>=10'} + tar@7.5.3: + resolution: {integrity: sha512-ENg5JUHUm2rDD7IvKNFGzyElLXNjachNLp6RaGf4+JOgxXHkqA+gq81ZAMCUmtMtqBsoU62lcp6S27g1LCYGGQ==} + engines: {node: '>=18'} terser@5.43.1: resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} @@ -7190,6 +7182,10 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -8224,6 +8220,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -10609,7 +10609,7 @@ snapshots: dependencies: readdirp: 4.1.2 - chownr@2.0.0: {} + chownr@3.0.0: {} ci-info@3.9.0: {} @@ -11576,10 +11576,6 @@ snapshots: jsonfile: 6.2.0 universalify: 2.0.1 - fs-minipass@2.1.0: - dependencies: - minipass: 3.3.6 - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -12882,18 +12878,11 @@ snapshots: minimist@1.2.8: {} - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - - minipass@5.0.0: {} - minipass@7.1.2: {} - minizlib@2.1.2: + minizlib@3.1.0: dependencies: - minipass: 3.3.6 - yallist: 4.0.0 + minipass: 7.1.2 mkdirp@1.0.4: {} @@ -14706,14 +14695,13 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - tar@6.2.1: + tar@7.5.3: dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 5.0.0 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.1.0 + yallist: 5.0.0 terser@5.43.1: dependencies: @@ -15132,6 +15120,8 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yaml@1.10.2: {} yaml@2.8.1: {} diff --git a/scripts/check-db.js b/scripts/check-db.js index 68374f6f..8c806cd8 100644 --- a/scripts/check-db.js +++ b/scripts/check-db.js @@ -48,7 +48,7 @@ async function checkConnection() { success('Database connection successful.'); } catch (e) { - throw new Error('Unable to connect to the database: ' + e.message); + throw new Error(`Unable to connect to the database: ${e.message}`); } } diff --git a/src/app/(main)/boards/BoardProvider.tsx b/src/app/(main)/boards/BoardProvider.tsx index fa9c7c90..783f92ef 100644 --- a/src/app/(main)/boards/BoardProvider.tsx +++ b/src/app/(main)/boards/BoardProvider.tsx @@ -3,7 +3,7 @@ import { Loading, useToast } from '@umami/react-zen'; import { createContext, type ReactNode, useCallback, useEffect, useState } from 'react'; import { useApi, useMessages, useModified, useNavigation } from '@/components/hooks'; import { useBoardQuery } from '@/components/hooks/queries/useBoardQuery'; -import type { Board } from '@/generated/prisma/client'; +import type { Board } from '@/lib/types'; export interface BoardContextValue { board: Partial; @@ -17,6 +17,7 @@ export const BoardContext = createContext(null); const defaultBoard: Partial = { name: '', description: '', + parameters: { rows: [] }, }; export function BoardProvider({ boardId, children }: { boardId?: string; children: ReactNode }) { diff --git a/src/app/(main)/boards/[boardId]/BoardBody.tsx b/src/app/(main)/boards/[boardId]/BoardBody.tsx index 64715872..0c05486f 100644 --- a/src/app/(main)/boards/[boardId]/BoardBody.tsx +++ b/src/app/(main)/boards/[boardId]/BoardBody.tsx @@ -1,8 +1,18 @@ -import { Button, Column, Icon, Row } from '@umami/react-zen'; +import { Box, Button, Column, Icon, Row, Tooltip, TooltipTrigger } from '@umami/react-zen'; import { produce } from 'immer'; +import { Fragment, type ReactElement } from 'react'; +import { Group, Panel, Separator } from 'react-resizable-panels'; import { v4 as uuid } from 'uuid'; import { useBoard } from '@/components/hooks'; -import { Plus } from '@/components/icons'; +import { Minus, Plus } from '@/components/icons'; +import type { BoardColumn as BoardColumnType } from '@/lib/types'; + +const CATALOG = { + text: { + label: 'Text', + component: BoardColumn, + }, +}; export function BoardBody() { const { board, updateBoard, saveBoard, isPending } = useBoard(); @@ -15,55 +25,126 @@ export function BoardBody() { if (!draft.rows) { draft.rows = []; } - draft.rows.push({ id: uuid(), components: [] }); + draft.rows.push({ id: uuid(), columns: [{ id: uuid(), component: null }] }); + }), + }); + }; + + const handleRemoveRow = (id: string) => { + console.log('Removing row', id); + updateBoard({ + parameters: produce(board.parameters, draft => { + if (!draft.rows) { + return; + } + + draft.rows = draft.rows.filter(row => row?.id !== id); + }), + }); + }; + + const rows = board?.parameters?.rows ?? []; + const minHeight = 300 * (rows.length || 1); + + return ( + <> + + {rows.map((row, index) => ( + + + + + {index < rows.length - 1 && } + + ))} + + + + + Add row + + + + ); +} + +function BoardRow({ + rowId, + columns, + onRemove, +}: { + rowId: string; + columns: BoardColumnType[]; + onAddComponent?: () => void; + onRemove?: (id: string) => void; +}) { + const { board, updateBoard } = useBoard(); + + const handleAddColumn = () => { + updateBoard({ + parameters: produce(board.parameters, draft => { + const rowIndex = draft.rows.findIndex(row => row.id === rowId); + const row = draft.rows[rowIndex]; + + if (!row) { + draft.rows[rowIndex] = { id: uuid(), columns: [] }; + } + row.columns.push({ id: uuid(), component: null }); }), }); }; return ( - - {board?.parameters?.rows?.map((row, rowIndex) => { - return ; - })} - - - - + + + Remove row + + + ); } -function BoardComponent() { - return hi; -} - -function BoardRow({ rowIndex, components }: { rowIndex: number; components: any[] }) { - const { board, updateBoard } = useBoard(); - - const handleAddComponent = () => { - updateBoard({ - parameters: produce(board.parameters, draft => { - if (!draft.rows[rowIndex]) { - draft.rows[rowIndex] = { id: uuid(), components: [] }; - } - draft.rows[rowIndex].components.push({ id: uuid(), type: 'text', value: '' }); - }), - }); - }; +function BoardColumn({ id, component }: { id: string; component?: ReactElement }) { + const handleAddComponent = () => {}; return ( - - {components?.map(component => { - return ; - })} + - + ); } diff --git a/src/app/api/boards/[boardId]/route.ts b/src/app/api/boards/[boardId]/route.ts index 2f94e527..24bae4dc 100644 --- a/src/app/api/boards/[boardId]/route.ts +++ b/src/app/api/boards/[boardId]/route.ts @@ -1,5 +1,4 @@ import { z } from 'zod'; -import { SHARE_ID_REGEX } from '@/lib/constants'; import { parseRequest } from '@/lib/request'; import { badRequest, json, ok, serverError, unauthorized } from '@/lib/response'; import { canDeleteBoard, canUpdateBoard, canViewBoard } from '@/permissions'; @@ -27,7 +26,7 @@ export async function POST(request: Request, { params }: { params: Promise<{ boa const schema = z.object({ name: z.string().optional(), description: z.string().optional(), - shareId: z.string().regex(SHARE_ID_REGEX).nullable().optional(), + parameters: z.object({}).passthrough().optional(), }); const { auth, body, error } = await parseRequest(request, schema); @@ -37,14 +36,14 @@ export async function POST(request: Request, { params }: { params: Promise<{ boa } const { boardId } = await params; - const { name, description, shareId } = body; + const { name, description, parameters } = body; if (!(await canUpdateBoard(auth, boardId))) { return unauthorized(); } try { - const board = await updateBoard(boardId, { name, description, shareId }); + const board = await updateBoard(boardId, { name, description, parameters }); return Response.json(board); } catch (e: any) { diff --git a/src/lib/types.ts b/src/lib/types.ts index 458f899d..2da6fe35 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,4 +1,6 @@ import type { UseQueryOptions } from '@tanstack/react-query'; +import type { ReactElement } from 'react'; +import type { Board as PrismaBoard } from '@/generated/prisma/client'; import type { DATA_TYPE, OPERATORS, ROLES } from './constants'; import type { TIME_UNIT } from './date'; @@ -142,6 +144,26 @@ export interface ApiError extends Error { message: string; } -export interface BoardData { - rows: { id: string; name: string; value: number }[]; +export interface BoardComponent { + id: string; + type: string; + value: string; +} + +export interface BoardColumn { + id: string; + component?: ReactElement; +} + +export interface BoardRow { + id: string; + columns: BoardColumn[]; +} + +export interface BoardParameters { + rows?: BoardRow[]; +} + +export interface Board extends Omit { + parameters: BoardParameters; } From ff6575ff5450369d881a984a13d1e1156141b618 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sun, 18 Jan 2026 20:17:21 -0800 Subject: [PATCH 14/18] Add move row up/down functionality to board editor. Rows can now be reordered using up/down buttons. Buttons are disabled at boundaries (up disabled on first row, down disabled on last row). Co-Authored-By: Claude Opus 4.5 --- src/app/(main)/boards/[boardId]/BoardBody.tsx | 148 +++++++++++++----- 1 file changed, 113 insertions(+), 35 deletions(-) diff --git a/src/app/(main)/boards/[boardId]/BoardBody.tsx b/src/app/(main)/boards/[boardId]/BoardBody.tsx index 0c05486f..e1bc77ad 100644 --- a/src/app/(main)/boards/[boardId]/BoardBody.tsx +++ b/src/app/(main)/boards/[boardId]/BoardBody.tsx @@ -4,7 +4,7 @@ import { Fragment, type ReactElement } from 'react'; import { Group, Panel, Separator } from 'react-resizable-panels'; import { v4 as uuid } from 'uuid'; import { useBoard } from '@/components/hooks'; -import { Minus, Plus } from '@/components/icons'; +import { ChevronDown, Minus, Plus } from '@/components/icons'; import type { BoardColumn as BoardColumnType } from '@/lib/types'; const CATALOG = { @@ -14,6 +14,12 @@ const CATALOG = { }, }; +const MIN_HEIGHT = 300; +const MAX_HEIGHT = 600; +const MIN_WIDTH = 300; +const MARGIN = 10; +const MAX_COLUMNS = 4; + export function BoardBody() { const { board, updateBoard, saveBoard, isPending } = useBoard(); @@ -31,7 +37,6 @@ export function BoardBody() { }; const handleRemoveRow = (id: string) => { - console.log('Removing row', id); updateBoard({ parameters: produce(board.parameters, draft => { if (!draft.rows) { @@ -43,44 +48,90 @@ export function BoardBody() { }); }; + const handleMoveRowUp = (id: string) => { + updateBoard({ + parameters: produce(board.parameters, draft => { + if (!draft.rows) return; + + const index = draft.rows.findIndex(row => row.id === id); + if (index > 0) { + const temp = draft.rows[index - 1]; + draft.rows[index - 1] = draft.rows[index]; + draft.rows[index] = temp; + } + }), + }); + }; + + const handleMoveRowDown = (id: string) => { + updateBoard({ + parameters: produce(board.parameters, draft => { + if (!draft.rows) return; + + const index = draft.rows.findIndex(row => row.id === id); + if (index < draft.rows.length - 1) { + const temp = draft.rows[index + 1]; + draft.rows[index + 1] = draft.rows[index]; + draft.rows[index] = temp; + } + }), + }); + }; + const rows = board?.parameters?.rows ?? []; - const minHeight = 300 * (rows.length || 1); + const rowCount = (rows.length || 1) + 1; + const minHeight = (MAX_HEIGHT + MARGIN) * rowCount; return ( - <> - - {rows.map((row, index) => ( - - - - - {index < rows.length - 1 && } - - ))} - - - - - Add row - - - + + {rows.map((row, index) => ( + + + + + {index < rows.length - 1 && } + + ))} + + + + + Add row + + + + ); } function BoardRow({ rowId, + rowIndex, + rowCount, columns, onRemove, + onMoveUp, + onMoveDown, }: { rowId: string; + rowIndex: number; + rowCount: number; columns: BoardColumnType[]; - onAddComponent?: () => void; onRemove?: (id: string) => void; + onMoveUp?: (id: string) => void; + onMoveDown?: (id: string) => void; }) { const { board, updateBoard } = useBoard(); @@ -102,27 +153,54 @@ function BoardRow({ {columns?.map((column, index) => ( - + {index < columns.length - 1 && } ))} - - + + + + Move row up + + + + Add column + - Remove row + Remove row - + + + Move row down + + ); } From 30c3ba77cc0af1b29873d2825b0c6bbe7fd686fa Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sun, 18 Jan 2026 21:19:24 -0800 Subject: [PATCH 15/18] Add remove column button and fix container height calculation. - Add X button in top right corner of each column to remove it - Fix container height to use MIN_HEIGHT instead of MAX_HEIGHT per row Co-Authored-By: Claude Opus 4.5 --- src/app/(main)/boards/[boardId]/BoardBody.tsx | 42 +++++++++++++++---- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/app/(main)/boards/[boardId]/BoardBody.tsx b/src/app/(main)/boards/[boardId]/BoardBody.tsx index e1bc77ad..75fa780c 100644 --- a/src/app/(main)/boards/[boardId]/BoardBody.tsx +++ b/src/app/(main)/boards/[boardId]/BoardBody.tsx @@ -4,7 +4,7 @@ import { Fragment, type ReactElement } from 'react'; import { Group, Panel, Separator } from 'react-resizable-panels'; import { v4 as uuid } from 'uuid'; import { useBoard } from '@/components/hooks'; -import { ChevronDown, Minus, Plus } from '@/components/icons'; +import { ChevronDown, Minus, Plus, X } from '@/components/icons'; import type { BoardColumn as BoardColumnType } from '@/lib/types'; const CATALOG = { @@ -15,9 +15,6 @@ const CATALOG = { }; const MIN_HEIGHT = 300; -const MAX_HEIGHT = 600; -const MIN_WIDTH = 300; -const MARGIN = 10; const MAX_COLUMNS = 4; export function BoardBody() { @@ -79,8 +76,7 @@ export function BoardBody() { }; const rows = board?.parameters?.rows ?? []; - const rowCount = (rows.length || 1) + 1; - const minHeight = (MAX_HEIGHT + MARGIN) * rowCount; + const minHeight = (rows.length + 1) * MIN_HEIGHT; return ( @@ -149,12 +145,23 @@ function BoardRow({ }); }; + const handleRemoveColumn = (columnId: string) => { + updateBoard({ + parameters: produce(board.parameters, draft => { + const row = draft.rows.find(row => row.id === rowId); + if (row) { + row.columns = row.columns.filter(col => col.id !== columnId); + } + }), + }); + }; + return ( {columns?.map((column, index) => ( - + {index < columns.length - 1 && } @@ -205,7 +212,15 @@ function BoardRow({ ); } -function BoardColumn({ id, component }: { id: string; component?: ReactElement }) { +function BoardColumn({ + id, + component, + onRemove, +}: { + id: string; + component?: ReactElement; + onRemove?: (id: string) => void; +}) { const handleAddComponent = () => {}; return ( @@ -217,7 +232,18 @@ function BoardColumn({ id, component }: { id: string; component?: ReactElement } alignItems="center" justifyContent="center" backgroundColor="3" + position="relative" > + + + + Remove column + + - Remove column - - + {canRemove && ( + + + + Remove column + + + )}