From 216feca9718a09660d0cb6cafc9daa66839de3af Mon Sep 17 00:00:00 2001 From: Esdras Renan Date: Mon, 20 Oct 2025 10:13:37 -0300 Subject: [PATCH] feat(tickets): preserve requester/assignee/company snapshots + timeline fallbacks; chore: add requester index\n\n- Add requesterSnapshot, assigneeSnapshot, companySnapshot to tickets\n- Use snapshots as fallback in list/get/play\n- Update snapshots on assignee changes/startWork\n- Preserve snapshots before deleting users/companies\n- Add index tickets.by_tenant_requester\n- Add migrations.backfillTicketSnapshots\n\nchore(convex): upgrade to ^1.28.0 and run codegen\nchore(next): upgrade Next.js to 15.5.6 and update React/eslint-config-next\nfix: remove any and lint warnings; tighten types across API routes and components\ndocs: add docs/ticket-snapshots.md --- convex/companies.ts | 22 + convex/migrations.ts | 56 ++ convex/schema.ts | 24 + convex/tickets.ts | 188 +++- convex/users.ts | 24 + docs/desktop-handshake-troubleshooting.md | 71 ++ docs/ticket-snapshots.md | 33 + package.json | 8 +- pnpm-lock.yaml | 926 +++++++++--------- src/app/admin/companies/page.tsx | 49 +- src/app/api/admin/companies/[id]/route.ts | 5 +- src/app/api/machines/register/route.ts | 6 +- src/components/admin/admin-users-manager.tsx | 2 - .../machines/admin-machines-overview.tsx | 7 +- src/components/app-sidebar.tsx | 1 - .../tickets/ticket-summary-header.tsx | 14 +- 16 files changed, 884 insertions(+), 552 deletions(-) create mode 100644 docs/desktop-handshake-troubleshooting.md create mode 100644 docs/ticket-snapshots.md diff --git a/convex/companies.ts b/convex/companies.ts index 51bff83..7cf9c03 100644 --- a/convex/companies.ts +++ b/convex/companies.ts @@ -102,6 +102,28 @@ export const removeBySlug = mutation({ return { removed: false } } + // Preserve company snapshot on related tickets before deletion + const relatedTickets = await ctx.db + .query("tickets") + .withIndex("by_tenant_company", (q) => q.eq("tenantId", tenantId).eq("companyId", existing._id)) + .collect() + if (relatedTickets.length > 0) { + const companySnapshot = { + name: existing.name, + slug: existing.slug, + isAvulso: existing.isAvulso ?? undefined, + } + for (const t of relatedTickets) { + const needsPatch = !t.companySnapshot || + t.companySnapshot.name !== companySnapshot.name || + t.companySnapshot.slug !== companySnapshot.slug || + Boolean(t.companySnapshot.isAvulso ?? false) !== Boolean(companySnapshot.isAvulso ?? false) + if (needsPatch) { + await ctx.db.patch(t._id, { companySnapshot }) + } + } + } + await ctx.db.delete(existing._id) return { removed: true } }, diff --git a/convex/migrations.ts b/convex/migrations.ts index e2c4b3b..16f050b 100644 --- a/convex/migrations.ts +++ b/convex/migrations.ts @@ -779,3 +779,59 @@ export const syncMachineCompanyReferences = mutation({ } }, }) + +export const backfillTicketSnapshots = mutation({ + args: { tenantId: v.string(), limit: v.optional(v.number()) }, + handler: async (ctx, { tenantId, limit }) => { + const tickets = await ctx.db + .query("tickets") + .withIndex("by_tenant", (q) => q.eq("tenantId", tenantId)) + .collect() + + let processed = 0 + for (const t of tickets) { + if (limit && processed >= limit) break + const patch: Record = {} + if (!t.requesterSnapshot) { + const requester = await ctx.db.get(t.requesterId) + if (requester) { + patch.requesterSnapshot = { + name: requester.name, + email: requester.email, + avatarUrl: requester.avatarUrl ?? undefined, + teams: requester.teams ?? undefined, + } + } + } + if (t.assigneeId && !t.assigneeSnapshot) { + const assignee = await ctx.db.get(t.assigneeId) + if (assignee) { + patch.assigneeSnapshot = { + name: assignee.name, + email: assignee.email, + avatarUrl: assignee.avatarUrl ?? undefined, + teams: assignee.teams ?? undefined, + } + } + } + if (!t.companySnapshot) { + const companyId = t.companyId + if (companyId) { + const company = await ctx.db.get(companyId) + if (company) { + patch.companySnapshot = { + name: company.name, + slug: company.slug, + isAvulso: company.isAvulso ?? undefined, + } + } + } + } + if (Object.keys(patch).length > 0) { + await ctx.db.patch(t._id, patch) + } + processed += 1 + } + return { processed } + }, +}) diff --git a/convex/schema.ts b/convex/schema.ts index 8e38625..b5cee8b 100644 --- a/convex/schema.ts +++ b/convex/schema.ts @@ -85,8 +85,31 @@ export default defineSchema({ categoryId: v.optional(v.id("ticketCategories")), subcategoryId: v.optional(v.id("ticketSubcategories")), requesterId: v.id("users"), + requesterSnapshot: v.optional( + v.object({ + name: v.string(), + email: v.optional(v.string()), + avatarUrl: v.optional(v.string()), + teams: v.optional(v.array(v.string())), + }) + ), assigneeId: v.optional(v.id("users")), + assigneeSnapshot: v.optional( + v.object({ + name: v.string(), + email: v.optional(v.string()), + avatarUrl: v.optional(v.string()), + teams: v.optional(v.array(v.string())), + }) + ), companyId: v.optional(v.id("companies")), + companySnapshot: v.optional( + v.object({ + name: v.string(), + slug: v.optional(v.string()), + isAvulso: v.optional(v.boolean()), + }) + ), working: v.optional(v.boolean()), slaPolicyId: v.optional(v.id("slaPolicies")), dueAt: v.optional(v.number()), // ms since epoch @@ -117,6 +140,7 @@ export default defineSchema({ .index("by_tenant_queue", ["tenantId", "queueId"]) .index("by_tenant_assignee", ["tenantId", "assigneeId"]) .index("by_tenant_reference", ["tenantId", "reference"]) + .index("by_tenant_requester", ["tenantId", "requesterId"]) .index("by_tenant_company", ["tenantId", "companyId"]) .index("by_tenant", ["tenantId"]), diff --git a/convex/tickets.ts b/convex/tickets.ts index e9a1059..a6dba88 100644 --- a/convex/tickets.ts +++ b/convex/tickets.ts @@ -160,6 +160,57 @@ function buildRequesterSummary( }; } +type UserSnapshot = { name: string; email?: string; avatarUrl?: string; teams?: string[] }; +type CompanySnapshot = { name: string; slug?: string; isAvulso?: boolean }; + +function buildRequesterFromSnapshot( + requesterId: Id<"users">, + snapshot: UserSnapshot | null | undefined, + fallback?: RequesterFallbackContext +) { + if (snapshot) { + const name = typeof snapshot.name === "string" && snapshot.name.trim().length > 0 ? snapshot.name.trim() : (fallback?.fallbackName ?? "Solicitante não encontrado") + const emailCandidate = typeof snapshot.email === "string" && snapshot.email.includes("@") ? snapshot.email : null + const email = emailCandidate ?? (fallback?.fallbackEmail ?? `requester-${String(requesterId)}@example.invalid`) + return { + id: requesterId, + name, + email, + avatarUrl: snapshot.avatarUrl ?? undefined, + teams: normalizeTeams(snapshot.teams ?? []), + } + } + return buildRequesterSummary(null, requesterId, fallback) +} + +function buildAssigneeFromSnapshot( + assigneeId: Id<"users">, + snapshot: UserSnapshot | null | undefined +) { + const name = snapshot?.name?.trim?.() || "Usuário removido" + const emailCandidate = typeof snapshot?.email === "string" && snapshot.email.includes("@") ? snapshot.email : null + const email = emailCandidate ?? `user-${String(assigneeId)}@example.invalid` + return { + id: assigneeId, + name, + email, + avatarUrl: snapshot?.avatarUrl ?? undefined, + teams: normalizeTeams(snapshot?.teams ?? []), + } +} + +function buildCompanyFromSnapshot( + companyId: Id<"companies"> | undefined, + snapshot: CompanySnapshot | null | undefined +) { + if (!snapshot) return null + return { + id: (companyId ? companyId : ("snapshot" as unknown as Id<"companies">)) as Id<"companies">, + name: snapshot.name, + isAvulso: Boolean(snapshot.isAvulso ?? false), + } +} + type CommentAuthorFallbackContext = { ticketId?: Id<"tickets">; commentId?: Id<"ticketComments">; @@ -472,16 +523,28 @@ export const list = query({ priority: t.priority, channel: t.channel, queue: queueName, - company: company ? { id: company._id, name: company.name, isAvulso: company.isAvulso ?? false } : null, - requester: buildRequesterSummary(requester, t.requesterId, { ticketId: t._id }), - assignee: assignee - ? { - id: assignee._id, - name: assignee.name, - email: assignee.email, - avatarUrl: assignee.avatarUrl, - teams: normalizeTeams(assignee.teams), - } + company: company + ? { id: company._id, name: company.name, isAvulso: company.isAvulso ?? false } + : t.companyId || t.companySnapshot + ? buildCompanyFromSnapshot(t.companyId as Id<"companies"> | undefined, t.companySnapshot ?? undefined) + : null, + requester: requester + ? buildRequesterSummary(requester, t.requesterId, { ticketId: t._id }) + : buildRequesterFromSnapshot( + t.requesterId, + t.requesterSnapshot ?? undefined, + { ticketId: t._id } + ), + assignee: t.assigneeId + ? assignee + ? { + id: assignee._id, + name: assignee.name, + email: assignee.email, + avatarUrl: assignee.avatarUrl, + teams: normalizeTeams(assignee.teams), + } + : buildAssigneeFromSnapshot(t.assigneeId, t.assigneeSnapshot ?? undefined) : null, slaPolicy: null, dueAt: t.dueAt ?? null, @@ -644,16 +707,28 @@ export const getById = query({ priority: t.priority, channel: t.channel, queue: queueName, - company: company ? { id: company._id, name: company.name, isAvulso: company.isAvulso ?? false } : null, - requester: buildRequesterSummary(requester, t.requesterId, { ticketId: t._id }), - assignee: assignee - ? { - id: assignee._id, - name: assignee.name, - email: assignee.email, - avatarUrl: assignee.avatarUrl, - teams: normalizeTeams(assignee.teams), - } + company: company + ? { id: company._id, name: company.name, isAvulso: company.isAvulso ?? false } + : t.companyId || t.companySnapshot + ? buildCompanyFromSnapshot(t.companyId as Id<"companies"> | undefined, t.companySnapshot ?? undefined) + : null, + requester: requester + ? buildRequesterSummary(requester, t.requesterId, { ticketId: t._id }) + : buildRequesterFromSnapshot( + t.requesterId, + t.requesterSnapshot ?? undefined, + { ticketId: t._id } + ), + assignee: t.assigneeId + ? assignee + ? { + id: assignee._id, + name: assignee.name, + email: assignee.email, + avatarUrl: assignee.avatarUrl, + teams: normalizeTeams(assignee.teams), + } + : buildAssigneeFromSnapshot(t.assigneeId, t.assigneeSnapshot ?? undefined) : null, slaPolicy: null, dueAt: t.dueAt ?? null, @@ -798,6 +873,26 @@ export const create = mutation({ const nextRef = existing[0]?.reference ? existing[0].reference + 1 : 41000; const now = Date.now(); const initialStatus: TicketStatusNormalized = initialAssigneeId ? "AWAITING_ATTENDANCE" : "PENDING"; + const requesterSnapshot = { + name: requester.name, + email: requester.email, + avatarUrl: requester.avatarUrl ?? undefined, + teams: requester.teams ?? undefined, + } + const companyDoc = requester.companyId ? (await ctx.db.get(requester.companyId)) : null + const companySnapshot = companyDoc + ? { name: companyDoc.name, slug: companyDoc.slug, isAvulso: companyDoc.isAvulso ?? undefined } + : undefined + + const assigneeSnapshot = initialAssignee + ? { + name: initialAssignee.name, + email: initialAssignee.email, + avatarUrl: initialAssignee.avatarUrl ?? undefined, + teams: initialAssignee.teams ?? undefined, + } + : undefined + const id = await ctx.db.insert("tickets", { tenantId: args.tenantId, reference: nextRef, @@ -810,8 +905,11 @@ export const create = mutation({ categoryId: args.categoryId, subcategoryId: args.subcategoryId, requesterId: args.requesterId, + requesterSnapshot, assigneeId: initialAssigneeId, + assigneeSnapshot, companyId: requester.companyId ?? undefined, + companySnapshot, working: false, activeSessionId: undefined, totalWorkedMs: 0, @@ -1119,7 +1217,13 @@ export const changeAssignee = mutation({ } const now = Date.now(); - await ctx.db.patch(ticketId, { assigneeId, updatedAt: now }); + const assigneeSnapshot = { + name: assignee.name, + email: assignee.email, + avatarUrl: assignee.avatarUrl ?? undefined, + teams: assignee.teams ?? undefined, + } + await ctx.db.patch(ticketId, { assigneeId, assigneeSnapshot, updatedAt: now }); await ctx.db.insert("ticketEvents", { ticketId, type: "ASSIGNEE_CHANGED", @@ -1328,7 +1432,13 @@ export const startWork = mutation({ let assigneePatched = false if (!currentAssigneeId) { - await ctx.db.patch(ticketId, { assigneeId: actorId, updatedAt: now }) + const assigneeSnapshot = { + name: viewer.user.name, + email: viewer.user.email, + avatarUrl: viewer.user.avatarUrl ?? undefined, + teams: viewer.user.teams ?? undefined, + } + await ctx.db.patch(ticketId, { assigneeId: actorId, assigneeSnapshot, updatedAt: now }) ticketDoc.assigneeId = actorId assigneePatched = true } @@ -1542,7 +1652,13 @@ export const playNext = mutation({ const currentStatus = normalizeStatus(chosen.status); const nextStatus: TicketStatusNormalized = currentStatus === "PENDING" ? "AWAITING_ATTENDANCE" : currentStatus; - await ctx.db.patch(chosen._id, { assigneeId: agentId, status: nextStatus, updatedAt: now }); + const assigneeSnapshot = { + name: agent.name, + email: agent.email, + avatarUrl: agent.avatarUrl ?? undefined, + teams: agent.teams ?? undefined, + } + await ctx.db.patch(chosen._id, { assigneeId: agentId, assigneeSnapshot, status: nextStatus, updatedAt: now }); await ctx.db.insert("ticketEvents", { ticketId: chosen._id, type: "ASSIGNEE_CHANGED", @@ -1565,15 +1681,23 @@ export const playNext = mutation({ priority: chosen.priority, channel: chosen.channel, queue: queueName, - requester: buildRequesterSummary(requester, chosen.requesterId, { ticketId: chosen._id }), - assignee: assignee - ? { - id: assignee._id, - name: assignee.name, - email: assignee.email, - avatarUrl: assignee.avatarUrl, - teams: normalizeTeams(assignee.teams), - } + requester: requester + ? buildRequesterSummary(requester, chosen.requesterId, { ticketId: chosen._id }) + : buildRequesterFromSnapshot( + chosen.requesterId, + chosen.requesterSnapshot ?? undefined, + { ticketId: chosen._id } + ), + assignee: chosen.assigneeId + ? assignee + ? { + id: assignee._id, + name: assignee.name, + email: assignee.email, + avatarUrl: assignee.avatarUrl, + teams: normalizeTeams(assignee.teams), + } + : buildAssigneeFromSnapshot(chosen.assigneeId, chosen.assigneeSnapshot ?? undefined) : null, slaPolicy: null, dueAt: chosen.dueAt ?? null, diff --git a/convex/users.ts b/convex/users.ts index 7340e8c..dae803d 100644 --- a/convex/users.ts +++ b/convex/users.ts @@ -145,6 +145,30 @@ export const deleteUser = mutation({ ); } + // Preserve requester snapshot on tickets where this user is the requester + const requesterTickets = await ctx.db + .query("tickets") + .withIndex("by_tenant_requester", (q) => q.eq("tenantId", user.tenantId).eq("requesterId", userId)) + .collect(); + if (requesterTickets.length > 0) { + const requesterSnapshot = { + name: user.name, + email: user.email, + avatarUrl: user.avatarUrl ?? undefined, + teams: user.teams ?? undefined, + }; + for (const t of requesterTickets) { + const needsPatch = !t.requesterSnapshot || + t.requesterSnapshot.name !== requesterSnapshot.name || + t.requesterSnapshot.email !== requesterSnapshot.email || + t.requesterSnapshot.avatarUrl !== requesterSnapshot.avatarUrl || + JSON.stringify(t.requesterSnapshot.teams ?? []) !== JSON.stringify(requesterSnapshot.teams ?? []); + if (needsPatch) { + await ctx.db.patch(t._id, { requesterSnapshot }); + } + } + } + await ctx.db.delete(userId); return { status: "deleted" }; }, diff --git a/docs/desktop-handshake-troubleshooting.md b/docs/desktop-handshake-troubleshooting.md new file mode 100644 index 0000000..e918bdf --- /dev/null +++ b/docs/desktop-handshake-troubleshooting.md @@ -0,0 +1,71 @@ +# Desktop (Tauri) — Handshake, Sessão de Máquina e Antivírus + +Este documento consolida as orientações e diagnósticos sobre o fluxo do agente desktop, handshake na web e possíveis interferências de antivírus. + +## Sintomas observados +- Ao clicar em “Registrar máquina”, o antivírus aciona (ex.: ATC.SuspiciousBehavior) e o processo é interrompido. +- Após o registro, ao abrir a UI web: cabeçalho mostra “Cliente / Sem e‑mail definido” e o Portal não permite abrir chamados. +- No passado, mesmo quando o app “entrava direto”, o Portal não refletia o colaborador/gestor vinculado (sem assignedUser); receio de repetir o problema. + +## Causas prováveis +1) O antivírus interrompe o processo durante o handshake + - O app salva token/config, inicia heartbeat e abre `GET /machines/handshake?token=...&redirect=...` para gravar cookies de sessão. + - Se o processo cai neste momento, os cookies não são gravados e a UI fica sem sessão “machine”. + +2) Endpoint de contexto sem ler a sessão adequadamente + - O Portal preenche o colaborador/gestor via `GET /api/machines/session`. + - Em alguns ambientes, é mais estável rodar esse endpoint no runtime `nodejs` para ler `cookies()` do Next sem inconsistências. + +## O que já foi aplicado no projeto +- Middleware permite `GET /machines/handshake` sem exigir login (rota pública). +- Frontend preenche `machineContext` chamando `GET /api/machines/session` (assignedUserId/email/nome/persona) e usa esse ID ao abrir chamados. +- UI oculta “Sair” quando a sessão é de máquina (portal e shell interno). +- DevTools habilitado no desktop (F12, Ctrl+Shift+I ou botão direito com Ctrl/Shift). +- Desktop salva dados em `C:\\Raven\\data\\machine-agent.json` (ou equivalente ao lado do executável), com fallback para AppData se a pasta do app não permitir escrita. + +## Validação rápida (após “Registrar máquina”) +1) No executável, com DevTools: + ```js + fetch('/api/machines/session').then(r => r.status).then(console.log) + // Esperado: 200 + fetch('/api/machines/session').then(r => r.json()).then(console.log) + // Deve conter: persona (collaborator|manager), assignedUserEmail/nome/Id + ``` +2) Na UI (Portal/Topo): + - Mostrar nome/e‑mail do colaborador/gestor (não “Cliente / Sem e‑mail definido”). + - Sem botão “Sair” (sessão de máquina). +3) No Portal, o formulário “Abrir chamado” deve habilitar normalmente (usa `machineContext.assignedUserId`). + +Se `GET /api/machines/session` retornar 403: +- Verificar se o antivírus barrou o processo na hora do handshake. +- Adicionar exceção para `C:\\Raven\\appsdesktop.exe` e `C:\\Raven\\data\\`. +- Opcional: forçar `export const runtime = 'nodejs'` no endpoint de sessão para leitura consistente de cookies (Next `cookies()`). + +## Fluxo atual do desktop +- Antes de registrar: tela de onboarding (sem “Abrir sistema”). +- Após registrar: salva token/config, inicia heartbeat e mostra as abas com “Abrir sistema” e “Reprovisionar”. +- Auto‐abrir: o app já tenta abrir o sistema quando detecta token; pode ser reforçado chamando `openSystem()` ao fim do `register()`. + +## Melhorias opcionais +- Auto‑abrir imediatamente após `register()` (reforça o comportamento atual e reduz a janela para interferência do AV). +- Diagnóstico no desktop: exibir caminho completo do arquivo de dados e botão “Abrir pasta de dados”. +- Forçar `nodejs` no `GET /api/machines/session` para estabilidade total na leitura de cookies. + +## Notas sobre antivírus +- Apps Tauri não assinados com certificado de code signing do Windows são frequentemente marcados como “desconhecidos”. +- A assinatura Minisign (updater) não substitui o code signing do executável. +- Recomendações: + - Adicionar exceções para o executável e a pasta de dados. + - Avaliar aquisição de um certificado de code signing (EV/OV) para distribuição ampla sem alertas. + +## Checklist quando “não mudou nada” após registro +- Confirmar `GET /api/machines/session` (status 200 + JSON contendo assignedUser). Caso 403, tratar AV/endpoint runtime. +- Verificar cookies no navegador (DevTools → Application → Cookies): presença da sessão e `machine_ctx`. +- Validar que o Portal mostra o colaborador/gestor e permite abrir chamado. +- Conferir arquivo de dados: + - Preferencial: `C:\\Raven\\data\\machine-agent.json`. + - Fallback: AppData local do usuário (buscar por `machine-agent.json`). + +--- + +Última atualização: automatização do handshake no middleware, ocultação de “Sair” em sessão de máquina, dados persistidos junto ao executável e DevTools habilitado. diff --git a/docs/ticket-snapshots.md b/docs/ticket-snapshots.md new file mode 100644 index 0000000..33964a9 --- /dev/null +++ b/docs/ticket-snapshots.md @@ -0,0 +1,33 @@ +Ticket snapshots e histórico + +Este projeto agora preserva o “lastro” de dados sensíveis em tickets através de snapshots gravados no momento da criação e atualizações chave: + +- requesterSnapshot: nome, e‑mail, avatar e equipes do solicitante no momento da abertura. +- assigneeSnapshot: nome, e‑mail, avatar e equipes do responsável atribuído. +- companySnapshot: nome, slug e flag isAvulso da empresa associada ao ticket. + +Benefícios + +- Tickets continuam exibindo nome do solicitante/empresa mesmo após exclusões ou renomeações. +- Comentários já utilizavam authorSnapshot; a lógica foi mantida e ampliada para tickets. + +Fluxos atualizados + +- Criação de ticket: snapshots do solicitante, responsável inicial (se houver) e da empresa são persistidos. +- Reatribuição e início de atendimento: atualizam o assigneeSnapshot. +- Exclusão de usuário: preenche requesterSnapshot de todos os tickets onde a pessoa é solicitante, antes da remoção. +- Exclusão de empresa: preenche companySnapshot de tickets vinculados, antes da remoção. + +Consultas e hidratação + +- Resolvers de lista e detalhes de tickets passaram a usar os snapshots como fallback quando o documento relacionado não existe mais (sem “Solicitante não encontrado”, salvo ausência total de dados). + +Índices novos + +- tickets.by_tenant_requester: otimiza buscas por histórico de um solicitante. + +Backfill + +- Há uma mutation de migração para preenchimento retroativo de snapshots: convex.migrations.backfillTicketSnapshots. +- Execute com um tenant por vez (e opcionalmente um limite) se necessário. + diff --git a/package.json b/package.json index a3051e2..e9adccc 100644 --- a/package.json +++ b/package.json @@ -52,12 +52,12 @@ "date-fns": "^4.1.0", "dotenv": "^16.4.5", "lucide-react": "^0.544.0", - "next": "15.5.5", + "next": "15.5.6", "next-themes": "^0.4.6", "pdfkit": "^0.17.2", "postcss": "^8.5.6", - "react": "18.2.0", - "react-dom": "18.2.0", + "react": "19.2.0", + "react-dom": "19.2.0", "react-hook-form": "^7.64.0", "recharts": "^2.15.4", "sanitize-html": "^2.17.0", @@ -80,7 +80,7 @@ "@types/sanitize-html": "^2.16.0", "@types/three": "^0.180.0", "eslint": "^9", - "eslint-config-next": "15.5.5", + "eslint-config-next": "15.5.6", "eslint-plugin-react-hooks": "^5.0.0", "prisma": "^6.16.2", "tailwindcss": "^4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6182f8b..fd5a455 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,79 +10,79 @@ importers: dependencies: '@dnd-kit/core': specifier: ^6.3.1 - version: 6.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@dnd-kit/modifiers': specifier: ^9.0.0 - version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) '@dnd-kit/sortable': specifier: ^10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) '@dnd-kit/utilities': specifier: ^3.2.2 - version: 3.2.2(react@18.2.0) + version: 3.2.2(react@19.2.0) '@hookform/resolvers': specifier: ^3.10.0 - version: 3.10.0(react-hook-form@7.64.0(react@18.2.0)) + version: 3.10.0(react-hook-form@7.64.0(react@19.2.0)) '@noble/hashes': specifier: ^1.5.0 version: 1.8.0 '@paper-design/shaders-react': specifier: ^0.0.55 - version: 0.0.55(@types/react@18.3.26)(react@18.2.0) + version: 0.0.55(@types/react@18.3.26)(react@19.2.0) '@prisma/client': specifier: ^6.16.2 version: 6.16.3(prisma@6.16.3(typescript@5.9.3))(typescript@5.9.3) '@radix-ui/react-avatar': specifier: ^1.1.10 - version: 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-checkbox': specifier: ^1.3.3 - version: 1.3.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.3.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-dialog': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-dropdown-menu': specifier: ^2.1.16 - version: 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-label': specifier: ^2.1.7 - version: 2.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-popover': specifier: ^1.1.7 - version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-select': specifier: ^2.2.6 - version: 2.2.6(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.2.6(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-separator': specifier: ^1.1.7 - version: 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-slot': specifier: ^1.2.3 - version: 1.2.3(@types/react@18.3.26)(react@18.2.0) + version: 1.2.3(@types/react@18.3.26)(react@19.2.0) '@radix-ui/react-tabs': specifier: ^1.1.13 - version: 1.1.13(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.13(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-toggle': specifier: ^1.1.10 - version: 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-toggle-group': specifier: ^1.1.11 - version: 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-tooltip': specifier: ^1.2.8 - version: 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@react-pdf/renderer': specifier: ^4.1.5 - version: 4.3.1(react@18.2.0) + version: 4.3.1(react@19.2.0) '@react-three/fiber': specifier: ^9.3.0 - version: 9.3.0(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(three@0.180.0) + version: 9.3.0(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.180.0) '@tabler/icons-react': specifier: ^3.35.0 - version: 3.35.0(react@18.2.0) + version: 3.35.0(react@19.2.0) '@tanstack/react-table': specifier: ^8.21.3 - version: 8.21.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 8.21.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@tiptap/extension-link': specifier: ^3.6.5 version: 3.6.5(@tiptap/core@3.6.5(@tiptap/pm@3.6.5))(@tiptap/pm@3.6.5) @@ -91,13 +91,13 @@ importers: version: 3.6.5(@tiptap/extensions@3.6.5(@tiptap/core@3.6.5(@tiptap/pm@3.6.5))(@tiptap/pm@3.6.5)) '@tiptap/react': specifier: ^3.6.5 - version: 3.6.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.5(@tiptap/pm@3.6.5))(@tiptap/pm@3.6.5)(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 3.6.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.5(@tiptap/pm@3.6.5))(@tiptap/pm@3.6.5)(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@tiptap/starter-kit': specifier: ^3.6.5 version: 3.6.5 better-auth: specifier: ^1.3.26 - version: 1.3.26(next@15.5.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.3.26(next@15.5.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -106,7 +106,7 @@ importers: version: 2.1.1 convex: specifier: ^1.28.0 - version: 1.28.0(react@18.2.0) + version: 1.28.0(react@19.2.0) date-fns: specifier: ^4.1.0 version: 4.1.0 @@ -115,13 +115,13 @@ importers: version: 16.6.1 lucide-react: specifier: ^0.544.0 - version: 0.544.0(react@18.2.0) + version: 0.544.0(react@19.2.0) next: - specifier: 15.5.5 - version: 15.5.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + specifier: 15.5.6 + version: 15.5.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-themes: specifier: ^0.4.6 - version: 0.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) pdfkit: specifier: ^0.17.2 version: 0.17.2 @@ -129,23 +129,23 @@ importers: specifier: ^8.5.6 version: 8.5.6 react: - specifier: 18.2.0 - version: 18.2.0 + specifier: 19.2.0 + version: 19.2.0 react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) + specifier: 19.2.0 + version: 19.2.0(react@19.2.0) react-hook-form: specifier: ^7.64.0 - version: 7.64.0(react@18.2.0) + version: 7.64.0(react@19.2.0) recharts: specifier: ^2.15.4 - version: 2.15.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) sanitize-html: specifier: ^2.17.0 version: 2.17.0 sonner: specifier: ^2.0.7 - version: 2.0.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) tailwind-merge: specifier: ^3.3.1 version: 3.3.1 @@ -154,10 +154,10 @@ importers: version: 0.180.0 unicornstudio-react: specifier: ^1.4.31 - version: 1.4.31(next@15.5.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.4.31(next@15.5.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) vaul: specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 1.1.2(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) zod: specifier: ^4.1.9 version: 4.1.11 @@ -196,8 +196,8 @@ importers: specifier: ^9 version: 9.37.0(jiti@2.6.1) eslint-config-next: - specifier: 15.5.5 - version: 15.5.5(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 15.5.6 + version: 15.5.6(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) eslint-plugin-react-hooks: specifier: ^5.0.0 version: 5.2.0(eslint@9.37.0(jiti@2.6.1)) @@ -919,56 +919,56 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@next/env@15.5.5': - resolution: {integrity: sha512-2Zhvss36s/yL+YSxD5ZL5dz5pI6ki1OLxYlh6O77VJ68sBnlUrl5YqhBgCy7FkdMsp9RBeGFwpuDCdpJOqdKeQ==} + '@next/env@15.5.6': + resolution: {integrity: sha512-3qBGRW+sCGzgbpc5TS1a0p7eNxnOarGVQhZxfvTdnV0gFI61lX7QNtQ4V1TSREctXzYn5NetbUsLvyqwLFJM6Q==} - '@next/eslint-plugin-next@15.5.5': - resolution: {integrity: sha512-FMzm412l9oFB8zdRD+K6HQ1VzlS+sNNsdg0MfvTg0i8lfCyTgP/RFxiu/pGJqZ/IQnzn9xSiLkjOVI7Iv4nbdQ==} + '@next/eslint-plugin-next@15.5.6': + resolution: {integrity: sha512-YxDvsT2fwy1j5gMqk3ppXlsgDopHnkM4BoxSVASbvvgh5zgsK8lvWerDzPip8k3WVzsTZ1O7A7si1KNfN4OZfQ==} - '@next/swc-darwin-arm64@15.5.5': - resolution: {integrity: sha512-lYExGHuFIHeOxf40mRLWoA84iY2sLELB23BV5FIDHhdJkN1LpRTPc1MDOawgTo5ifbM5dvAwnGuHyNm60G1+jw==} + '@next/swc-darwin-arm64@15.5.6': + resolution: {integrity: sha512-ES3nRz7N+L5Umz4KoGfZ4XX6gwHplwPhioVRc25+QNsDa7RtUF/z8wJcbuQ2Tffm5RZwuN2A063eapoJ1u4nPg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.5': - resolution: {integrity: sha512-cacs/WQqa96IhqUm+7CY+z/0j9sW6X80KE07v3IAJuv+z0UNvJtKSlT/T1w1SpaQRa9l0wCYYZlRZUhUOvEVmg==} + '@next/swc-darwin-x64@15.5.6': + resolution: {integrity: sha512-JIGcytAyk9LQp2/nuVZPAtj8uaJ/zZhsKOASTjxDug0SPU9LAM3wy6nPU735M1OqacR4U20LHVF5v5Wnl9ptTA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.5': - resolution: {integrity: sha512-tLd90SvkRFik6LSfuYjcJEmwqcNEnVYVOyKTacSazya/SLlSwy/VYKsDE4GIzOBd+h3gW+FXqShc2XBavccHCg==} + '@next/swc-linux-arm64-gnu@15.5.6': + resolution: {integrity: sha512-qvz4SVKQ0P3/Im9zcS2RmfFL/UCQnsJKJwQSkissbngnB/12c6bZTCB0gHTexz1s6d/mD0+egPKXAIRFVS7hQg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.5': - resolution: {integrity: sha512-ekV76G2R/l3nkvylkfy9jBSYHeB4QcJ7LdDseT6INnn1p51bmDS1eGoSoq+RxfQ7B1wt+Qa0pIl5aqcx0GLpbw==} + '@next/swc-linux-arm64-musl@15.5.6': + resolution: {integrity: sha512-FsbGVw3SJz1hZlvnWD+T6GFgV9/NYDeLTNQB2MXoPN5u9VA9OEDy6fJEfePfsUKAhJufFbZLgp0cPxMuV6SV0w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.5': - resolution: {integrity: sha512-tI+sBu+3FmWtqlqD4xKJcj3KJtqbniLombKTE7/UWyyoHmOyAo3aZ7QcEHIOgInXOG1nt0rwh0KGmNbvSB0Djg==} + '@next/swc-linux-x64-gnu@15.5.6': + resolution: {integrity: sha512-3QnHGFWlnvAgyxFxt2Ny8PTpXtQD7kVEeaFat5oPAHHI192WKYB+VIKZijtHLGdBBvc16tiAkPTDmQNOQ0dyrA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.5': - resolution: {integrity: sha512-kDRh+epN/ulroNJLr+toDjN+/JClY5L+OAWjOrrKCI0qcKvTw9GBx7CU/rdA2bgi4WpZN3l0rf/3+b8rduEwrQ==} + '@next/swc-linux-x64-musl@15.5.6': + resolution: {integrity: sha512-OsGX148sL+TqMK9YFaPFPoIaJKbFJJxFzkXZljIgA9hjMjdruKht6xDCEv1HLtlLNfkx3c5w2GLKhj7veBQizQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.5.5': - resolution: {integrity: sha512-GDgdNPFFqiKjTrmfw01sMMRWhVN5wOCmFzPloxa7ksDfX6TZt62tAK986f0ZYqWpvDFqeBCLAzmgTURvtQBdgw==} + '@next/swc-win32-arm64-msvc@15.5.6': + resolution: {integrity: sha512-ONOMrqWxdzXDJNh2n60H6gGyKed42Ieu6UTVPZteXpuKbLZTH4G4eBMsr5qWgOBA+s7F+uB4OJbZnrkEDnZ5Fg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.5': - resolution: {integrity: sha512-5kE3oRJxc7M8RmcTANP8RGoJkaYlwIiDD92gSwCjJY0+j8w8Sl1lvxgQ3bxfHY2KkHFai9tpy/Qx1saWV8eaJQ==} + '@next/swc-win32-x64-msvc@15.5.6': + resolution: {integrity: sha512-pxK4VIjFRx1MY92UycLOOw7dTdvccWsNETQ0kDHkBlcFH1GrTLUjSiHU1ohrznnux6TqRHgv5oflhfIWZwVROQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -2886,8 +2886,8 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-next@15.5.5: - resolution: {integrity: sha512-f8lRSSelp6cqrYjxEMjJ5En3WV913gTu/w9goYShnIujwDSQlKt4x9MwSDiduE9R5mmFETK44+qlQDxeSA0rUA==} + eslint-config-next@15.5.6: + resolution: {integrity: sha512-cGr3VQlPsZBEv8rtYp4BpG1KNXDqGvPo9VC1iaCgIA11OfziC/vczng+TnAS3WpRIR3Q5ye/6yl+CRUuZ1fPGg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 typescript: '>=3.3.1' @@ -3589,8 +3589,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.5.5: - resolution: {integrity: sha512-OQVdBPtpBfq7HxFN0kOVb7rXXOSIkt5lTzDJDGRBcOyVvNRIWFauMqi1gIHd1pszq1542vMOGY0HP4CaiALfkA==} + next@15.5.6: + resolution: {integrity: sha512-zTxsnI3LQo3c9HSdSf91O1jMNsEzIXDShXd4wVdg9y5shwLqBXi4ZtUUJyB86KGVSJLZx0PFONvO54aheGX8QQ==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} hasBin: true peerDependencies: @@ -3860,11 +3860,6 @@ packages: rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - react-dom@18.2.0: - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 - react-dom@19.2.0: resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} peerDependencies: @@ -3943,10 +3938,6 @@ packages: react-dom: optional: true - react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} - react@19.2.0: resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} engines: {node: '>=0.10.0'} @@ -4035,9 +4026,6 @@ packages: sanitize-html@2.17.0: resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - scheduler@0.25.0: resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} @@ -4676,36 +4664,36 @@ snapshots: '@dimforge/rapier3d-compat@0.12.0': {} - '@dnd-kit/accessibility@3.1.1(react@18.2.0)': + '@dnd-kit/accessibility@3.1.1(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 tslib: 2.8.1 - '@dnd-kit/core@6.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@dnd-kit/accessibility': 3.1.1(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@dnd-kit/accessibility': 3.1.1(react@19.2.0) + '@dnd-kit/utilities': 3.2.2(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) tslib: 2.8.1 - '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': + '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 + '@dnd-kit/core': 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@dnd-kit/utilities': 3.2.2(react@19.2.0) + react: 19.2.0 tslib: 2.8.1 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@dnd-kit/utilities': 3.2.2(react@18.2.0) - react: 18.2.0 + '@dnd-kit/core': 6.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@dnd-kit/utilities': 3.2.2(react@19.2.0) + react: 19.2.0 tslib: 2.8.1 - '@dnd-kit/utilities@3.2.2(react@18.2.0)': + '@dnd-kit/utilities@3.2.2(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 tslib: 2.8.1 '@emnapi/core@1.5.0': @@ -4923,19 +4911,19 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@floating-ui/dom': 1.7.4 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) '@floating-ui/utils@0.2.10': {} '@hexagon/base64@1.1.28': {} - '@hookform/resolvers@3.10.0(react-hook-form@7.64.0(react@18.2.0))': + '@hookform/resolvers@3.10.0(react-hook-form@7.64.0(react@19.2.0))': dependencies: - react-hook-form: 7.64.0(react@18.2.0) + react-hook-form: 7.64.0(react@19.2.0) '@humanfs/core@0.19.1': {} @@ -5069,34 +5057,34 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@15.5.5': {} + '@next/env@15.5.6': {} - '@next/eslint-plugin-next@15.5.5': + '@next/eslint-plugin-next@15.5.6': dependencies: fast-glob: 3.3.1 - '@next/swc-darwin-arm64@15.5.5': + '@next/swc-darwin-arm64@15.5.6': optional: true - '@next/swc-darwin-x64@15.5.5': + '@next/swc-darwin-x64@15.5.6': optional: true - '@next/swc-linux-arm64-gnu@15.5.5': + '@next/swc-linux-arm64-gnu@15.5.6': optional: true - '@next/swc-linux-arm64-musl@15.5.5': + '@next/swc-linux-arm64-musl@15.5.6': optional: true - '@next/swc-linux-x64-gnu@15.5.5': + '@next/swc-linux-x64-gnu@15.5.6': optional: true - '@next/swc-linux-x64-musl@15.5.5': + '@next/swc-linux-x64-musl@15.5.6': optional: true - '@next/swc-win32-arm64-msvc@15.5.5': + '@next/swc-win32-arm64-msvc@15.5.6': optional: true - '@next/swc-win32-x64-msvc@15.5.5': + '@next/swc-win32-x64-msvc@15.5.6': optional: true '@noble/ciphers@2.0.1': {} @@ -5119,10 +5107,10 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@paper-design/shaders-react@0.0.55(@types/react@18.3.26)(react@18.2.0)': + '@paper-design/shaders-react@0.0.55(@types/react@18.3.26)(react@19.2.0)': dependencies: '@paper-design/shaders': 0.0.55 - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5263,52 +5251,52 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-avatar@1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-avatar@1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-checkbox@1.3.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) @@ -5325,9 +5313,9 @@ snapshots: '@types/react': 19.2.0 '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@18.3.26)(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5337,9 +5325,9 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-context@1.1.2(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-context@1.1.2(@types/react@18.3.26)(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5349,31 +5337,31 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) aria-hidden: 1.2.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-direction@1.1.1(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-direction@1.1.1(@types/react@18.3.26)(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5383,55 +5371,55 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@18.3.26)(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-id@1.1.1(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-id@1.1.1(@types/react@18.3.26)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5442,98 +5430,98 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-label@2.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-label@2.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.2.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@19.2.0) aria-hidden: 1.2.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-popover@1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) aria-hidden: 1.2.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-popper@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@floating-ui/react-dom': 2.1.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.26)(react@18.2.0) + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@18.3.26)(react@19.2.0) '@radix-ui/rect': 1.1.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) @@ -5548,11 +5536,11 @@ snapshots: '@types/react': 19.2.0 '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) @@ -5566,19 +5554,19 @@ snapshots: '@types/react': 19.2.0 '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) @@ -5600,48 +5588,48 @@ snapshots: '@types/react': 19.2.0 '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-select@2.2.6(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-select@2.2.6(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) aria-hidden: 1.2.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@18.3.26)(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-separator@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-slot@1.2.3(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-slot@1.2.3(@types/react@18.3.26)(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5652,18 +5640,18 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-tabs@1.1.13(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-tabs@1.1.13(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) @@ -5684,55 +5672,55 @@ snapshots: '@types/react': 19.2.0 '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-toggle@1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@18.3.26)(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5742,11 +5730,11 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@18.3.26)(react@19.2.0)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.26)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@18.3.26)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5758,10 +5746,10 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@18.3.26)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5772,23 +5760,23 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@18.3.26)(react@19.2.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@18.3.26)(react@19.2.0)': dependencies: - react: 18.2.0 - use-sync-external-store: 1.6.0(react@18.2.0) + react: 19.2.0 + use-sync-external-store: 1.6.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@18.3.26)(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 @@ -5798,31 +5786,31 @@ snapshots: optionalDependencies: '@types/react': 19.2.0 - '@radix-ui/react-use-previous@1.1.1(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@18.3.26)(react@19.2.0)': dependencies: - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 - '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@18.3.26)(react@19.2.0)': dependencies: '@radix-ui/rect': 1.1.1 - react: 18.2.0 + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 - '@radix-ui/react-use-size@1.1.1(@types/react@18.3.26)(react@18.2.0)': + '@radix-ui/react-use-size@1.1.1(@types/react@18.3.26)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 optionalDependencies: '@types/react': 18.3.26 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 '@types/react-dom': 18.3.7(@types/react@18.3.26) @@ -5872,10 +5860,10 @@ snapshots: '@react-pdf/primitives@4.1.1': {} - '@react-pdf/reconciler@1.1.4(react@18.2.0)': + '@react-pdf/reconciler@1.1.4(react@19.2.0)': dependencies: object-assign: 4.1.1 - react: 18.2.0 + react: 19.2.0 scheduler: 0.25.0-rc-603e6108-20241029 '@react-pdf/render@4.3.1': @@ -5891,7 +5879,7 @@ snapshots: parse-svg-path: 0.1.2 svg-arc-to-cubic-bezier: 3.2.0 - '@react-pdf/renderer@4.3.1(react@18.2.0)': + '@react-pdf/renderer@4.3.1(react@19.2.0)': dependencies: '@babel/runtime': 7.28.4 '@react-pdf/fns': 3.1.2 @@ -5899,14 +5887,14 @@ snapshots: '@react-pdf/layout': 4.4.1 '@react-pdf/pdfkit': 4.0.4 '@react-pdf/primitives': 4.1.1 - '@react-pdf/reconciler': 1.1.4(react@18.2.0) + '@react-pdf/reconciler': 1.1.4(react@19.2.0) '@react-pdf/render': 4.3.1 '@react-pdf/types': 2.9.1 events: 3.3.0 object-assign: 4.1.1 prop-types: 15.8.1 queue: 6.0.2 - react: 18.2.0 + react: 19.2.0 '@react-pdf/stylesheet@6.1.1': dependencies: @@ -5930,24 +5918,24 @@ snapshots: '@react-pdf/primitives': 4.1.1 '@react-pdf/stylesheet': 6.1.1 - '@react-three/fiber@9.3.0(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(three@0.180.0)': + '@react-three/fiber@9.3.0(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.180.0)': dependencies: '@babel/runtime': 7.28.4 '@types/react-reconciler': 0.32.1(@types/react@18.3.26) '@types/webxr': 0.5.24 base64-js: 1.5.1 buffer: 6.0.3 - its-fine: 2.0.0(@types/react@18.3.26)(react@18.2.0) - react: 18.2.0 - react-reconciler: 0.31.0(react@18.2.0) - react-use-measure: 2.1.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + its-fine: 2.0.0(@types/react@18.3.26)(react@19.2.0) + react: 19.2.0 + react-reconciler: 0.31.0(react@19.2.0) + react-use-measure: 2.1.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) scheduler: 0.25.0 - suspend-react: 0.1.3(react@18.2.0) + suspend-react: 0.1.3(react@19.2.0) three: 0.180.0 - use-sync-external-store: 1.6.0(react@18.2.0) - zustand: 5.0.8(@types/react@18.3.26)(react@18.2.0)(use-sync-external-store@1.6.0(react@18.2.0)) + use-sync-external-store: 1.6.0(react@19.2.0) + zustand: 5.0.8(@types/react@18.3.26)(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)) optionalDependencies: - react-dom: 18.2.0(react@18.2.0) + react-dom: 19.2.0(react@19.2.0) transitivePeerDependencies: - '@types/react' - immer @@ -6045,10 +6033,10 @@ snapshots: dependencies: tslib: 2.8.1 - '@tabler/icons-react@3.35.0(react@18.2.0)': + '@tabler/icons-react@3.35.0(react@19.2.0)': dependencies: '@tabler/icons': 3.35.0 - react: 18.2.0 + react: 19.2.0 '@tabler/icons@3.35.0': {} @@ -6124,11 +6112,11 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.14 - '@tanstack/react-table@8.21.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@tanstack/react-table@8.21.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@tanstack/table-core': 8.21.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) '@tanstack/table-core@8.21.3': {} @@ -6334,7 +6322,7 @@ snapshots: prosemirror-transform: 1.10.4 prosemirror-view: 1.41.2 - '@tiptap/react@3.6.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.5(@tiptap/pm@3.6.5))(@tiptap/pm@3.6.5)(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@tiptap/react@3.6.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.5(@tiptap/pm@3.6.5))(@tiptap/pm@3.6.5)(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@tiptap/core': 3.6.5(@tiptap/pm@3.6.5) '@tiptap/pm': 3.6.5 @@ -6342,9 +6330,9 @@ snapshots: '@types/react-dom': 18.3.7(@types/react@18.3.26) '@types/use-sync-external-store': 0.0.6 fast-deep-equal: 3.1.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - use-sync-external-store: 1.6.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + use-sync-external-store: 1.6.0(react@19.2.0) optionalDependencies: '@tiptap/extension-bubble-menu': 3.6.5(@tiptap/core@3.6.5(@tiptap/pm@3.6.5))(@tiptap/pm@3.6.5) '@tiptap/extension-floating-menu': 3.6.5(@floating-ui/dom@1.7.4)(@tiptap/core@3.6.5(@tiptap/pm@3.6.5))(@tiptap/pm@3.6.5) @@ -6830,7 +6818,7 @@ snapshots: baseline-browser-mapping@2.8.16: {} - better-auth@1.3.26(next@15.5.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + better-auth@1.3.26(next@15.5.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@better-auth/core': 1.3.26 '@better-auth/utils': 0.3.0 @@ -6846,9 +6834,9 @@ snapshots: nanostores: 1.0.1 zod: 4.1.11 optionalDependencies: - next: 15.5.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + next: 15.5.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) better-call@1.0.19: dependencies: @@ -6988,12 +6976,12 @@ snapshots: convert-source-map@2.0.0: {} - convex@1.28.0(react@18.2.0): + convex@1.28.0(react@19.2.0): dependencies: esbuild: 0.25.4 prettier: 3.6.2 optionalDependencies: - react: 18.2.0 + react: 19.2.0 crelt@1.0.6: {} @@ -7323,9 +7311,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-next@15.5.5(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): + eslint-config-next@15.5.6(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@next/eslint-plugin-next': 15.5.5 + '@next/eslint-plugin-next': 15.5.6 '@rushstack/eslint-patch': 1.13.0 '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) @@ -7877,10 +7865,10 @@ snapshots: has-symbols: 1.1.0 set-function-name: 2.0.2 - its-fine@2.0.0(@types/react@18.3.26)(react@18.2.0): + its-fine@2.0.0(@types/react@18.3.26)(react@19.2.0): dependencies: '@types/react-reconciler': 0.28.9(@types/react@18.3.26) - react: 18.2.0 + react: 19.2.0 transitivePeerDependencies: - '@types/react' @@ -8012,10 +8000,6 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@0.544.0(react@18.2.0): - dependencies: - react: 18.2.0 - lucide-react@0.544.0(react@19.2.0): dependencies: react: 19.2.0 @@ -8074,29 +8058,29 @@ snapshots: natural-compare@1.4.0: {} - next-themes@0.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next-themes@0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) - next@15.5.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + next@15.5.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@next/env': 15.5.5 + '@next/env': 15.5.6 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001747 postcss: 8.4.31 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.6(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.1.6(react@19.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.5 - '@next/swc-darwin-x64': 15.5.5 - '@next/swc-linux-arm64-gnu': 15.5.5 - '@next/swc-linux-arm64-musl': 15.5.5 - '@next/swc-linux-x64-gnu': 15.5.5 - '@next/swc-linux-x64-musl': 15.5.5 - '@next/swc-win32-arm64-msvc': 15.5.5 - '@next/swc-win32-x64-msvc': 15.5.5 + '@next/swc-darwin-arm64': 15.5.6 + '@next/swc-darwin-x64': 15.5.6 + '@next/swc-linux-arm64-gnu': 15.5.6 + '@next/swc-linux-arm64-musl': 15.5.6 + '@next/swc-linux-x64-gnu': 15.5.6 + '@next/swc-linux-x64-musl': 15.5.6 + '@next/swc-win32-arm64-msvc': 15.5.6 + '@next/swc-win32-x64-msvc': 15.5.6 sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' @@ -8396,85 +8380,75 @@ snapshots: defu: 6.1.4 destr: 2.0.5 - react-dom@18.2.0(react@18.2.0): - dependencies: - loose-envify: 1.4.0 - react: 18.2.0 - scheduler: 0.23.2 - react-dom@19.2.0(react@19.2.0): dependencies: react: 19.2.0 scheduler: 0.27.0 - react-hook-form@7.64.0(react@18.2.0): + react-hook-form@7.64.0(react@19.2.0): dependencies: - react: 18.2.0 + react: 19.2.0 react-is@16.13.1: {} react-is@18.3.1: {} - react-reconciler@0.31.0(react@18.2.0): + react-reconciler@0.31.0(react@19.2.0): dependencies: - react: 18.2.0 + react: 19.2.0 scheduler: 0.25.0 react-refresh@0.17.0: {} - react-remove-scroll-bar@2.3.8(@types/react@18.3.26)(react@18.2.0): + react-remove-scroll-bar@2.3.8(@types/react@18.3.26)(react@19.2.0): dependencies: - react: 18.2.0 - react-style-singleton: 2.2.3(@types/react@18.3.26)(react@18.2.0) + react: 19.2.0 + react-style-singleton: 2.2.3(@types/react@18.3.26)(react@19.2.0) tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.26 - react-remove-scroll@2.7.1(@types/react@18.3.26)(react@18.2.0): + react-remove-scroll@2.7.1(@types/react@18.3.26)(react@19.2.0): dependencies: - react: 18.2.0 - react-remove-scroll-bar: 2.3.8(@types/react@18.3.26)(react@18.2.0) - react-style-singleton: 2.2.3(@types/react@18.3.26)(react@18.2.0) + react: 19.2.0 + react-remove-scroll-bar: 2.3.8(@types/react@18.3.26)(react@19.2.0) + react-style-singleton: 2.2.3(@types/react@18.3.26)(react@19.2.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@18.3.26)(react@18.2.0) - use-sidecar: 1.1.3(@types/react@18.3.26)(react@18.2.0) + use-callback-ref: 1.3.3(@types/react@18.3.26)(react@19.2.0) + use-sidecar: 1.1.3(@types/react@18.3.26)(react@19.2.0) optionalDependencies: '@types/react': 18.3.26 - react-smooth@4.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-smooth@4.0.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: fast-equals: 5.3.2 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-style-singleton@2.2.3(@types/react@18.3.26)(react@18.2.0): + react-style-singleton@2.2.3(@types/react@18.3.26)(react@19.2.0): dependencies: get-nonce: 1.0.1 - react: 18.2.0 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.26 - react-transition-group@4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-transition-group@4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@babel/runtime': 7.28.4 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) - react-use-measure@2.1.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + react-use-measure@2.1.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 18.2.0 + react: 19.2.0 optionalDependencies: - react-dom: 18.2.0(react@18.2.0) - - react@18.2.0: - dependencies: - loose-envify: 1.4.0 + react-dom: 19.2.0(react@19.2.0) react@19.2.0: {} @@ -8484,15 +8458,15 @@ snapshots: dependencies: decimal.js-light: 2.5.1 - recharts@2.15.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + recharts@2.15.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 lodash: 4.17.21 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) react-is: 18.3.1 - react-smooth: 4.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-smooth: 4.0.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) recharts-scale: 0.4.5 tiny-invariant: 1.3.3 victory-vendor: 36.9.2 @@ -8607,10 +8581,6 @@ snapshots: parse-srcset: 1.0.2 postcss: 8.5.6 - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - scheduler@0.25.0: {} scheduler@0.25.0-rc-603e6108-20241029: {} @@ -8715,10 +8685,10 @@ snapshots: dependencies: is-arrayish: 0.3.4 - sonner@2.0.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + sonner@2.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) source-map-js@1.2.1: {} @@ -8791,10 +8761,10 @@ snapshots: strip-json-comments@3.1.1: {} - styled-jsx@5.1.6(react@18.2.0): + styled-jsx@5.1.6(react@19.2.0): dependencies: client-only: 0.0.1 - react: 18.2.0 + react: 19.2.0 supports-color@7.2.0: dependencies: @@ -8802,9 +8772,9 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - suspend-react@0.1.3(react@18.2.0): + suspend-react@0.1.3(react@19.2.0): dependencies: - react: 18.2.0 + react: 19.2.0 svg-arc-to-cubic-bezier@3.2.0: {} @@ -8934,12 +8904,12 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 - unicornstudio-react@1.4.31(next@15.5.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + unicornstudio-react@1.4.31(next@15.5.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - next: 15.5.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next: 15.5.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) unrs-resolver@1.11.1: dependencies: @@ -8975,32 +8945,32 @@ snapshots: dependencies: punycode: 2.3.1 - use-callback-ref@1.3.3(@types/react@18.3.26)(react@18.2.0): + use-callback-ref@1.3.3(@types/react@18.3.26)(react@19.2.0): dependencies: - react: 18.2.0 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.26 - use-sidecar@1.1.3(@types/react@18.3.26)(react@18.2.0): + use-sidecar@1.1.3(@types/react@18.3.26)(react@19.2.0): dependencies: detect-node-es: 1.1.0 - react: 18.2.0 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: '@types/react': 18.3.26 - use-sync-external-store@1.6.0(react@18.2.0): + use-sync-external-store@1.6.0(react@19.2.0): dependencies: - react: 18.2.0 + react: 19.2.0 util-deprecate@1.0.2: {} - vaul@1.1.2(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + vaul@1.1.2(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.26))(@types/react@18.3.26)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -9169,8 +9139,8 @@ snapshots: zod@4.1.11: {} - zustand@5.0.8(@types/react@18.3.26)(react@18.2.0)(use-sync-external-store@1.6.0(react@18.2.0)): + zustand@5.0.8(@types/react@18.3.26)(react@19.2.0)(use-sync-external-store@1.6.0(react@19.2.0)): optionalDependencies: '@types/react': 18.3.26 - react: 18.2.0 - use-sync-external-store: 1.6.0(react@18.2.0) + react: 19.2.0 + use-sync-external-store: 1.6.0(react@19.2.0) diff --git a/src/app/admin/companies/page.tsx b/src/app/admin/companies/page.tsx index d8df1f1..ceaaf8b 100644 --- a/src/app/admin/companies/page.tsx +++ b/src/app/admin/companies/page.tsx @@ -7,24 +7,39 @@ export const runtime = "nodejs" export const dynamic = "force-dynamic" export default async function AdminCompaniesPage() { - const companiesRaw = await prisma.company.findMany({ orderBy: { name: "asc" } }) - const companies = companiesRaw.map((c) => { - const extra = c as unknown as { isAvulso?: boolean; contractedHoursPerMonth?: number | null } - return { - id: c.id, - tenantId: c.tenantId, - name: c.name, - slug: c.slug, - provisioningCode: c.provisioningCode ?? null, - isAvulso: Boolean(extra.isAvulso ?? false), - contractedHoursPerMonth: extra.contractedHoursPerMonth ?? null, - cnpj: c.cnpj ?? null, - domain: c.domain ?? null, - phone: c.phone ?? null, - description: c.description ?? null, - address: c.address ?? null, - } + const companiesRaw = await prisma.company.findMany({ + orderBy: { name: "asc" }, + select: { + id: true, + tenantId: true, + name: true, + slug: true, + provisioningCode: true, + isAvulso: true, + contractedHoursPerMonth: true, + cnpj: true, + domain: true, + phone: true, + description: true, + address: true, + createdAt: true, + updatedAt: true, + }, }) + const companies = companiesRaw.map((c) => ({ + id: c.id, + tenantId: c.tenantId, + name: c.name, + slug: c.slug, + provisioningCode: c.provisioningCode ?? null, + isAvulso: Boolean(c.isAvulso ?? false), + contractedHoursPerMonth: c.contractedHoursPerMonth ?? null, + cnpj: c.cnpj ?? null, + domain: c.domain ?? null, + phone: c.phone ?? null, + description: c.description ?? null, + address: c.address ?? null, + })) return ( | undefined if (collaborator) { - const ensuredUser = (await client.mutation(api.users.ensureUser, { + const ensuredUser = await client.mutation(api.users.ensureUser, { tenantId, email: collaborator.email, name: collaborator.name ?? collaborator.email, avatarUrl: undefined, role: persona?.toUpperCase(), companyId: registration.companyId ? (registration.companyId as Id<"companies">) : undefined, - })) as { _id?: Id<"users"> } | null + }) await ensureCollaboratorAccount({ email: collaborator.email, diff --git a/src/components/admin/admin-users-manager.tsx b/src/components/admin/admin-users-manager.tsx index b83a394..e7a2665 100644 --- a/src/components/admin/admin-users-manager.tsx +++ b/src/components/admin/admin-users-manager.tsx @@ -648,8 +648,6 @@ export function AdminUsersManager({ initialUsers, initialInvites, roleOptions, d const somePeopleSelected = selectedPeopleUsers.length > 0 && !allPeopleSelected const selectedMachineUsers = useMemo(() => filteredMachineUsers.filter((u) => machineSelection.has(u.id)), [filteredMachineUsers, machineSelection]) - const allMachinesSelected = selectedMachineUsers.length > 0 && selectedMachineUsers.length === filteredMachineUsers.length - const someMachinesSelected = selectedMachineUsers.length > 0 && !allMachinesSelected const [inviteSelection, setInviteSelection] = useState>(new Set()) const selectedInvites = useMemo(() => invites.filter((i) => inviteSelection.has(i.id)), [invites, inviteSelection]) diff --git a/src/components/admin/machines/admin-machines-overview.tsx b/src/components/admin/machines/admin-machines-overview.tsx index 7bf3c8d..c55d32e 100644 --- a/src/components/admin/machines/admin-machines-overview.tsx +++ b/src/components/admin/machines/admin-machines-overview.tsx @@ -982,12 +982,9 @@ export function MachineDetails({ machine }: MachineDetailsProps) { api.companies.list, companyQueryArgs ?? ("skip" as const) ) as Array<{ id: string; name: string; slug?: string }> | undefined - // Convex codegen precisa ser atualizado para tipar `machines.listAlerts`. - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const machinesApi: any = api const alertsHistory = useQuery( - machine && machinesApi?.machines?.listAlerts ? machinesApi.machines.listAlerts : "skip", - machine && machinesApi?.machines?.listAlerts ? { machineId: machine.id as Id<"machines">, limit: 50 } : ("skip" as const) + machine ? api.machines.listAlerts : "skip", + machine ? { machineId: machine.id as Id<"machines">, limit: 50 } : ("skip" as const) ) as MachineAlertEntry[] | undefined const machineAlertsHistory = alertsHistory ?? [] const metadata = machine?.inventory ?? null diff --git a/src/components/app-sidebar.tsx b/src/components/app-sidebar.tsx index 36adb54..21e0a0c 100644 --- a/src/components/app-sidebar.tsx +++ b/src/components/app-sidebar.tsx @@ -16,7 +16,6 @@ import { Timer, MonitorCog, UserPlus, - BellRing, ChevronDown, ShieldCheck, Users, diff --git a/src/components/tickets/ticket-summary-header.tsx b/src/components/tickets/ticket-summary-header.tsx index efc7fde..beb02c9 100644 --- a/src/components/tickets/ticket-summary-header.tsx +++ b/src/components/tickets/ticket-summary-header.tsx @@ -419,7 +419,9 @@ export function TicketSummaryHeader({ ticket }: TicketHeaderProps) { }) }, [workSummaryRemote, calibrateServerOffset]) - const isPlaying = Boolean(workSummary?.activeSession) + const activeSessionId = workSummary?.activeSession?.id ?? null + const activeSessionStartedAt = workSummary?.activeSession?.startedAt ?? null + const isPlaying = Boolean(activeSessionId) const [now, setNow] = useState(() => Date.now()) // Guarda um marcador local do início da sessão atual para evitar inflar tempo com // timestamps defasados vindos da rede. Escolhemos o MAIOR entre (remoto, local). @@ -427,28 +429,28 @@ export function TicketSummaryHeader({ ticket }: TicketHeaderProps) { const localStartOriginRef = useRef("unknown") useEffect(() => { - if (!workSummary?.activeSession) return + if (!activeSessionId) return const interval = setInterval(() => { setNow(Date.now()) }, 1000) return () => clearInterval(interval) - }, [workSummary?.activeSession?.id]) + }, [activeSessionId]) // Sempre que a sessão ativa (id) mudar, sincroniza o ponteiro local useEffect(() => { - if (!workSummary?.activeSession) { + if (!activeSessionId) { localStartAtRef.current = 0 localStartOriginRef.current = "unknown" return } const { localStart, origin } = reconcileLocalSessionStart({ - remoteStart: Number(workSummary.activeSession.startedAt) || 0, + remoteStart: Number(activeSessionStartedAt) || 0, localStart: localStartAtRef.current, origin: localStartOriginRef.current, }) localStartAtRef.current = localStart localStartOriginRef.current = origin - }, [workSummary?.activeSession?.id, workSummary?.activeSession?.startedAt]) + }, [activeSessionId, activeSessionStartedAt]) useEffect(() => { if (!pauseDialogOpen) {