From 9a7ae0fa3dc18cfab222495f5898c04a4989f56c Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Thu, 9 Apr 2026 19:35:52 +0000 Subject: [PATCH 01/32] =?UTF-8?q?fix(docker):=20adicionar=20NODE=5FPATH=20?= =?UTF-8?q?no=20entrypoint=20para=20resolu=C3=A7=C3=A3o=20do=20drizzle-orm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrige erro "Cannot find module 'drizzle-orm'" ao rodar migrations no container — o drizzle-kit em /app/migrate/ não encontrava o módulo sem NODE_PATH apontando para o node_modules isolado. Closes #34 Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 6 ++++++ README.md | 2 +- docker-entrypoint.sh | 2 +- package.json | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebe6579..d1c900e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR ## [Unreleased] +## [2.3.6] - 2026-04-09 + +### Corrigido + +- Docker: adicionado `NODE_PATH=/app/migrate/node_modules` no entrypoint para que o `drizzle-kit` consiga resolver `drizzle-orm` ao executar as migrations no container + ## [2.3.5] - 2026-04-07 ### Corrigido diff --git a/README.md b/README.md index fa1560b..8decd56 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ > **⚠️ Não há versão online hospedada.** Você precisa clonar o repositório e rodar localmente ou no seu próprio servidor. -[![Version](https://img.shields.io/badge/version-2.3.5-blue?style=flat-square)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/version-2.3.6-blue?style=flat-square)](CHANGELOG.md) [![Next.js](https://img.shields.io/badge/Next.js-black?style=flat-square&logo=next.js)](https://nextjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org/) [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-blue?style=flat-square&logo=postgresql)](https://www.postgresql.org/) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index d0ee356..a48d2bc 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -2,7 +2,7 @@ echo "Rodando migrations..." RETRIES=5 -until /app/migrate/node_modules/.bin/drizzle-kit push || [ "$RETRIES" -eq 0 ]; do +until NODE_PATH=/app/migrate/node_modules /app/migrate/node_modules/.bin/drizzle-kit push || [ "$RETRIES" -eq 0 ]; do RETRIES=$((RETRIES - 1)) echo "Migration falhou, aguardando banco... ($RETRIES tentativas restantes)" sleep 5 diff --git a/package.json b/package.json index 7df4dd3..29d068f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openmonetis", - "version": "2.3.5", + "version": "2.3.6", "private": true, "packageManager": "pnpm@10.33.0", "scripts": { From aa85cf8b29a191dbef6b014c4a39c148b5dd1ac9 Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 17:50:44 +0000 Subject: [PATCH 02/32] =?UTF-8?q?fix(docker,s3):=20corrigir=20CRLF=20no=20?= =?UTF-8?q?entrypoint=20e=20regi=C3=A3o=20S3=20vazia=20=E2=80=94=20v2.3.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Adicionado .gitattributes com eol=lf para scripts shell e Dockerfile - Dockerfile: sed -i 's/\r$//' no entrypoint para eliminar CRLF em ambientes Windows/WSL2 - s3-client.ts: substituído ?? por || para tratar string vazia em S3_REGION e demais vars - CHANGELOG, package.json e lockfile atualizados para v2.3.7 Co-Authored-By: Claude Sonnet 4.6 --- .gitattributes | 4 + CHANGELOG.md | 25 + Dockerfile | 4 +- package.json | 69 +- pnpm-lock.yaml | 2802 ++++++++++++++------------- src/shared/lib/storage/s3-client.ts | 10 +- 6 files changed, 1492 insertions(+), 1422 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2e1191e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +# Força LF para arquivos que precisam de line endings Unix no container +*.sh text eol=lf +docker-entrypoint.sh text eol=lf +Dockerfile text eol=lf diff --git a/CHANGELOG.md b/CHANGELOG.md index d1c900e..85a6ac4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,31 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR ## [Unreleased] +## [2.3.7] - 2026-04-11 + +### Adicionado + +- Dashboard: novos widgets configuráveis — Anexos (resumo de arquivos do período), Inbox (snapshot de pré-lançamentos pendentes) e Tendências de Categoria +- Lançamentos: filtro por status de pagamento (somente pagos / somente não pagos) e filtro por presença de anexo +- Lançamentos: indicador visual no status de liquidação para lançamentos de cartão de crédito com fatura paga — exibe ícone verde com tooltip explicativo +- Scripts: `scripts/install-deps.sh` — script de preparação para servidores Ubuntu 24.04 limpos (instala Docker, Node.js 22, pnpm via Homebrew) + +### Alterado + +- Fonte: substituída fonte local `America` por `Inter` (Google Fonts, self-hosted pelo Next.js) — elimina arquivos `.woff2` do repositório +- Tipografia: peso tipográfico padronizado de `font-medium` para `font-semibold` em títulos, rótulos e valores monetários em toda a interface +- Parcelas: redesenho do card de grupo de parcelas — expandindo para dialog de detalhes com parcelas pagas/pendentes separadas +- Inbox: redesenho do card de pré-lançamento — logo maior, hierarquia tipográfica melhorada +- Lançamentos: filtros de tipo, condição e forma de pagamento agora usam slugs em URL (ex: `receita` em vez do valor literal com acentos) +- Estabelecimento: popover de autocomplete agora respeita a largura do input ao abrir +- CSP: adicionado `frame-src` para permitir preview de anexos PDF via S3 + +### Corrigido + +- Docker: corrigido crash loop no container com mensagem `exec /app/docker-entrypoint.sh: no such file or directory` causado por CRLF no `docker-entrypoint.sh` em ambientes Windows/WSL2 — adicionado `sed -i 's/\r$//'` no Dockerfile e `.gitattributes` com `eol=lf` para scripts shell +- S3: corrigido `Error: Region is missing` ao usar o app sem S3 configurado — `S3_REGION` vazio (string vazia) não era tratado pelo operador `??`; substituído por `||` em todo o `s3-client.ts` +- i18n: corrigidas mensagens de erro que exibiam "Payer" em inglês em vez de "Pagador" + ## [2.3.6] - 2026-04-09 ### Corrigido diff --git a/Dockerfile b/Dockerfile index 957f48e..14895ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -87,7 +87,9 @@ COPY --from=builder --chown=nextjs:nodejs /app/src/db ./src/db # Copiar entrypoint de migrations COPY docker-entrypoint.sh ./ -RUN chmod +x /app/docker-entrypoint.sh && chown nextjs:nodejs /app/docker-entrypoint.sh +RUN sed -i 's/\r$//' /app/docker-entrypoint.sh && \ + chmod +x /app/docker-entrypoint.sh && \ + chown nextjs:nodejs /app/docker-entrypoint.sh # Definir variáveis de ambiente de produção ENV NODE_ENV=production \ diff --git a/package.json b/package.json index 29d068f..5ca92a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openmonetis", - "version": "2.3.6", + "version": "2.3.7", "private": true, "packageManager": "pnpm@10.33.0", "scripts": { @@ -17,30 +17,56 @@ "db:push": "drizzle-kit push", "db:extensions": "tsx scripts/postgres/enable-extensions.ts", "db:studio": "drizzle-kit studio", - "docker:up": "docker compose up --build", "postinstall": "cp node_modules/pdfjs-dist/build/pdf.worker.min.mjs public/pdf.worker.min.mjs", - "docker:up:db": "docker compose up -d db", + + "// --- Docker ---": "---", + + "docker:up:local": "docker compose --profile local up", + "//docker:up:local": "Sobe app + banco PostgreSQL local juntos (imagem do Docker Hub)", + + "docker:up": "docker compose up --build", + "//docker:up": "Sobe apenas o app com build local (banco deve estar rodando separado)", + "docker:up:d": "docker compose up --build -d", + "//docker:up:d": "Sobe apenas o app com build local em background (detached)", + + "docker:up:db": "docker compose up -d db", + "//docker:up:db": "Sobe apenas o banco PostgreSQL em background", + "docker:down": "docker compose down", + "//docker:down": "Para e remove os containers", + "docker:down:volumes": "docker compose down -v", + "//docker:down:volumes": "Para containers e remove volumes (APAGA os dados!)", + "docker:logs": "docker compose logs -f", + "//docker:logs": "Acompanha logs de todos os containers em tempo real", + "docker:logs:app": "docker compose logs -f app", + "//docker:logs:app": "Acompanha logs do container da aplicação", + "docker:logs:db": "docker compose logs -f db", + "//docker:logs:db": "Acompanha logs do container do banco", + "docker:restart": "docker compose restart", + "//docker:restart": "Reinicia todos os containers", + "docker:rebuild": "docker compose up --build --force-recreate", + "//docker:rebuild": "Rebuild completo forçando recriação dos containers", + "backup": "bash scripts/backup.sh" }, "dependencies": { - "@ai-sdk/anthropic": "^3.0.65", - "@ai-sdk/google": "^3.0.55", - "@ai-sdk/openai": "^3.0.49", - "@aws-sdk/client-s3": "^3.1022.0", - "@aws-sdk/s3-request-presigner": "^3.1022.0", - "@better-auth/passkey": "^1.5.6", + "@ai-sdk/anthropic": "^3.0.68", + "@ai-sdk/google": "^3.0.61", + "@ai-sdk/openai": "^3.0.52", + "@aws-sdk/client-s3": "^3.1027.0", + "@aws-sdk/s3-request-presigner": "^3.1027.0", + "@better-auth/passkey": "^1.6.2", "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", - "@openrouter/ai-sdk-provider": "^2.3.3", + "@openrouter/ai-sdk-provider": "^2.5.1", "@radix-ui/react-alert-dialog": "1.1.15", "@radix-ui/react-avatar": "1.1.11", "@radix-ui/react-checkbox": "1.3.3", @@ -61,11 +87,11 @@ "@radix-ui/react-toggle-group": "1.1.11", "@radix-ui/react-tooltip": "1.2.8", "@remixicon/react": "4.9.0", - "@tanstack/react-query": "^5.96.2", + "@tanstack/react-query": "^5.97.0", "@tanstack/react-table": "8.21.3", "@tanstack/react-virtual": "^3.13.23", - "ai": "^6.0.143", - "better-auth": "1.5.6", + "ai": "^6.0.154", + "better-auth": "1.6.2", "canvas-confetti": "^1.9.4", "class-variance-authority": "0.7.1", "clsx": "2.1.1", @@ -75,14 +101,14 @@ "exceljs": "^4.4.0", "jspdf": "^4.2.1", "jspdf-autotable": "^5.0.7", - "next": "16.2.2", + "next": "16.2.3", "next-themes": "0.4.6", "pdfjs-dist": "^5.6.205", "pg": "8.20.0", "radix-ui": "^1.4.3", - "react": "19.2.4", + "react": "19.2.5", "react-day-picker": "^9.14.0", - "react-dom": "19.2.4", + "react-dom": "19.2.5", "recharts": "3.8.1", "resend": "^6.10.0", "sonner": "2.0.7", @@ -90,17 +116,22 @@ "vaul": "1.1.2", "zod": "4.3.6" }, + "pnpm": { + "overrides": { + "defu": "6.1.7" + } + }, "devDependencies": { "@biomejs/biome": "2.4.10", "@tailwindcss/postcss": "4.2.2", "@types/canvas-confetti": "^1.9.0", - "@types/node": "25.5.0", + "@types/node": "25.5.2", "@types/pg": "^8.20.0", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", - "dotenv": "^17.4.0", + "dotenv": "^17.4.1", "drizzle-kit": "0.31.10", - "knip": "^6.3.0", + "knip": "^6.3.1", "tailwindcss": "4.2.2", "tsx": "4.21.0", "typescript": "6.0.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e33695a..f54ceeb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,115 +4,118 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + defu: 6.1.7 + importers: .: dependencies: '@ai-sdk/anthropic': - specifier: ^3.0.65 - version: 3.0.65(zod@4.3.6) + specifier: ^3.0.68 + version: 3.0.68(zod@4.3.6) '@ai-sdk/google': - specifier: ^3.0.55 - version: 3.0.55(zod@4.3.6) + specifier: ^3.0.61 + version: 3.0.61(zod@4.3.6) '@ai-sdk/openai': - specifier: ^3.0.49 - version: 3.0.49(zod@4.3.6) + specifier: ^3.0.52 + version: 3.0.52(zod@4.3.6) '@aws-sdk/client-s3': - specifier: ^3.1022.0 - version: 3.1022.0 + specifier: ^3.1027.0 + version: 3.1027.0 '@aws-sdk/s3-request-presigner': - specifier: ^3.1022.0 - version: 3.1022.0 + specifier: ^3.1027.0 + version: 3.1027.0 '@better-auth/passkey': - specifier: ^1.5.6 - version: 1.5.6(c3c62cf8a7539a1eb8064cbe0a94b925) + specifier: ^1.6.2 + version: 1.6.2(6b6583111a650617ab587fee78bde6e8) '@dnd-kit/core': specifier: ^6.3.1 - version: 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 6.3.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@dnd-kit/sortable': specifier: ^10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5) '@dnd-kit/utilities': specifier: ^3.2.2 - version: 3.2.2(react@19.2.4) + version: 3.2.2(react@19.2.5) '@openrouter/ai-sdk-provider': - specifier: ^2.3.3 - version: 2.3.3(ai@6.0.143(zod@4.3.6))(zod@4.3.6) + specifier: ^2.5.1 + version: 2.5.1(ai@6.0.154(zod@4.3.6))(zod@4.3.6) '@radix-ui/react-alert-dialog': specifier: 1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-avatar': specifier: 1.1.11 - version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-checkbox': specifier: 1.3.3 - version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-collapsible': specifier: 1.1.12 - version: 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-dialog': specifier: 1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-dropdown-menu': specifier: 2.1.16 - version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-hover-card': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-label': specifier: 2.1.8 - version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-popover': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-progress': specifier: 1.1.8 - version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-radio-group': specifier: ^1.3.8 - version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-select': specifier: 2.2.6 - version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-separator': specifier: 1.1.8 - version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-slot': specifier: 1.2.4 - version: 1.2.4(@types/react@19.2.14)(react@19.2.4) + version: 1.2.4(@types/react@19.2.14)(react@19.2.5) '@radix-ui/react-switch': specifier: 1.2.6 - version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-tabs': specifier: 1.1.13 - version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-toggle': specifier: 1.1.10 - version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-toggle-group': specifier: 1.1.11 - version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-tooltip': specifier: 1.2.8 - version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@remixicon/react': specifier: 4.9.0 - version: 4.9.0(react@19.2.4) + version: 4.9.0(react@19.2.5) '@tanstack/react-query': - specifier: ^5.96.2 - version: 5.96.2(react@19.2.4) + specifier: ^5.97.0 + version: 5.97.0(react@19.2.5) '@tanstack/react-table': specifier: 8.21.3 - version: 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.21.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@tanstack/react-virtual': specifier: ^3.13.23 - version: 3.13.23(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.13.23(react-dom@19.2.5(react@19.2.5))(react@19.2.5) ai: - specifier: ^6.0.143 - version: 6.0.143(zod@4.3.6) + specifier: ^6.0.154 + version: 6.0.154(zod@4.3.6) better-auth: - specifier: 1.5.6 - version: 1.5.6(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)))(mongodb@7.1.0)(mysql2@3.15.3)(next@16.2.2(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 1.6.2 + version: 1.6.2(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)))(mongodb@7.1.0)(mysql2@3.15.3)(next@16.2.3(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) canvas-confetti: specifier: ^1.9.4 version: 1.9.4 @@ -124,13 +127,13 @@ importers: version: 2.1.1 cmdk: specifier: ^1.1.1 - version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) date-fns: specifier: ^4.1.0 version: 4.1.0 drizzle-orm: specifier: 0.45.2 - version: 0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)) + version: 0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)) exceljs: specifier: ^4.4.0 version: 4.4.0 @@ -141,11 +144,11 @@ importers: specifier: ^5.0.7 version: 5.0.7(jspdf@4.2.1) next: - specifier: 16.2.2 - version: 16.2.2(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + specifier: 16.2.3 + version: 16.2.3(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) next-themes: specifier: 0.4.6 - version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) pdfjs-dist: specifier: ^5.6.205 version: 5.6.205 @@ -154,31 +157,31 @@ importers: version: 8.20.0 radix-ui: specifier: ^1.4.3 - version: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: - specifier: 19.2.4 - version: 19.2.4 + specifier: 19.2.5 + version: 19.2.5 react-day-picker: specifier: ^9.14.0 - version: 9.14.0(react@19.2.4) + version: 9.14.0(react@19.2.5) react-dom: - specifier: 19.2.4 - version: 19.2.4(react@19.2.4) + specifier: 19.2.5 + version: 19.2.5(react@19.2.5) recharts: specifier: 3.8.1 - version: 3.8.1(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@16.13.1)(react@19.2.4)(redux@5.0.1) + version: 3.8.1(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5)(redux@5.0.1) resend: specifier: ^6.10.0 version: 6.10.0 sonner: specifier: 2.0.7 - version: 2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) tailwind-merge: specifier: 3.5.0 version: 3.5.0 vaul: specifier: 1.1.2 - version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) zod: specifier: 4.3.6 version: 4.3.6 @@ -193,8 +196,8 @@ importers: specifier: ^1.9.0 version: 1.9.0 '@types/node': - specifier: 25.5.0 - version: 25.5.0 + specifier: 25.5.2 + version: 25.5.2 '@types/pg': specifier: ^8.20.0 version: 8.20.0 @@ -205,14 +208,14 @@ importers: specifier: 19.2.3 version: 19.2.3(@types/react@19.2.14) dotenv: - specifier: ^17.4.0 - version: 17.4.0 + specifier: ^17.4.1 + version: 17.4.1 drizzle-kit: specifier: 0.31.10 version: 0.31.10 knip: - specifier: ^6.3.0 - version: 6.3.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.8.1) + specifier: ^6.3.1 + version: 6.3.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.8.1) tailwindcss: specifier: 4.2.2 version: 4.2.2 @@ -225,32 +228,32 @@ importers: packages: - '@ai-sdk/anthropic@3.0.65': - resolution: {integrity: sha512-wUSTNKk5NWjETqNtUT3kBHl+ic0ZSTgGB/Go8A5URRt4Zb1nMLH1135uZT3xnjrCZra0teMq9BhmfZ4Jfw6SdQ==} + '@ai-sdk/anthropic@3.0.68': + resolution: {integrity: sha512-BAd+fmgYoJMmGw0/uV+jRlXX60PyGxelA6Clp4cK/NI0dsyv9jOOwzQmKNaz2nwb+Jz7HqI7I70KK4XtU5EcXQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@3.0.85': - resolution: {integrity: sha512-oPvs3bYnxndBY/O0gFSFuc5aA/QKCJbk/CaJaRnKgA/ZPH17jeVvEtiUBE6/N8hWhK7XgX53NFI7F3CGmDfm1g==} + '@ai-sdk/gateway@3.0.94': + resolution: {integrity: sha512-uDDwLZhCkvC89crVS3S90D5L7AcVN8WriGuYVNYgVAaVcvy3Mthy3R9ICfzG75BObhz6pm2FWnhxDfNRK+t69Q==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/google@3.0.55': - resolution: {integrity: sha512-lIID7kDdeqzSR/eg+LrEFJGoe/mIwuW4eBdjS84Bi0cIY4cmGwSsvwYILSdiad0197Ha+DUbCxOUuSOnORUx7g==} + '@ai-sdk/google@3.0.61': + resolution: {integrity: sha512-jEKU1Mjcy5CoicejdJQIzM0ntYwyXR8vtYgAZYriKaOuLAiAhiiU538++fGU3CC9HJH/mL1OfsCwMM3gFiCNsw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@3.0.49': - resolution: {integrity: sha512-U2f0pCyNn/jQH3wjgxr8o9VvCkuDFTtXbIhbFFtgXqCzMbed6rBnvzQcAMEK0/Pa44byL9zfcvCOFOflvkRA8w==} + '@ai-sdk/openai@3.0.52': + resolution: {integrity: sha512-4Rr8NCGmfWTz6DCUvixn9UmyZcMatiHn0zWoMzI3JCUe9R1P/vsPOpCBALKoSzVYOjyJnhtnVIbfUKujcS39uw==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@4.0.21': - resolution: {integrity: sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw==} + '@ai-sdk/provider-utils@4.0.23': + resolution: {integrity: sha512-z8GlDaCmRSDlqkMF2f4/RFgWxdarvIbyuk+m6WXT1LYgsnGiXRJGTD2Z1+SDl3LqtFuRtGX1aghYvQLoHL/9pg==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -286,135 +289,135 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.1022.0': - resolution: {integrity: sha512-PhdIW0LxjzcMlBiCldRefnyZk84wtYGnEV0sNGOD55DZTvZsibG2XHvQiL1aFliKugfAhuIpNmFkctI2n2I3Dg==} + '@aws-sdk/client-s3@3.1027.0': + resolution: {integrity: sha512-g6kaFE/pW0Tsoq/BYg8PfXa1hIZQBmyoKtmJTgcbdyzYWiOOu8vj4PZUE2kS8myita6avaY8Ama5IodHJ39lPA==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.973.26': - resolution: {integrity: sha512-A/E6n2W42ruU+sfWk+mMUOyVXbsSgGrY3MJ9/0Az5qUdG67y8I6HYzzoAa+e/lzxxl1uCYmEL6BTMi9ZiZnplQ==} + '@aws-sdk/core@3.973.27': + resolution: {integrity: sha512-CUZ5m8hwMCH6OYI4Li/WgMfIEx10Q2PLI9Y3XOUTPGZJ53aZ0007jCv+X/ywsaERyKPdw5MRZWk877roQksQ4A==} engines: {node: '>=20.0.0'} - '@aws-sdk/crc64-nvme@3.972.5': - resolution: {integrity: sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==} + '@aws-sdk/crc64-nvme@3.972.6': + resolution: {integrity: sha512-NMbiqKdruhwwgI6nzBVe2jWMkXjaoQz2YOs3rFX+2F3gGyrJDkDPwMpV/RsTFeq2vAQ055wZNtOXFK4NYSkM8g==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.24': - resolution: {integrity: sha512-FWg8uFmT6vQM7VuzELzwVo5bzExGaKHdubn0StjgrcU5FvuLExUe+k06kn/40uKv59rYzhez8eFNM4yYE/Yb/w==} + '@aws-sdk/credential-provider-env@3.972.25': + resolution: {integrity: sha512-6QfI0wv4jpG5CrdO/AO0JfZ2ux+tKwJPrUwmvxXF50vI5KIypKVGNF6b4vlkYEnKumDTI1NX2zUBi8JoU5QU3A==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.26': - resolution: {integrity: sha512-CY4ppZ+qHYqcXqBVi//sdHST1QK3KzOEiLtpLsc9W2k2vfZPKExGaQIsOwcyvjpjUEolotitmd3mUNY56IwDEA==} + '@aws-sdk/credential-provider-http@3.972.27': + resolution: {integrity: sha512-3V3Usj9Gs93h865DqN4M2NWJhC5kXU9BvZskfN3+69omuYlE3TZxOEcVQtBGLOloJB7BVfJKXVLqeNhOzHqSlQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.28': - resolution: {integrity: sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw==} + '@aws-sdk/credential-provider-ini@3.972.29': + resolution: {integrity: sha512-SiBuAnXecCbT/OpAf3vqyI/AVE3mTaYr9ShXLybxZiPLBiPCCOIWSGAtYYGQWMRvobBTiqOewaB+wcgMMZI2Aw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.28': - resolution: {integrity: sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ==} + '@aws-sdk/credential-provider-login@3.972.29': + resolution: {integrity: sha512-OGOslTbOlxXexKMqhxCEbBQbUIfuhGxU5UXw3Fm56ypXHvrXH4aTt/xb5Y884LOoteP1QST1lVZzHfcTnWhiPQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.29': - resolution: {integrity: sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g==} + '@aws-sdk/credential-provider-node@3.972.30': + resolution: {integrity: sha512-FMnAnWxc8PG+ZrZ2OBKzY4luCUJhe9CG0B9YwYr4pzrYGLXBS2rl+UoUvjGbAwiptxRL6hyA3lFn03Bv1TLqTw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.24': - resolution: {integrity: sha512-Q2k/XLrFXhEztPHqj4SLCNID3hEPdlhh1CDLBpNnM+1L8fq7P+yON9/9M1IGN/dA5W45v44ylERfXtDAlmMNmw==} + '@aws-sdk/credential-provider-process@3.972.25': + resolution: {integrity: sha512-HR7ynNRdNhNsdVCOCegy1HsfsRzozCOPtD3RzzT1JouuaHobWyRfJzCBue/3jP7gECHt+kQyZUvwg/cYLWurNQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.28': - resolution: {integrity: sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A==} + '@aws-sdk/credential-provider-sso@3.972.29': + resolution: {integrity: sha512-HWv4SEq3jZDYPlwryZVef97+U8CxxRos5mK8sgGO1dQaFZpV5giZLzqGE5hkDmh2csYcBO2uf5XHjPTpZcJlig==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.28': - resolution: {integrity: sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ==} + '@aws-sdk/credential-provider-web-identity@3.972.29': + resolution: {integrity: sha512-PdMBza1WEKEUPFEmMGCfnU2RYCz9MskU2e8JxjyUOsMKku7j9YaDKvbDi2dzC0ihFoM6ods2SbhfAAro+Gwlew==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.972.8': - resolution: {integrity: sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==} + '@aws-sdk/middleware-bucket-endpoint@3.972.9': + resolution: {integrity: sha512-COToYKgquDyligbcAep7ygs48RK+mwe/IYprq4+TSrVFzNOYmzWvHf6werpnKV5VYpRiwdn+Wa5ZXkPqLVwcTg==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-expect-continue@3.972.8': - resolution: {integrity: sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==} + '@aws-sdk/middleware-expect-continue@3.972.9': + resolution: {integrity: sha512-V/FNCjFxnh4VGu+HdSiW4Yg5GELihA1MIDSAdsEPvuayXBVmr0Jaa6jdLAZLH38KYXl/vVjri9DQJWnTAujHEA==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.974.6': - resolution: {integrity: sha512-YckB8k1ejbyCg/g36gUMFLNzE4W5cERIa4MtsdO+wpTmJEP0+TB7okWIt7d8TDOvnb7SwvxJ21E4TGOBxFpSWQ==} + '@aws-sdk/middleware-flexible-checksums@3.974.7': + resolution: {integrity: sha512-uU4/ch2CLHB8Phu1oTKnnQ4e8Ujqi49zEnQYBhWYT53zfFvtJCdGsaOoypBr8Fm/pmCBssRmGoIQ4sixgdLP9w==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-host-header@3.972.8': - resolution: {integrity: sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==} + '@aws-sdk/middleware-host-header@3.972.9': + resolution: {integrity: sha512-je5vRdNw4SkuTnmRbFZLdye4sQ0faLt8kwka5wnnSU30q1mHO4X+idGEJOOE+Tn1ME7Oryn05xxkDvIb3UaLaQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-location-constraint@3.972.8': - resolution: {integrity: sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==} + '@aws-sdk/middleware-location-constraint@3.972.9': + resolution: {integrity: sha512-TyfOi2XNdOZpNKeTJwRUsVAGa+14nkyMb2VVGG+eDgcWG/ed6+NUo72N3hT6QJioxym80NSinErD+LBRF0Ir1w==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-logger@3.972.8': - resolution: {integrity: sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==} + '@aws-sdk/middleware-logger@3.972.9': + resolution: {integrity: sha512-HsVgDrruhqI28RkaXALm8grJ7Agc1wF6Et0xh6pom8NdO2VdO/SD9U/tPwUjewwK/pVoka+EShBxyCvgsPCtog==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-recursion-detection@3.972.9': - resolution: {integrity: sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==} + '@aws-sdk/middleware-recursion-detection@3.972.10': + resolution: {integrity: sha512-RVQQbq5orQ/GHUnXvqEOj2HHPBJm+mM+ySwZKS5UaLBwra5ugRtiH09PLUoOZRl7a1YzaOzXSuGbn9iD5j60WQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-sdk-s3@3.972.27': - resolution: {integrity: sha512-gomO6DZwx+1D/9mbCpcqO5tPBqYBK7DtdgjTIjZ4yvfh/S7ETwAPS0XbJgP2JD8Ycr5CwVrEkV1sFtu3ShXeOw==} + '@aws-sdk/middleware-sdk-s3@3.972.28': + resolution: {integrity: sha512-qJHcJQH9UNPUrnPlRtCozKjtqAaypQ5IgQxTNoPsVYIQeuwNIA8Rwt3NvGij1vCDYDfCmZaPLpnJEHlZXeFqmg==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-ssec@3.972.8': - resolution: {integrity: sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==} + '@aws-sdk/middleware-ssec@3.972.9': + resolution: {integrity: sha512-wSA2BR7L0CyBNDJeSrleIIzC+DzL93YNTdfU0KPGLiocK6YsRv1nPAzPF+BFSdcs0Qa5ku5Kcf4KvQcWwKGenQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-user-agent@3.972.28': - resolution: {integrity: sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ==} + '@aws-sdk/middleware-user-agent@3.972.29': + resolution: {integrity: sha512-f/sIRzuTfEjg6NsbMYvye2VsmnQoNgntntleQyx5uGacUYzszbfIlO3GcI6G6daWUmTm0IDZc11qMHWwF0o0mQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.996.18': - resolution: {integrity: sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA==} + '@aws-sdk/nested-clients@3.996.19': + resolution: {integrity: sha512-uFkmCDXvmQYLanlYdOFS0+MQWkrj9wPMt/ZCc/0J0fjPim6F5jBVBmEomvGY/j77ILW6GTPwN22Jc174Mhkw6Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/region-config-resolver@3.972.10': - resolution: {integrity: sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==} + '@aws-sdk/region-config-resolver@3.972.11': + resolution: {integrity: sha512-6Q8B1dcx6BBqUTY1Mc/eROKA0FImEEY5VPSd6AGPEUf0ErjExz4snVqa9kNJSoVDV1rKaNf3qrWojgcKW+SdDg==} engines: {node: '>=20.0.0'} - '@aws-sdk/s3-request-presigner@3.1022.0': - resolution: {integrity: sha512-2arKiJswYGEOScAhEeOuy/1A1wScfgbfmU/6NAn0UK0/LDxqsOTc4/bCEuUK+/LtB+Lxu3rODqbY8V5gTGPLaQ==} + '@aws-sdk/s3-request-presigner@3.1027.0': + resolution: {integrity: sha512-CkP0x3O/B9z0Y7jGx8ccfva8exKcSyVoRIBhdneDRLcQWBl6VQ0TvzqCxM3qwqCnDxbcLuG3ekUd5MykFbIVxQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.15': - resolution: {integrity: sha512-Ukw2RpqvaL96CjfH/FgfBmy/ZosHBqoHBCFsN61qGg99F33vpntIVii8aNeh65XuOja73arSduskoa4OJea9RQ==} + '@aws-sdk/signature-v4-multi-region@3.996.16': + resolution: {integrity: sha512-EMdXYB4r/k5RWq86fugjRhid5JA+Z6MpS7n4sij4u5/C+STrkvuf9aFu41rJA9MjUzxCLzv8U2XL8cH2GSRYpQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1021.0': - resolution: {integrity: sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA==} + '@aws-sdk/token-providers@3.1026.0': + resolution: {integrity: sha512-Ieq/HiRrbEtrYP387Nes0XlR7H1pJiJOZKv+QyQzMYpvTiDs0VKy2ZB3E2Zf+aFovWmeE7lRE4lXyF7dYM6GgA==} engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.973.6': - resolution: {integrity: sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==} + '@aws-sdk/types@3.973.7': + resolution: {integrity: sha512-reXRwoJ6CfChoqAsBszUYajAF8Z2LRE+CRcKocvFSMpIiLOtYU3aJ9trmn6VVPAzbbY5LXF+FfmUslbXk1SYFg==} engines: {node: '>=20.0.0'} '@aws-sdk/util-arn-parser@3.972.3': resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-endpoints@3.996.5': - resolution: {integrity: sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==} + '@aws-sdk/util-endpoints@3.996.6': + resolution: {integrity: sha512-2nUQ+2ih7CShuKHpGSIYvvAIOHy52dOZguYG36zptBukhw6iFwcvGfG0tes0oZFWQqEWvgZe9HLWaNlvXGdOrg==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-format-url@3.972.8': - resolution: {integrity: sha512-J6DS9oocrgxM8xlUTTmQOuwRF6rnAGEujAN9SAzllcrQmwn5iJ58ogxy3SEhD0Q7JZvlA5jvIXBkpQRqEqlE9A==} + '@aws-sdk/util-format-url@3.972.9': + resolution: {integrity: sha512-fNJXHrs0ZT7Wx0KGIqKv7zLxlDXt2vqjx9z6oKUQFmpE5o4xxnSryvVHfHpIifYHWKz94hFccIldJ0YSZjlCBw==} engines: {node: '>=20.0.0'} '@aws-sdk/util-locate-window@3.965.5': resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-user-agent-browser@3.972.8': - resolution: {integrity: sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==} + '@aws-sdk/util-user-agent-browser@3.972.9': + resolution: {integrity: sha512-sn/LMzTbGjYqCCF24390WxPd6hkpoSptiUn5DzVp4cD71yqw+yGEGm1YCxyEoPXyc8qciM8UzLJcZBFslxo5Uw==} - '@aws-sdk/util-user-agent-node@3.973.14': - resolution: {integrity: sha512-vNSB/DYaPOyujVZBg/zUznH9QC142MaTHVmaFlF7uzzfg3CgT9f/l4C0Yi+vU/tbBhxVcXVB90Oohk5+o+ZbWw==} + '@aws-sdk/util-user-agent-node@3.973.15': + resolution: {integrity: sha512-fYn3s9PtKdgQkczGZCFMgkNEe8aq1JCVbnRqjqN9RSVW43xn2RV9xdcZ3z01a48Jpkuh/xCmBKJxdLOo4Ozg7w==} engines: {node: '>=20.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -422,8 +425,8 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.972.16': - resolution: {integrity: sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==} + '@aws-sdk/xml-builder@3.972.17': + resolution: {integrity: sha512-Ra7hjqAZf1OXRRMueB13qex7mFJRDK/pgCvdSFemXBT8KCGnQDPoKzHY1SjN+TjJVmnpSF14W5tJ1vDamFu+Gg==} engines: {node: '>=20.0.0'} '@aws/lambda-invoke-store@0.2.4': @@ -446,14 +449,14 @@ packages: resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} - '@better-auth/core@1.5.6': - resolution: {integrity: sha512-Ez9DZdIMFyxHremmoLz1emFPGNQomDC1jqqBPnZ6Ci+6TiGN3R9w/Y03cJn6I8r1ycKgOzeVMZtJ/erOZ27Gsw==} + '@better-auth/core@1.6.2': + resolution: {integrity: sha512-nBftDp+eN1fwXor1O4KQorCXa0tJNDgpab7O1z4NcWUU+3faDpdzqLn5mbXZer2E8ZD4VhjqOfYZ041xnBF5NA==} peerDependencies: - '@better-auth/utils': 0.3.1 + '@better-auth/utils': 0.4.0 '@better-fetch/fetch': 1.1.21 '@cloudflare/workers-types': '>=4' '@opentelemetry/api': ^1.9.0 - better-call: 1.3.2 + better-call: 1.3.5 jose: ^6.1.0 kysely: ^0.28.5 nanostores: ^1.0.1 @@ -461,57 +464,57 @@ packages: '@cloudflare/workers-types': optional: true - '@better-auth/drizzle-adapter@1.5.6': - resolution: {integrity: sha512-VfFFmaoFw3ug12SiSuIwzrMoHyIVmkMGWm9gZ4sXdYYVX4HboCL4m3fjzOhppcmK5OGatRuU+N1UX6wxCITcXw==} + '@better-auth/drizzle-adapter@1.6.2': + resolution: {integrity: sha512-KawrNNuhgmpcc5PgLs6HesMckxCscz5J+BQ99iRmU1cLzG/A87IcydrmYtep+K8WHPN0HmZ/i4z/nOBCtxE2qA==} peerDependencies: - '@better-auth/core': 1.5.6 - '@better-auth/utils': ^0.3.0 + '@better-auth/core': ^1.6.2 + '@better-auth/utils': 0.4.0 drizzle-orm: '>=0.41.0' peerDependenciesMeta: drizzle-orm: optional: true - '@better-auth/kysely-adapter@1.5.6': - resolution: {integrity: sha512-Fnf+h8WVKtw6lEOmVmiVVzDf3shJtM60AYf9XTnbdCeUd6MxN/KnaJZpkgtYnRs7a+nwtkVB+fg4lGETebGFXQ==} + '@better-auth/kysely-adapter@1.6.2': + resolution: {integrity: sha512-YMMm75jek/MNCAFWTAaq/U3VPmFnrwZW4NhBjjAwruHQJEIrSZZaOaUEXuUpFRRBhWqg7OOltQcHMwU/45CkuA==} peerDependencies: - '@better-auth/core': 1.5.6 - '@better-auth/utils': ^0.3.0 + '@better-auth/core': ^1.6.2 + '@better-auth/utils': 0.4.0 kysely: ^0.27.0 || ^0.28.0 peerDependenciesMeta: kysely: optional: true - '@better-auth/memory-adapter@1.5.6': - resolution: {integrity: sha512-rS7ZsrIl5uvloUgNN0u9LOZJMMXnsZXVdUZ3MrTBKWM2KpoJjzPr9yN3Szyma5+0V7SltnzSGHPkYj2bEzzmlA==} + '@better-auth/memory-adapter@1.6.2': + resolution: {integrity: sha512-QvuK5m7NFgkzLPHyab+NORu3J683nj36Tix58qq6DPcniyY6KZk5gY2yyh4+z1wgSjrxwY5NFx/DC2qz8B8NJg==} peerDependencies: - '@better-auth/core': 1.5.6 - '@better-auth/utils': ^0.3.0 + '@better-auth/core': ^1.6.2 + '@better-auth/utils': 0.4.0 - '@better-auth/mongo-adapter@1.5.6': - resolution: {integrity: sha512-6+M3MS2mor8fTUV3EI1FBLP0cs6QfbN+Ovx9+XxR/GdfKIBoNFzmPEPRbdGt+ft6PvrITsUm+T70+kkHgVSP6w==} + '@better-auth/mongo-adapter@1.6.2': + resolution: {integrity: sha512-IvR2Q+1pjzxA4JXI3ED76+6fsqervIpZ2K5MxoX/+miLQhLEmNcbqqcItg4O2kfkxN8h33/ev57sjTW8QH9Tuw==} peerDependencies: - '@better-auth/core': 1.5.6 - '@better-auth/utils': ^0.3.0 + '@better-auth/core': ^1.6.2 + '@better-auth/utils': 0.4.0 mongodb: ^6.0.0 || ^7.0.0 peerDependenciesMeta: mongodb: optional: true - '@better-auth/passkey@1.5.6': - resolution: {integrity: sha512-2DQkPK5Rw7g6Zixa3MSoH31s4Au96O94+QvJl3F0LK3P6KDjEGlRh1CgzQmzafwBJjmsRx9jSwckGP6jiEEDtw==} + '@better-auth/passkey@1.6.2': + resolution: {integrity: sha512-jMfLAoCS+hI3nCZw3CepWIW/hAvw5l7CoN4PzhaSOt16uuAKHXbZPJOT7pz+E4l2d20+L7eshN4pH9wBh2L+uA==} peerDependencies: - '@better-auth/core': 1.5.6 - '@better-auth/utils': 0.3.1 + '@better-auth/core': ^1.6.2 + '@better-auth/utils': 0.4.0 '@better-fetch/fetch': 1.1.21 - better-auth: 1.5.6 - better-call: 1.3.2 + better-auth: ^1.6.2 + better-call: 1.3.5 nanostores: ^1.0.1 - '@better-auth/prisma-adapter@1.5.6': - resolution: {integrity: sha512-UxY9vQJs1Tt+O+T2YQnseDMlWmUSQvFZSBb5YiFRg7zcm+TEzujh4iX2/csA0YiZptLheovIuVWTP9nriewEBA==} + '@better-auth/prisma-adapter@1.6.2': + resolution: {integrity: sha512-bQkXYTo1zPau+xAiMpo1yCjEDSy7i7oeYlkYO+fSfRDCo52DE/9oPOOuI+EStmFkPUNSk9L2rhk8Fulifi8WCg==} peerDependencies: - '@better-auth/core': 1.5.6 - '@better-auth/utils': ^0.3.0 + '@better-auth/core': ^1.6.2 + '@better-auth/utils': 0.4.0 '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 prisma: ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: @@ -520,13 +523,15 @@ packages: prisma: optional: true - '@better-auth/telemetry@1.5.6': - resolution: {integrity: sha512-yXC7NSxnIFlxDkGdpD7KA+J9nqIQAPCJKe77GoaC5bWoe/DALo1MYorZfTgOafS7wrslNtsPT4feV/LJi1ubqQ==} + '@better-auth/telemetry@1.6.2': + resolution: {integrity: sha512-o4gHKXqizUxVUUYChZZTowLEzdsz3ViBE/fKFzfHqNFUnF+aVt8QsbLSfipq1WpTIXyJVT/SnH0hgSdWxdssbQ==} peerDependencies: - '@better-auth/core': 1.5.6 + '@better-auth/core': ^1.6.2 + '@better-auth/utils': 0.4.0 + '@better-fetch/fetch': 1.1.21 - '@better-auth/utils@0.3.1': - resolution: {integrity: sha512-+CGp4UmZSUrHHnpHhLPYu6cV+wSUSvVbZbNykxhUDocpVNTo9uFFxw/NqJlh1iC4wQ9HKKWGCKuZ5wUgS0v6Kg==} + '@better-auth/utils@0.4.0': + resolution: {integrity: sha512-RpMtLUIQAEWMgdPLNVbIF5ON2mm+CH0U3rCdUCU1VyeAUui4m38DyK7/aXMLZov2YDjG684pS1D0MBllrmgjQA==} '@better-fetch/fetch@1.1.21': resolution: {integrity: sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==} @@ -1393,57 +1398,57 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@next/env@16.2.2': - resolution: {integrity: sha512-LqSGz5+xGk9EL/iBDr2yo/CgNQV6cFsNhRR2xhSXYh7B/hb4nePCxlmDvGEKG30NMHDFf0raqSyOZiQrO7BkHQ==} + '@next/env@16.2.3': + resolution: {integrity: sha512-ZWXyj4uNu4GCWQw9cjRxWlbD+33mcDszIo9iQxFnBX3Wmgq9ulaSJcl6VhuWx5pCWqqD+9W6Wfz7N0lM5lYPMA==} - '@next/swc-darwin-arm64@16.2.2': - resolution: {integrity: sha512-B92G3ulrwmkDSEJEp9+XzGLex5wC1knrmCSIylyVeiAtCIfvEJYiN3v5kXPlYt5R4RFlsfO/v++aKV63Acrugg==} + '@next/swc-darwin-arm64@16.2.3': + resolution: {integrity: sha512-u37KDKTKQ+OQLvY+z7SNXixwo4Q2/IAJFDzU1fYe66IbCE51aDSAzkNDkWmLN0yjTUh4BKBd+hb69jYn6qqqSg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.2.2': - resolution: {integrity: sha512-7ZwSgNKJNQiwW0CKhNm9B1WS2L1Olc4B2XY0hPYCAL3epFnugMhuw5TMWzMilQ3QCZcCHoYm9NGWTHbr5REFxw==} + '@next/swc-darwin-x64@16.2.3': + resolution: {integrity: sha512-gHjL/qy6Q6CG3176FWbAKyKh9IfntKZTB3RY/YOJdDFpHGsUDXVH38U4mMNpHVGXmeYW4wj22dMp1lTfmu/bTQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.2.2': - resolution: {integrity: sha512-c3m8kBHMziMgo2fICOP/cd/5YlrxDU5YYjAJeQLyFsCqVF8xjOTH/QYG4a2u48CvvZZSj1eHQfBCbyh7kBr30Q==} + '@next/swc-linux-arm64-gnu@16.2.3': + resolution: {integrity: sha512-U6vtblPtU/P14Y/b/n9ZY0GOxbbIhTFuaFR7F4/uMBidCi2nSdaOFhA0Go81L61Zd6527+yvuX44T4ksnf8T+Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.2.2': - resolution: {integrity: sha512-VKLuscm0P/mIfzt+SDdn2+8TNNJ7f0qfEkA+az7OqQbjzKdBxAHs0UvuiVoCtbwX+dqMEL9U54b5wQ/aN3dHeg==} + '@next/swc-linux-arm64-musl@16.2.3': + resolution: {integrity: sha512-/YV0LgjHUmfhQpn9bVoGc4x4nan64pkhWR5wyEV8yCOfwwrH630KpvRg86olQHTwHIn1z59uh6JwKvHq1h4QEw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.2.2': - resolution: {integrity: sha512-kU3OPHJq6sBUjOk7wc5zJ7/lipn8yGldMoAv4z67j6ov6Xo/JvzA7L7LCsyzzsXmgLEhk3Qkpwqaq/1+XpNR3g==} + '@next/swc-linux-x64-gnu@16.2.3': + resolution: {integrity: sha512-/HiWEcp+WMZ7VajuiMEFGZ6cg0+aYZPqCJD3YJEfpVWQsKYSjXQG06vJP6F1rdA03COD9Fef4aODs3YxKx+RDQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.2.2': - resolution: {integrity: sha512-CKXRILyErMtUftp+coGcZ38ZwE/Aqq45VMCcRLr2I4OXKrgxIBDXHnBgeX/UMil0S09i2JXaDL3Q+TN8D/cKmg==} + '@next/swc-linux-x64-musl@16.2.3': + resolution: {integrity: sha512-Kt44hGJfZSefebhk/7nIdivoDr3Ugp5+oNz9VvF3GUtfxutucUIHfIO0ZYO8QlOPDQloUVQn4NVC/9JvHRk9hw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.2.2': - resolution: {integrity: sha512-sS/jSk5VUoShUqINJFvNjVT7JfR5ORYj/+/ZpOYbbIohv/lQfduWnGAycq2wlknbOql2xOR0DoV0s6Xfcy49+g==} + '@next/swc-win32-arm64-msvc@16.2.3': + resolution: {integrity: sha512-O2NZ9ie3Tq6xj5Z5CSwBT3+aWAMW2PIZ4egUi9MaWLkwaehgtB7YZjPm+UpcNpKOme0IQuqDcor7BsW6QBiQBw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.2.2': - resolution: {integrity: sha512-aHaKceJgdySReT7qeck5oShucxWRiiEuwCGK8HHALe6yZga8uyFpLkPgaRw3kkF04U7ROogL/suYCNt/+CuXGA==} + '@next/swc-win32-x64-msvc@16.2.3': + resolution: {integrity: sha512-Ibm29/GgB/ab5n7XKqlStkm54qqZE8v2FnijUPBgrd67FWrac45o/RsNlaOWjme/B5UqeWt/8KM4aWBwA1D2Kw==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1468,8 +1473,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@openrouter/ai-sdk-provider@2.3.3': - resolution: {integrity: sha512-4fVteGkVedc7fGoA9+qJs4tpYwALezMq14m2Sjub3KmyRlksCbK+WJf67NPdGem8+NZrV2tAN42A1NU3+SiV3w==} + '@openrouter/ai-sdk-provider@2.5.1': + resolution: {integrity: sha512-r1fJL1Cb3gQDa2MpWH/sfx1BsEW0uzlRriJM6eihaKqbtKDmZoBisF32VcVaQYassighX7NGCkF68EsrZA43uQ==} engines: {node: '>=18'} peerDependencies: ai: ^6.0.0 @@ -2614,56 +2619,56 @@ packages: resolution: {integrity: sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==} engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.4.13': - resolution: {integrity: sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==} + '@smithy/config-resolver@4.4.14': + resolution: {integrity: sha512-N55f8mPEccpzKetUagdvmAy8oohf0J5cuj9jLI1TaSceRlq0pJsIZepY3kmAXAhyxqXPV6hDerDQhqQPKWgAoQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.23.13': - resolution: {integrity: sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q==} + '@smithy/core@3.23.14': + resolution: {integrity: sha512-vJ0IhpZxZAkFYOegMKSrxw7ujhhT2pass/1UEcZ4kfl5srTAqtPU5I7MdYQoreVas3204ykCiNhY1o7Xlz6Yyg==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.2.12': - resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} + '@smithy/credential-provider-imds@4.2.13': + resolution: {integrity: sha512-wboCPijzf6RJKLOvnjDAiBxGSmSnGXj35o5ZAWKDaHa/cvQ5U3ZJ13D4tMCE8JG4dxVAZFy/P0x/V9CwwdfULQ==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@4.2.12': - resolution: {integrity: sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==} + '@smithy/eventstream-codec@4.2.13': + resolution: {integrity: sha512-vYahwBAtRaAcFbOmE9aLr12z7RiHYDSLcnogSdxfm7kKfsNa3wH+NU5r7vTeB5rKvLsWyPjVX8iH94brP7umiQ==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@4.2.12': - resolution: {integrity: sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==} + '@smithy/eventstream-serde-browser@4.2.13': + resolution: {integrity: sha512-wwybfcOX0tLqCcBP378TIU9IqrDuZq/tDV48LlZNydMpCnqnYr+hWBAYbRE+rFFf/p7IkDJySM3bgiMKP2ihPg==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.3.12': - resolution: {integrity: sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==} + '@smithy/eventstream-serde-config-resolver@4.3.13': + resolution: {integrity: sha512-ied1lO559PtAsMJzg2TKRlctLnEi1PfkNeMMpdwXDImk1zV9uvS/Oxoy/vcy9uv1GKZAjDAB5xT6ziE9fzm5wA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.2.12': - resolution: {integrity: sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==} + '@smithy/eventstream-serde-node@4.2.13': + resolution: {integrity: sha512-hFyK+ORJrxAN3RYoaD6+gsGDQjeix8HOEkosoajvXYZ4VeqonM3G4jd9IIRm/sWGXUKmudkY9KdYjzosUqdM8A==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.2.12': - resolution: {integrity: sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==} + '@smithy/eventstream-serde-universal@4.2.13': + resolution: {integrity: sha512-kRrq4EKLGeOxhC2CBEhRNcu1KSzNJzYY7RK3S7CxMPgB5dRrv55WqQOtRwQxQLC04xqORFLUgnDlc6xrNUULaA==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.3.15': - resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} + '@smithy/fetch-http-handler@5.3.16': + resolution: {integrity: sha512-nYDRUIvNd4mFmuXraRWt6w5UsZTNqtj4hXJA/iiOD4tuseIdLP9Lq38teH/SZTcIFCa2f+27o7hYpIsWktJKEQ==} engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.2.13': - resolution: {integrity: sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==} + '@smithy/hash-blob-browser@4.2.14': + resolution: {integrity: sha512-rtQ5es8r/5v4rav7q5QTsfx9CtCyzrz/g7ZZZBH2xtMmd6G/KQrLOWfSHTvFOUPlVy59RQvxeBYJaLRoybMEyA==} engines: {node: '>=18.0.0'} - '@smithy/hash-node@4.2.12': - resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} + '@smithy/hash-node@4.2.13': + resolution: {integrity: sha512-4/oy9h0jjmY80a2gOIo75iLl8TOPhmtx4E2Hz+PfMjvx/vLtGY4TMU/35WRyH2JHPfT5CVB38u4JRow7gnmzJA==} engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@4.2.12': - resolution: {integrity: sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==} + '@smithy/hash-stream-node@4.2.13': + resolution: {integrity: sha512-WdQ7HwUjINXETeh6dqUeob1UHIYx8kAn9PSp1HhM2WWegiZBYVy2WXIs1lB07SZLan/udys9SBnQGt9MQbDpdg==} engines: {node: '>=18.0.0'} - '@smithy/invalid-dependency@4.2.12': - resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==} + '@smithy/invalid-dependency@4.2.13': + resolution: {integrity: sha512-jvC0RB/8BLj2SMIkY0Npl425IdnxZJxInpZJbu563zIRnVjpDMXevU3VMCRSabaLB0kf/eFIOusdGstrLJ8IDg==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': @@ -2674,76 +2679,76 @@ packages: resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} engines: {node: '>=18.0.0'} - '@smithy/md5-js@4.2.12': - resolution: {integrity: sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==} + '@smithy/md5-js@4.2.13': + resolution: {integrity: sha512-cNm7I9NXolFxtS20ojROddOEpSAeI1Obq6pd1Kj5HtHws3s9Fkk8DdHDfQSs5KuxCewZuVK6UqrJnfJmiMzDuQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-content-length@4.2.12': - resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==} + '@smithy/middleware-content-length@4.2.13': + resolution: {integrity: sha512-IPMLm/LE4AZwu6qiE8Rr8vJsWhs9AtOdySRXrOM7xnvclp77Tyh7hMs/FRrMf26kgIe67vFJXXOSmVxS7oKeig==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.28': - resolution: {integrity: sha512-p1gfYpi91CHcs5cBq982UlGlDrxoYUX6XdHSo91cQ2KFuz6QloHosO7Jc60pJiVmkWrKOV8kFYlGFFbQ2WUKKQ==} + '@smithy/middleware-endpoint@4.4.29': + resolution: {integrity: sha512-R9Q/58U+qBiSARGWbAbFLczECg/RmysRksX6Q8BaQEpt75I7LI6WGDZnjuC9GXSGKljEbA7N118LhGaMbfrTXw==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.46': - resolution: {integrity: sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow==} + '@smithy/middleware-retry@4.5.0': + resolution: {integrity: sha512-/NzISn4grj/BRFVua/xnQwF+7fakYZgimpw2dfmlPgcqecBMKxpB9g5mLYRrmBD5OrPoODokw4Vi1hrSR4zRyw==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.2.16': - resolution: {integrity: sha512-beqfV+RZ9RSv+sQqor3xroUUYgRFCGRw6niGstPG8zO9LgTl0B0MCucxjmrH/2WwksQN7UUgI7KNANoZv+KALA==} + '@smithy/middleware-serde@4.2.17': + resolution: {integrity: sha512-0T2mcaM6v9W1xku86Dk0bEW7aEseG6KenFkPK98XNw0ZhOqOiD1MrMsdnQw9QsL3/Oa85T53iSMlm0SZdSuIEQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.2.12': - resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==} + '@smithy/middleware-stack@4.2.13': + resolution: {integrity: sha512-g72jN/sGDLyTanrCLH9fhg3oysO3f7tQa6eWWsMyn2BiYNCgjF24n4/I9wff/5XidFvjj9ilipAoQrurTUrLvw==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.3.12': - resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==} + '@smithy/node-config-provider@4.3.13': + resolution: {integrity: sha512-iGxQ04DsKXLckbgnX4ipElrOTk+IHgTyu0q0WssZfYhDm9CQWHmu6cOeI5wmWRxpXbBDhIIfXMWz5tPEtcVqbw==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.5.1': - resolution: {integrity: sha512-ejjxdAXjkPIs9lyYyVutOGNOraqUE9v/NjGMKwwFrfOM354wfSD8lmlj8hVwUzQmlLLF4+udhfCX9Exnbmvfzw==} + '@smithy/node-http-handler@4.5.2': + resolution: {integrity: sha512-/oD7u8M0oj2ZTFw7GkuuHWpIxtWdLlnyNkbrWcyVYhd5RJNDuczdkb0wfnQICyNFrVPlr8YHOhamjNy3zidhmA==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.2.12': - resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} + '@smithy/property-provider@4.2.13': + resolution: {integrity: sha512-bGzUCthxRmezuxkbu9wD33wWg9KX3hJpCXpQ93vVkPrHn9ZW6KNNdY5xAUWNuRCwQ+VyboFuWirG1lZhhkcyRQ==} engines: {node: '>=18.0.0'} - '@smithy/protocol-http@5.3.12': - resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==} + '@smithy/protocol-http@5.3.13': + resolution: {integrity: sha512-+HsmuJUF4u8POo6s8/a2Yb/AQ5t/YgLovCuHF9oxbocqv+SZ6gd8lC2duBFiCA/vFHoHQhoq7QjqJqZC6xOxxg==} engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.2.12': - resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==} + '@smithy/querystring-builder@4.2.13': + resolution: {integrity: sha512-tG4aOYFCZdPMjbgfhnIQ322H//ojujldp1SrHPHpBSb3NqgUp3dwiUGRJzie87hS1DYwWGqDuPaowoDF+rYCbQ==} engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.2.12': - resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==} + '@smithy/querystring-parser@4.2.13': + resolution: {integrity: sha512-hqW3Q4P+CDzUyQ87GrboGMeD7XYNMOF+CuTwu936UQRB/zeYn3jys8C3w+wMkDfY7CyyyVwZQ5cNFoG0x1pYmA==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.2.12': - resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==} + '@smithy/service-error-classification@4.2.13': + resolution: {integrity: sha512-a0s8XZMfOC/qpqq7RCPvJlk93rWFrElH6O++8WJKz0FqnA4Y7fkNi/0mnGgSH1C4x6MFsuBA8VKu4zxFrMe5Vw==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.4.7': - resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==} + '@smithy/shared-ini-file-loader@4.4.8': + resolution: {integrity: sha512-VZCZx2bZasxdqxVgEAhREvDSlkatTPnkdWy1+Kiy8w7kYPBosW0V5IeDwzDUMvWBt56zpK658rx1cOBFOYaPaw==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.3.12': - resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} + '@smithy/signature-v4@5.3.13': + resolution: {integrity: sha512-YpYSyM0vMDwKbHD/JA7bVOF6kToVRpa+FM5ateEVRpsTNu564g1muBlkTubXhSKKYXInhpADF46FPyrZcTLpXg==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.12.8': - resolution: {integrity: sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA==} + '@smithy/smithy-client@4.12.9': + resolution: {integrity: sha512-ovaLEcTU5olSeHcRXcxV6viaKtpkHZumn6Ps0yn7dRf2rRSfy794vpjOtrWDO0d1auDSvAqxO+lyhERSXQ03EQ==} engines: {node: '>=18.0.0'} - '@smithy/types@4.13.1': - resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} + '@smithy/types@4.14.0': + resolution: {integrity: sha512-OWgntFLW88kx2qvf/c/67Vno1yuXm/f9M7QFAtVkkO29IJXGBIg0ycEaBTH0kvCtwmvZxRujrgP5a86RvsXJAQ==} engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.2.12': - resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==} + '@smithy/url-parser@4.2.13': + resolution: {integrity: sha512-2G03yoboIRZlZze2+PT4GZEjgwQsJjUgn6iTsvxA02bVceHR6vp4Cuk7TUnPFWKF+ffNUk3kj4COwkENS2K3vw==} engines: {node: '>=18.0.0'} '@smithy/util-base64@4.3.2': @@ -2770,32 +2775,32 @@ packages: resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.3.44': - resolution: {integrity: sha512-eZg6XzaCbVr2S5cAErU5eGBDaOVTuTo1I65i4tQcHENRcZ8rMWhQy1DaIYUSLyZjsfXvmCqZrstSMYyGFocvHA==} + '@smithy/util-defaults-mode-browser@4.3.45': + resolution: {integrity: sha512-ag9sWc6/nWZAuK3Wm9KlFJUnRkXLrXn33RFjIAmCTFThqLHY+7wCst10BGq56FxslsDrjhSie46c8OULS+BiIw==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.2.48': - resolution: {integrity: sha512-FqOKTlqSaoV3nzO55pMs5NBnZX8EhoI0DGmn9kbYeXWppgHD6dchyuj2HLqp4INJDJbSrj6OFYJkAh/WhSzZPg==} + '@smithy/util-defaults-mode-node@4.2.49': + resolution: {integrity: sha512-jlN6vHwE8gY5AfiFBavtD3QtCX2f7lM3BKkz7nFKSNfFR5nXLXLg6sqXTJEEyDwtxbztIDBQCfjsGVXlIru2lQ==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.3.3': - resolution: {integrity: sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==} + '@smithy/util-endpoints@3.3.4': + resolution: {integrity: sha512-BKoR/ubPp9KNKFxPpg1J28N1+bgu8NGAtJblBP7yHy8yQPBWhIAv9+l92SlQLpolGm71CVO+btB60gTgzT0wog==} engines: {node: '>=18.0.0'} '@smithy/util-hex-encoding@4.2.2': resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.2.12': - resolution: {integrity: sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==} + '@smithy/util-middleware@4.2.13': + resolution: {integrity: sha512-GTooyrlmRTqvUen4eK7/K1p6kryF7bnDfq6XsAbIsf2mo51B/utaH+XThY6dKgNCWzMAaH/+OLmqaBuLhLWRow==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.2.13': - resolution: {integrity: sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ==} + '@smithy/util-retry@4.3.0': + resolution: {integrity: sha512-tSOPQNT/4KfbvqeMovWC3g23KSYy8czHd3tlN+tOYVNIDLSfxIsrPJihYi5TpNcoV789KWtgChUVedh2y6dDPg==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.5.21': - resolution: {integrity: sha512-KzSg+7KKywLnkoKejRtIBXDmwBfjGvg1U1i/etkC7XSWUyFCoLno1IohV2c74IzQqdhX5y3uE44r/8/wuK+A7Q==} + '@smithy/util-stream@4.5.22': + resolution: {integrity: sha512-3H8iq/0BfQjUs2/4fbHZ9aG9yNzcuZs24LPkcX1Q7Z+qpqaGM8+qbGmE8zo9m2nCRgamyvS98cHdcWvR6YUsew==} engines: {node: '>=18.0.0'} '@smithy/util-uri-escape@4.2.2': @@ -2810,8 +2815,8 @@ packages: resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==} engines: {node: '>=18.0.0'} - '@smithy/util-waiter@4.2.14': - resolution: {integrity: sha512-2zqq5o/oizvMaFUlNiTyZ7dbgYv1a893aGut2uaxtbzTx/VYYnRxWzDHuD/ftgcw94ffenua+ZNLrbqwUYE+Bg==} + '@smithy/util-waiter@4.2.15': + resolution: {integrity: sha512-oUt9o7n8hBv3BL56sLSneL0XeigZSuem0Hr78JaoK33D9oKieyCvVP8eTSe3j7g2mm/S1DvzxKieG7JEWNJUNg==} engines: {node: '>=18.0.0'} '@smithy/uuid@1.1.2': @@ -2926,11 +2931,11 @@ packages: '@tailwindcss/postcss@4.2.2': resolution: {integrity: sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ==} - '@tanstack/query-core@5.96.2': - resolution: {integrity: sha512-hzI6cTVh4KNRk8UtoIBS7Lv9g6BnJPXvBKsvYH1aGWvv0347jT3BnSvztOE+kD76XGvZnRC/t6qdW1CaIfwCeA==} + '@tanstack/query-core@5.97.0': + resolution: {integrity: sha512-QdpLP5VzVMgo4VtaPppRA2W04UFjIqX+bxke/ZJhE5cfd5UPkRzqIAJQt9uXkQJjqE8LBOMbKv7f8HCsZltXlg==} - '@tanstack/react-query@5.96.2': - resolution: {integrity: sha512-sYyzzJT4G0g02azzJ8o55VFFV31XvFpdUpG+unxS0vSaYsJnSPKGoI6WdPwUucJL1wpgGfwfmntNX/Ub1uOViA==} + '@tanstack/react-query@5.97.0': + resolution: {integrity: sha512-y4So4eGcQoK2WVMAcDNZE9ofB/p5v1OlKvtc1F3uqHwrtifobT7q+ZnXk2mRkc8E84HKYSlAE9z6HXl2V0+ySQ==} peerDependencies: react: ^18 || ^19 @@ -2990,8 +2995,8 @@ packages: '@types/node@14.18.63': resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - '@types/node@25.5.0': - resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} + '@types/node@25.5.2': + resolution: {integrity: sha512-tO4ZIRKNC+MDWV4qKVZe3Ql/woTnmHDr5JD8UI5hn2pwBrHEwOEMZK7WlNb5RKB6EoJ02gwmQS9OrjuFnZYdpg==} '@types/pako@2.0.4': resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==} @@ -3026,8 +3031,8 @@ packages: resolution: {integrity: sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==} engines: {node: '>= 20'} - ai@6.0.143: - resolution: {integrity: sha512-wVDb7StQ1EPQ9GDAOmi1AsuAXQRSii+zZT2sFK+MCisH4vV7XNEAdzXL+sKsUAFhhq+EtVFWWlB4mCk4hcoIMw==} + ai@6.0.154: + resolution: {integrity: sha512-HfKJKCTJsDZxqrIUDSVnBQ7DpQlx5WI4ExqtLd7Bl70epLmvkpc/HYMzU1hP9W+g9VEAcvZo4fbMqc3v5D+9gQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -3077,8 +3082,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - better-auth@1.5.6: - resolution: {integrity: sha512-QSpJTqaT1XVfWRQe/fm3PgeuwOIlz1nWX/Dx7nsHStJ382bLzmDbQk2u7IT0IJ6wS5SRxfqEE1Ev9TXontgyAQ==} + better-auth@1.6.2: + resolution: {integrity: sha512-5nqDAIj5xexmnk+GjjdrBknJCabi1mlvsVWJbxs4usHreao4vNdxIxINWDzCyDF9iDR1ildRZdXWSiYPAvTHhA==} peerDependencies: '@lynx-js/react': '*' '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 @@ -3139,8 +3144,8 @@ packages: vue: optional: true - better-call@1.3.2: - resolution: {integrity: sha512-4cZIfrerDsNTn3cm+MhLbUePN0gdwkhSXEuG7r/zuQ8c/H7iU0/jSK5TD3FW7U0MgKHce/8jGpPYNO4Ve+4NBw==} + better-call@1.3.5: + resolution: {integrity: sha512-kOFJkBP7utAQLEYrobZm3vkTH8mXq5GNgvjc5/XEST1ilVHaxXUXfeDeFlqoETMtyqS4+3/h4ONX2i++ebZrvA==} peerDependencies: zod: ^4.0.0 peerDependenciesMeta: @@ -3343,8 +3348,8 @@ packages: resolution: {integrity: sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==} engines: {node: '>=16.0.0'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} @@ -3368,8 +3373,8 @@ packages: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} - dotenv@17.4.0: - resolution: {integrity: sha512-kCKF62fwtzwYm0IGBNjRUjtJgMfGapII+FslMHIjMR5KTnwEmBmWLDRSnc3XSNP8bNy34tekgQyDT0hr7pERRQ==} + dotenv@17.4.1: + resolution: {integrity: sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==} engines: {node: '>=12'} drizzle-kit@0.31.10: @@ -3700,8 +3705,8 @@ packages: jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - knip@6.3.0: - resolution: {integrity: sha512-g6dVPoTw6iNm3cubC5IWxVkVsd0r5hXhTBTbAGIEQN53GdA2ZM/slMTPJ7n5l8pBebNQPHpxjmKxuR4xVQ2/hQ==} + knip@6.3.1: + resolution: {integrity: sha512-22kLJloVcOVOAudCxlFOC0ICAMme7dKsS7pVTEnrmyKGpswb8ieznvAiSKUeFVDJhb01ect6dkDc1Ha1g1sPpg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -3929,8 +3934,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@16.2.2: - resolution: {integrity: sha512-i6AJdyVa4oQjyvX/6GeER8dpY/xlIV+4NMv/svykcLtURJSy/WzDnnUk/TM4d0uewFHK7xSQz4TbIwPgjky+3A==} + next@16.2.3: + resolution: {integrity: sha512-9V3zV4oZFza3PVev5/poB9g0dEafVcgNyQ8eTRop8GvxZjV2G15FC5ARuG1eFD42QgeYkzJBJzHghNP8Ad9xtA==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -4149,10 +4154,10 @@ packages: peerDependencies: react: '>=16.8.0' - react-dom@19.2.4: - resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + react-dom@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: - react: ^19.2.4 + react: ^19.2.5 react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -4199,8 +4204,8 @@ packages: '@types/react': optional: true - react@19.2.4: - resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} readable-stream@2.3.8: @@ -4576,32 +4581,32 @@ packages: snapshots: - '@ai-sdk/anthropic@3.0.65(zod@4.3.6)': + '@ai-sdk/anthropic@3.0.68(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/gateway@3.0.85(zod@4.3.6)': + '@ai-sdk/gateway@3.0.94(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) '@vercel/oidc': 3.1.0 zod: 4.3.6 - '@ai-sdk/google@3.0.55(zod@4.3.6)': + '@ai-sdk/google@3.0.61(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/openai@3.0.49(zod@4.3.6)': + '@ai-sdk/openai@3.0.52(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) zod: 4.3.6 - '@ai-sdk/provider-utils@4.0.21(zod@4.3.6)': + '@ai-sdk/provider-utils@4.0.23(zod@4.3.6)': dependencies: '@ai-sdk/provider': 3.0.8 '@standard-schema/spec': 1.1.0 @@ -4617,20 +4622,20 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.7 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.7 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.7 '@aws-sdk/util-locate-window': 3.965.5 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -4640,7 +4645,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.7 '@aws-sdk/util-locate-window': 3.965.5 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -4648,7 +4653,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.7 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -4657,420 +4662,420 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.7 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1022.0': + '@aws-sdk/client-s3@3.1027.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.26 - '@aws-sdk/credential-provider-node': 3.972.29 - '@aws-sdk/middleware-bucket-endpoint': 3.972.8 - '@aws-sdk/middleware-expect-continue': 3.972.8 - '@aws-sdk/middleware-flexible-checksums': 3.974.6 - '@aws-sdk/middleware-host-header': 3.972.8 - '@aws-sdk/middleware-location-constraint': 3.972.8 - '@aws-sdk/middleware-logger': 3.972.8 - '@aws-sdk/middleware-recursion-detection': 3.972.9 - '@aws-sdk/middleware-sdk-s3': 3.972.27 - '@aws-sdk/middleware-ssec': 3.972.8 - '@aws-sdk/middleware-user-agent': 3.972.28 - '@aws-sdk/region-config-resolver': 3.972.10 - '@aws-sdk/signature-v4-multi-region': 3.996.15 - '@aws-sdk/types': 3.973.6 - '@aws-sdk/util-endpoints': 3.996.5 - '@aws-sdk/util-user-agent-browser': 3.972.8 - '@aws-sdk/util-user-agent-node': 3.973.14 - '@smithy/config-resolver': 4.4.13 - '@smithy/core': 3.23.13 - '@smithy/eventstream-serde-browser': 4.2.12 - '@smithy/eventstream-serde-config-resolver': 4.3.12 - '@smithy/eventstream-serde-node': 4.2.12 - '@smithy/fetch-http-handler': 5.3.15 - '@smithy/hash-blob-browser': 4.2.13 - '@smithy/hash-node': 4.2.12 - '@smithy/hash-stream-node': 4.2.12 - '@smithy/invalid-dependency': 4.2.12 - '@smithy/md5-js': 4.2.12 - '@smithy/middleware-content-length': 4.2.12 - '@smithy/middleware-endpoint': 4.4.28 - '@smithy/middleware-retry': 4.4.46 - '@smithy/middleware-serde': 4.2.16 - '@smithy/middleware-stack': 4.2.12 - '@smithy/node-config-provider': 4.3.12 - '@smithy/node-http-handler': 4.5.1 - '@smithy/protocol-http': 5.3.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/credential-provider-node': 3.972.30 + '@aws-sdk/middleware-bucket-endpoint': 3.972.9 + '@aws-sdk/middleware-expect-continue': 3.972.9 + '@aws-sdk/middleware-flexible-checksums': 3.974.7 + '@aws-sdk/middleware-host-header': 3.972.9 + '@aws-sdk/middleware-location-constraint': 3.972.9 + '@aws-sdk/middleware-logger': 3.972.9 + '@aws-sdk/middleware-recursion-detection': 3.972.10 + '@aws-sdk/middleware-sdk-s3': 3.972.28 + '@aws-sdk/middleware-ssec': 3.972.9 + '@aws-sdk/middleware-user-agent': 3.972.29 + '@aws-sdk/region-config-resolver': 3.972.11 + '@aws-sdk/signature-v4-multi-region': 3.996.16 + '@aws-sdk/types': 3.973.7 + '@aws-sdk/util-endpoints': 3.996.6 + '@aws-sdk/util-user-agent-browser': 3.972.9 + '@aws-sdk/util-user-agent-node': 3.973.15 + '@smithy/config-resolver': 4.4.14 + '@smithy/core': 3.23.14 + '@smithy/eventstream-serde-browser': 4.2.13 + '@smithy/eventstream-serde-config-resolver': 4.3.13 + '@smithy/eventstream-serde-node': 4.2.13 + '@smithy/fetch-http-handler': 5.3.16 + '@smithy/hash-blob-browser': 4.2.14 + '@smithy/hash-node': 4.2.13 + '@smithy/hash-stream-node': 4.2.13 + '@smithy/invalid-dependency': 4.2.13 + '@smithy/md5-js': 4.2.13 + '@smithy/middleware-content-length': 4.2.13 + '@smithy/middleware-endpoint': 4.4.29 + '@smithy/middleware-retry': 4.5.0 + '@smithy/middleware-serde': 4.2.17 + '@smithy/middleware-stack': 4.2.13 + '@smithy/node-config-provider': 4.3.13 + '@smithy/node-http-handler': 4.5.2 + '@smithy/protocol-http': 5.3.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 + '@smithy/url-parser': 4.2.13 '@smithy/util-base64': 4.3.2 '@smithy/util-body-length-browser': 4.2.2 '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.44 - '@smithy/util-defaults-mode-node': 4.2.48 - '@smithy/util-endpoints': 3.3.3 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-retry': 4.2.13 - '@smithy/util-stream': 4.5.21 + '@smithy/util-defaults-mode-browser': 4.3.45 + '@smithy/util-defaults-mode-node': 4.2.49 + '@smithy/util-endpoints': 3.3.4 + '@smithy/util-middleware': 4.2.13 + '@smithy/util-retry': 4.3.0 + '@smithy/util-stream': 4.5.22 '@smithy/util-utf8': 4.2.2 - '@smithy/util-waiter': 4.2.14 + '@smithy/util-waiter': 4.2.15 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.973.26': + '@aws-sdk/core@3.973.27': dependencies: - '@aws-sdk/types': 3.973.6 - '@aws-sdk/xml-builder': 3.972.16 - '@smithy/core': 3.23.13 - '@smithy/node-config-provider': 4.3.12 - '@smithy/property-provider': 4.2.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/signature-v4': 5.3.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@aws-sdk/xml-builder': 3.972.17 + '@smithy/core': 3.23.14 + '@smithy/node-config-provider': 4.3.13 + '@smithy/property-provider': 4.2.13 + '@smithy/protocol-http': 5.3.13 + '@smithy/signature-v4': 5.3.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 '@smithy/util-base64': 4.3.2 - '@smithy/util-middleware': 4.2.12 + '@smithy/util-middleware': 4.2.13 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@aws-sdk/crc64-nvme@3.972.5': + '@aws-sdk/crc64-nvme@3.972.6': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.24': + '@aws-sdk/credential-provider-env@3.972.25': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/types': 3.973.6 - '@smithy/property-provider': 4.2.12 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/types': 3.973.7 + '@smithy/property-provider': 4.2.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.26': + '@aws-sdk/credential-provider-http@3.972.27': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/types': 3.973.6 - '@smithy/fetch-http-handler': 5.3.15 - '@smithy/node-http-handler': 4.5.1 - '@smithy/property-provider': 4.2.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 - '@smithy/util-stream': 4.5.21 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/types': 3.973.7 + '@smithy/fetch-http-handler': 5.3.16 + '@smithy/node-http-handler': 4.5.2 + '@smithy/property-provider': 4.2.13 + '@smithy/protocol-http': 5.3.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 + '@smithy/util-stream': 4.5.22 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.28': + '@aws-sdk/credential-provider-ini@3.972.29': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/credential-provider-env': 3.972.24 - '@aws-sdk/credential-provider-http': 3.972.26 - '@aws-sdk/credential-provider-login': 3.972.28 - '@aws-sdk/credential-provider-process': 3.972.24 - '@aws-sdk/credential-provider-sso': 3.972.28 - '@aws-sdk/credential-provider-web-identity': 3.972.28 - '@aws-sdk/nested-clients': 3.996.18 - '@aws-sdk/types': 3.973.6 - '@smithy/credential-provider-imds': 4.2.12 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/credential-provider-env': 3.972.25 + '@aws-sdk/credential-provider-http': 3.972.27 + '@aws-sdk/credential-provider-login': 3.972.29 + '@aws-sdk/credential-provider-process': 3.972.25 + '@aws-sdk/credential-provider-sso': 3.972.29 + '@aws-sdk/credential-provider-web-identity': 3.972.29 + '@aws-sdk/nested-clients': 3.996.19 + '@aws-sdk/types': 3.973.7 + '@smithy/credential-provider-imds': 4.2.13 + '@smithy/property-provider': 4.2.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-login@3.972.28': + '@aws-sdk/credential-provider-login@3.972.29': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/nested-clients': 3.996.18 - '@aws-sdk/types': 3.973.6 - '@smithy/property-provider': 4.2.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/nested-clients': 3.996.19 + '@aws-sdk/types': 3.973.7 + '@smithy/property-provider': 4.2.13 + '@smithy/protocol-http': 5.3.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.972.29': + '@aws-sdk/credential-provider-node@3.972.30': dependencies: - '@aws-sdk/credential-provider-env': 3.972.24 - '@aws-sdk/credential-provider-http': 3.972.26 - '@aws-sdk/credential-provider-ini': 3.972.28 - '@aws-sdk/credential-provider-process': 3.972.24 - '@aws-sdk/credential-provider-sso': 3.972.28 - '@aws-sdk/credential-provider-web-identity': 3.972.28 - '@aws-sdk/types': 3.973.6 - '@smithy/credential-provider-imds': 4.2.12 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@aws-sdk/credential-provider-env': 3.972.25 + '@aws-sdk/credential-provider-http': 3.972.27 + '@aws-sdk/credential-provider-ini': 3.972.29 + '@aws-sdk/credential-provider-process': 3.972.25 + '@aws-sdk/credential-provider-sso': 3.972.29 + '@aws-sdk/credential-provider-web-identity': 3.972.29 + '@aws-sdk/types': 3.973.7 + '@smithy/credential-provider-imds': 4.2.13 + '@smithy/property-provider': 4.2.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.972.24': + '@aws-sdk/credential-provider-process@3.972.25': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/types': 3.973.6 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/types': 3.973.7 + '@smithy/property-provider': 4.2.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.28': + '@aws-sdk/credential-provider-sso@3.972.29': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/nested-clients': 3.996.18 - '@aws-sdk/token-providers': 3.1021.0 - '@aws-sdk/types': 3.973.6 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/nested-clients': 3.996.19 + '@aws-sdk/token-providers': 3.1026.0 + '@aws-sdk/types': 3.973.7 + '@smithy/property-provider': 4.2.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.972.28': + '@aws-sdk/credential-provider-web-identity@3.972.29': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/nested-clients': 3.996.18 - '@aws-sdk/types': 3.973.6 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/nested-clients': 3.996.19 + '@aws-sdk/types': 3.973.7 + '@smithy/property-provider': 4.2.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/middleware-bucket-endpoint@3.972.8': + '@aws-sdk/middleware-bucket-endpoint@3.972.9': dependencies: - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.7 '@aws-sdk/util-arn-parser': 3.972.3 - '@smithy/node-config-provider': 4.3.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@smithy/node-config-provider': 4.3.13 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 '@smithy/util-config-provider': 4.2.2 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.972.8': + '@aws-sdk/middleware-expect-continue@3.972.9': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.974.6': + '@aws-sdk/middleware-flexible-checksums@3.974.7': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.973.26 - '@aws-sdk/crc64-nvme': 3.972.5 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/crc64-nvme': 3.972.6 + '@aws-sdk/types': 3.973.7 '@smithy/is-array-buffer': 4.2.2 - '@smithy/node-config-provider': 4.3.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-stream': 4.5.21 + '@smithy/node-config-provider': 4.3.13 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 + '@smithy/util-middleware': 4.2.13 + '@smithy/util-stream': 4.5.22 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.972.8': + '@aws-sdk/middleware-host-header@3.972.9': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.972.8': + '@aws-sdk/middleware-location-constraint@3.972.9': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.972.8': + '@aws-sdk/middleware-logger@3.972.9': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.972.9': + '@aws-sdk/middleware-recursion-detection@3.972.10': dependencies: - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.7 '@aws/lambda-invoke-store': 0.2.4 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.972.27': + '@aws-sdk/middleware-sdk-s3@3.972.28': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/types': 3.973.7 '@aws-sdk/util-arn-parser': 3.972.3 - '@smithy/core': 3.23.13 - '@smithy/node-config-provider': 4.3.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/signature-v4': 5.3.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 + '@smithy/core': 3.23.14 + '@smithy/node-config-provider': 4.3.13 + '@smithy/protocol-http': 5.3.13 + '@smithy/signature-v4': 5.3.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 '@smithy/util-config-provider': 4.2.2 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-stream': 4.5.21 + '@smithy/util-middleware': 4.2.13 + '@smithy/util-stream': 4.5.22 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.972.8': + '@aws-sdk/middleware-ssec@3.972.9': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.972.28': + '@aws-sdk/middleware-user-agent@3.972.29': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/types': 3.973.6 - '@aws-sdk/util-endpoints': 3.996.5 - '@smithy/core': 3.23.13 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 - '@smithy/util-retry': 4.2.13 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/types': 3.973.7 + '@aws-sdk/util-endpoints': 3.996.6 + '@smithy/core': 3.23.14 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 + '@smithy/util-retry': 4.3.0 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.996.18': + '@aws-sdk/nested-clients@3.996.19': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.26 - '@aws-sdk/middleware-host-header': 3.972.8 - '@aws-sdk/middleware-logger': 3.972.8 - '@aws-sdk/middleware-recursion-detection': 3.972.9 - '@aws-sdk/middleware-user-agent': 3.972.28 - '@aws-sdk/region-config-resolver': 3.972.10 - '@aws-sdk/types': 3.973.6 - '@aws-sdk/util-endpoints': 3.996.5 - '@aws-sdk/util-user-agent-browser': 3.972.8 - '@aws-sdk/util-user-agent-node': 3.973.14 - '@smithy/config-resolver': 4.4.13 - '@smithy/core': 3.23.13 - '@smithy/fetch-http-handler': 5.3.15 - '@smithy/hash-node': 4.2.12 - '@smithy/invalid-dependency': 4.2.12 - '@smithy/middleware-content-length': 4.2.12 - '@smithy/middleware-endpoint': 4.4.28 - '@smithy/middleware-retry': 4.4.46 - '@smithy/middleware-serde': 4.2.16 - '@smithy/middleware-stack': 4.2.12 - '@smithy/node-config-provider': 4.3.12 - '@smithy/node-http-handler': 4.5.1 - '@smithy/protocol-http': 5.3.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/middleware-host-header': 3.972.9 + '@aws-sdk/middleware-logger': 3.972.9 + '@aws-sdk/middleware-recursion-detection': 3.972.10 + '@aws-sdk/middleware-user-agent': 3.972.29 + '@aws-sdk/region-config-resolver': 3.972.11 + '@aws-sdk/types': 3.973.7 + '@aws-sdk/util-endpoints': 3.996.6 + '@aws-sdk/util-user-agent-browser': 3.972.9 + '@aws-sdk/util-user-agent-node': 3.973.15 + '@smithy/config-resolver': 4.4.14 + '@smithy/core': 3.23.14 + '@smithy/fetch-http-handler': 5.3.16 + '@smithy/hash-node': 4.2.13 + '@smithy/invalid-dependency': 4.2.13 + '@smithy/middleware-content-length': 4.2.13 + '@smithy/middleware-endpoint': 4.4.29 + '@smithy/middleware-retry': 4.5.0 + '@smithy/middleware-serde': 4.2.17 + '@smithy/middleware-stack': 4.2.13 + '@smithy/node-config-provider': 4.3.13 + '@smithy/node-http-handler': 4.5.2 + '@smithy/protocol-http': 5.3.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 + '@smithy/url-parser': 4.2.13 '@smithy/util-base64': 4.3.2 '@smithy/util-body-length-browser': 4.2.2 '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.44 - '@smithy/util-defaults-mode-node': 4.2.48 - '@smithy/util-endpoints': 3.3.3 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-retry': 4.2.13 + '@smithy/util-defaults-mode-browser': 4.3.45 + '@smithy/util-defaults-mode-node': 4.2.49 + '@smithy/util-endpoints': 3.3.4 + '@smithy/util-middleware': 4.2.13 + '@smithy/util-retry': 4.3.0 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/region-config-resolver@3.972.10': + '@aws-sdk/region-config-resolver@3.972.11': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/config-resolver': 4.4.13 - '@smithy/node-config-provider': 4.3.12 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@smithy/config-resolver': 4.4.14 + '@smithy/node-config-provider': 4.3.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.1022.0': + '@aws-sdk/s3-request-presigner@3.1027.0': dependencies: - '@aws-sdk/signature-v4-multi-region': 3.996.15 - '@aws-sdk/types': 3.973.6 - '@aws-sdk/util-format-url': 3.972.8 - '@smithy/middleware-endpoint': 4.4.28 - '@smithy/protocol-http': 5.3.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 + '@aws-sdk/signature-v4-multi-region': 3.996.16 + '@aws-sdk/types': 3.973.7 + '@aws-sdk/util-format-url': 3.972.9 + '@smithy/middleware-endpoint': 4.4.29 + '@smithy/protocol-http': 5.3.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.15': + '@aws-sdk/signature-v4-multi-region@3.996.16': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.27 - '@aws-sdk/types': 3.973.6 - '@smithy/protocol-http': 5.3.12 - '@smithy/signature-v4': 5.3.12 - '@smithy/types': 4.13.1 + '@aws-sdk/middleware-sdk-s3': 3.972.28 + '@aws-sdk/types': 3.973.7 + '@smithy/protocol-http': 5.3.13 + '@smithy/signature-v4': 5.3.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1021.0': + '@aws-sdk/token-providers@3.1026.0': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/nested-clients': 3.996.18 - '@aws-sdk/types': 3.973.6 - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@aws-sdk/core': 3.973.27 + '@aws-sdk/nested-clients': 3.996.19 + '@aws-sdk/types': 3.973.7 + '@smithy/property-provider': 4.2.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/types@3.973.6': + '@aws-sdk/types@3.973.7': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 '@aws-sdk/util-arn-parser@3.972.3': dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.996.5': + '@aws-sdk/util-endpoints@3.996.6': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 - '@smithy/util-endpoints': 3.3.3 + '@aws-sdk/types': 3.973.7 + '@smithy/types': 4.14.0 + '@smithy/url-parser': 4.2.13 + '@smithy/util-endpoints': 3.3.4 tslib: 2.8.1 - '@aws-sdk/util-format-url@3.972.8': + '@aws-sdk/util-format-url@3.972.9': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/querystring-builder': 4.2.12 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@smithy/querystring-builder': 4.2.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 '@aws-sdk/util-locate-window@3.965.5': dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.972.8': + '@aws-sdk/util-user-agent-browser@3.972.9': dependencies: - '@aws-sdk/types': 3.973.6 - '@smithy/types': 4.13.1 + '@aws-sdk/types': 3.973.7 + '@smithy/types': 4.14.0 bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.973.14': + '@aws-sdk/util-user-agent-node@3.973.15': dependencies: - '@aws-sdk/middleware-user-agent': 3.972.28 - '@aws-sdk/types': 3.973.6 - '@smithy/node-config-provider': 4.3.12 - '@smithy/types': 4.13.1 + '@aws-sdk/middleware-user-agent': 3.972.29 + '@aws-sdk/types': 3.973.7 + '@smithy/node-config-provider': 4.3.13 + '@smithy/types': 4.14.0 '@smithy/util-config-provider': 4.2.2 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.16': + '@aws-sdk/xml-builder@3.972.17': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 fast-xml-parser: 5.5.8 tslib: 2.8.1 @@ -5090,72 +5095,74 @@ snapshots: '@babel/helper-validator-identifier': 7.28.5 optional: true - '@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1)': + '@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1)': dependencies: - '@better-auth/utils': 0.3.1 + '@better-auth/utils': 0.4.0 '@better-fetch/fetch': 1.1.21 '@opentelemetry/api': 1.9.0 '@opentelemetry/semantic-conventions': 1.40.0 '@standard-schema/spec': 1.1.0 - better-call: 1.3.2(zod@4.3.6) + better-call: 1.3.5(zod@4.3.6) jose: 6.2.1 kysely: 0.28.14 nanostores: 1.1.1 zod: 4.3.6 - '@better-auth/drizzle-adapter@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)))': + '@better-auth/drizzle-adapter@1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)))': dependencies: - '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) - '@better-auth/utils': 0.3.1 + '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) + '@better-auth/utils': 0.4.0 optionalDependencies: - drizzle-orm: 0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)) + drizzle-orm: 0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)) - '@better-auth/kysely-adapter@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(kysely@0.28.14)': + '@better-auth/kysely-adapter@1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(kysely@0.28.14)': dependencies: - '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) - '@better-auth/utils': 0.3.1 + '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) + '@better-auth/utils': 0.4.0 optionalDependencies: kysely: 0.28.14 - '@better-auth/memory-adapter@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)': + '@better-auth/memory-adapter@1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)': dependencies: - '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) - '@better-auth/utils': 0.3.1 + '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) + '@better-auth/utils': 0.4.0 - '@better-auth/mongo-adapter@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(mongodb@7.1.0)': + '@better-auth/mongo-adapter@1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(mongodb@7.1.0)': dependencies: - '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) - '@better-auth/utils': 0.3.1 + '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) + '@better-auth/utils': 0.4.0 optionalDependencies: mongodb: 7.1.0 - '@better-auth/passkey@1.5.6(c3c62cf8a7539a1eb8064cbe0a94b925)': + '@better-auth/passkey@1.6.2(6b6583111a650617ab587fee78bde6e8)': dependencies: - '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) - '@better-auth/utils': 0.3.1 + '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) + '@better-auth/utils': 0.4.0 '@better-fetch/fetch': 1.1.21 '@simplewebauthn/browser': 13.2.2 '@simplewebauthn/server': 13.2.3 - better-auth: 1.5.6(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)))(mongodb@7.1.0)(mysql2@3.15.3)(next@16.2.2(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - better-call: 1.3.2(zod@4.3.6) + better-auth: 1.6.2(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)))(mongodb@7.1.0)(mysql2@3.15.3)(next@16.2.3(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + better-call: 1.3.5(zod@4.3.6) nanostores: 1.1.1 zod: 4.3.6 - '@better-auth/prisma-adapter@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))': + '@better-auth/prisma-adapter@1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))': dependencies: - '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) - '@better-auth/utils': 0.3.1 + '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) + '@better-auth/utils': 0.4.0 optionalDependencies: - '@prisma/client': 7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2) - prisma: 7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@prisma/client': 7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2) + prisma: 7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2) - '@better-auth/telemetry@1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))': + '@better-auth/telemetry@1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)': dependencies: - '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) - '@better-auth/utils': 0.3.1 + '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) + '@better-auth/utils': 0.4.0 '@better-fetch/fetch': 1.1.21 - '@better-auth/utils@0.3.1': {} + '@better-auth/utils@0.4.0': + dependencies: + '@noble/hashes': 2.0.1 '@better-fetch/fetch@1.1.21': {} @@ -5215,29 +5222,29 @@ snapshots: '@date-fns/tz@1.4.1': {} - '@dnd-kit/accessibility@3.1.1(react@19.2.4)': + '@dnd-kit/accessibility@3.1.1(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 tslib: 2.8.1 - '@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@dnd-kit/core@6.3.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@dnd-kit/accessibility': 3.1.1(react@19.2.4) - '@dnd-kit/utilities': 3.2.2(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@dnd-kit/accessibility': 3.1.1(react@19.2.5) + '@dnd-kit/utilities': 3.2.2(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) tslib: 2.8.1 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@dnd-kit/utilities': 3.2.2(react@19.2.4) - react: 19.2.4 + '@dnd-kit/core': 6.3.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@dnd-kit/utilities': 3.2.2(react@19.2.5) + react: 19.2.5 tslib: 2.8.1 - '@dnd-kit/utilities@3.2.2(react@19.2.4)': + '@dnd-kit/utilities@3.2.2(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 tslib: 2.8.1 '@drizzle-team/brocli@0.10.2': {} @@ -5531,11 +5538,11 @@ snapshots: '@floating-ui/core': 1.7.5 '@floating-ui/utils': 0.2.11 - '@floating-ui/react-dom@2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@floating-ui/dom': 1.7.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) '@floating-ui/utils@0.2.11': {} @@ -5730,30 +5737,30 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@16.2.2': {} + '@next/env@16.2.3': {} - '@next/swc-darwin-arm64@16.2.2': + '@next/swc-darwin-arm64@16.2.3': optional: true - '@next/swc-darwin-x64@16.2.2': + '@next/swc-darwin-x64@16.2.3': optional: true - '@next/swc-linux-arm64-gnu@16.2.2': + '@next/swc-linux-arm64-gnu@16.2.3': optional: true - '@next/swc-linux-arm64-musl@16.2.2': + '@next/swc-linux-arm64-musl@16.2.3': optional: true - '@next/swc-linux-x64-gnu@16.2.2': + '@next/swc-linux-x64-gnu@16.2.3': optional: true - '@next/swc-linux-x64-musl@16.2.2': + '@next/swc-linux-x64-musl@16.2.3': optional: true - '@next/swc-win32-arm64-msvc@16.2.2': + '@next/swc-win32-arm64-msvc@16.2.3': optional: true - '@next/swc-win32-x64-msvc@16.2.2': + '@next/swc-win32-x64-msvc@16.2.3': optional: true '@noble/ciphers@2.1.1': {} @@ -5772,9 +5779,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@openrouter/ai-sdk-provider@2.3.3(ai@6.0.143(zod@4.3.6))(zod@4.3.6)': + '@openrouter/ai-sdk-provider@2.5.1(ai@6.0.154(zod@4.3.6))(zod@4.3.6)': dependencies: - ai: 6.0.143(zod@4.3.6) + ai: 6.0.154(zod@4.3.6) zod: 4.3.6 '@opentelemetry/api@1.9.0': {} @@ -6012,11 +6019,11 @@ snapshots: '@prisma/client-runtime-utils@7.4.2': optional: true - '@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2)': + '@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2)': dependencies: '@prisma/client-runtime-utils': 7.4.2 optionalDependencies: - prisma: 7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + prisma: 7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2) typescript: 6.0.2 optional: true @@ -6090,824 +6097,824 @@ snapshots: '@prisma/query-plan-executor@7.2.0': optional: true - '@prisma/studio-core@0.13.1(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@prisma/studio-core@0.13.1(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@types/react': 19.2.14 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optional: true '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) '@radix-ui/rect': 1.1.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-progress@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-progress@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 - use-sync-external-store: 1.6.0(react@19.2.4) + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: '@radix-ui/rect': 1.1.1 - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) '@radix-ui/rect@1.1.1': {} - '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1))(react@19.2.4)': + '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.5)': dependencies: '@standard-schema/spec': 1.1.0 '@standard-schema/utils': 0.3.0 @@ -6916,12 +6923,12 @@ snapshots: redux-thunk: 3.1.0(redux@5.0.1) reselect: 5.1.1 optionalDependencies: - react: 19.2.4 - react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1) + react: 19.2.5 + react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1) - '@remixicon/react@4.9.0(react@19.2.4)': + '@remixicon/react@4.9.0(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 '@simplewebauthn/browser@13.2.2': {} @@ -6945,97 +6952,97 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/config-resolver@4.4.13': + '@smithy/config-resolver@4.4.14': dependencies: - '@smithy/node-config-provider': 4.3.12 - '@smithy/types': 4.13.1 + '@smithy/node-config-provider': 4.3.13 + '@smithy/types': 4.14.0 '@smithy/util-config-provider': 4.2.2 - '@smithy/util-endpoints': 3.3.3 - '@smithy/util-middleware': 4.2.12 + '@smithy/util-endpoints': 3.3.4 + '@smithy/util-middleware': 4.2.13 tslib: 2.8.1 - '@smithy/core@3.23.13': + '@smithy/core@3.23.14': dependencies: - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 + '@smithy/url-parser': 4.2.13 '@smithy/util-base64': 4.3.2 '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-stream': 4.5.21 + '@smithy/util-middleware': 4.2.13 + '@smithy/util-stream': 4.5.22 '@smithy/util-utf8': 4.2.2 '@smithy/uuid': 1.1.2 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.2.12': + '@smithy/credential-provider-imds@4.2.13': dependencies: - '@smithy/node-config-provider': 4.3.12 - '@smithy/property-provider': 4.2.12 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 + '@smithy/node-config-provider': 4.3.13 + '@smithy/property-provider': 4.2.13 + '@smithy/types': 4.14.0 + '@smithy/url-parser': 4.2.13 tslib: 2.8.1 - '@smithy/eventstream-codec@4.2.12': + '@smithy/eventstream-codec@4.2.13': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 '@smithy/util-hex-encoding': 4.2.2 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.2.12': + '@smithy/eventstream-serde-browser@4.2.13': dependencies: - '@smithy/eventstream-serde-universal': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/eventstream-serde-universal': 4.2.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.3.12': + '@smithy/eventstream-serde-config-resolver@4.3.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.2.12': + '@smithy/eventstream-serde-node@4.2.13': dependencies: - '@smithy/eventstream-serde-universal': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/eventstream-serde-universal': 4.2.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.2.12': + '@smithy/eventstream-serde-universal@4.2.13': dependencies: - '@smithy/eventstream-codec': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/eventstream-codec': 4.2.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.3.15': + '@smithy/fetch-http-handler@5.3.16': dependencies: - '@smithy/protocol-http': 5.3.12 - '@smithy/querystring-builder': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/protocol-http': 5.3.13 + '@smithy/querystring-builder': 4.2.13 + '@smithy/types': 4.14.0 '@smithy/util-base64': 4.3.2 tslib: 2.8.1 - '@smithy/hash-blob-browser@4.2.13': + '@smithy/hash-blob-browser@4.2.14': dependencies: '@smithy/chunked-blob-reader': 5.2.2 '@smithy/chunked-blob-reader-native': 4.2.3 - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/hash-node@4.2.12': + '@smithy/hash-node@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 '@smithy/util-buffer-from': 4.2.2 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/hash-stream-node@4.2.12': + '@smithy/hash-stream-node@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/invalid-dependency@4.2.12': + '@smithy/invalid-dependency@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': @@ -7046,126 +7053,127 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/md5-js@4.2.12': + '@smithy/md5-js@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/middleware-content-length@4.2.12': + '@smithy/middleware-content-length@4.2.13': dependencies: - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.28': + '@smithy/middleware-endpoint@4.4.29': dependencies: - '@smithy/core': 3.23.13 - '@smithy/middleware-serde': 4.2.16 - '@smithy/node-config-provider': 4.3.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 - '@smithy/util-middleware': 4.2.12 + '@smithy/core': 3.23.14 + '@smithy/middleware-serde': 4.2.17 + '@smithy/node-config-provider': 4.3.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 + '@smithy/url-parser': 4.2.13 + '@smithy/util-middleware': 4.2.13 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.46': + '@smithy/middleware-retry@4.5.0': dependencies: - '@smithy/node-config-provider': 4.3.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/service-error-classification': 4.2.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-retry': 4.2.13 + '@smithy/core': 3.23.14 + '@smithy/node-config-provider': 4.3.13 + '@smithy/protocol-http': 5.3.13 + '@smithy/service-error-classification': 4.2.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 + '@smithy/util-middleware': 4.2.13 + '@smithy/util-retry': 4.3.0 '@smithy/uuid': 1.1.2 tslib: 2.8.1 - '@smithy/middleware-serde@4.2.16': + '@smithy/middleware-serde@4.2.17': dependencies: - '@smithy/core': 3.23.13 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@smithy/core': 3.23.14 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/middleware-stack@4.2.12': + '@smithy/middleware-stack@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/node-config-provider@4.3.12': + '@smithy/node-config-provider@4.3.13': dependencies: - '@smithy/property-provider': 4.2.12 - '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@smithy/property-provider': 4.2.13 + '@smithy/shared-ini-file-loader': 4.4.8 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/node-http-handler@4.5.1': + '@smithy/node-http-handler@4.5.2': dependencies: - '@smithy/protocol-http': 5.3.12 - '@smithy/querystring-builder': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/protocol-http': 5.3.13 + '@smithy/querystring-builder': 4.2.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/property-provider@4.2.12': + '@smithy/property-provider@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/protocol-http@5.3.12': + '@smithy/protocol-http@5.3.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/querystring-builder@4.2.12': + '@smithy/querystring-builder@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 '@smithy/util-uri-escape': 4.2.2 tslib: 2.8.1 - '@smithy/querystring-parser@4.2.12': + '@smithy/querystring-parser@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/service-error-classification@4.2.12': + '@smithy/service-error-classification@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 - '@smithy/shared-ini-file-loader@4.4.7': + '@smithy/shared-ini-file-loader@4.4.8': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/signature-v4@5.3.12': + '@smithy/signature-v4@5.3.13': dependencies: '@smithy/is-array-buffer': 4.2.2 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 '@smithy/util-hex-encoding': 4.2.2 - '@smithy/util-middleware': 4.2.12 + '@smithy/util-middleware': 4.2.13 '@smithy/util-uri-escape': 4.2.2 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/smithy-client@4.12.8': + '@smithy/smithy-client@4.12.9': dependencies: - '@smithy/core': 3.23.13 - '@smithy/middleware-endpoint': 4.4.28 - '@smithy/middleware-stack': 4.2.12 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 - '@smithy/util-stream': 4.5.21 + '@smithy/core': 3.23.14 + '@smithy/middleware-endpoint': 4.4.29 + '@smithy/middleware-stack': 4.2.13 + '@smithy/protocol-http': 5.3.13 + '@smithy/types': 4.14.0 + '@smithy/util-stream': 4.5.22 tslib: 2.8.1 - '@smithy/types@4.13.1': + '@smithy/types@4.14.0': dependencies: tslib: 2.8.1 - '@smithy/url-parser@4.2.12': + '@smithy/url-parser@4.2.13': dependencies: - '@smithy/querystring-parser': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/querystring-parser': 4.2.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 '@smithy/util-base64@4.3.2': @@ -7196,49 +7204,49 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.3.44': + '@smithy/util-defaults-mode-browser@4.3.45': dependencies: - '@smithy/property-provider': 4.2.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 + '@smithy/property-provider': 4.2.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.2.48': + '@smithy/util-defaults-mode-node@4.2.49': dependencies: - '@smithy/config-resolver': 4.4.13 - '@smithy/credential-provider-imds': 4.2.12 - '@smithy/node-config-provider': 4.3.12 - '@smithy/property-provider': 4.2.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 + '@smithy/config-resolver': 4.4.14 + '@smithy/credential-provider-imds': 4.2.13 + '@smithy/node-config-provider': 4.3.13 + '@smithy/property-provider': 4.2.13 + '@smithy/smithy-client': 4.12.9 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/util-endpoints@3.3.3': + '@smithy/util-endpoints@3.3.4': dependencies: - '@smithy/node-config-provider': 4.3.12 - '@smithy/types': 4.13.1 + '@smithy/node-config-provider': 4.3.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 '@smithy/util-hex-encoding@4.2.2': dependencies: tslib: 2.8.1 - '@smithy/util-middleware@4.2.12': + '@smithy/util-middleware@4.2.13': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/util-retry@4.2.13': + '@smithy/util-retry@4.3.0': dependencies: - '@smithy/service-error-classification': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/service-error-classification': 4.2.13 + '@smithy/types': 4.14.0 tslib: 2.8.1 - '@smithy/util-stream@4.5.21': + '@smithy/util-stream@4.5.22': dependencies: - '@smithy/fetch-http-handler': 5.3.15 - '@smithy/node-http-handler': 4.5.1 - '@smithy/types': 4.13.1 + '@smithy/fetch-http-handler': 5.3.16 + '@smithy/node-http-handler': 4.5.2 + '@smithy/types': 4.14.0 '@smithy/util-base64': 4.3.2 '@smithy/util-buffer-from': 4.2.2 '@smithy/util-hex-encoding': 4.2.2 @@ -7259,9 +7267,9 @@ snapshots: '@smithy/util-buffer-from': 4.2.2 tslib: 2.8.1 - '@smithy/util-waiter@4.2.14': + '@smithy/util-waiter@4.2.15': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.14.0 tslib: 2.8.1 '@smithy/uuid@1.1.2': @@ -7349,24 +7357,24 @@ snapshots: postcss: 8.5.8 tailwindcss: 4.2.2 - '@tanstack/query-core@5.96.2': {} + '@tanstack/query-core@5.97.0': {} - '@tanstack/react-query@5.96.2(react@19.2.4)': + '@tanstack/react-query@5.97.0(react@19.2.5)': dependencies: - '@tanstack/query-core': 5.96.2 - react: 19.2.4 + '@tanstack/query-core': 5.97.0 + react: 19.2.5 - '@tanstack/react-table@8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-table@8.21.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@tanstack/table-core': 8.21.3 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@tanstack/react-virtual@3.13.23(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-virtual@3.13.23(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@tanstack/virtual-core': 3.13.23 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) '@tanstack/table-core@8.21.3': {} @@ -7405,7 +7413,7 @@ snapshots: '@types/node@14.18.63': {} - '@types/node@25.5.0': + '@types/node@25.5.2': dependencies: undici-types: 7.18.2 @@ -7413,7 +7421,7 @@ snapshots: '@types/pg@8.20.0': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.5.2 pg-protocol: 1.13.0 pg-types: 2.2.0 @@ -7443,11 +7451,11 @@ snapshots: '@vercel/oidc@3.1.0': {} - ai@6.0.143(zod@4.3.6): + ai@6.0.154(zod@4.3.6): dependencies: - '@ai-sdk/gateway': 3.0.85(zod@4.3.6) + '@ai-sdk/gateway': 3.0.94(zod@4.3.6) '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.21(zod@4.3.6) + '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) '@opentelemetry/api': 1.9.0 zod: 4.3.6 @@ -7516,43 +7524,43 @@ snapshots: baseline-browser-mapping@2.10.0: {} - better-auth@1.5.6(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)))(mongodb@7.1.0)(mysql2@3.15.3)(next@16.2.2(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + better-auth@1.6.2(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)))(mongodb@7.1.0)(mysql2@3.15.3)(next@16.2.3(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) - '@better-auth/drizzle-adapter': 1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))) - '@better-auth/kysely-adapter': 1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(kysely@0.28.14) - '@better-auth/memory-adapter': 1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1) - '@better-auth/mongo-adapter': 1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(mongodb@7.1.0) - '@better-auth/prisma-adapter': 1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)) - '@better-auth/telemetry': 1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1)) - '@better-auth/utils': 0.3.1 + '@better-auth/core': 1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1) + '@better-auth/drizzle-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))) + '@better-auth/kysely-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(kysely@0.28.14) + '@better-auth/memory-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0) + '@better-auth/mongo-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(mongodb@7.1.0) + '@better-auth/prisma-adapter': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)) + '@better-auth/telemetry': 1.6.2(@better-auth/core@1.6.2(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.0)(better-call@1.3.5(zod@4.3.6))(jose@6.2.1)(kysely@0.28.14)(nanostores@1.1.1))(@better-auth/utils@0.4.0)(@better-fetch/fetch@1.1.21) + '@better-auth/utils': 0.4.0 '@better-fetch/fetch': 1.1.21 '@noble/ciphers': 2.1.1 '@noble/hashes': 2.0.1 - better-call: 1.3.2(zod@4.3.6) - defu: 6.1.4 + better-call: 1.3.5(zod@4.3.6) + defu: 6.1.7 jose: 6.2.1 kysely: 0.28.14 nanostores: 1.1.1 zod: 4.3.6 optionalDependencies: - '@prisma/client': 7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2) + '@prisma/client': 7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2) drizzle-kit: 0.31.10 - drizzle-orm: 0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)) + drizzle-orm: 0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)) mongodb: 7.1.0 mysql2: 3.15.3 - next: 16.2.2(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.2.3(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) pg: 8.20.0 - prisma: 7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + prisma: 7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: - '@cloudflare/workers-types' - '@opentelemetry/api' - better-call@1.3.2(zod@4.3.6): + better-call@1.3.5(zod@4.3.6): dependencies: - '@better-auth/utils': 0.3.1 + '@better-auth/utils': 0.4.0 '@better-fetch/fetch': 1.1.21 rou3: 0.7.12 set-cookie-parser: 3.0.1 @@ -7609,7 +7617,7 @@ snapshots: dependencies: chokidar: 4.0.3 confbox: 0.2.4 - defu: 6.1.4 + defu: 6.1.7 dotenv: 16.6.1 exsolve: 1.0.8 giget: 2.0.0 @@ -7672,14 +7680,14 @@ snapshots: clsx@2.1.1: {} - cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -7774,7 +7782,7 @@ snapshots: deepmerge-ts@7.1.5: optional: true - defu@6.1.4: {} + defu@6.1.7: {} denque@2.1.0: optional: true @@ -7794,7 +7802,7 @@ snapshots: dotenv@16.6.1: optional: true - dotenv@17.4.0: {} + dotenv@17.4.1: {} drizzle-kit@0.31.10: dependencies: @@ -7803,17 +7811,17 @@ snapshots: esbuild: 0.25.12 tsx: 4.21.0 - drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)): + drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(@opentelemetry/api@1.9.0)(@prisma/client@7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2))(@types/pg@8.20.0)(kysely@0.28.14)(mysql2@3.15.3)(pg@8.20.0)(postgres@3.4.7)(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2)): optionalDependencies: '@electric-sql/pglite': 0.3.15 '@opentelemetry/api': 1.9.0 - '@prisma/client': 7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(typescript@6.0.2) + '@prisma/client': 7.4.2(prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2))(typescript@6.0.2) '@types/pg': 8.20.0 kysely: 0.28.14 mysql2: 3.15.3 pg: 8.20.0 postgres: 3.4.7 - prisma: 7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + prisma: 7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2) duplexer2@0.1.4: dependencies: @@ -8037,7 +8045,7 @@ snapshots: dependencies: citty: 0.1.6 consola: 3.4.2 - defu: 6.1.4 + defu: 6.1.7 node-fetch-native: 1.6.7 nypm: 0.6.5 pathe: 2.0.3 @@ -8144,7 +8152,7 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 - knip@6.3.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.8.1): + knip@6.3.1(@emnapi/core@1.9.2)(@emnapi/runtime@1.8.1): dependencies: '@nodelib/fs.walk': 1.2.8 fast-glob: 3.3.3 @@ -8327,30 +8335,30 @@ snapshots: nanostores@1.1.1: {} - next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + next-themes@0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - next@16.2.2(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + next@16.2.3(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - '@next/env': 16.2.2 + '@next/env': 16.2.3 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.10.0 caniuse-lite: 1.0.30001777 postcss: 8.4.31 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - styled-jsx: 5.1.6(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + styled-jsx: 5.1.6(react@19.2.5) optionalDependencies: - '@next/swc-darwin-arm64': 16.2.2 - '@next/swc-darwin-x64': 16.2.2 - '@next/swc-linux-arm64-gnu': 16.2.2 - '@next/swc-linux-arm64-musl': 16.2.2 - '@next/swc-linux-x64-gnu': 16.2.2 - '@next/swc-linux-x64-musl': 16.2.2 - '@next/swc-win32-arm64-msvc': 16.2.2 - '@next/swc-win32-x64-msvc': 16.2.2 + '@next/swc-darwin-arm64': 16.2.3 + '@next/swc-darwin-x64': 16.2.3 + '@next/swc-linux-arm64-gnu': 16.2.3 + '@next/swc-linux-arm64-musl': 16.2.3 + '@next/swc-linux-x64-gnu': 16.2.3 + '@next/swc-linux-x64-musl': 16.2.3 + '@next/swc-win32-arm64-msvc': 16.2.3 + '@next/swc-win32-x64-msvc': 16.2.3 '@opentelemetry/api': 1.9.0 babel-plugin-react-compiler: 1.0.0 sharp: 0.34.5 @@ -8534,12 +8542,12 @@ snapshots: postgres@3.4.7: optional: true - prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2): + prisma@7.4.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@6.0.2): dependencies: '@prisma/config': 7.4.2 '@prisma/dev': 0.20.0(typescript@6.0.2) '@prisma/engines': 7.4.2 - '@prisma/studio-core': 0.13.1(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@prisma/studio-core': 0.13.1(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) mysql2: 3.15.3 postgres: 3.4.7 optionalDependencies: @@ -8574,65 +8582,65 @@ snapshots: queue-microtask@1.2.3: {} - radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -8644,62 +8652,62 @@ snapshots: rc9@2.1.2: dependencies: - defu: 6.1.4 + defu: 6.1.7 destr: 2.0.5 optional: true - react-day-picker@9.14.0(react@19.2.4): + react-day-picker@9.14.0(react@19.2.5): dependencies: '@date-fns/tz': 1.4.1 '@tabby_ai/hijri-converter': 1.0.5 date-fns: 4.1.0 date-fns-jalali: 4.1.0-0 - react: 19.2.4 + react: 19.2.5 - react-dom@19.2.4(react@19.2.4): + react-dom@19.2.5(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 scheduler: 0.27.0 react-is@16.13.1: {} - react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 - react: 19.2.4 - use-sync-external-store: 1.6.0(react@19.2.4) + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 redux: 5.0.1 - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.4): + react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.5) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.5) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 - react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.5): dependencies: get-nonce: 1.0.1 - react: 19.2.4 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - react@19.2.4: {} + react@19.2.5: {} readable-stream@2.3.8: dependencies: @@ -8724,21 +8732,21 @@ snapshots: readdirp@4.1.2: optional: true - recharts@3.8.1(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@16.13.1)(react@19.2.4)(redux@5.0.1): + recharts@3.8.1(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.5)(redux@5.0.1): dependencies: - '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1))(react@19.2.4) + '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.5) clsx: 2.1.1 decimal.js-light: 2.5.1 es-toolkit: 1.45.1 eventemitter3: 5.0.4 immer: 10.2.0 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) react-is: 16.13.1 - react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1) + react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1) reselect: 5.1.1 tiny-invariant: 1.3.3 - use-sync-external-store: 1.6.0(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.5) victory-vendor: 37.3.6 transitivePeerDependencies: - '@types/react' @@ -8859,10 +8867,10 @@ snapshots: smol-toml@1.6.1: {} - sonner@2.0.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + sonner@2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) source-map-js@1.2.1: {} @@ -8906,10 +8914,10 @@ snapshots: strnum@2.2.2: {} - styled-jsx@5.1.6(react@19.2.4): + styled-jsx@5.1.6(react@19.2.5): dependencies: client-only: 0.0.1 - react: 19.2.4 + react: 19.2.5 svg-pathdata@6.0.3: optional: true @@ -8990,24 +8998,24 @@ snapshots: readable-stream: 2.3.8 setimmediate: 1.0.5 - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4): + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4): + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5): dependencies: detect-node-es: 1.1.0 - react: 19.2.4 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - use-sync-external-store@1.6.0(react@19.2.4): + use-sync-external-store@1.6.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 util-deprecate@1.0.2: {} @@ -9025,11 +9033,11 @@ snapshots: typescript: 6.0.2 optional: true - vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: - '@types/react' - '@types/react-dom' diff --git a/src/shared/lib/storage/s3-client.ts b/src/shared/lib/storage/s3-client.ts index bcddcf9..6a3460f 100644 --- a/src/shared/lib/storage/s3-client.ts +++ b/src/shared/lib/storage/s3-client.ts @@ -1,13 +1,13 @@ import { S3Client } from "@aws-sdk/client-s3"; export const s3 = new S3Client({ - endpoint: process.env.S3_ENDPOINT ?? "", - region: process.env.S3_REGION ?? "auto", + endpoint: process.env.S3_ENDPOINT || "", + region: process.env.S3_REGION || "auto", credentials: { - accessKeyId: process.env.S3_ACCESS_KEY_ID ?? "", - secretAccessKey: process.env.S3_SECRET_ACCESS_KEY ?? "", + accessKeyId: process.env.S3_ACCESS_KEY_ID || "", + secretAccessKey: process.env.S3_SECRET_ACCESS_KEY || "", }, forcePathStyle: true, }); -export const S3_BUCKET = process.env.S3_BUCKET ?? "attachments"; +export const S3_BUCKET = process.env.S3_BUCKET || "attachments"; From ffead579faf67235ea6237a6a682b377c133b5f6 Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 17:50:50 +0000 Subject: [PATCH 03/32] feat(fontes): substituir fonte local America por Inter (Google Fonts) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Next.js self-hosta a Inter em build time — elimina os arquivos .woff2 do repositório e a dependência de localFont. Co-Authored-By: Claude Sonnet 4.6 --- public/fonts/america-medium.woff2 | Bin 62500 -> 0 bytes public/fonts/america-regular.woff2 | Bin 58412 -> 0 bytes public/fonts/font_index.ts | 23 +++++++---------------- src/app/globals.css | 2 +- src/app/layout.tsx | 6 +++--- 5 files changed, 11 insertions(+), 20 deletions(-) delete mode 100644 public/fonts/america-medium.woff2 delete mode 100644 public/fonts/america-regular.woff2 diff --git a/public/fonts/america-medium.woff2 b/public/fonts/america-medium.woff2 deleted file mode 100644 index 275f1a9735735101dc1ff940e2f144f7b4db3795..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62500 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

hoF z8|=SI9#tg%Q!*k<+wr1Iz$>U4e?=ey9%?6*r|{5p3Xs4?Jyem_;fuCk1f(|aGHPoz zVg{;phcI7|52q`GicDCc1O+ApK_wKjN+xqjDg{O43i4`FAeIT6{`uw?77K*qXE_r$ z@Sa(J8(iyEi&?^PHtj|tm5|t@uOA5 z>S?*uBx%bx&O(ceBLGr;I@Wnyer5Sv2M1G_RFRb28s1X6@8c`P5XCIOP zb@!=fh8<}+CvF5`bczG1tb8zC^1yxyM|GNC)i?|X` zkKN|(pV;Nu?fZcGo@2+Jc)zkib)jGCao}u61gp-LbOupc=zGxZvm63*EI@x@sfgY^MKP|gq6{UG2TkyXSMw9l z+IMA5h*T33!@5>utdMxk6)w1cFJ|)MQ2(?tS2J?0`o8wCp10xD-TdH@>w;mfljPIs za9T(#uhqP!=A9iTHDP{jJEdGqU|+@`~M4Z z+Ayqu-Fs^)h!Jyz1?v-)YkC3i;^cKZHsA7D3E1j8vV`ei%nA+;fMLT;4p{Pv^!Nu4 z;5_c|I&Vlx?(nn>cwxDPR$0^li=8AfUUX6cbr6UGT1~6XX%iB(TTUzw+uMD@TwWWFgQW+rDxH|Vw!8Clq^vetz?JLY8sRa4%!@q zugCJG6#foYa?cffXN4as9e%GqtG1D`_#@t+1{|+uv3E{5t6K;GD=cMRnFj*A8?{-a zN(?-$YKGlD*q8Hbjy%*?S zZPO4*=&~N2-eEHmE@)+{`NzlTT{@CjJytwx->w?7LAe4h-I~a;W#%cnfijX9?e*n2 zjVv83jq{Rp4SFBvNYPl^?(W_~&26>(IG0y|TAS4_u&&ab@dci0)=}U+ z(O6futX?19jfk?O>KXMwx0Mqzw4U61N~N?qMSyi3U(RAbcG(4QU5Yvz2hQXmBi$E0 z<${B7HVM8QVK6gIiN3+cHgl;w!cKpgzTKB!} z&cA8s+lwMrxPrADBIe$A2eTWh!r#or@PBMkWne;IA+F7g>vSx&{`HBRTj5~j$o#$= z!SYkvK8=7KHycx;21hLkB|)biPopy)p|5PL{&1UpyC=o2bAscv?JjS8*>eB8Xp-D5 zjXEuJ^Ix&YqYG6v+Sm}R*3I(N6Je!Rx*f?7Y$wk9U03W1$w8Bdu}5sx?uY1SWgD?Jtz7}(aozg2@o`( zL`DT=7CvTju%cGOcYPZ{;np^{eopHXN_?9NPJ$(*-u?jn=+l5cKodg*1HAZzz*35+ zW=YsZOobGMWYseERFk7WD$-1P+d?s&tK?uA-J+(zgVk!|ScLqxC>qN^RfN|Wia^0h zGRYqEKmfs5ni&>LQaFe}=xF1Vk57F5<=4}L^xx#mx;?IxKqqrzVq=h;;p;jt;M;jI znu1rR(E4(Y@ufXco~rBlxV!7F4piZvll9vm@}8Fjfuo24vxxo-k7ML;bpPYBBeR5`ZIVp@DO~nm-(&Ur}>Emqh=TcTebqIt6A_8*!XSuj} z#bp$dHggBUxo?HKdi=}&J>jWY%Ri@D!nfCdqq z@vxPg%p5+zfKK>l90C)DHpLPYG1aBSuZj>{-TR(kR3qHrehhwfM4(k?mJt_(T5n6W z2$Lw3>T*_76c!QuJ5+2sEXhJ3H<1G00nZQi#Vm%5L%GFOd$-;tXj(#yXw6EGn$|Ri zBg`{3}tQI3YaTrhkWc=e-4+0{mmb8CTQT5l%@q)-OUM{mVwCTTCn^hs+o-=#sdZyBZ?IBzTvATI6zny1U{0=%2|ChZ zn5fiG-|<>{`iRRF3Ok)G;qE5=BGgzX&rmE)1{BAwZG=Iu&s?XYp~ zRpGk&tW_a-(m_G>=rf6dRtn+4w`x4utHIk11^+%Nt(KvZZYBe(PksnJA}jCci51aZQWaJd(RTXnw_rQ- zRxtIe2%>Hs`qH4Ts|GlE81jXbwl03b(Cs#1pr6ZQ3)1uWzCo`6Dzc1fIIzgpUBliUC{B}I@ayqB4 z5`;$Egzod5)Kz|c1V-ks0RjisubsFD`0|XvuOsl-8jZ$k<@~&Lr#%iOEseV-`X`?; z-R(jnV!11j{3Mr2GRO{mN!C`1g-OzOyH;0+PC~Rq<@~7Ti>Es&liNd?yMDzwYC!`D zD)%?TwEr)7`Pr;$ZJ%`tI)O_>-q}~NXB}b+228hprU<7svn234F*6fJRP=6Oo#0!v zA43Tgmafr8TDis()T}ieR>s~@>34jrj{I2OonV`b0`WLK&nU@c&7REJw)EQ%g18=y zz81JjKmazmjo`e7Bj*lNSP=NF47&44VU59Pr%p8r$8YwIrE}*0Q&g-`IXkD|p067N zyq#Kw#2HdOPzm)AJ*+o_x(+iX$O@?i<ce?5LZu+K!g4m6WJPhd99!aElSxZ-eBsk+Vd6$jtbb zuWw-uvycXe*u3@LkEAr-y4$xyhHqQXek>0wNPKZFwZ>-Uo`o5d3-ApB37*^Ncj-rf zpeUP8=w|p1uXMV2P>GYp`2(k?hu06$ ziVWkI^~v_SQd&i>2BcoNfC4%mDn8=-;{pul{H#V;)e1YI5)Y z0mFHgzp)`Q#*0ki4Lm8?cZQ|?Wl87kl+ZL}iSTE9#D!@{Gjb9qc>RQ%hE!A|;ya}) z{HJixh+(BnL6nD;kW3^^mE=AP!Q|ef$9qEyKn~nj5)zl=NPX{sm|X7NvhEx_^vmP~ zi?a?+g2oC0T+a<{h#?~~m!|wGc>827GK30Oap+Tz`e|ZtQ-b1yHIx-yLf>}sr^2mP zVBJ4Ixv@^PVcHlSKTGX(zxfnCaw>qBywGX`l zC(Kb_M2xEfP1{ZYT(+G$fUV^Cv6ooRC4dnFX1fIEN;$C$%~*-aBa2rxO>~^iE9J10 zBuqWn`HOhBqHN8HiP+;OJ-o^9e{m^!fBbV-_eKBsV;O-AZXiu)RN?g5^FBVP#jy=5 zb3l^+Is;+|m!_pH1Ye@ShVhmCQp?NKT>_bwTYqPhkwd}pgFjsegW#TB?Yx{n>w~_m za@GnujHsKBeotSK`pAZUw?o! zMU<48-?oe=^=0eroWO*YxNAy{)Nvch$;U3HoC#tNG3n6u+dhk3g6R)VCG`kCIJ1aq;08)Sa6wAqruzD8vx=n&nspACDc}2JWTH*2vjw zCm36WdTeAf&BL+S-j@9D~*v#K8alx2b zsMs($dKembxhBd@Ukrm+s%8_+1uZ4EwaBGi+A76?v9&}K*v57!*uSVeGd~O**Ykrg zijy?Ui?XVlw(Ey+nistq0_DmV6s{m7Sh13bXk{@dM7#i8OD5|JP+L!(mYvV|FP@--D|Db}u2w63yJ5tVwXOf^=0pQe_&hK_bz1E^s<0qcXW zk_<;lhEA8IO0j$zm=?^X61OgDWBQ7HoY(!l-@h$6>yTFU8ok$HO>J1M^lvc&UI&Fl zW5V#*@CaNaiA*3;L4XoPkB*`BzUvuGHcQCo@VEl8MAQd8DJ`Y7>xynDyP4QWZqbEJ zgur^CJBEl3o!vE}?ztgC#S%&>Fvq=b7;P*mR#;*}e=;bA>=-DLZTNp7eKly*N4Z*Z@>ChGo)8fs zgpn&>Z~Z7xqC$-ZQ?!_2jzyTn6j&;h2t6@T;iIG3D)ZFoE}UvL`{zUxj641~?EvUrrT+c5<(5O@s6gOM#jv;N^1-EGQvD4#qM-rc8|NDXQ`2)dFn2wTYERNv>&!xl+ zn@sD5P>^Ir)$+M)xm2uGs-|T(8}(Lu`1kMK{-2xw{r_*Z)@*lLjXFW&6p4vE!wQ@N zfh?)IX4;nFhi>3GCCd7Y{O>=Kv4sLI!N++L>EgS7%yaPPCJGBgu;B>d0>%{@ml&LP zdyv4QbdXg|F-+aDtswM0H_Fp2iHo+Zy1E&MxnHK!aXWwX82+gJe{jC}{EIKY8XYNM zLpVWFMV6s?PLw6VP;^x@OO9>%ZruyQa@1;cD%DyWG!qoVES=_D?yWA(@&-J9cQh0U zBS93y<1vCvQgni0MM+5UTt-tBIh`wH4Lx6~RLixZ-E3H9z5iRQ)9r2iQ~CGr{~FDD zt=b|xZ44(Uj%8?G5oG~DNjFSOQ$5#q0zXco6lVzwcd<(&o(?=e$TbM?7U!aa8-<%~ z+yU5f>D3=1Q@@!w9Nfc-!}LRZyJ&lCQ?`xU_ZtF)GxAu1_J6s2LQE;-6b4*CnSIKf z%28{yL{;77L!RZ(GwnC&veyhe3&%<;o8o3oZm2!Aytdb^6$S3l_D^Z24!)D!wCycgiblR!_I@&O&_X3JH5HNA~#M>Qo48c;?zk4 zwJuRQOOxxlx>c#_RIdhYtGu{HZBf(POP%VdP~P{QUOaNOrrvz68^^Vlc5>_)J3|`L zT&+%@^XJxd*LtIFtXlQ8X4TjJ^1chTO7oq+)+$+!HO&pLciPJlc(>hlVI-f%1&N-MGR4CDknZbk+t=JDX;(OHFdV5#9hc|mQr`O)C z&!^&QOp#FIU%W{3D9~9dC{Qw0Q?1getp2C&>!-Sp^)G@Rx9~7uW1dBp8JJtj)7`n%kvd)no#w~> ziYG7rlfURYp7YR0zJHE4Po}Cg1^19?$Z80HX1o&mIrKE9p^AFG81^mfb14izUH-0} zB6iZs$X{v95>6F$F^Z!eN99MgM=j+L)^H8SZ9}wDBgLXgPi30j@=re~r?D-zY;h0c+Tt#nVCk@p*PJ)UFCRgp zXfB^w5Ze>@nSF$B%&c)npVY2XB*e1SNOhr}H z#f#D<(l=?BbesH@e2=n3`KT;VOyz>|vhr8$rk+<{(eky`+Ku`O{ilB2*kH7bOGd|h zoB7RrvMCk5rk~w2Sd?k_y*PefiE*20QTOLf9aQ>(+yl1`&OK`w;|{6KpB)}| zIAZzu$bTQ%VEyT+;%KSui2Xl~N$tb-QTvC-J|DMo>~M5AZXExsdVupq-BlemtNLv1 zK65*})5bQ_+M3$aZEovy-L+Qhzc}l8^|M`Y!%g4uGH>&K|I!&9zf1aDitxydno%0`EES&~(=MmCtgGuQKz`P_WByS5v5PxQWCxw!hF)pO1X z=auu1^C9QdmEzjr{(yUd`>N-V=ZNQjZ@>3BUxx3n?-_r%|B7Gto5A_P@4?NXsnD(P zrSQw}W07l-6_FdFhojS?!$^QMkqlXkaRqX|?+pFwA1 zU~G@2F*0^8wjRS`v!%t4#h1kG_?7V#qhlV{!yIgYN!ZQ!M%=~c;5B>^p2K&Dy~GM) zK2alXBgUiyIgJd-`DBUgk^6}^5x;gm_`G)!O6k7A$8y$TYwSukWS6ocyUU6_p8HsxbhVQ%9roZi?Our9 zo{XCcUM412lX(4zjzMPDZ?M%Ow;>mauo40R!B?#_jRw>}o-W#W=v1qkt~C-CmOU{m zPTQ;%jW||+qxPjkUFMY#AqMr#$FD12e_7_OdnQ78$hEbjEntJ*fz}u6Mm@);>t2j7 z-WGwCC^q@4+FH~-y$g6BY*{l&BTPVw3Z_bW)MzAEs$@&pr*SC zEP;bzBi<0D3Id%Z;K=R=Id?V2T{S+wL&( z^Xh=DY5Uo*`c!a^%Kep^oME8p%YJ!b;RXE_*yLQhgO)r1KvLt86Ef?am9rGT41I6UPMd3*8-U5*7!QJt zK(p~D0WU?8$L82GKcD6Kgz(pczAs2BJfFlKQFYPudk-(#f_t&SJk+)f;y*O-mn9Cih-Cic$c$Cq`2Z|2W1g2>;a(ELCTC|G_41=E^of>xk*1G0 zEJ6vXLPN#4-bSjt|JlS#7(B;?j?l$sI>Z6KHG5e&om+QhIDXV8m%KR55ElF7$)JQr z^HrQDDM3%xG1VUp{^j-PKGwC%pFizOX-L59SP$L+$8X5?Mt)EF40=*k9TWad+aC_2-p_9S9*^lJ!8o+7n#MAcekofa^14Qqs86 z<)6$T?mx!-Za86IY+y}g>DR)7T0(H_g{CQahv1Xqed|eHv8vBt+hh%}?3@PL_4W!@ zt+T90BjP^=EgXk!N1LvyOZ@A1f^Q2`&Q~8;1EW111MO?pVSsB!^lbkun_?d|lWeGh$^@InGUlJ`#LQ@lIyRkfH^ik|tC8~9 zbeZWSb}u6e@ndh~c*dNNORRN9dq<*_Ro~m{DtUT)WwSsc3j{MiY-84yla0h7-B@7Ch&)(&+?u)Dms+w{GNn5vMAL8+P+y z`Pm>j8)~#aM>($V;GC%9eWwTa-(#&|cOW@Xz_G;v9E-e98s)v4GJS0SLxR4mP?#;j zBETK+26#7cm??H|Y{F_(<`L2fs4hW_2htN`qoz`MKrCO7S}jQBfhu6?TweB1Oe)%U z9fLPtK9z+M!HnFo%Iq#bWcC=PDr2Nqy4gzN{;^huTCEapFwWvnjwXlTqRUd3wfLEfg)7QxdNj93hkaNiWVFwu_F|5>#p`Z=MN3k$Z5;zCoH!yciHH{v zK>D8ljZk!&=XVMPkcr!T#*sqL$u+1A*T(+8;0@^8 z1a;F6-EZTk&=FPismi(fv3KpP09QERUzESm>QS@I0`I8CXTsFBCCSxC*vnvt)9>d> zaM>cW6os%O;gR$L*a{fBt-5EoTOH$D-bkqhBCvxqXara=s&t}X1Gv`nar54fpCY00 zAYcEU&xC20n`a3vFCXGcpHSHcAsm-k{0BJC|BH5pXQHU9n)yYbZkuc*yWew~CV7`o zQ%s-HdNbfcGvAxf0CrWp*EZrcKx^T~!?1$BR5liwm=iy{!c?C~F@jn7t4ZC>@h|BQ zrzYNR1j-*DZ4IXK(#FFGokPQ#+yE{%vQPc-7Sj{+oz88c##o=&EZKpP zsv4UO4a*LFu}*DR*+u_VrRa8GD(j2bkgm_@LtF;-i|k&dO9j{l&KEe*Su4I>9-f`k z>*L=)TR0Bmerf!Q`AB1>FYSPhUfh*g&n7TQ>y3@JF=?rS_C2yn^Zs`3e-f*Wai+{rWqkoKGu%9KzHFU)H!lH zS#EpLO?W<>Hn|4^k1)n>pYjLknk%n}QYeY+JxgeeZF!iTf;X0o(F^OzuB-Z_xu~I( zsGgGS_dtqXn2Zl(C?Um=+Q*g}96$zh`7hei4e^?AjeXLTjZb2*Q}d&;U>RW~)~|^A zl|4yE;6#{9r3mK76sgW0Q;GAsw?SdkL+=pl=m9IXAlCMD_MjBT6>lQwNNF-7h#F3} zNh(;8fS_8^YX9og+8$aO^dE%W9)rckzh<^K#2xB>_^YFM7TAjSKO;wj+2d@0mxfy( z%rQoLT(DJ7z%aeAQf<$bX~we{Pxs$HsRG!F5iCjjhf};T?9toj*iNM2{51LZ#;jv7 z-(M!Z6$stKGxAK@0aG-uF44q2N`oJw1~Cqz(dU9=xG)|KMmfFG=GED|&t5FO<}M_K z%ZUCi>Y95&XYb;2L1W{g9eq&XgBuXHQW1oTF`nwG_u8#aqoM1nk z*oa9H3OK*EQ-2-94DXSY z>G7Aeu1?+k?`ujYVqWGuAf^5nRWXxD#!1)@+K2b5Srl;90Rue7@N7urN&6;&ldY^C z_#q=c;h7*MeHx^{`b$Rp>k)h*t5!%(l8Q zut{B6amrf^wue@Y%7_mEl#385b~RVM2Ck4L%TUj*jIJaz8NiBVVMdy&`eX&MyeV8& zK*at~2kvr;Jphed3Y(7Zdxg7VM)k1N1!FbKqp2mN6L5StRD)6aFX|1~?(KG2pO=ia zZiowlI8c<9Hxd-Lx6~TCY~R?k31fcHif{GirJBfJQAgf^Q$?GeX&nZxFfTGIgoL9bj8IceYK2nfNgv=k^|;BQsy?^Ku_ zO`p)c1h|_skjm%;DM*%J+kM2)uw=~5y@H~;mC?9nR8lssmW}4DKA{l&(E)id5yfG8 zP&&ueEyqm1Uu`il`B)Eq-Y7X)CAW;3h`fA!bbVDyj!0H%`Abb18l3R#VW}<47yR=3 zyt$FdXaAbME&=S~cdl}J6{ABjz9#Wo-)U<_v;gPAZKg$tA8AxXg$EXc6P$)@R2XNf6PQtP=( zJ?kP2Ul)|Yn>lHOa3F{PqHLdp4$g<|`oFgp>|XKiKp>YdOB{3R|Jr^@mX&SKH6KjHg7yQ*`e}(>%gr5+4s2%7&^<{RW#NCdx)6tR|js8 zPnK{o2^GVi5RZ;r*SI=QNgwk1&kZOjsTKO-lgKv{6gq~d_Q4h>Tz=jMxjS{o1 z2iXskN-7_{8Cq@pg4LJp9X0;Bn|eP>Z)YLEh@yd?OPcAF|v<9GBx|H~kp^9_T)FCA0`N z_8C7!pdwEU7jbyA$VnNhglPT}oQo20foD%4rsw%9MHCN-EiqUPe+*h8wEGBkQtIkR zX5!vicIIzRc5!h&s4b1}ia|0UF|x*Tq2jooO~1-*knGl^K5gfy+y#@+Q(&cW51NEf zjcj(_;qH#hnXe{1PU6Dk*(0QZs`Y4uh|8`tuav+QzDOP4#&8k|gN)xRmW{H1D z>yb`uR{W8AX1QdHS%5T4d_^nkIx?g0^U9BSFhrdaeAs9038^!d+>3iGi# zR|HN37S}k%wGuD{G!{($tDR!?Xf;puIa9oBWP$x(v|?R0s{)sjCV=D`0s=3B8yfbJ zFch;v79#9j21Lz;cLp2xuqwj)d|}^2l21UydoTwhiT1%bk#{1|kT$$M0(XK4NG6y9LZt?o3I9nMjq)YAD{!>nN zS3cB1m|48ayMt_24!3aiNe@#Yp`N&|2eNhzZbf12CPvJ@I~NdLo9)w2fM4EWyE&!XYb%&onL&K_7l_Nm=J=A;3)XkoROn%CAmP-ll*c2>iX?Jv-|oUKx*TQv)aa7o*~C(9AwI^v zOz2l%^PPF^cYgNk7&P`Rz_2mu~yqN$FXi10)tC$w$ zm4czr#MKd57b=OLzt7Yqs$z&h1UR6)@GxW!rI=wTwK^SNvTj%XJ3xwK5#iDso~j#g zx~zdevb1G5j{=pHAWC&bDlV=Z#f&LQj2ORlG!Ird>=qcf=&N}^=9jB`MCN|QRgITf zNtcNED2kQhV0#RqEP!f<5Rw`@on;K7!nl0GlYr!=V6<~hM`H3m|LJI+ph=U8;KG<4 z8l_xhnmW@%0hcs;U>kb58Llgvt;{RqFJ~qiLdX!VFdX0^uE=K$O0Mpvg)(%w?b%7C zR2t<=LpN{oQj>U0I;Kubb{*EKw9<9{nJtVO|1UPB_FsD-FZ$@`ll=OlP(J7LJ2G=) z-)3PfoqLgpEW75JsT*~maLS&K3{E#e{VEfua0;i7P8Fk#b7BDV3^p* z3N2uE6AQ_z$8pygbUw^D9w)zsjqFeq!%^>Lt03&tv5J=aiH%DVOd37#uw`x@b=Ubr zJKh6~ z>Nblm0x{l)IVp9Rt88#dx}M3c-30t0V&PvM@RLt?3~E{w{W4!)9q~s-0T5*wu3GRe ztG!P)4q43@qF)yWu$nmKL|}D0L<6fM%5FNuZaj&;c2^lI`|+-{)VhSXFsi zlA@xnULnVfqqYNE%mVpCHqu(7QFAh&U?B~$bIT^?gb^j{;AG(fIpc?{r1%+BzKY7>t?mDv3SGv-_E`3(i=8<=)r+CzthPwEL z6+6~PUcGbl)3St{kG56hM%29On{rIl`V&s)OjBg8q)KXZj|ndW1LPkrF3KMw7-vRx z&X3&Vi@S&5_V_foxPZs;nX3A9ps9@{Y+-o$_FLm8?Iap@n(LFg5L4wq&FvRQHQQU~ z-yMYozVrHECTVh=Gen?-{jA)*7!w>4*Cz>lUDo(a5#{8y})_Xsy9S>b-Nk5=q+tbC)01*>XUR&ee21yLpSBK9z;y}7HpC&s+f z2#jDhDpRE9$DRpdDGXw*7<39~mOs?bF)}3seG9T1jRV6tmBbg5XSG6dy>DtiE+S*~ z$Tb@*KJ@i7sSD8+af6Y5z;G=d1wa|uf$#OKK%WA$iqGY2_tS&xr{1d~lb$KXp50xY!e*;vfo}4Z~z}iln=P9*`^VbxL zz~UqS1f`y8_@Q}Jiq00R6FfRj--RPIom_9R+h=p;{J8uq?@t0`^uz|}oGpwxEKq+% zj|*vGb$eXjd#4d=^ttwzNC-KN11KQe63^u|)pM%#i(~xLVMwn*F^=+mDg#}A0F^+!=$OfI-eE%6XErhfPQVz;aNQw>E zo*M>%$$bDvM@c_KH`@BYe8Q6r3x?2m&hX9WUtYk;yy9G*m>)K@0M>)gp=Of4g$n`r z_A1URQfKQr!%R5S1z7yk=bUmUo0tSs)CO}o0=!HcQz`tN9}k-`ka{W?!?f)?MCL3G>8IZsUN_WP9w^mK(68!Tfm?eIa zQ(kEZ-G60Fm<3_B2xj3;Naa&&%USZhIf=(4x3mg=i3e>i=w6k%mb4S~ts8x8!2|iQ z&ang~?#T?xh4(xNd^U(kJ zh@_$BAsczO5TrcQ1q(Qqu#kvCSgsYvCe)w-2$(J{v-8*r5Y|(z*w~}v!K9?&x!lsm zy(Vn7_p+<$ebGj6cw0^`}7S>OMgUyv22*cnQo~=c(8E{1)YpfPEwor|z>z9_GDVzrt^oy3wFx zAt=Lii6_&}$MR0td(0iC*7O-Rz0qW-%a=aw&=EC);$r{MTYFI4J#Gr&PNs=slK9;w zkhl0=nFNiU8&L)!kc~!+o^3)j$~&%?s;>XYQ-@U5X{s0?;(*+%B3q@!j&`6ai0~o! zS)nG0-TTa~U~9btZ&VI;p%jqg+Z|@^A&z$#Hrff-lUWVx%T>8I@rhaRhIjAhQwZiM z;J^+rIf#Hk6c`CbC8{q~_zQ{D`TT$Q8ijiszsvZXsaBN`;Rn~ z_Gd;j9c_0cUHeFV+%G^jL9Cr2?FXycVt<8IGs>1M{TnN}IPOSkt~Vo9oI7f4h^?uE zsu!kYb>oSx`i#_;lp4ldBoihPGB`)$j-2Wb1)FXmo=rdT@h7V6R?=(4Tjr?p{&QGc ze-#HgVfPzO#$6?+TU#D9g*s!PVLs#od91SkY}U3%{xb~kz4}RIp{O7FO?8tes43hE zMgLQ(u*l!Ia)rH5?qx#NOXu>zxem+>za#*B_Jrgt{aeNPh|Xi@^qhxOA2(isCD;?h z)Nw7o&+;`|==UtPf52jtVhf<{$^^;)5k3U})SnUfGJA^=OLAP`yFj4iY7i!Y^)av0 ze}Lnr`1a5&GZaK)i=wxy2Wi*j+=lLU#AD0tFCDza;tLs;1dd>N5Xq2TBdHMiT|;0$ zh(X*-{N|Fu4OOZWc_xchpj#4w4$?uK&mpoJO%xD*r?2*gcTGx|5X!ym@;FcdG2RM6 zmw)KI{(0|N7&PZ}`oX6b166+F&t}rlE)j8do|$fiABzT!#-NB+!iBwgZqKy{H0b3u z$6CSJx$;~AupAAm!l%BBRWB!m=DhluT?RgS%yy@`<8`Ln#DkC+JyV$qiR@@#fowxT z@kP?tZT~*GGc)r?01wkO`WPb=X=u^<M^sLdv_&(%W z9(2CyBQ+InPKgR`jlF3not9vK)N%hbAO8l-Sm>7hu2Yz|d&7?USpAj!i*>CaPAU>- z(YAj=Sm09Orp;HMT>oaTUZ1>>+b7(sUzex5zk+7kINKdP%!NPKh7$1VUfTEY{7C7- zojVs=ftY;K@KU)vk}RSykf>F)dFM^1H;x&!Qm@MjzuRfOU9;t#z6B|7<#c;_$44_G zLY-uZaCV~)Toc?vrsvz-#i$m*#E96IOa2_I8}5rg5cmUdP|ttTz#xD8IT6ZAB=GTfJG~iR-F`&$bN?rlzhFfIEWuSogTfR6_F*0oIjCAXCAZr z-5g$@S8an9CQMDnoF*Uv68MOrfil|CKS8lDtnXMNjC8UUFHJP)H5uIjUhkmwg~3Fq1Ke|`+=4AjZxps z@iM(rTxHJdQqCFhoD3D+WL4sXysx6`xCO(2IJL46gL!HujzRf#wmImyw)bCc9sD z_Xnr4DD@*BIPa-s+ggiNMXuJ*G&e`j7AE)pSH1%_KgOCamCsC75qW7QafNrr7$hrF zTnYOQgHQ-Osh<&C2FWGpUc%vH)Vgj{!b@uM^tEO1-N$_)U+Wt;8D=ZZx34x(l3~9h z@x_eMqesu7x-R7&pZZd%k zbc?%xYI{So?Q@!lFXz5u;ujrB#MEQAxa-Ha#4H4DJS%F2AnigE)6Z=PZH||-(r-NR z@owqEn20B$c5K5&si!=ui#=!CY}&Y|jiPF3Va?wQ-?OQrknY<=C1?jD6-Pk(5iIZr zUT+zKn)TicdIOJmfb)7;t!PAyW|a}iRJ9G%?0x@6hNf*cfm@nAAma<-5<|{zK*6O7)-of)@$eMz{2`a5p*z=+AQE_D&&c{CFM=Av zab2V#4$kbscnSF%us*p-&tDWpT9?yjr0DMu+w~11Ef&y57w`2QA~n`q(>Q+Gf^R8m zqDV`kuWpFKwHq454GupIksDC0m_C#oZM`Q>t|w zq(i%Vc;ko6y1-8NQVSr9WLZpep?$5E1+YHEYK`ngxtX|s3GmrO<}O=?kJ4Z4)+?U8 ztlI_T8%V=w!+?h9e02|Gt$rjQBh2&x5{46|wa%fqF`R8X{@gF-qXa$}!H#~oZax$Lq)9o`NZ*RI z7pFix2{7OJ*^N?QA6Di+`)Pc@NRM?ElW3xI9$s9J5qTak-0FwD7O31&@#6~Ya)P-} zY9y@h>MsW>SE=~u{5?6wv*<}=0heKk&*UG53LlV&-ymdujWG{KX3>EP9n43_yaTyg z?5CMCVN8cespZYMA4z&OEuc!tX;$+CbrBptOy}(zkApM~Ji3X8aR?U<(@DE;OF?$G z>Qk~w*av?ex4O5_O(j7Bh21xqd_RG9yi=?j9-&nyaDGdoDFL?fW;ya+`Q1(sngD)H zc5f2opH!lZ4hNILYEA3Ly6Y_4wBMy`Yf+MX5iF_s-bYd?@NFOTv4 zV12~_{6#pNu{J$La#?=GkPxcL$WBxU`GIay^^IWk6)l*5QlAxxyE~*=Rfe=g#){gc ztZJJ~>b9b}Oz~{TTQt#T#6UMIY!`c>9tbNoJGIsS7g&v2GsWN0hG!LCe}3QHrFtFF z#pGwkgJx-Iu0OQHGVG$p#=3SM7om<#K$((|i|QUD_p#bHf<1*qAc55nJ`%QFbuUKn z!{ZkZHN3_+oOOIiD*F8d!pjKHm4jNDO{^GZmBt>iM9+Z%tb?mkL;3ayfwk8?t<|5lI2j~h1inKn;nPVj zL#O9^pI!8&O@HO?%IHtuNwdUJZt4LLs9^DFmijDV)DG^g29oSjm@Ui9mx($8uY7fM zM^=Ydrm&jO;Nd=0ga*Eo6WTKYfcgB}DIF{IaGzUaPfmqi82Q6|!)y_JqeH%-f^V4M z8_lVwb8LGSgayAjAY!pkFcm8op}`>rY#fbJQ#}_|Mk3D+JwSJKZiN z~sFAT`AW?qrj3SPM(uVBF|lK0B(#T`##BPZ<} zXl%nP_>yCVh{CkhZuP2dUMv=8)`Yk-R%$5U(LpA(1Rx`h(6IgGCJ;y(oUlaTT*&DJ zCj`#1-KX6+AAb_Fqx4`u`A_biJ%5ks53Z`~|DH(-Q~-Z+QFf#flkq-nE9YtyyLVuG z!6qN-RZScTz_ULl)S2N%8bZucRjMun53tV}0R%hwDb_RGmlkPI2@lW8n7MoMpLKLt zzY-cVgKj@Mn3IZ>3dkw~znCXM^P^d;|A)CGl;4$+q$cPyky%1Yx{3A^D2ualDg?Bb zL56PfaU#=4qQ}kkqO!g$yM}``9jA}%9PP2Q5JWVzu5L^oTM{}yxw2nm4`J^!8mb|! zs)Zt=u~XTxMx@SkYA;GRaTmqac94dzwHTN(U8!1hC2wzGVcv^fRO;6`<)u=9R@tJf z{G5)CJB6O4y6Lq~r!F|x#{mKYHy~=fd6kY$$*;6Wf4Q-7CeqHCyI4f>;B4QSZnNs` zCR=QkpS9J2(PkLy6;J4+v!73xvJZ=YDIt+JAbSb=OuS zQ?}YGf3sN;4eT?Ef~M2l&Ehf;8H-4rvF|h7fPp>(BnKFir$AKv8JKs92qL` zbm0;s>L7nq-gAb9i+>*>rzEhr0&^?6t_=N`bL;U*VBO})lMl3ha)4l$pkzRk>_Uqd z-kP|4aO3*5eH-3+j<45=p$lWpm}{GA#@580GPUX+IVKP&XY20l#WOX6FFQz`d z4XLEwLo=)2f$;UhO!(3TA90qhYH>|a{eJw?i$w|UT4>lbuEr4oe=_w?;{xxKd*;cS zfSGe6covfgV24bp@=IKZHJ+e4Ga83gAgV&Rvv?ZXqo=`+7$2v2@un;1&ky=JNaa>L zs&MxB30r*$BK>aY<3efWdpk*=eVCJxv1RLGxP$X8)*?`#dm*g`N2}m{6UYMKl(jgYX8h(1Mi@f-Q-W zMKOVX{FQ&JFYnr0c4EtWg9e}=GhgbTk>G-4{%8V9K*ZM|2F;@`+S}ug#P)#bMd0gL zgyW*GCa}@$4Q@oAF0`BNFDzhf{Li~#35KKGn7KRlSfa7rtz8<-FAaemWf@5NPMm|L+VvC0hA*-hG;!(OO{W> zFCW$oyT%Z;S}95y7dghUm=nuItG2C->2w7m2n$%~7(RRB9P(yC%=_+q{-3Hp)2!$) z5>nnQY2~XbzKoP7IVwXMm3OK^B_*a>{p6IkmbkaSDk17t^T$vYsIxIKCN{;khfxDR z^94#`Ca)-t)-5k~O7hKsvB|8Zl?v2MZ8h+UsjF`SeL@DyEMKAO+38BO4-ky1$U*e& z=94fCvLn{AbSR53R#ur5`Re@($1fUHd68P3H-E=;{Q}bV;Ld3?ga>=p@(}#*{B$39 zvCyHD;D+f?Ax6uIo;bs&M`T3BzltI_QXi{6HtpCFu%}uaqYP6V)vmwZ0}XVKw-T?f z#38l87s$adYt_KG@qC}ja#KyoIR49q+a$TmwNuwz1(6m6pKnXROReI<^{;=Je3E4l zeS3|jJ*YJW$1`8ggr?IOX6<=?ifV;v>bh%dO$)@o(GuKX9PDHZiQJ<2eIxF#k|9w8S~p9`8}-)x7%CkmUYRoT=iS-Bz8UF?khw)feK?|Z$1Ev{XUtv3 zz{&}E%YYmKG42kU@2uFXITreuz++2Z5VhG1qNyWhXkzQ%YJ;fmhvsrHThTVOXp2Mo zzRSwo`2PL7fabxSEVQ=Ljez$&yRa#`xEi>DQ$hS}0(9y{{hzye2=Ezs9$^<35cd9v z#?3}ja{RjFagw(p*%`t?F$owYH%fs#EU16_?O6Yj?v{3a&6*T4AWVOKJ74w~(67$& z{pOo(N?!c@A|Tpe(aTmFyn5u$sV$WiA>{|Ei9KwONLSGWsw4Y1(%zaY_6b0j?gv^x z#C>Zwy@!HED}Lnep4sMh5|cMca!!I*3neI~#!o4Toh?MbZ#S!%)#P{weJtE2y?ZXS z)lU-lMKR+Mg%_={G4nb&tA~T=rUG%$0{D46=UFSM^K93KA-F<{XVHYGhIH4)#5(`X z3T>bJsfBI^j|L!g%=0l4@*Rv!Pcx?XogxMmD{DGJrsIJ6Y6A0Y<@Ntx2gGi~Y74v4 zEF>4&OapO&XgN%s^H~Yfhv+;^tqwq+^yK$dB~e;Y2kbv>b?#sEop&!R!!=%;rj!FSA=^~6{pOA zp<+S!mk?Z$icfIeS+g0i#5A1qD|KCFLEqnL$4rgvDxMwt!Lms(lfEy_SPB0Yh$|cK zdJV=yaDE?pSTC$5uV(M6rKqQd{oMmk6R6n&o%2aEUt70)SiE?%BtuYI&YhBN-%^hz zf4xvDb{UmbC)GwKE0X-u2E?2j`?!-b=q}w7cG|4r*9P&9dA`uMk92O7NSyrCopW$(!m^ zQCijwx*<=^m_#G`8hB3rWF^UVGzCRFByRHM_*0w8XG79cK-K4>4?}L=^AQTP!aERSuxE1ipMto*}0ENc5p42+QN=gva{KB*;{pS;@j)9 zrON5%jp~NJ-Ot-SKCv2`I|(V6>MIv+=c`?XqsgCqE+`25QzOgJb^aui{piCH%KVrd zH^r6Xu0QO`Vb}L@rNo6EW~d?!W?>`453xPrAuJSTG}!l~&V$IVfU=&l^IA&u25tsONV zUTj=C5hk5SQqG;thD?t$ZAid{WF#GxW#bryX+OuMqU+VDn=5Jg{DacecF$;j(U)Fs zyG6tak}B9oB{ZVa{XB5YJO`w`J3uMeF!}g8AQ2K}J$lNi+4;@@sJ8cfY1FcJ#_T-s z*RV>r+-v*fy5+GzxYw0K3b^i|v44#)QZel}wEPCZD7a04xdriTg;#E+7B_+Vh_pirktVjQ4;3_8N7EM?y-&^A41K%~`^>*s_s(;t)h> zLp5TOJ^&H=P`%x^KGwN`Rj~CjO&-sea@r4|$3c+YZD`84C?pD-l?(}Ikzl%;0r@gb zP<1wy)N#vfvF@Vt>I=~3kg5l65YI_hj^NkyE$Gt~#ce3=hw2;Q`et^R(G&xkLYupT z7^U(?TY#l5%sr~d3X@D3w9$XPc`caw1s*(?hEbOfvQX~x#U6vr8mW_5Q)i5T&;NXj z;PpQvV&zIy8>akVZ}iQd<7^)KRw%tPzxvv3@}{KPZx{cOyRwyz{LP=PNC~^ej7t;6 zy8~_;%e%vagLp!^GGwC#BArYd8x~rWVxpK~Ht`;(6~wk78ZmB0CTYehrC{VE;yB^}_x!xuchhFSf?aBWdkR%(!x!{!o&*L^jl`g| z{@Ers_`LR0(PItEx{W47KW9Rt2s+e|EvaiBvcA+7$Ab^iPCIH#cjTFl8Zx(FJltI%UV?;P%JAUwYSuJt>fGG=WZqfG4V zXJEpGKm@K$#Y48ux9+L@{cvQ1`4?^5J^lU7}Dn3P-b=;8t>cmHYG>dH+8~{ z^qG_HRmoxd+V3;wP01EV?28wf4f51b*mviF&;ocC(oG?ziy_K=7tFkgCA^c|rR{9I z+_5+#O$Cw7%8ie(R}umUh53+_`%(uFBr3h*_=m^!rZU1qauzKZ?H7*YzHT2{;()0r zvpj)L>EpscdPOSQl5x?8oIUE7Q3AmQO0Q+%Ktd^a&bF z#=|EW3;HDw8oR^T!({?>M@eWoM@PrF?kFG7Q*`WXGie~#k|~UnCJ5+gXKzVddQhcM z`H3e$sx**xgKd?LgjBH##f+Vfv5q;k)<~Ebg3WZ@5AMIys6YnCao$bJo0fS^8^K+k zQeo6048a=6D`8tamk6n%A7@ap#UHUX`x^7Taf{7NkCsIvcKf6kC&KYHG(pZZh2GdE z3C;qhofj>x>UFA7xJL^052hsF(bfTFVGk>u8F(5nt1eg8%p)z95dVNHY2Yd{K4%#} z6Bs2wTUi4jv$~cMdAPNd@t==Auh8g*;g@vcVPia^WFJSSW<&-5Y}F=-Se+m}G4|DC zgs7->GP_Lx_DdX)OP&zP>$t8Cj!Yzdfz>U$-SZRXP4*Lr|g)+48;H6xM;a z`4jC4J7g*YktvRW-Zm(~uc7wnJ+%79!|>RmuQvm7fik_Y6;*=ng~Gpzms=Pb%Al@) zc7SDsluAg2hf@7QLwl@=fsj)3ss6kk`UT3pSw+J)?ajPd$I#Giu{wSS>(i=!czYlM z4KV_ohUE!>hEbj;vCL81yia~y5mY!CVe}v z#0&{y%ZcaTQIA)K_9T2y%1RifOW_4XEgZ$g?oi%^RU0>cxH=`pX4C2VKFW(oO&KeZ zG+Yc^2t*OBGtFm_XNIEJp^RJf(H}sRFp7Uo{mbhn3}(kqGl&ahd4dv>q>Hz~rpUnJ zrlP&}qxjW<50bM_mUt^+Zmt4AzS_BqmdN{49;0I@g|2kdvAa_}OTc!CtvS<)&Mz;R zgbr$VA1~Ufv=lPdsKkbO0>FvmJXo;u_D@G;q zJL*qRK6EH`=FkK|&uCQvBSbw%;nJ~-nD=1$!LkK}p20$j1E%L#RXy{={tfHHi%zWl zeOtnO5^P{MeUq8>O@cZZ%BM_c!o5#cq3kd4wS)FTY_9>1|qa&ezcF3POa$l?A&ZZ&<_Q*h?Q z*5|u~A=#P8QP@YEXWLUrY^(mkOoziFmF#r?K@d+c=p0dxs90Nz*|?)XOMa(`e%B@W0&%*{NsuGCIAr+FuDEQ^`!b5fDi|87}`|;hMoDJ z01**;wRg(rZXk(fWbuUEQT4bTdi}l}UQ4qX@(uqW*LH3^`bz)_*T-zB&F6BfI57MG3zQFM8%ZtUDpBIh9B-c0)=j_4&1iEka3?s3GqJE^k=yTDo6AiyrAfhq+nr1xEzes(Emfjo~k7o+Ep zb$KWrU&bcYEqyI(KqEXgXoVjD2zm+okzv5Gx_%fdG2ThrQA19)EM`E$6)tKQSVMYD zhsnWK?6odO4cNKa-mH$wv zUI{3A>0k&rhz=l-zUi}o4_Y@Z0%Np*)RE)xJufzE!yJ|PgYja8g7!^+zV^aWuCdG- zojYxnkG?Z{<(*T%J2s&KcUa4D2gvPeg%f2+UdZP0eCsu2I-qPu{Bu zo$7Tne=B#jrnPpBjE-mPZ_oCuZ+W^AeW>xqFwxNrXuy`Y2_nL>B8Egrg*oWOnc>qx zVC`}2K)@1EkZY;Y*&7gJHjVwO$htj{?}90T{}w@>y3D)(tLk)H25^|``RWL1gdblb zsi2>Ps-<_GL)${+tS!nng}uCzYxHdsy8mjKly3*my{#>pb0hg~=Q6#Z#uZIwy%645 z0AzZrAI{p%#6Yh>-@4+>ZZ0bulSkVC*?05LUdIj#InGjEq-`^g_#x{zzZvs54aCtS z-k}D-2IZp@KCg|~c;z4{ke*5Uuy}jKGBxXPdz3p6+24kvSbD>ko@>4g*nfHZ{m5vq zqa9l0xFl>1LXs#gDcb{48w#>Cog!oZHcFA0oj_+zE0Qfl&tj{ufh+| z*g7nc-M6sv4)Z90QE_+Zi$~Kx?PQdc1^k@#--Xe+;T?CFCx96hE8+J7a610*`=#93 zs30-UHb105EhJD`MCC*(t`=@v;n?(vpOW$@d04!h#xlx>9%~soV>P47-#iC=)GO?B zYDVQvsPYzT#5@hBLA2CPf7x%9`BQ9zs`>2gq`b=3D#9r#pvqh52&Z{>a#4-muXKY% zC%UbMWJg6tuQC8xSQ(dlCUE@7iP~b;N!7fIRU30i=2=HsiPef_cEuvLX#VeiC#RWs@j3|kHp0yXA12RcTl&XOIu z)qp`*_ts2-McXPpn(*LNo-JkB6Sd217K%8`doW9#xF$T4mIP1r`oU@{vMK92$BZ8; z{a<1bHjryTzG$FqW3}Qkhn3HI$ZZ}!!{Qxv?c!MFw~!$bl(V>1V4C!VPBR5lw!>mg zh&$NZk3XmhndCz2H*lTPWw`%kB>Z~5U!tTj~WiT0hV}%cPZ?YB`M15?wZhTKp z5uqm;U-elm7R13G>8)%2kRN2bDm4@@1bK2v-`{?NCv+3q!KogGY@E}5-{s%SKO9lG z4_Y;22X@BywF0mFsY<&%YwiSTDVXL6zoV3#vQ}MIJwm^IK}fymh`&s)oFPsH;%cd; zW8w_hAj53>uO9iN;;9oCE}^K=K+8A` zuc}f5u$^&xF~ilRYPW~tYV>uQ{CC*kSB{z7E zPOD-2A9Xu(V(dRxv*0YvQOlVp4yG$~eMDvuV`g*+O_;=aGH05n2R6kwMAL6@*L-}m zH}!SY5JP%?tLc*Hwy5S4W@vDX-LF7b=R4@@@5x`B$_i$YkU!S0*U488O;pT4T6XOv{Ym`ot#2^m<+M^V44TtEe@e zAdZec=JEk{FcAo-Nq3KMbQ&&}Uh_)^69MM#i|KQ)ozV@!yNp z-xrY%B}u!*b4MBqHqI~wqF}9oZ%&XI9H)N^!J4oZ_rP|Eqg4QaEnGruO?yx=0|=$V zQ$p%@|9MPPTW43kHYa$;d0`waq6`;Nakk~M9KTfJTFrX)`mFY-I7hQK7Z>MhJ9+MX zFIG}W%3|RPE!SqXhTNmFb58xc^S}b@8G4v@nlJNFT?JwX>JQp{6;8zGPrC%P9H^6?NN&T7cXJ8LL zF_@os`Cqjy{2MMJeGM&y3aNmtB9b0LQD~5Il&j)(%kGbb-+S+xQ}5h>Ums$u_@1t* z`^+S%QSX@cR6c+1uneBL{G1i{g3lS}TPVn?cJ1-Hwb0N@Qk|RheOs!&Ok<&Cs{wYo z?2Ci{ttHH>)z7Qvf+n~UG#4jf7j}r3DpW;&=VDw->LFV-qS07jU6*cK)f{~0@+=9D zCE3umfQuuLxNNR$SmFQgEd=1-UUBls&XWj>Gl$S8HrN!mMTz6|Zy-$1UpIck4Ssoo z9ocnsdYFt0R4w~-w+^y~!@oxytD(t*SEB|CD+e&iw(C;KYd?dsK$cjaRG&3_o%Hz) zIwJTuq(`2GZmg*7C70oxe*#sirg8fB5v<2p-2ok}!wrMaw$Ww#A?uyzim|59wbO?! zJ&wmv9)lSaJ^U&`&u>4Q%N1=3Yp_@eRKDz33Ar~0ka9m(HQ+M zYBr+uZ4gp{Z~Hug=AFgyfvjn>_PlU|c>kBK4Ek?fN|RTC6u?#rwJ5+XN8?4NKn?b+ zfO-V$i58RB6FakOK9F_msI%S4Q$Rs(!so5I``74#ZbbxO&Cg!vP>YCIQLcJg&H8(m zj(T;VHX>5dT-d_I2xZ?WuDONmm;+$IA!Ec9n$WBM|Wd~B1R-lT%u<#HR05`bk8*@`qQVvMj8RqJ2SaF}=Z zt^E+0CHSSMsGyWy+zu>2hsB6|gN>ehRq`Y~BsKF%jYZ^H2K$DKPo^~))_&vg-`#wA zW=SIu0Xpiy3p!S@g!7Yj#%cPd`MCRfhop~@`NWM>#+_JOm1BBBlxxbZtS#o;59q7H z{Cd4$&-C*7i7Md7`__Z4vK0$chE^AU?ICVAnpWSUxf;6w3==|v)nMaZ^$PQSW z=G;x?v4)kU22G~=U`7>UQoYT)YN)BOrROGRYn5wtc8O^pCeA z2`UI0P&vkXX~tIZnv*vG1ub5Lm~-FbY%N^s^`b#0GAP&rgbkt(O|3SuHdk99eCB*; z?oee%P|FWMAkX*9;B0OIu@cDq5IM-8bkq_PW+<#MsnK8~(;7TABVf-ja$RRjXAULNYzh8C>Bn5!{O0d8le4hZjSQRlWVIN)! ztlR@=UoR9B$rp(=`3`V4l@DCRn)_uRz|Epk z&7D*B(VK}z5&PiV12Tcf@XT%~MoLvx-KI%d7z?XlsSsYP%qNG}EzIV3VK!Rvn6 z4Nw)GS!rKBZB5SE*}c1#FaSe9yubABlpy&yEwxWGjpr_7A&(Tk0LH&MuIlwIs7#y( z?Uh!G=;1q2ur)UuF61mq;Q10BB=YoTV@MZ-pYQbAJuuvV&azv~#s|2tZ754Mc1=!X z;B~?Eo01B_F8-3o3%#>qLbIVW358(AO)WL}j(EF&=p5q>`Ub!*^f5VbYYpaN|Nbpi zg?7FS+5=2H`--d%KWav1wIwkV$Xgo`)>JCpj)efzo_+D0$1WGc!T0pATWai9`;NYm z909D0OzVk!&+OM*9Y=?ChA+}^*hNR2dwR}79I^)#JN90MA9Eo(w1;RV(EibR6YdAt zKlTp4B97^4HZ|VT9S27Pv^UV&?}kmzb)xri_FwO*04CRg1K#jCWKvLF+EJ^+?BBnh zjuTZoq3PxRiIXF0C3(mRm(msRX1I~iF?_ns9gqNJmVIl@Tt+Z~8&)h8_!l>yK*Q~S z`UWrn(lFY;uh)|}E8lCoSCGz+z2;IX19~$sZIkGS#j+b@a`-=V*Y#st-~$-2f*E}K zzheIlI%l_OE=L`&jitO(+G|Q+jSERCqDL1IuGsmsMCJh)Ut`z3f;10g$BgV{hg+nj zYB}TBMZMJ_a>$%1{1)=7N8?o#)a!+UN?;D#!}#C1(Ce`HX}H~d3QC)8p}|uWt$cQN zvnC49Eg^MX5{*bYOAW*kYkPO*){0nDWx2|bk8(=+t$3weojrHUiO=2ys%vz1hY7sh zDv6Vd%+&u*zcrqpH6v=_Z;DIdPZ5#JiYHqSXOXRFq>b zT;PKsCJ%}3N@+6JP1z-l{A$|Hwsm0h*+56IYh!LXVoorj%R@6sE|QAbkQL>H&A!DU zXx8R8CaG5G`sZxqk>4*Z@T$QEf&@g=fs01j9w}=9l4GYP>Kp87E}sKU^&i{pb|pxYe7rU zcuvtejH`Ors%d>lqvBe&0u)qiooQ6k`&6@^lG64q?!9&;WZmlQt8r0{rUMuP{*m&S z<7;aQ7M&31n{rFK3T(lwwOT-L4TfZOZEFU*-Y$QZABa}@pWdrV!$#HpjdOq{OoN!A zywW6N8PUM{DqmTaw^OhJvEzs8 z2e&u2JNtHi;Mi3`vC2Opsp=-P&B|=aLqy6X|oB0r^KD(49ipNa)i(90a?h0_GF7K z#@3nB0*3L}x_@w+ZrgD{Ex>v1Ep3IKx&9`|fU`@#e$8G^WFoFBTPC1~Zg!*TG;y1) zfQM<(L~A{7>?kE29t-4>Y6JSxYT7BWiQxtcl8pHgbYwkp-C2Nvrt@}ZVw=gzSZbo& zUXK6^3c}*{i-9{IUWhU$Vb{E)9FP?=3?gn*qNrySkHLD9*D6gNn3cdEesK^JO&9AM zT7d7^STN&7Q?%yU>5bAmA`2?XNwkkH@NmRh<4@mI8fC2F8&t<9T^+Q`cc2IjC@w<*A z^#Bh#d8)HC9yI`xo$SKwR==xN6iaPC^g1t}v)P*hrqIdDhd0Rcic&T)=#BfkcC)nYRu>7+2BbGxY| z7FFE>@C!3u&%BX~^Q^ruO;#;4PtNav7`zDfueZdYK!Yl@ba}2oTqIu9M|$>sp*w<| z=cfN$$l8Un+j8t}B>RsD;Be^h*~o6|S*o7cp`f}>rx^;D4ssUVc$RrcMhc7kZ+cAR z@F9`EM}0(B0>dfQno{`V;X-;CIZ&T3Pz~)~NI}X@SrTO#%&Kw}pVxszs;CR8 z%4Cv&X-yI%gM^>V{A`Szd^_6O?}EFh7to~wCAU*}{wP=;PHQ$bkbiEM+-!iQSopXJ zf5y!faM?SMx3m!|rw18;=(@~r$g$s`}@Dnt|j0rKb2$?u@ z5!p)~XW&?r6mTZwISAhT5T<#Y;mu3_z}3c)V{BQRDF$Rfv*6tb8q_SZdZG1b{~F&B z%SZ%Zq^|+7Fz{+kzXZ%t=|Bom6DWcpwm@l4mt?CnDA4_j9_u-}f;>NEw`mSSQ{NH&;K z3QxXHLD{efX-Ed+dL=f8Bk*RcEiMv7Ba^dIwFtL;5O&n&aTJe>ogEaCn2! zNr;4=1EAegR!#D>#f$fH5>_f6Lys`3j#=7NiNZ9FP8~^vJ~33E#|eTzRsTcS9r|+4 zt~5an~Sej&gs(F}t9NK&M@icupMpCGuC@%nisDrO?ffQZikywCmHY;?>2Uwv0;hvWwezM9axkM<@d20;Yx|>r* z_p7QQi}y&2E>R8pisfoHa_B-e3>NFs^v3+a6R4)q-^)yEG<||<;){UZH&&D~X7afB za6H=>o0uL0>ajaW7lvbA%VaL1a&73%t8;V?u@A>S8kvNyg*LbblQq*^Fa4+@Db>B| zPLptV2&uGV*d4an#+zl?q^w7YCXaqt3pfEXUd9nnvaLd}6k^;{?XVF0ps-|qutc(f zeQQ&lGwB6SEddMRFsMd0PJ48+NhTYpg{z?&9zf%pzKHRQAvIvj6Kl^~lAf$($M0$2 z-mMCpXUJiY7f!$r z5oWldA1e_`t%2q)%3S;eG(IGI)v8k#W?eg(I$sfA|E~zL*0d^wFC~A&et~IDdw&o# zIOvfd*tD81>$-P&>;`EVIU!AAUH_DHlT8fNaEu1>xe>`I`@Uh&n5Q~KA1A(H_vQ(rRNsr7;Ui@5}i4mCgP_oh!@1tl6B^ zP~n$C(66bWJqjGAMHf7*u+W=|Hh}X=)mO*&Al01j7ONz@ThA5AFQ^YNEe|V zdE0AV&GN-2HAKTlCu<2=PjVf2q#OUdc(`DbGH)6NZ2t3cbr)~XtTr7a)V?>B?S(Y( zELvz=tdi3?s<9RB0P~2zy`h;NvUH{(>_SMs9c|5r4jcSO zzb99S7Y=JL*r>!Hp@YXrZ~qE-g$x#Ns+t4sp|EwKurc_=6{s+R%GuPip{2;ao$0ek zXWO8UJ|dU;7up^nb9;T+h;DPwj3tKae}!^stp$ml2>_H5z+A`v?>ckOK1s?lZMY0m zbD_Xd8TwOF6zY%N_MS;C2=)oC7EH~2Q_l)_gNJP~vLmXrx%9c3t~ zA;@tCEC$x+CuMwjSv9!Vz%VG`N^WSaSgof}N$B4dFu9=vb=;ya%iX4m zHD5+i?M>ObV@uBM77y=MD4TXP>}<4IVE+D+fU|DzoY7KF@@psbt%LKtQ6Z`I)qo4aGMeXbmkkIe-StruOD(SOa4}5M1Xj4#)hwx<0er(b5-TJIS%?nS zf*qi!<%L*nN5zjH!rz%>#5_k-S}(otR6{ccP>#yCh`_*&&C)6BCt+fj#f?)(EW29K z*aYN;w>l?o0A+@H&Va_|Ki=9a8&@gx3prN?n$k67r zz)(ugu)IE47r`;QrT6tT$R+_#cmxchTtQzQK4JC24~&UoWFiIZsARFhwz&$pG({`* z6_{upa)BeCRp0Ft=Dv{MPjZ@Y*x_0b)ExR)Q~=LquU!_|O)Hc@HIQw~WZVBGq2;3o zf32=U@FM9k3fZ9OZo5@pSbP|To?8>=; zpc;d-=*>xVU(*8>R6~%NuecI%dJPSjMzSqy@OD*$<4KPBQmlO`(p|LHXev;7H!u+} zc6@Uey^Dg=m$TS{pX<<8S3tnnHc@513B=RbL{Ayc7h!YQdq@PPxG4*xs(JQ=SWVU! zv|mEa6|h;vDVX-bq7!e(uORCDToTSv*V~#Q*oe4w3jIPDqk4WuU25~3_fTi3~)Dk`! z`Vt-uGcPZ^dCG{T$L}^)fd^XA;l`r)L0H~st~C!QK|wBHnNObD!@xir5F&v@5Fl2g zv#{JN*Mx9xz0NWTbZ*AuBT$^3jN_ZTD+K6?;i>?lRh!lP1F+0M$l}c;kN_aLa-^cm zhEi7T#*n&TXSGG@xu2hQ9jYo%5Iv`cudmQK+C@XzZ-2hk!VlNv!&IkR3r0}v#vE;K zS5iW9k?jm9&JfLqsdEV{UiyeZ0gzDYHR@{6gHmqve0UlK8_wKOb`nz|?1Yx`-r*>4 zaqDP!&?pEwy*Oo&Bc>(?%BrhTAq*5U`-xgon2(s1V0>4#fOAC!}|}m<9I1kSS;ldBW+0wPLZKM{Fn08kYs(^>Z2((r^j0F2}H5 z9x~+x0-^EA~gqj_5zlc2aT>ObacnhLhMHGP6_thj# zRQ(yt>h!<{f{NTq{|P(oD?|krO^F1W?%KIr62J|H>D`^7jCT25=^no ze&?WPYtgYO{ioO{m_W zWHF=RvpHvGk+p<%?0kR#?#UQBS=bz%F7_*MA%}%5wtLaG@WscY;I>!p42@7;P z1l?V8L9QY+?&qg4HIrkz{(BqiVYP&vxf0EyozUppufkkd9lOWfI@J{3=4s9td5E<{ znC4-IZDn1qmVg&}$30RhOBVPck7`LCcSUt%>7(dtNzm6EHb*vvQ?7E}H@JWbd4O$2 za#$#Aef`v?a079bQ>rZ)NG%{vd?d$bA!pEhU7?6|NW~IRnd3rAc-Wip)bzD$1071E zk6H{iK`a;qdf<26W}1O6bsgK_s9fA+z7FWYO1xa(`%NknYXSKKw{X3>K#h%GLp>NfY!4Nd;mwO33DC$ zr#f-Z8YSgf>$xmb_!}sN?@$YFjVgB=maJ*JKFujpV!*k4*rFu#h4VE66i|q-wli&) zOpyBxyVm*Ft8N?Tm0ZoGn_wl}hO}#IJfhQ@zwNN$=Eyc^KDSWBc{kSvV-A``@!&Gz zDKP^$@Em?8D>$H+^-a}$u$k}Ypu*rJCtOe`R939U|KUa>d46`J)z$!5o_}BZ&leSf zQyHklMQ*8s%0nkgU^-XVQ1{aEoShV?6!NdpG#YWRMfTn`S>t`xowl<8u60VlSuogr z`@VEwyNw0F2Xw1flqmT?D?#(>yj_;j%$rgdW)tY_ix3b6G-IE5VK!coRvzTBfYS1L zsBIJMElUC{5=*SH(_aoUXJ?l8H;)|Em7$O>kQD!Bhyt6c^g(V~s2Q@CHZ_CPmzFhQ;q^8k zV8SK(*Z@ifVw&wyCi-K~`L)YonZqOfecw<4pXNQe;1=HdO;K;&ph1>I%?n~s3+t$= z^r;%IXa;w;{sze1nqn`+Z*eJMX2{m1&bctDj%UPD4vP@jwtgFkZOVk^vM9K&Lwen& zmK+uJBNZg%&X=Z@X!6@UiqtIxlEb2w_nWVeuwJ6u?6%BU$InF|J?Ja~efdp2B7)#n zZaW&^9E$F)x*&g$tKfKWJBkX3k%msLy(f3%5tf-KvW0b}ksnF`)`qzi#Kl$56}5Y@mnD+5`TLwDcHhxLqTrxaA!{5ub9^^7=m~2~34ZbY5gE|p>VW^n25Kml~zBVbEbbrVi zqmk=mCKAXDYgckXuU}CZr4pONW`|dX@L@E0AzVl;@{iBO@k9zJZr zj4i3Ng%0%EpJ})A+p`2^(@F3;wf}pf1DV7_hIp&3nKm|iu2(98SFl)1FFKs0N^{@b z8-Bol;5RGW%`l*j#ay?`>ADv^GrF8v`HHa&PSpDk_>hmlrmCaOps9c?7m% z>9U30b)ayCUe?Pe&&4>lv0YTMC%+W*8bTi3FP_T`-9PUPRj-s?N;A%D!*F*PhvH1X zC`K<^r-tZJ)0IQ7efo7<;zSCINUiIp*rO-kiVcg}kzSo{irP3`#xTSUL-d%AJV#Mk z(7O&l-PU{?7Ijm=yrj&c2O+cpZy(mpVEFD~ho<7zGi zAHW-y!NhQG*!um;*Zpf}`j}~R!*Vf? z%*!f$_Gw(Sw_L<`eFvc&Nws1rZM_uRCpPjJtngmRefun!s~}syceFE6COXmiK_*hv z@V3=}U-UD*zy-ydHu#)ymS>swPX7Cis`8adoNIy!)QNtyiK?|_YvzUP=33vg{H%^9tBO@0ZJ;}1&X>4LMrhdXCmBfoKdsv(Debn@2mRr$lbWv55)gw^w` zvZ>GRd?kUvl!Y;@yMPf-#!mp4iEgk|iq24nhHzAQDUZfIl)!0(dy@+ydU-dJT{+DeTP?eHfsYhmqa)yD0KQI&t z{V`+2c+JY6FhBGzF(ETPxe>~o?F)M&W3C+UdKVi?YI9e8xKF45u#PJydWNY1hlajl z@=BqlIyB4%=ZRNfe@Z$%+Y|t(3L-lo73%2y9{ZCpb3ih{4L&2rahKDmBsqwhp!lz3 zK@L#0?f#Fx+8C}K9U@rCFt^UknCpS2Mtchj?IdO`iOgztYS^G7nEGMFvifwo7P|PTf}g|m?^O| zkD4_vmoiLis_aRkzzbB)X7T5RP=4Sx;0ut*LD`l${?BxP4~PYV;A@5KB8o*doW7?# zlkS2G5A*{J9F*Ii^1VqIZNul|N87WyUZhfdXs2>29+>F|7#JQWW$5wGem%zmJ`wkV z+h{>2WavGuXkk{%!%Gwqmz2-~8ormo0_IfGtCV-HdAgWAP73TmLAchGZMYPahh_0pz0*=iTM+U?%xPBX2xGxO&-r-3Ps zGTq@PnA$|MXqZu_H1>4o>hY(T*?B_Fu!?OIuni~Rs;HE_8o~0W7Yr|3w}aG*D$35+ zHh1dMt*x>2yh=5jQ82b##p(_EzgARMJwd^2aku(XRCNvbMR4*u4k%1W11Kwn00RLE zG?;LKAuvRms!Sh(rEBO~Lx4=KNa4FbX@5Ww^>kaP^tYn@p5YZiG*gXL@k-ju6l%Tc zuYU_i1Q!^}Fb%umOt{z>5=Z8!0(t`CSc*JL&!#pCN2al>-0^clQfFrk;8M8~YSSv6 zWP}N3S=s8=)qfxc)K;LlOYOl!#Nt6cE$88;v0qja)qipNjhHA~Ki0(W=PZzpKAKL# z1oC=l0nvz3y%zX0u;;9#&Lz%UN-QaJ6f?N>bMr_avZY_*}MXB>U>|@XQ3QHp4B3rO&IN1=G5lI zU(z=Qqi%*UOysYhWlRl1?6v zrw5fX4X@}C#BG9TH#w^#VeRTfQ`1=>pN4ZsY|~+i{&FoYydTv!J2h$= zSR#CIE(qS{bCbFoJj|S$JX?d?LMhDo7wGa!U&RJMl-8whVc>BVimc1(0f;5VMrFYQ z6a1&@p__EddCb7I+MBOriI!(IZ>ggT6nnjGy*Zg1Jc1Qo*nakAGc5%?Ss!T~!qPX- zP>#N=CubHnG50|DJ9vP>{|!RbB8ohm0^HM6NiVFIpE1}5S=R)-^3--VLad9N=5VZ~ zF*Cm%;#SBMG?^6s@ZyS0GDUo3dgBK5HFDO?4Nlr(kht+Duv$TXx)Z!GU)P4VL58lY zUyt;zPh$;=ks=;u3~qkZ=DUZ~vreh`%RuV8sfU5ym$moWLdKx3hzFg$;uY<5-;6RZ zb|f|qYh%0RK;Xz#!M*KgB56LXUbCBM=%Z#(arr&TIIgdSAg&C`lOSj|G0Yk-agEZO z?ZRIufo}ZMefF5c{1GUmmD-j}ZXHBy<>klQgUN#l6vH6-J7v_R>gG4CI=iqqnp*!; zIRsWvcrU>lhg~7pu?_uNC7#oI%^eOa(8(;nBLB8H%ulBsO}AOT+j>s$OJG@6%%xY5 zg}O!lyWPIso5J(Xjv34Hqj2Y;q_*@TPNM>0B<7xR`E!{ACn0Qw{??RWyrH1UZBANK zb54Y%6p~vJ&*tS4+u>o7N}n`cBidr8s-YK7mFm_C8MZdHtyu%8CD%if#IMfUCN5w? zg*9!HTVebO-Eb9Yx~}rQS~J%+%IPI7cQBo zmP*1Y%~80=A9fo^42JgkyQj{>*yo&51tVXa)@uE33i1W^GOJp!gR9~(uX?@C;mDWi zf7gQqf%6iuy@g*`m`C!F9Dz?z;ym-+{szvXTUttepDuel=@6=Z8BgF)hz;dcIfhNAA4IG=c zF{8r-*^Bd+DK(1D!MtUM=4o&?`3Tbp`lJ#VL&U{=T%i{BNrz~q>gsj1L-(Wd)VuU! z&t*B3%<&+N!4#B1a(@^my#Lh;-Ah3>9m{(nH0Jg0mt*ckv^yzRK%rlgG9LEu3|ZK3 z%DPB7oq2?&QmUKNgbu91v5DstfwE&{3^n=aOYiMTqZkG(JQCEWwDFV=#^0;|eQc2S zhao5VQN0v8@$QL|NAmK2jCaqpVxZdl#|VKcqF!ADKDHYhH_v@^1latCGGr9}v+6^p z8fWM`V+!du2XA=QapZqLx%C8;PzLvZx^>a$`ZL?OvI-0I_Iu(=a)!NU$_cm4zVtUxp0)NcbUH*EnU&=ydwJ(G3ACk5YX8&@<|8j-qTOC3`+3BDR}gY~&89 zBE|+HAWTsrl9gOIax-q(P#0v-BI6jbH%W@C9JxeMaWI07U^i ze${)O^l|AELg^z;UE=#&&inJ0_F#C=UY)+RVOtE5V`C3dYeKFwoiD1$Rp=uOu|dz$ zI`rS=2gbDe3?ily5Dr!4V;&Cd`(?P8g?8jR{?5m0MIhgDC`~UcHUzcI8?Zu1A-!8x zla)A`TY(tE?b%XOm31B2U@lHHB)%in=1id*#pZUXJlEW$I&(vVgcj5B8Yeo`-!BmL z2<&TpmJ6n4FtHDk1vC`76Swy+z%_xg41qo?vZEx39o(uElcGtapY%^iH^Y553Ivto ziAbo<5sd-G6P0v=>AYMu`|im6MQD7 z@_8`N#<`XCo!ClFYr4x9`jfjZifm&iB?FA{%Zh?&U{?R>hK zU}+~K-zSHfghL816TZT?kcq5XF!YGC9DWSM@Zg?GM8X#d`P1r`#kaqgMeIjuqI7JVhrBb-7e*g7Va+qnB;frcr=TT#=3<@1olvyCw6|n&l`x zXGdETN&eVA%!{fkDo(0Bv1j`J0^_;d<4b4AZMlhwl~ z=$uqGg+;0NdxDbXLprp?cShxoRgvp!i!;NjD?W(iLk!=Gr>V1Ep?xu+^s-)-yK8c~!CghZ{G#b*fAgyKxd~B#<-hcX zm6=NQM32GXaOe#^jxh+;)e;~>ZdvkM1Df}MH?36zcM-Fut<;Dpi6W4Kt8633Q6O*% z3zudq?vEyUA+R^}G#XG#Tt|D$T58`Dp7|7e-Wm0lh6kJtm4wMZ?KzYM3d8MN5%{Ij zq&!*X$x2m4h@)Y9t#t`tz}7mN2DGM>pjv3Nd+U2D2p3>WZo5K5h= z(_ZPE`o}xo3WE^yg^6|!ERf4O=ke%$3dcHz?g^>M3cqx8?_L+ z7EP>{A}mnO2l{w|=}P9~Mxc}sF&c#R=>;Ist(z$T@2FgV7^^f1{M&Q4{-0BD)X81j z@7GP;RzVf|$$QFQXw|*uH6+^CT#Oe|oP%-);O}Cs32kv@d z{DhERLi8ed$HE$ZT$~B$FX@onJHyjBt;0cwvbv7A=O(0Si19q-V0hSNGn`<7nt8 z*GI~AbHU(sGW>i9BnGl3;V<*rVOkA{W+-8hONIr8dPLYp2J{LZeJxtmJe2=AV~xclWuD>V&N@l)S=3AJx3~w=wB*`{{Hra9%iNLw6vUB7EGQ#cv)V?%rh0Ied`+0+0Gu= zj-S`negU<>l(UOg(M%vBfc6uyh1cr>k|?TC3(SG1Dq;UhnDDC6>YdY8qy`;lDzW+( z`4hhVwjY0-6}zz}VQ>%GNW+0UXfFpQcPY~Coa`UQ!EBo}_?S`d*P+PEdU__SmOL=) zYuvbjyqurk4k8;N9=IdpJSy(u3oAhqT4!%ee^~j#Q17mCoaiKE@(K8VqC}oX9*Dxz zWmWbF^mkF8Fk?R`JK0oJ;?Q4+A`RgJKc4sH+(x?-=huE`iP^4WE zI8E(zXS2bdr~}pg1q|JbJ@pNT#)^9MW3FyfZ|{xUzFkDPab2XJ-(u9;2g}LFeVf)z z!(%wj_|t(uD`Bm1svA0K`BF2<|xndGI2dH(yKeV1j zek{viZD)A-zvIO?Zfk%l9PDd14b9|j`?VX-eF{7H@+<-KFU&F8m=88*#R_NLv9|D%*OLS;m~YXPzj5EIR<#=J+aHT{(wC2G8ZrOyCme`GktY1hYZH* z0zJw-ccVD~-9Fo${^6IfPdnHQ`VcNm2UxY;amrBB?c|ELsZeB4;=GzZZaDv3|R7G@{Nqq^(00DL!s@_8$PDiU;rj$@_aok4!`l5aXPZcbH(Yx4RJ=47MbdEua2^nXS%KE+?T5UNvwh;_% zko6S=(8#mH%a?lIqU;4$r0X)*N<*YL$Uws6S2Yz zVre%kxaVY@J`d8IR&`w(;RH}T0@Yy9GmSjM!Gd``m zq&&u*wY?7Q2uMU!0vaiGU36anzjxol7gAzQJ*MOy6$Tju?iXPBD98xnEH6o4;|)U0 z+V4!vfO@ZywdHU;xMO`KdSd}JUxifut)wZ;n(s=pgZ);GqNI6jQ~Q(*x^p){fevn_ zD6zkpL4|`CiyB8Fh}QT-j2#mHC#9wxa^9BqJ~X9okIC$)e&4$_T7^L$=$y#74_Y)c zKk7-g^y5)%`1nrHxIKBsLxYpWVTv9fEzSg(;X;Txu0&YiMvNuxNU*{{iZ$+J*x>O^ zu*DOvgSysMlE+y_&s!#2u?iwG1CWmFrF=Bin6>>QJZtezFCGCYIR&M!@h?j_kR>PR zt>4GGi-1Frij1mQC8kbngT{%-a-jd#74`=L@H7i_-hQJ#{S)!v;2#GnK#3gzgb^!Q zmV6WeEEy&C#tr_Lofk}b!OhF}V2OSuwgq_vc?Cs+1-Rmm`1F2N#NI1_b6OmBn9r@@#z21jqn>%7A&0aA1{iS^Cul;YdNa#U7S0T9INv ze217f58cIOBtqgzW+-K2u^@m3X?*#8Od2>`I!sinzBgMjZeKwJ$)L#LVrE|zSD^O6vW*Vlck0Srvy4Oitft zSfC$lGJ$1aBS1fl;F^Ga0>hKe2-Spgo;${;$S)ZA^u-U_ZCPRA|IG?x5p(dkH*GPs zX?*ja7?w%au6axgda5)sif#^K3u72ThWocjkh+1e(d2&on*HTqn`tog)Fle~u_+0@ zgp=J{&|I=wfxww6bZ+*2LbVV|T-O_GeGpU2zo8o(8U^dpz2`prpF&&k!>K*DoGANM z^+*PTBY~3{nQm};*KBhF;~)92RfJy0kcL7TD#e7km9xYWTgQ6ct66-u$wcTPXfIrY15y~%QmsA%^$_&od+P4=J6ix6}q8j4LL=z z_X=ckwTW>ZJ2G;j=0gnUehIn2{pH<4sfF@oG;L?5pwDM>A6g*E%tzI3bi(I{)BvdQ z_hWalW1hBHlNGivHZ7VIMm5nIM&{fPs&%tzI!;iHUWJlY=%HctPH9V+_AE)t><;E8 zH$Ehj6Wl{H2=^N5jThSU$C4aVPZ?U1Z^9&$`^{7>V!eVI72jmRMErSt@1Ry^QjRg; z^$BA=xh$uNMw{H)>D_rMLL-##W%1TCP8l(c&*m@N-M*F!k9`kZ`R*uR{oql7DGMe& z%(5c_>V$H$3tXU>g#42THuC`Mf97Dzs$-Sqdk1aB3_Y&){HillVqrD)Sv2gV*q zI)xnJ@lN&sgB~6uMRbygDw+geUx)mS^AjJ6Oi$m!G={Gs=7GGxF-ZDn{Q9){~ z^Anjo{QM^Z1ge(|Z=~VpJ_E*7NEx zeRWIxfOe-J*6lyja)~4R;-$gL;-Nn0b|anYkbf86Mm^96#gv$El~=$5&hGLIMJLKI z6ob_Cv7s{)J7>4oKg$@aW0*8JDw?D>8kitAlR3H5oeZ{>q92qJLj0?*>K8xvdN+Ne zyD7_eb+<0om8BP|{|^HM2-nfmfoM(}I?BAu2;(ZcGWICUaLMroFN;+%FWGh*E zQtoxRd@86S>c*JnTVpDrQtQ#QnelpAxm9eO@s4w{Nn@NwpO16C-$K(|>3$0=_KFq$ z9GE^ehf_}G{1Ekt0g`HEg3#A{3aXtdK?5LH? zHUF;-ow;qX?Hh}`W4B%R+x@D8gpLSul+rQLo#f_>5G_(V%fan`ySv~0^&bAeXIv&P zre3e~X0b2YeKYR6lYVNC1r}qW;aCihWiChU-iXdeA#MEI-4>c`OJov}laHh99bkvV5oP!Gy@g3pPc%1sTaPgw!b$Jy05ht0jvSg)Yo2}ex)k@7z+WN9> zr}K{acD-u%Ona@Ai}RKWI{CQ$r2BI{WA7JuUSITPrtg~lsb5=c)duV;nUZPNk-EQb z-p;TeJ_#DxUkRKsr|QoI{t}zczoxA00jSBJ)4*Rah5BoVVu#iJ2k5*u!aldK<>6WG zQ)=MA(a`RkL-_HyE~PDlWIQU}^Dv-*I@Nu6KnO-q3@1p6VL4t9WkuEWcPRt(3hnxr{I#S=O{`2F@U3bsyQEAI^ZbqxZEjnm?>Ymtdh?-83y z{5@YK)4tqOm$i+_NC=&XK-v*z=yMmzDGKI6ZF(p}GEbQN(|w_z`e?jzY#ZB0nlq!c zy-!`*9hy;)@sPm7h6bv?!B>cTFASI`)1`dVt!L@r|&MJQ|QP6yP`tpk*Uv2eT(8AzjYKO zN3&&ON@-Y{qxXUCHoiZea@g1*k6>8gW9qm64WK+xI$9#m4%D#Uzd+X9= zRFp|n!{48UrAxn@g))gSsMj^@%$dD42srngnCXyCu>`TPu>lr7==umbx#?^V|)=CRyXey<*Z z*D6p2)$)4FWDbDGypR-Hq%6SCfa6azs}wRw%v5p#tQYRu)Jo#q_iYk@g`clzITv90 zs%nb;&o1w+DlF{%hRC>RSaO!)9_t%;^SCB{>QOaOZ|;tyu*T#WWkCg6^yExg`#Han zjspc5a9u}A2GJC1>=AZ~12;x?W{V`#d9zJTJv>X()?qs8-XhGx`MN(#hV?*e^rLz% z9|N6%krl!|8=D75JEIMgz>q@Mi9$t(H-`rCi&2a17Vw!>_)D@0ifwP%7Vn~%w*UZa z+1t|Z*4}FDiL+Wds;Enld>x$C)_b85IS|r#fvp%=rl&3e%dC|y(K~Z?rJ8ldEYdbq zOG8!|qBk+7K|=)y_28h9psHvWkGUhHjDLF8!7;fxT8Garg#CEnR>lNy;iwCG!pbd`c?%>^CvR% zr#6+KNLWn|;S|C-gjR$b2=@@482AdlhhM?(Nu>bS1GfTqBfm|b$^g~S0@~qxOaq`# z(&!SvFc=NvlPM`MYu#MnLEv#%411QV#Bj?4&$OWx?~-OTh*5yzbQ-bxOiOKv^|!=B z^WWwKE;3LUj2hv9d?uQhqeV8{avhp~$OSU-XzNdIBa*`s)N-+txsVG)khtE} zE&)`7KLP?sz*87P4>1Txrq3-k2ejGhbVL0GE{hEOKn`$_Jm4gSlu$-FxW;YpkZ0gm z{-Q=&2m}CuG6f+igaaLPc6JrI6GM&y6eetr;{@Lsr(~c^q)xJ)D_e!4bykW2YE(PF z5u1C(b)$8O_(CF*w$Ew_+Q2SDiCoo&CQ`?L$bkZ=fa~ftrYVI6Iy_?YvT;tWO1XnB zlMe+oBbaXZyS?eADM-bL`b9yePuk{>x}_vkX3wNvf^w;t%Bh;`t2yoz0zkcUe0Qgf zMZfRNaE?3qyEwB3=0pfJ-oUT z8zAstV>x4KyP-l*6OJB7gjT|z5aTL)lx=#cmQhNSmQZ$1??Nl+q z`BX}Dt`(b@)JiP=ATDvz!Kaw#NeeB(RAxDN&D$S-=re!yFKZAjeFOmZ1ne{oG7fPK z`k9ynK*ECbUByChY0nBiaY+s-M-(#Td6=_P$h1^`6hovmraf;UY@Qw58!nHA&!R}( zY+aHip$*z?S4M@X-5-($ki*;17JB5MW~9wg*tAn)#v01qo9wkJeVNGT!9f&3H|Va9 z=}i;_fKC9V(xW`HPYR)5c1t=JR7~Z0br-coJ#lk)#_xiL?sl5}VGR2)&V``GUGMdN z*wX_T_WXEiqG{19tpN6I`$>OB@Qoj%3jL4v9T;iH28PDR^4JkjAkTNddi+kvi8{B= z{X-aYJ=qZ~t0wbLPo32G%4eIO1Edfprvi%Du1 z@(f2pGLrLJ__R%jbjDvJrC%*gIa;6;R0h=k`-PN@X;m?URDGi#yT{=j6gIAaL4%mJ zyvBwJ5ErJq)nFB;#0oO_9Eg)yvXZinhOCico@<*-HqQ!`R$veKdj&ZRJsW|4bgP#C)h%oA* z%KTZ;YkXKh96TVa2ZG3)Y@8EU>wfX_5@vEXi$r^IBXDD3WbcZLnQPeu_*5J42zm`R zH#2Z=XxNv?6$#toxwaEM+Vc4=w;J{JnlNW?GiVi|lg_+D_e_=BkKvZ~@QlV;5Tz`} zbmu%)puj#({O3s@><^y)gJAsCqAqO!mw}<*WeizDc7O{7c?w^J{FXw}o(4sU>lW|( z1`vTjB%i)EHpc*ZCZ>=&&1Wf?&e|(XOtaOOu=oQxJV@Sjl0vYAvR5X*L;ls8Z;~yd zz))~R7V4tu_FSEG8mXoa+4#CZjB@adTADRX4gE|1E%O>V>^$~Dpop6VOaVtY^7XF! zD$9u=Hu?xRoX8@Uj8QM)P(HLlIq}4E#VbrQ$pjLJ8;1X2bh-laqC6){BjQT3I(Z&*b+OeU`(-7dU3(usBBv-Bc#$KDa}#MzfSPs9wGPBu zWPfg)mz;+lgI#`yFrO^W@$w%AOh{kP!+u{}DYFzK7G%|j+(7m#U_ZxxQ8e4=%SQge z_kcwW_B^*;0eMo10mden1xvbOx>XPT9h_VW%BONpc{s98OB{K`xup?_z&Bly8p|Ro z41`98Qlxu

~JxTHQa0E*2N8vHJQTYsz5}pOyCy!d{2~8l4=Qmcb^PQs{UWVPa0Q zTWy+VX>4*63}GyXN!JoMr!zNhpvXG@_zCXwmGPan{N}g)ML|FTv$(KZUN+kJb35}yRmyyA*xTSG~LInRl`=W@~p^_EANeM0Tr1v32Wl) zOc+vO(=7Y4a5hmd=$o!+!=Aie4(Q5+=~XN_uNpw5(Dhf^TdndbHb7%d6`F#HwRgLDi^MU!V1y zHO>R`0=&QP_Z~1K({jlgY0t@|LCjC3{$P19jiFj`@Jy{xebSrO(A^hja9v)zBz=D9q0m}kb zhQojlM#6{|-;a{jSC{Y}ameObXY(@l80yygs; z4LBTdEI1jQ3C;~J2rdpT3$6^V39b)r3U2Lcy!Vda?%=-Q!6`rG5b!AQ1n@NQ9PW~c zJZ@sdiqskM`rkx-tI~Lhs!NsOV|y&Q3KVN~{-WVA32Ei3RIl55jquq2S=4`1-QrNg z&7tiH5f1Di92VTtXM9j>T-#G<-LtrSLx|VxC4~D?McuCD#_3Gjx+b4AtwIXt#HylX zm&-^C4JB)64Ed^NbY2`t&Z38zjIXeeDPu<_ix}ic}C>SBYzM62!KyONJLCR&VhoGiX$h^v~*k;xbfg6Ot?tV zVkD~5tVO#H-8#<{P!ppRo|$q>SrVVBExpXL(+%?N4Qur^HJ!n~O3tiRX5l3$B8?}A z+s9`T$8W(TiJzER<_h+ydJztpzW~RytdV>A78H=h!!9er3C0sZ2$jk=YL{4AS*y&m zgPJ`3-DI1kc?Cr!1##9^wP@9*Lr%2Ya3hQ~`YGcynQn$z=9zDy~skRMhzK(HS znPB4f*EVb05NXb?A7|cf0tto!PP3Vs~lxch|33Fb z7&ybhGXf$b!ARbtx)dRqJNN;`A5;LO_7IHl0)YjA3kDMcEfho;Qo&H-DOkwFkw^k0 zV0FewflI|nLrd?>m1uq%ZfAT9ogsr>YMu1}o*me9oABA^NX%3vI@5S zWImzd{7|?KAQo+S-qgCzq2g*WHG76%V|YWu#0+}qHJ-rD4PXl(Ei!m24Sjj&70cGG zHkdWw)*3vk9(s-Ea2o^IW?(x&>{4-iP)zQt4NtH~UrVb*xDy>{4y`wb7MnwJeR$qR zI!_hnjiN9C?aUA~ivbEj@o5$t1I+=?5HyPc3PEv_xieR&IVB}QRmpBoY+(!tg+9;V zaO|ay9^~RU2P}PiKZLuq4xfNUMcfD?uB=K&U}vI`M{p3`HA;Rv&5$5cESB z4QdQBgYd=y84qm&1{R~S1f`{rrhu7>+zNpI0h<`@a55 z8|0!Wm$Y&%7b7IG!e0?5;!Y71N{}rnfHFlv^i~zqqFq#nZn1id6sKR!?j@sNKOXU! z5cQa98qevXpCO(zML$bCXN%Wd@tY_9^Ce(`v|lLxi!NqdY%TY7_R#NjfX4-i=amW1 zYi?HbmWT9DJbQ`fUh;h9Ew9f$D-t{XbuI$L5+3}8hyX^3F}``+E29S7GrK}M7h?S)1 zMC(NQcUtmE?d!o-=VE8A2TzEZ;7`7LKmg)?P!Aef-NwW=%bBRBt07*BK)oz5UO{wk zp+j#Yws#QMy8-S#PNDai;Nc5+`Vx9y8NcFp0sg+tqxaVW?*3kKn*Vnh4?lKEFy^jRB(RSRR*+5{r-g^d(pY(?al%fDR&%?G z;{fHTxRA3`%Bi`eV$N+gj~OsVhFTXm-@umh=0-DP%8aN{IoFZeT0b{>8K&5X8kKV$ zsjc;M+aiV;IYx$B7dYR*R_7UBr#C?pf=+1RHc=-wk?@8jlY=O{CNx*>dbqd}w<_q! z#6HI1qouHAtMXi3(AdKl_6#K4_3TAN<4HiCkyI4R7ulDnrzCE8zHyv$Cd*TZuChRy zQf9T)r3dcT8YhpeRDNoZreX6H`V)alyscf9Lv65VmP>>m9!>E4HA z4?n6&W>(u{Y-Nu>;dthyW&H>uGmwxk8ZZw3*#^P@Hsua@Kp0H9Lky0DN7MIDR6$^v zZ0F)T_|DfMkeG6<44MjNYj-u41A~{AHLo4|6hUd-AD-=B(2HiX=ez?b_dV#HlAku= zexrmotJ{$)RkzJ^-Z$C0jqdPOS~n3LqC+v9ASwEG)2K~oN3Qz14c5L>vvytKE$+&z zyS2ktw|AOGcBexz9Zu32U(I-S9rcV$l-2WkUcVN-M!{O8O07|eX8bzpV@kx;uYEt# zk-K`H*Kdn{|10RLRI5bZ)LB!mtb54kbeb`YCFV@Hpn=qR9Q2Snl_$*Chq2gfm(V-Yl(i!i~cq2Wp zRPko~9BsyX$$k&H{d!{s#q?MPLIF^!RiY8k+BjwHv}KEV=gLWE+B6LNw(Z$<*ulJW z$5v-Vbe1#WOr15Aan5pF&|~Xd4BBj+j$k^6y*GC5P>YmJ`)#?Gc~%NQiW3Z*IbkAtvpX@aV)*fjF2&Fc z$MR@qQ;EI2FT%YgT%~PA)ry`~Nmewhs23D=3qdhltt^UFV^x(>RX!DEg2Ec1xO#1S z(gl+Mv6VgbbXd0+J^Ne;MsOO&tOX}A<(g}x1zXt%ABFj6MW1{b`uh7?&H)66V9W{@ z60UhMD$GEmMh+Qm)ohXpgJz5jshLmjA(%v!%`%5%4F!_6vZt9kO^jitT8u{+cN&p_ zfYL&QctQjTS1LuZq$sA+k{U&deiY@vl|?gZv?w|Og@r(IwH8dd`yRpo797xmt=z{T ztapq3o17LcGIP5FD8V={z*w&vn*Eee<$UT`1lZX1Bh@gsswj_lUq$*j=YNAUu zLJg&%nO{@avtA1JX{uM$xZ%U_AfLoG@~P=!Dxd`y;44RvRoQc|D@ zQbpGGDh;}qrkGz+mr^1%;wC25OG=jvsFoLsl4BNi+pL%5Bl7EUgrR7EkVtIEjiAg1 zlT%5ECkbk4%cJhRldX2LNqRFx8ws+XvKemKRF$@Y`iY%<+(jTZeo#o+gEwG#nGjp;!|c%#IW!3BU*-1^(I?v zlS3}J=dHi4A~qQ^m5?e&T)Wjm<%epOa%w{&cE3srCF|l|L~um1!`=5}O@% z(S7gy(-YfV3obEr&iY6Z>#hqRR+jD>4KvkJTO4u81Mi(fMkmiLbAmLv-Vp$=YfqeP zJ@hr)G|Oyt)c+p(;9R1}A@@QOrp*me@l!@R%F$ClBTTp4HpjGj>GMMTye^1%UG+A=C^N0J!wFYB@!17L zohq-wtI3cLg6eg_BZva-B$^!aE+R?B{19oc3n5Xia)XR9+iJU< za?LYeT|`WC%BRSrnF>Joy)Kj_c`6Jx)*Nf>cG`8%eRDC<=A3U))kYPBnEdxJlI5#3 z#5i-OaNgH5Zg}ClONd$Oj73)$T__Q#zdoGK3RD?tym{8y>pwTW^uwjZJWYPZRG+zU zk^t$sQ=M#~dwPeFCB^7o2$pC=U z16A{s{@By0Oql8^FL=#6KJo<&jwaH%%9<7as9EI+x#{LwY^C+K+U?-=_>sSx6RjHk9TZPj`3Vu_miq{Z(mg?`)UT&IV!l#zwU}D5 ze84e?XOfVF>{I@I4o_>?cIeDkze1Bq3j)X#k^@)hiuqMi2oN>|O zjnONtv&Ak49COAcH{A2YD<6FHeH>i8IT|D51jMGzTcNP;#AiR^UxF~&3`XMx2DD@c z#nV-OLPWXcJ_4e2Pf$kc!W+z2imnz@E0zy92JuW1l8{yT`$zNYnr(;9eDy0d2`va9 zQ%DY6p$E)x2@nPg2QN-C60+yA6{4xcsEwceJKDX$){AQtpNQ0~B^!1rsgBk856>B3 z#m`g%M?%Sr4M%Rg1PBqOqvT(n!Dw^*)xaUxn68+n=lFm9%rsq*rvFnxh6(bmDT|iQ zO2ND5-kl4u=lpvfoh8y)Bb^n}StXs#rKw0xdMpSQ-Tt@}k)~+$NSMzpSDYi@INnSp zNf#VZVYjW;TWPT}1@v-Esk6u?f>pOjt_*X;iDc%_i-DSg7L+gt=M{t0aAHYDdDfaA&g?Vav9k7uc zR!k3R*VdlJg%xTS`j5rdB=2nmey@o|usqm1*fY`n*n=ruV5@(~c9fHId%@X(wlyW{ zpq^L+kk;PbRw2RO!2!Vu!KufYOmDxCV838va8P2v?Zo=SI%V9!uXwtiaSMHnF~=HvoN>n+e}V}ons|~)C!2f@Q%pJ49OpFWsi)CWRnlb@MjDXZ zxtRXLl@2m`oBH+;S=$#Q8wAmX6UsPcwUMGz1_rKNe?F_Vw!?69!NOJ3<4k|t|0{&{ zniw?Zmwy2T7L=)A&0H0Q1UaitlU7`Ds7#p(oGzLeY|iWT-5f40-DlM3F(S;TN79RE zFN>jsZDOa0Cit&$8cFuDAXM8*a4m zCTPz{9n#@mtqSc~s9f{#HAgP7{{9w-rp}iHpd;zkX0E=5x~=K%dJ4dH>ib&Be*p_z z(4jIBJG_omR#bVFfGZJo#diM8`;KES)FlYPSSVcKh|>{+?EgxoJs*fx|8Ri-s8|@ zE*}g?cLdE~AJgx^0y@s+HQm4RXv`7kRj*MCofpCsQZSul-0r-7zF0bvmbsz2^%^v6 zgc_D~V!9Yhj;^uuRb{sIdwwD2N}F1Gj*YoIrM^Es=atmbvRZNKj^(mh+!9iqfJt!{YW zg||NQ(>bI~Bt)6G=!ou?@k0L*%2uqVlI3c*UruD9`!cX>VovmYm_)*{RIaK>Zn_{8 zDM_L$v5Fj&tLdPLRQ7ikGkNZ-pZ*?o3dRvT=r2L$K*U`l{7zOE8rV1M&>WGkH z06(I@!9XCmp!WrLZ@aiHd*7vP-AqXPv!9n{zbuQ@q*z6aQEIG_?y(VrlF5p#%Z1&i zolz>#Px^qWl*p^fTq~wF-*>&W&`GT}^Q@ZQ0^jqtxy5|*In8XL?|a9VtG0m4>=yZf zJlna(LT+6kEW^Xb%=_{%(e=&zGeX9PRnr ze7y>f?xY_Ov{)Pntj5iow7nPuSFl=)yS!n**RiId5NjEUv9_@k>zK$fZ>q$u2Wpie z)SeC4i#=^G*VbNbUnYO8=iTjRa(ABPHqS02zWA(K420B2SB+Hlw}XlVIH7yb%15f>5H+ z;xM90B&dB)Dr&#;57dF@pQwXQ8fxbG7oq_jnoi0I=Ps+CfH0=B=+Gc6aZdN!7)1Pg zGfnD?M;<@ljX-HK3566hcn^eeL;3TKI?1l(E5R}nJS@LqncZXr+MSL+HTOLa?4ewn z4+WuVXiX8_{=&r2VVZPZ3WfSM9w44U#QIMbg2L*RJGguyDE9Kn5(g9|gTiB!MX*Q~ zWJP-CV$2NS3GD_~Rv*i-1>!)`xQ3-Eg>7O2MalHpB7WlKAJ5qo0bUtTl%iQE^Uo%% z3h#*MOPC|=poriw8>9uL3$eK{r#iibDkx}>9ccZ+T!Qv)4!J&t6BHVz+31=GidLYM z0|Z*PwO~-l4`X#H1kdQo*cyj$K+f3F6gUB9a1rT#6Ib)oakIGucYE^i_dE%9jgN}y zKoFbdi8%7n2_lL!Ha|vYd{ppDdLdB8n}EP+Z1Fz6*h!~F(0j1u_u6N_0~@EN$U!{V z8-*0Bqof^n$mP-DUQi|-La3U@N}_hhxeQ&EzKImp8fd7INtj+{V{sVlQ&b3f@>BkE z-v3%%b=_Sr-&?Nsn{!Bu2#7pRd6Lgenye(x>|)c`nvkB6nN_1!-EK|_rd?Kw_kNIG zH6jnqQDep_2%M`#*o`!Q{FUL;9`5LJS8lX1#u{h5iEt#b^mf7Z*TN;NhaGMrI zN=UpPhPJt*Ke(jOk(x^CW94mHou(WMbfun-dOO9}O;%EAWmUvWn7EqkLe{$~3KuU? zW2-rH<<66p5L-4eDLExIP5b4Kf0jO+03wAXPcN6Y#;wjd*W4-?OUf4?LauVC_b?}= z4mPPIJ58}cPZfZsNir5DI^8XZJ%@N<#7}~7E7C1JF$84E13dmYA($K;bGJ%Sn(z1A-y~Ti0>~(5mgXVnnF${J*gx3QP$_GWR&Tc82bkg zK_=|iz(#em@in?DAN4SNEcbQ-_{y^0$7Agfk>%e-iw9dapvzpe63dlI8r z*azm`DQM4&f$Y7WK~%`LDZtDBUbA?Kzz94EBtln(1{h*POKmS6*8|P4?L6nZ%z1Wt zTT{*gM!-lI<-PS!jQXrP+0#D#yRQBS>HhK++i0f;g{2)L@v|g0br?>MS6wWTn0b;H?K8M|eisteIY!c2H$`+Ki1%~A+kxOcfdmd(dt z7ibOvbM;PIv}upf)<;wS@^!k8>&ZVZ>ff=iM}NMQHqwL7xv$;vg+0OF;(Sr@bR}asI{~boN*66 z{F-=w71~gO??Igzdvy>M%#`}VJqKKDRZ_=IlM{v*c{NxV$0r-R8hLZN=R_ovK zLBR{^3m&eq@K7U9LTO}co#A80e>~KMcGxoG2058wBbc~4EW$izZ zOu4dkQKakjakYtSR@bQM?R0CwD=oIvTFb1l+9C`YCA#5$j??{&@9+(D z;=5Pgc-t?Z8t$};?GpOcT-Pyd;J%StGmlL?H*3F}_g4Np8TatnCU~Eqy+RKN*)RN% zu!G`F>1aZv0i8^WHX_!T1k)1#74z?qB=b63lx#tYC8?IBS&?B~x;0m2*_7{4j%|4k zbhD?}xl)%(Tqtv;r&~ST=tv3=nss;X!swu0Sh{`1r`E}z&uziSPV>Nh|yE<$S><0FN-C>_BsRQ;4DhoIu9XKchI3x!+EF(A~J2)y6IJV~2y@F!k#JB)B z37i57gVUlaoEcYuv%oo^5}X$$!39m>qBd|zbGWP}T+tD(Mk~0M901p~hZ_dN&2fLY z1>6P(!W}Ud?nXbjmlT5g76T9ZzmK0n|NlNJ?8|x1-dF%cV;K-*ArNa75N9h8|6C6w z01qEm8;@`Vc)adoL;BPEx;;xt5qR!8@WMUdrJKMjw}IDUfH!dmc$*vu??eIby#pWK zufRv}>A3APNeaHiOYrrQh5NKh{m2Rlv84VS=SvTnbn{;tKsLx*mU6EiKu*Yy6~7i}al;Nsw9`k42ihl~1$K^G z`X$j;XC>}i0|BiueYwjeegK^?6U2g9pbKV4yjBY6j9r#E4)X)(irpf?rb+a$2?8F2 z`Jg)%#3Rcfpc@v&Lt7!B50-%EuoU#hvUsMy0(xN&@D%I`Mqn@S8TJN4vCr~>TmAqB zUAG}aLIEy;P=sqB6ypjACAbPg z<&w=1I*ejQ`s@O(hj1p=6RyJs!UI@CNE(hnBkyo_4tuyC>;(e$aUZyV`?H_>!T|v1 zCO8ncz|Qy;+`?n9D;|g2coKHUQ*Z~T8`oJ}T?X98E3iLag@^bC4#l_d2;aABvpxWL z;0zqWf8hyXVROR4ri6zb2@GsWgiH)OLojSlB-onBVJ*Ze_CEb1en=3ohlB{|A#s)j z93g4I8IqTSodC{gavI?Q*P^h$Y01aZSZ`_v*j3uaF3@f$qP^@29by;h7`sfzSu34jm*^DxpU$xJ z(W5{$L|F-{akwK?6Y)@}2Dlki^WwHpEgIYjs;z44-O;LR?Yb`>tBbgm^tu?7=}=ul znF-aUq0ENrvV1vE=7#DD%3M%gNtprFRg_s!T^&jV)eUvy$`7jBf$Hwnf2jsW8|lcrwhrd)^;p4Ve2IvO3J&kOg6$7wso~ECdUU zrYr(~eGTpa|60NQ;j#XTg}j9Pev%aNS4ZtW(3Zbs%&+^bN$%gklotT+|L~Ll+{eF( z*02Xo4=7Lo2+CLgPoVW?!1Y2b{|L+bmc7sa{&QK@U4z_5mPK-QhCX*0Oomim{v-Ol zlhe}69-zuWIeSb$4S=7~{ylwqLAEa2&pZ~g+>pH8+F)7BG-D*GAxr{?5_USh9KM9wtX~|gZ;oJn6o3USC7le`cL7rW1+Y8q0`aFgaF^f5icb zamy!71tUL5DRUan0DlnCU@gX4sA})m7cWyyE2r$>qn)|?sQpdoQ85nmg@S-|k|jxs zzRsJsujDC;5!PP#-AW)5-O=`%+dERknyE1Qx;k6bHF zvMqVci!XWWEP4K-DTrFFa>|Ki_w1%im5v6+9c{eI@fhp~tsf>N-Ogluc-`tbw99HK z>$)a^PYkS~C(M9RGzic+8JQb)f&oeYn50iWXp<9{eZ+812+hkit_yPW;J&JaTTQg92I_*i;r~94d0$R#6iVo;4xhegI^K1_F87JOp&p#Jh z(k$ysaZPeO7dv^pyEh9@v+~iH#gRTj)nof=Np4)Pl%A52);N)hOzF=q9W$y+$ zsj$$-#s*($6O|_Fwqj@;bGumCat%dHXi9Pomvvp%bXTkvn$mho%@~Xg(-zXWXy3hH z=E)?-ogn9%ky{H*`5ds7D%0^#z6+EcpfcMxd}mZV2D`z&TiOG>%-x{(m7*Y3Kdiz( zYIBJkVym*be3FDPOEz`%I^4?|%UGr{+Dm%RVwuJ}#*+YabXQd_Yc`p)iP20=r<24H zI)M0UIXbHOoT#4@UXJY%ha8S+YRdimmciKfg0LghJ)sbz$hci%#_zH6;D*RzqjijP zc309RIcKe$8y-0wuM84vcg+=LPT%eNZPpFX>YD{gg{G_bvC|oRg_|pxmeBtZzo1I=D4LeZ?{H$f;CbZ>Z+#d@yxR>fBgl5G*{sW^%*;cu;9Wli#ZwF#aa6+ z1rM{(7x&ukdPkpU{WT3;#p7u-d612r3Wk3LQP zeA{tyOrPJD?2^VWw-dg+4L3x+yeG+gX?s?#b|2y7zCb??NS|%taP8xx=mzYQn{{pN Vopwn>hk7saQSo~)^ZEz?003@~K_CDC diff --git a/public/fonts/america-regular.woff2 b/public/fonts/america-regular.woff2 deleted file mode 100644 index 4ba01eb2e23f76ff903ea12b330c3a88dd689aa2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58412 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 diff --git a/public/fonts/font_index.ts b/public/fonts/font_index.ts index 95a5741..fcd2af3 100644 --- a/public/fonts/font_index.ts +++ b/public/fonts/font_index.ts @@ -1,18 +1,9 @@ -import localFont from "next/font/local"; +import { Inter } from "next/font/google"; -export const america = localFont({ - src: [ - { - path: "./america-regular.woff2", - weight: "400", - style: "normal", - }, - { - path: "./america-medium.woff2", - weight: "500", - style: "normal", - }, - ], - display: "fallback", - variable: "--font-america", +export const inter = Inter({ + subsets: ["latin"], + display: "swap", + variable: "--font-inter", + fallback: ["ui-sans-serif", "system-ui"], + preload: true, }); diff --git a/src/app/globals.css b/src/app/globals.css index cc215e8..72fd72c 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -177,7 +177,7 @@ } @theme inline { - --default-font-family: var(--font-america); + --default-font-family: var(--font-inter); --color-background: var(--background); --color-foreground: var(--foreground); --color-card: var(--card); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index ecc48c3..51fa934 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -4,7 +4,7 @@ import { QueryProvider } from "@/shared/components/providers/query-provider"; import { ThemeProvider } from "@/shared/components/providers/theme-provider"; import { Toaster } from "@/shared/components/ui/sonner"; import "./globals.css"; -import { america } from "@/public/fonts/font_index"; +import { inter } from "@/public/fonts/font_index"; export const metadata: Metadata = { title: { @@ -24,7 +24,7 @@ export default function RootLayout({ @@ -36,7 +36,7 @@ export default function RootLayout({ data-domains="openmonetis.com" /> - + {children} From dfb4126b12e040baac7aebf82567f5aca46e42ea Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 17:50:59 +0000 Subject: [PATCH 04/32] feat(lancamentos): filtros de status e anexo; feedback visual de fatura paga MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Novos filtros no drawer: somente pagos, somente não pagos, com anexo - Filtros de tipo/condição/pagamento agora usam slugs na URL (sem acentos) - Coluna de liquidação: lançamentos de cartão com fatura paga exibem ícone verde com tooltip — diferenciando do estado pendente - EstabelecimentoInput: popover respeita largura do input ao abrir - slugify extraído para shared/utils/string.ts - INVOICE_PAYMENT_CATEGORY_NAME adicionado em categories/constants.ts - SETTLED_FILTER_VALUES adicionado em transactions/constants.ts - establishment-logo.tsx removido (não utilizado) Co-Authored-By: Claude Sonnet 4.6 --- src/app/(dashboard)/payers/[payerId]/page.tsx | 2 + .../transactions/actions/export-actions.ts | 2 + .../components/shared/establishment-input.tsx | 13 ++- .../components/shared/establishment-logo.tsx | 2 - .../components/table/transactions-columns.tsx | 42 +++++++- .../components/table/transactions-filters.tsx | 95 +++++++++++++++++-- src/features/transactions/constants.ts | 5 + src/features/transactions/export-types.ts | 2 + .../hooks/use-transaction-attachments.ts | 3 +- src/features/transactions/page-helpers.ts | 57 +++++++---- src/shared/lib/categories/constants.ts | 2 + src/shared/utils/string.ts | 10 ++ 12 files changed, 201 insertions(+), 34 deletions(-) delete mode 100644 src/features/transactions/components/shared/establishment-logo.tsx diff --git a/src/app/(dashboard)/payers/[payerId]/page.tsx b/src/app/(dashboard)/payers/[payerId]/page.tsx index 9e3b1f6..31d86e1 100644 --- a/src/app/(dashboard)/payers/[payerId]/page.tsx +++ b/src/app/(dashboard)/payers/[payerId]/page.tsx @@ -80,6 +80,8 @@ const EMPTY_FILTERS: TransactionSearchFilters = { categoryFilter: null, accountCardFilter: null, searchFilter: null, + settledFilter: null, + attachmentFilter: null, }; const createEmptySlugMaps = (): SlugMaps => ({ diff --git a/src/features/transactions/actions/export-actions.ts b/src/features/transactions/actions/export-actions.ts index e74fe52..4926f8c 100644 --- a/src/features/transactions/actions/export-actions.ts +++ b/src/features/transactions/actions/export-actions.ts @@ -31,6 +31,8 @@ const exportTransactionsSchema: z.ZodType = z.object( categoryFilter: z.string().nullable(), accountCardFilter: z.string().nullable(), searchFilter: z.string().nullable(), + settledFilter: z.string().nullable(), + attachmentFilter: z.string().nullable(), }), accountId: z.string().min(1).nullable().optional(), cardId: z.string().min(1).nullable().optional(), diff --git a/src/features/transactions/components/shared/establishment-input.tsx b/src/features/transactions/components/shared/establishment-input.tsx index 772724f..1258eb5 100644 --- a/src/features/transactions/components/shared/establishment-input.tsx +++ b/src/features/transactions/components/shared/establishment-input.tsx @@ -38,6 +38,13 @@ export function EstabelecimentoInput({ }: EstabelecimentoInputProps) { const [open, setOpen] = React.useState(false); const [searchValue, setSearchValue] = React.useState(""); + const [width, setWidth] = React.useState(); + const containerRef = React.useRef(null); + + React.useEffect(() => { + if (!open || !containerRef.current) return; + setWidth(containerRef.current.offsetWidth); + }, [open]); const handleSelect = (selectedValue: string) => { onChange(selectedValue); @@ -50,7 +57,6 @@ export function EstabelecimentoInput({ onChange(newValue); setSearchValue(newValue); - // Open popover when user types and there are suggestions if (newValue.length > 0 && estabelecimentos.length > 0) { setOpen(true); } @@ -68,7 +74,7 @@ export function EstabelecimentoInput({ return ( -

+
{estabelecimentos.length > 0 && ( e.preventDefault()} > diff --git a/src/features/transactions/components/shared/establishment-logo.tsx b/src/features/transactions/components/shared/establishment-logo.tsx deleted file mode 100644 index d7df2ce..0000000 --- a/src/features/transactions/components/shared/establishment-logo.tsx +++ /dev/null @@ -1,2 +0,0 @@ -// Re-export from shared — componente movido para src/shared/components/entity-avatar/ -export { EstablishmentLogo as EstabelecimentoLogo } from "@/shared/components/entity-avatar"; diff --git a/src/features/transactions/components/table/transactions-columns.tsx b/src/features/transactions/components/table/transactions-columns.tsx index 4f498d1..1626040 100644 --- a/src/features/transactions/components/table/transactions-columns.tsx +++ b/src/features/transactions/components/table/transactions-columns.tsx @@ -210,7 +210,7 @@ function buildColumns({ - + {name} @@ -570,12 +570,44 @@ function buildColumns({ paymentMethod === "Transferência bancária" || paymentMethod === "Pré-Pago | VR/VA"; - if (!canToggleSettlement) + if (!canToggleSettlement) { + const invoicePaid = Boolean(row.original.isSettled); return ( - - - + + + + + + + + {invoicePaid + ? "Fatura paga" + : "Lançamentos de cartão de crédito são liquidados ao pagar a fatura"} + + ); + } const readOnly = row.original.readonly; const loading = isSettlementLoading(row.original.id); diff --git a/src/features/transactions/components/table/transactions-filters.tsx b/src/features/transactions/components/table/transactions-filters.tsx index 709b171..983e129 100644 --- a/src/features/transactions/components/table/transactions-filters.tsx +++ b/src/features/transactions/components/table/transactions-filters.tsx @@ -15,6 +15,7 @@ import { } from "react"; import { PAYMENT_METHODS, + SETTLED_FILTER_VALUES, TRANSACTION_CONDITIONS, TRANSACTION_TYPES, } from "@/features/transactions/constants"; @@ -50,6 +51,8 @@ import { SelectLabel, SelectTrigger, } from "@/shared/components/ui/select"; +import { Switch } from "@/shared/components/ui/switch"; +import { slugify } from "@/shared/utils/string"; import { cn } from "@/shared/utils/ui"; import { AccountCardSelectContent, @@ -66,9 +69,6 @@ import type { const FILTER_EMPTY_VALUE = "__all"; -const buildStaticOptions = (values: readonly string[]) => - values.map((value) => ({ value, label: value })); - interface FilterSelectProps { param: string; placeholder: string; @@ -263,7 +263,9 @@ export function TransactionsFilters({ searchParams.get("payment") || searchParams.get("payer") || searchParams.get("category") || - searchParams.get("accountCard"); + searchParams.get("accountCard") || + searchParams.get("settled") || + searchParams.get("hasAttachment"); const handleResetFilters = () => { handleReset(); @@ -327,7 +329,10 @@ export function TransactionsFilters({ ({ + value: slugify(v), + label: v, + }))} widthClass="w-full border-dashed" disabled={isPending} getParamValue={getParamValue} @@ -345,7 +350,10 @@ export function TransactionsFilters({ ({ + value: slugify(v), + label: v, + }))} widthClass="w-full border-dashed" disabled={isPending} getParamValue={getParamValue} @@ -363,7 +371,10 @@ export function TransactionsFilters({ ({ + value: slugify(v), + label: v, + }))} widthClass="w-full border-dashed" disabled={isPending} getParamValue={getParamValue} @@ -547,6 +558,76 @@ export function TransactionsFilters({
+ +
+

Status

+
+
+ + { + handleFilterChange( + "settled", + checked ? SETTLED_FILTER_VALUES.PAID : null, + ); + }} + /> +
+
+ + { + handleFilterChange( + "settled", + checked ? SETTLED_FILTER_VALUES.UNPAID : null, + ); + }} + /> +
+
+
+ +
+ + { + handleFilterChange( + "hasAttachment", + checked ? "true" : null, + ); + }} + /> +
diff --git a/src/features/transactions/constants.ts b/src/features/transactions/constants.ts index 9d6821c..156c5b4 100644 --- a/src/features/transactions/constants.ts +++ b/src/features/transactions/constants.ts @@ -19,3 +19,8 @@ export const PAYMENT_METHODS = [ "Pré-Pago | VR/VA", "Transferência bancária", ] as const; + +export const SETTLED_FILTER_VALUES = { + PAID: "pago", + UNPAID: "nao-pago", +} as const; diff --git a/src/features/transactions/export-types.ts b/src/features/transactions/export-types.ts index 19e0e95..e02f4da 100644 --- a/src/features/transactions/export-types.ts +++ b/src/features/transactions/export-types.ts @@ -6,6 +6,8 @@ export type TransactionExportFilters = { categoryFilter: string | null; accountCardFilter: string | null; searchFilter: string | null; + settledFilter: string | null; + attachmentFilter: string | null; }; export type TransactionsExportContext = { diff --git a/src/features/transactions/hooks/use-transaction-attachments.ts b/src/features/transactions/hooks/use-transaction-attachments.ts index 778970b..cf1b82b 100644 --- a/src/features/transactions/hooks/use-transaction-attachments.ts +++ b/src/features/transactions/hooks/use-transaction-attachments.ts @@ -15,6 +15,7 @@ export function useTransactionAttachments(transactionId: string) { `/api/transactions/${transactionId}/attachments`, ), enabled: Boolean(transactionId), - staleTime: 30_000, + staleTime: 50 * 60 * 1000, // 50 min — presigned URLs duram 1h + gcTime: 60 * 60 * 1000, // 1h — mantém cache enquanto URL é válida }); } diff --git a/src/features/transactions/page-helpers.ts b/src/features/transactions/page-helpers.ts index fc6ddba..3db0ebd 100644 --- a/src/features/transactions/page-helpers.ts +++ b/src/features/transactions/page-helpers.ts @@ -1,15 +1,17 @@ import type { SQL } from "drizzle-orm"; -import { and, eq, ilike, isNotNull, or } from "drizzle-orm"; +import { and, eq, ilike, isNotNull, or, sql } from "drizzle-orm"; import { cards, type categories, financialAccounts, type payers, + transactionAttachments, transactions, } from "@/db/schema"; import type { SelectOption } from "@/features/transactions/components/types"; import { PAYMENT_METHODS, + SETTLED_FILTER_VALUES, TRANSACTION_CONDITIONS, TRANSACTION_TYPES, } from "@/features/transactions/constants"; @@ -19,6 +21,7 @@ import { PAYER_ROLE_THIRD_PARTY, } from "@/shared/lib/payers/constants"; import { toDateOnlyString } from "@/shared/utils/date"; +import { slugify } from "@/shared/utils/string"; type PayerRow = typeof payers.$inferSelect; type AccountRow = typeof financialAccounts.$inferSelect; @@ -40,6 +43,8 @@ export type TransactionSearchFilters = { categoryFilter: string | null; accountCardFilter: string | null; searchFilter: string | null; + settledFilter: string | null; + attachmentFilter: string | null; }; type BaseSluggedOption = { @@ -127,6 +132,8 @@ export const extractTransactionSearchFilters = ( categoryFilter: getSingleParam(params, "category"), accountCardFilter: getSingleParam(params, "accountCard"), searchFilter: getSingleParam(params, "q"), + settledFilter: getSingleParam(params, "settled"), + attachmentFilter: getSingleParam(params, "hasAttachment"), }); export const resolveTransactionPagination = ( @@ -152,15 +159,17 @@ export const resolveTransactionPagination = ( const normalizeLabel = (value: string | null | undefined) => value?.trim().length ? value.trim() : "Sem descrição"; -const slugify = (value: string) => { - const base = value - .normalize("NFD") - .replace(/[\u0300-\u036f]/g, "") - .toLowerCase() - .replace(/[^a-z0-9]+/g, "-") - .replace(/^-+|-+$/g, ""); - return base || "item"; -}; +const typeSlugToValue = Object.fromEntries( + TRANSACTION_TYPES.map((t) => [slugify(t), t]), +) as Record; + +const conditionSlugToValue = Object.fromEntries( + TRANSACTION_CONDITIONS.map((c) => [slugify(c), c]), +) as Record; + +const paymentSlugToValue = Object.fromEntries( + PAYMENT_METHODS.map((m) => [slugify(m), m]), +) as Record; const createSlugGenerator = () => { const seen = new Map(); @@ -338,16 +347,20 @@ export const buildTransactionWhere = ({ where.push(eq(transactions.accountId, accountId)); } - if (isValidTransaction(filters.transactionFilter)) { - where.push(eq(transactions.transactionType, filters.transactionFilter)); + const typeValue = typeSlugToValue[filters.transactionFilter ?? ""] ?? null; + if (isValidTransaction(typeValue)) { + where.push(eq(transactions.transactionType, typeValue)); } - if (isValidCondition(filters.conditionFilter)) { - where.push(eq(transactions.condition, filters.conditionFilter)); + const conditionValue = + conditionSlugToValue[filters.conditionFilter ?? ""] ?? null; + if (isValidCondition(conditionValue)) { + where.push(eq(transactions.condition, conditionValue)); } - if (isValidPaymentMethod(filters.paymentFilter)) { - where.push(eq(transactions.paymentMethod, filters.paymentFilter)); + const paymentValue = paymentSlugToValue[filters.paymentFilter ?? ""] ?? null; + if (isValidPaymentMethod(paymentValue)) { + where.push(eq(transactions.paymentMethod, paymentValue)); } if (!payerId && filters.payerFilter) { @@ -377,6 +390,18 @@ export const buildTransactionWhere = ({ } } + if (filters.settledFilter === SETTLED_FILTER_VALUES.PAID) { + where.push(eq(transactions.isSettled, true)); + } else if (filters.settledFilter === SETTLED_FILTER_VALUES.UNPAID) { + where.push(eq(transactions.isSettled, false)); + } + + if (filters.attachmentFilter === "true") { + where.push( + sql`EXISTS (SELECT 1 FROM ${transactionAttachments} WHERE ${transactionAttachments.transactionId} = ${transactions.id})`, + ); + } + const searchPattern = buildSearchPattern(filters.searchFilter); if (searchPattern) { where.push( diff --git a/src/shared/lib/categories/constants.ts b/src/shared/lib/categories/constants.ts index ae34290..7347014 100644 --- a/src/shared/lib/categories/constants.ts +++ b/src/shared/lib/categories/constants.ts @@ -1,5 +1,7 @@ export const CATEGORY_TYPES = ["receita", "despesa"] as const; +export const INVOICE_PAYMENT_CATEGORY_NAME = "Pagamentos"; + export type CategoryType = (typeof CATEGORY_TYPES)[number]; export const CATEGORY_TYPE_LABEL: Record = { diff --git a/src/shared/utils/string.ts b/src/shared/utils/string.ts index 30fa588..2a420ca 100644 --- a/src/shared/utils/string.ts +++ b/src/shared/utils/string.ts @@ -2,6 +2,16 @@ * Utility functions for string normalization and manipulation */ +export function slugify(value: string): string { + const base = value + .normalize("NFD") + .replace(/[\u0300-\u036f]/g, "") + .toLowerCase() + .replace(/[^a-z0-9]+/g, "-") + .replace(/^-+|-+$/g, ""); + return base || "item"; +} + /** * Capitalizes the first letter of a string */ From 7a3bff52aca44f59822937a5b7a4c9caef64c049 Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 17:51:09 +0000 Subject: [PATCH 05/32] =?UTF-8?q?feat(dashboard):=20novos=20widgets=20de?= =?UTF-8?q?=20anexos,=20inbox=20e=20tend=C3=AAncias=20de=20categoria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Widget Anexos: resumo de arquivos do período (total, imagens, PDFs, recentes) - Widget Inbox: snapshot de pré-lançamentos pendentes do Companion - Widget Tendências de Categoria: redireciona para relatório de tendências - fetch-dashboard-data: busca attachmentsSnapshot e inboxSnapshot em paralelo - widgets-config: tipo DashboardWidgetQuickActionOptions centralizado; props adminPayerSlug e quickActionOptions adicionadas ao contrato do widget - dashboard-grid-editable: usa o novo tipo unificado de quickActionOptions - proxy.ts: frame-src adicionado à CSP para preview de PDFs via S3 - rota /attachments criada com layout próprio Co-Authored-By: Claude Sonnet 4.6 --- src/app/(dashboard)/attachments/layout.tsx | 26 ++ .../components/attachments-widget.tsx | 128 +++++++++ .../components/category-trends-widget.tsx | 84 ++++++ .../components/dashboard-grid-editable.tsx | 17 +- .../dashboard/components/inbox-widget.tsx | 267 ++++++++++++++++++ .../dashboard/fetch-dashboard-data.ts | 25 ++ .../dashboard/inbox-snapshot-queries.ts | 74 +++++ .../dashboard/widgets/widgets-config.tsx | 238 ++++++++++------ src/proxy.ts | 1 + 9 files changed, 766 insertions(+), 94 deletions(-) create mode 100644 src/app/(dashboard)/attachments/layout.tsx create mode 100644 src/features/dashboard/components/attachments-widget.tsx create mode 100644 src/features/dashboard/components/category-trends-widget.tsx create mode 100644 src/features/dashboard/components/inbox-widget.tsx create mode 100644 src/features/dashboard/inbox-snapshot-queries.ts diff --git a/src/app/(dashboard)/attachments/layout.tsx b/src/app/(dashboard)/attachments/layout.tsx new file mode 100644 index 0000000..b2c6ae7 --- /dev/null +++ b/src/app/(dashboard)/attachments/layout.tsx @@ -0,0 +1,26 @@ +import { RiAttachmentLine } from "@remixicon/react"; +import MonthNavigation from "@/shared/components/month-picker/month-navigation"; +import PageDescription from "@/shared/components/page-description"; + +export const metadata = { + title: "Anexos", +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( +
+ } + title="Anexos" + subtitle="Gerencie os anexos das suas transações" + /> + + + {children} +
+ ); +} diff --git a/src/features/dashboard/components/attachments-widget.tsx b/src/features/dashboard/components/attachments-widget.tsx new file mode 100644 index 0000000..e78731c --- /dev/null +++ b/src/features/dashboard/components/attachments-widget.tsx @@ -0,0 +1,128 @@ +"use client"; + +import { + RiAttachmentLine, + RiFileLine, + RiFilePdf2Line, + RiImageLine, +} from "@remixicon/react"; +import { useState } from "react"; +import { AttachmentPreview } from "@/features/attachments/components/attachment-preview"; +import type { AttachmentForPeriod } from "@/features/attachments/queries"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@/shared/components/ui/tooltip"; +import { WidgetEmptyState } from "@/shared/components/widget-empty-state"; +import { formatDateOnly } from "@/shared/utils/date"; +import { formatBytes } from "@/shared/utils/number"; + +type AttachmentsSnapshot = { + totalCount: number; + totalBytes: number; + imageCount: number; + pdfCount: number; + recentAttachments: AttachmentForPeriod[]; +}; + +type AttachmentsWidgetProps = { + snapshot: AttachmentsSnapshot; +}; + +export function AttachmentsWidget({ snapshot }: AttachmentsWidgetProps) { + const [selectedIndex, setSelectedIndex] = useState(-1); + + if (snapshot.totalCount === 0) { + return ( + } + title="Nenhum anexo no período" + description="Adicione comprovantes nos seus lançamentos para vê-los aqui." + /> + ); + } + + return ( + <> +
+ + + {snapshot.totalCount} {snapshot.totalCount === 1 ? "anexo" : "anexos"} + + + {formatBytes(snapshot.totalBytes)} + + {snapshot.imageCount > 0 && ( + + + {snapshot.imageCount} + + )} + {snapshot.pdfCount > 0 && ( + + + {snapshot.pdfCount} + + )} +
+ +
    + {snapshot.recentAttachments.map((attachment, index) => { + const isPdf = attachment.mimeType === "application/pdf"; + const isImage = attachment.mimeType.startsWith("image/"); + + return ( +
  • + +
  • + ); + })} +
+ + setSelectedIndex(-1)} + /> + + ); +} diff --git a/src/features/dashboard/components/category-trends-widget.tsx b/src/features/dashboard/components/category-trends-widget.tsx new file mode 100644 index 0000000..4459ef5 --- /dev/null +++ b/src/features/dashboard/components/category-trends-widget.tsx @@ -0,0 +1,84 @@ +"use client"; + +import { + RiArrowDownSFill, + RiArrowUpSFill, + RiLineChartLine, +} from "@remixicon/react"; +import type { DashboardCategoryBreakdownItem } from "@/features/dashboard/categories/category-breakdown"; +import { CategoryIconBadge } from "@/shared/components/entity-avatar"; +import MoneyValues from "@/shared/components/money-values"; +import { WidgetEmptyState } from "@/shared/components/widget-empty-state"; +import { cn } from "@/shared/utils/ui"; + +type CategoryTrendsWidgetProps = { + categories: DashboardCategoryBreakdownItem[]; +}; + +export function CategoryTrendsWidget({ + categories, +}: CategoryTrendsWidgetProps) { + const trending = categories + .filter((c) => c.percentageChange !== null && c.previousAmount > 0) + .sort( + (a, b) => + Math.abs(b.percentageChange ?? 0) - Math.abs(a.percentageChange ?? 0), + ) + .slice(0, 6); + + if (trending.length === 0) { + return ( + } + title="Dados insuficientes" + description="As variações aparecem após lançamentos em dois meses consecutivos." + /> + ); + } + + return ( +
    + {trending.map((category) => { + const change = category.percentageChange ?? 0; + const isUp = change > 0; + + return ( +
  • +
    + +
    +

    + {category.categoryName} +

    +

    + vs{" "} + +

    +
    + + {isUp ? ( + + ) : ( + + )} + {Math.abs(change).toFixed(0)}% + +
    +
  • + ); + })} +
+ ); +} diff --git a/src/features/dashboard/components/dashboard-grid-editable.tsx b/src/features/dashboard/components/dashboard-grid-editable.tsx index 5b2abe4..a6b768d 100644 --- a/src/features/dashboard/components/dashboard-grid-editable.tsx +++ b/src/features/dashboard/components/dashboard-grid-editable.tsx @@ -34,12 +34,12 @@ import { type WidgetPreferences, } from "@/features/dashboard/widgets/actions"; import { + type DashboardWidgetQuickActionOptions, type WidgetConfig, widgetsConfig, } from "@/features/dashboard/widgets/widgets-config"; import { NoteDialog } from "@/features/notes/components/note-dialog"; import { TransactionDialog } from "@/features/transactions/components/dialogs/transaction-dialog/transaction-dialog"; -import type { SelectOption } from "@/features/transactions/components/types"; import { ExpandableWidgetCard } from "@/shared/components/expandable-widget-card"; import { Button } from "@/shared/components/ui/button"; @@ -47,15 +47,7 @@ type DashboardGridEditableProps = { data: DashboardData; period: string; initialPreferences: WidgetPreferences | null; - quickActionOptions: { - payerOptions: SelectOption[]; - splitPayerOptions: SelectOption[]; - defaultPayerId: string | null; - accountOptions: SelectOption[]; - cardOptions: SelectOption[]; - categoryOptions: SelectOption[]; - estabelecimentos: string[]; - }; + quickActionOptions: DashboardWidgetQuickActionOptions; }; const DEFAULT_WIDGET_ORDER = widgetsConfig.map((widget) => widget.id); @@ -368,11 +360,16 @@ export function DashboardGridEditable({ {widget.component({ data, period, + adminPayerSlug: + quickActionOptions.payerOptions.find( + (p) => p.value === quickActionOptions.defaultPayerId, + )?.slug ?? null, widgetPreferences: { order: widgetOrder, hidden: hiddenWidgets, myAccountsShowExcluded, }, + quickActionOptions, onMyAccountsShowExcludedChange: setMyAccountsShowExcluded, })} diff --git a/src/features/dashboard/components/inbox-widget.tsx b/src/features/dashboard/components/inbox-widget.tsx new file mode 100644 index 0000000..d3b897a --- /dev/null +++ b/src/features/dashboard/components/inbox-widget.tsx @@ -0,0 +1,267 @@ +"use client"; + +import { + RiCheckboxCircleFill, + RiCheckLine, + RiDeleteBinLine, +} from "@remixicon/react"; +import Image from "next/image"; +import { useRouter } from "next/navigation"; +import { useMemo, useState } from "react"; +import { toast } from "sonner"; +import type { DashboardInboxSnapshot } from "@/features/dashboard/inbox-snapshot-queries"; +import type { DashboardWidgetQuickActionOptions } from "@/features/dashboard/widgets/widgets-config"; +import { + discardInboxItemAction, + markInboxAsProcessedAction, +} from "@/features/inbox/actions"; +import { TransactionDialog } from "@/features/transactions/components/dialogs/transaction-dialog/transaction-dialog"; +import { ConfirmActionDialog } from "@/shared/components/confirm-action-dialog"; +import MoneyValues from "@/shared/components/money-values"; +import { Button } from "@/shared/components/ui/button"; +import { WidgetEmptyState } from "@/shared/components/widget-empty-state"; +import { resolveLogoSrc } from "@/shared/lib/logo"; + +const DEFAULT_INBOX_APP_LOGO = "/avatars/default_icon.png"; + +function relativeTime(date: Date): string { + const diff = Date.now() - date.getTime(); + const minutes = Math.floor(diff / 60000); + if (minutes < 1) return "agora"; + if (minutes < 60) return `há ${minutes}min`; + const hours = Math.floor(minutes / 60); + if (hours < 24) return `há ${hours}h`; + const days = Math.floor(hours / 24); + return `há ${days}d`; +} + +type InboxWidgetProps = { + snapshot: DashboardInboxSnapshot; + quickActionOptions: DashboardWidgetQuickActionOptions; +}; + +function getDateString(date: Date | string | null | undefined): string | null { + if (!date) return null; + if (typeof date === "string") return date.slice(0, 10); + return date.toISOString().slice(0, 10); +} + +export function InboxWidget({ + snapshot, + quickActionOptions, +}: InboxWidgetProps) { + const router = useRouter(); + const [processOpen, setProcessOpen] = useState(false); + const [discardOpen, setDiscardOpen] = useState(false); + const [itemToProcess, setItemToProcess] = useState< + DashboardInboxSnapshot["recentItems"][number] | null + >(null); + const [itemToDiscard, setItemToDiscard] = useState< + DashboardInboxSnapshot["recentItems"][number] | null + >(null); + + const handleProcessOpenChange = (open: boolean) => { + setProcessOpen(open); + if (!open) setItemToProcess(null); + }; + + const handleDiscardOpenChange = (open: boolean) => { + setDiscardOpen(open); + if (!open) setItemToDiscard(null); + }; + + const handleProcessRequest = ( + item: DashboardInboxSnapshot["recentItems"][number], + ) => { + setItemToProcess(item); + setProcessOpen(true); + }; + + const handleDiscardRequest = ( + item: DashboardInboxSnapshot["recentItems"][number], + ) => { + setItemToDiscard(item); + setDiscardOpen(true); + }; + + const refreshWidget = () => { + router.refresh(); + }; + + const handleDiscardConfirm = async () => { + if (!itemToDiscard) return; + + const result = await discardInboxItemAction({ + inboxItemId: itemToDiscard.id, + }); + + if (result.success) { + toast.success(result.message); + refreshWidget(); + return; + } + + toast.error(result.error); + throw new Error(result.error); + }; + + const handleLancamentoSuccess = async () => { + if (!itemToProcess) return; + + const result = await markInboxAsProcessedAction({ + inboxItemId: itemToProcess.id, + }); + + if (result.success) { + toast.success("Notificação processada!"); + refreshWidget(); + return; + } + + toast.error(result.error); + }; + + const defaultPurchaseDate = + getDateString(itemToProcess?.notificationTimestamp) ?? null; + const defaultName = itemToProcess?.parsedName + ? itemToProcess.parsedName + .toLowerCase() + .replace(/\b\w/g, (char) => char.toUpperCase()) + : null; + const defaultAmount = itemToProcess?.parsedAmount + ? String(Math.abs(Number(itemToProcess.parsedAmount))) + : null; + + const matchedCardId = useMemo(() => { + const appName = itemToProcess?.sourceAppName?.toLowerCase(); + if (!appName) return null; + + for (const option of quickActionOptions.cardOptions) { + const label = option.label.toLowerCase(); + if (label.includes(appName) || appName.includes(label)) { + return option.value; + } + } + + return null; + }, [itemToProcess?.sourceAppName, quickActionOptions.cardOptions]); + + if (snapshot.pendingCount === 0) { + return ( + } + title="Tudo em dia" + description="Nenhum pré-lançamento aguardando revisão." + /> + ); + } + + return ( +
+ {snapshot.recentItems.map((item) => { + const displayName = item.parsedName ?? item.originalText.slice(0, 40); + const parsedAmount = + item.parsedAmount !== null + ? Number.parseFloat(item.parsedAmount) + : null; + const amount = + parsedAmount !== null && Number.isFinite(parsedAmount) + ? parsedAmount + : null; + const logoKey = item.sourceAppName?.toLowerCase() ?? ""; + const rawLogo = snapshot.logoMap[logoKey] ?? null; + const logoSrc = resolveLogoSrc(rawLogo); + const displayLogo = logoSrc ?? DEFAULT_INBOX_APP_LOGO; + + return ( +
+
+ {item.sourceAppName + +
+

+ {displayName} +

+
+ {item.sourceAppName && ( + + {item.sourceAppName} + + )} + + {relativeTime(item.createdAt)} + +
+ + +
+
+
+ + {amount !== null && ( + + )} +
+
+ ); + })} + + + + +
+ ); +} diff --git a/src/features/dashboard/fetch-dashboard-data.ts b/src/features/dashboard/fetch-dashboard-data.ts index 48bb84c..f091634 100644 --- a/src/features/dashboard/fetch-dashboard-data.ts +++ b/src/features/dashboard/fetch-dashboard-data.ts @@ -1,7 +1,9 @@ import { cacheLife, cacheTag } from "next/cache"; +import { fetchAttachmentsForPeriod } from "@/features/attachments/queries"; import { fetchDashboardAccounts } from "./accounts-queries"; import { fetchDashboardCategoryOverview } from "./category-overview-queries"; import { fetchDashboardCurrentPeriodOverview } from "./current-period-overview-queries"; +import { fetchDashboardInboxSnapshot } from "./inbox-snapshot-queries"; import { fetchDashboardInvoices } from "./invoices-queries"; import { fetchDashboardNotes } from "./notes-queries"; import { fetchDashboardPayers } from "./payers-queries"; @@ -16,6 +18,8 @@ async function fetchDashboardDataInternal(userId: string, period: string) { categoryOverview, pagadoresSnapshot, notesData, + allAttachments, + inboxSnapshot, ] = await Promise.all([ fetchDashboardPeriodOverview(userId, period), fetchDashboardAccounts(userId), @@ -24,8 +28,27 @@ async function fetchDashboardDataInternal(userId: string, period: string) { fetchDashboardCategoryOverview(userId, period), fetchDashboardPayers(userId, period), fetchDashboardNotes(userId), + fetchAttachmentsForPeriod(userId, period), + fetchDashboardInboxSnapshot(userId), ]); + const attachmentsSnapshot = allAttachments.reduce( + (acc, attachment, index) => { + acc.totalBytes += attachment.fileSize; + if (attachment.mimeType.startsWith("image/")) acc.imageCount++; + if (attachment.mimeType === "application/pdf") acc.pdfCount++; + if (index < 5) acc.recentAttachments.push(attachment); + return acc; + }, + { + totalCount: allAttachments.length, + totalBytes: 0, + imageCount: 0, + pdfCount: 0, + recentAttachments: [] as typeof allAttachments, + }, + ); + return { metrics: periodOverview.metrics, accountsSnapshot, @@ -46,6 +69,8 @@ async function fetchDashboardDataInternal(userId: string, period: string) { purchasesByCategoryData: currentPeriodOverview.purchasesByCategoryData, incomeByCategoryData: categoryOverview.incomeByCategoryData, expensesByCategoryData: categoryOverview.expensesByCategoryData, + attachmentsSnapshot, + inboxSnapshot, }; } diff --git a/src/features/dashboard/inbox-snapshot-queries.ts b/src/features/dashboard/inbox-snapshot-queries.ts new file mode 100644 index 0000000..6bf7a2f --- /dev/null +++ b/src/features/dashboard/inbox-snapshot-queries.ts @@ -0,0 +1,74 @@ +import { and, count, desc, eq } from "drizzle-orm"; +import { cacheLife, cacheTag } from "next/cache"; +import { cards, financialAccounts, inboxItems } from "@/db/schema"; +import { db } from "@/shared/lib/db"; + +export type DashboardInboxItem = { + id: string; + sourceAppName: string | null; + parsedName: string | null; + parsedAmount: string | null; + originalText: string; + notificationTimestamp: Date; + createdAt: Date; +}; + +export type DashboardInboxSnapshot = { + pendingCount: number; + recentItems: DashboardInboxItem[]; + logoMap: Record; +}; + +export async function fetchDashboardInboxSnapshot( + userId: string, +): Promise { + "use cache"; + cacheTag(`dashboard-${userId}`); + cacheLife({ revalidate: 3 }); + + const [countRows, items, userCards, userAccounts] = await Promise.all([ + db + .select({ total: count() }) + .from(inboxItems) + .where( + and(eq(inboxItems.userId, userId), eq(inboxItems.status, "pending")), + ), + db + .select({ + id: inboxItems.id, + sourceAppName: inboxItems.sourceAppName, + parsedName: inboxItems.parsedName, + parsedAmount: inboxItems.parsedAmount, + originalText: inboxItems.originalText, + notificationTimestamp: inboxItems.notificationTimestamp, + createdAt: inboxItems.createdAt, + }) + .from(inboxItems) + .where( + and(eq(inboxItems.userId, userId), eq(inboxItems.status, "pending")), + ) + .orderBy(desc(inboxItems.notificationTimestamp)) + .limit(10), + db + .select({ name: cards.name, logo: cards.logo }) + .from(cards) + .where(eq(cards.userId, userId)), + db + .select({ name: financialAccounts.name, logo: financialAccounts.logo }) + .from(financialAccounts) + .where(eq(financialAccounts.userId, userId)), + ]); + + const logoMap: Record = {}; + for (const item of [...userCards, ...userAccounts]) { + if (item.logo) { + logoMap[item.name.toLowerCase()] = item.logo; + } + } + + return { + pendingCount: Number(countRows[0]?.total ?? 0), + recentItems: items, + logoMap, + }; +} diff --git a/src/features/dashboard/widgets/widgets-config.tsx b/src/features/dashboard/widgets/widgets-config.tsx index 5922cdb..f0fc06b 100644 --- a/src/features/dashboard/widgets/widgets-config.tsx +++ b/src/features/dashboard/widgets/widgets-config.tsx @@ -1,6 +1,8 @@ import { RiArrowRightLine, RiArrowUpDoubleLine, + RiAtLine, + RiAttachmentLine, RiBarChartBoxLine, RiBarcodeLine, RiBillLine, @@ -16,9 +18,12 @@ import { } from "@remixicon/react"; import Link from "next/link"; import type { ReactNode } from "react"; +import { AttachmentsWidget } from "@/features/dashboard/components/attachments-widget"; import { BillWidget } from "@/features/dashboard/components/bill-widget"; +import { CategoryTrendsWidget } from "@/features/dashboard/components/category-trends-widget"; import { ExpensesByCategoryWidgetWithChart } from "@/features/dashboard/components/expenses-by-category-widget-with-chart"; import { GoalsProgressWidget } from "@/features/dashboard/components/goals-progress-widget"; +import { InboxWidget } from "@/features/dashboard/components/inbox-widget"; import { IncomeByCategoryWidgetWithChart } from "@/features/dashboard/components/income-by-category-widget-with-chart"; import { IncomeExpenseBalanceWidget } from "@/features/dashboard/components/income-expense-balance-widget"; import { InstallmentExpensesWidget } from "@/features/dashboard/components/installment-expenses-widget"; @@ -32,8 +37,19 @@ import { PurchasesByCategoryWidget } from "@/features/dashboard/components/purch import { RecurringExpensesWidget } from "@/features/dashboard/components/recurring-expenses-widget"; import { SpendingOverviewWidget } from "@/features/dashboard/components/spending-overview-widget"; import type { WidgetPreferences } from "@/features/dashboard/widgets/actions"; +import type { SelectOption } from "@/features/transactions/components/types"; import type { DashboardData } from "../fetch-dashboard-data"; +export type DashboardWidgetQuickActionOptions = { + payerOptions: SelectOption[]; + splitPayerOptions: SelectOption[]; + defaultPayerId: string | null; + accountOptions: SelectOption[]; + cardOptions: SelectOption[]; + categoryOptions: SelectOption[]; + estabelecimentos: string[]; +}; + export type WidgetConfig = { id: string; title: string; @@ -42,7 +58,9 @@ export type WidgetConfig = { component: (props: { data: DashboardData; period: string; + adminPayerSlug: string | null; widgetPreferences: WidgetPreferences; + quickActionOptions: DashboardWidgetQuickActionOptions; onMyAccountsShowExcludedChange?: (value: boolean) => void; }) => ReactNode; action?: ReactNode; @@ -88,21 +106,149 @@ export const widgetsConfig: WidgetConfig[] = [ { id: "payment-status", title: "Status de Pagamento", - subtitle: "Valores Confirmados E Pendentes", + subtitle: "Valores confirmados e pendentes", icon: , component: ({ data }) => ( ), }, + { + id: "inbox", + title: "Pré-lançamentos", + subtitle: "Notificações pendentes de revisão", + icon: , + component: ({ data, quickActionOptions }) => ( + + ), + action: ( + + Revisar + + + ), + }, { id: "income-expense-balance", title: "Receita, Despesa e Balanço", - subtitle: "Últimos 6 Meses", + subtitle: "Últimos 6 meses", icon: , component: ({ data }) => ( ), }, + { + id: "goals-progress", + title: "Progresso de Orçamentos", + subtitle: "Orçamentos por categoria no período", + icon: , + component: ({ data }) => ( + + ), + action: ( + + Ver todos + + + ), + }, + { + id: "category-trends", + title: "Tendências de Categorias", + subtitle: "Top 6 maiores variações vs. mês anterior", + icon: , + component: ({ data }) => ( + + ), + }, + { + id: "spending-overview", + title: "Panorama de Gastos", + subtitle: "Principais despesas e frequência por local", + icon: , + component: ({ data }) => ( + + ), + }, + { + id: "payment-overview", + title: "Comportamento de Pagamento", + subtitle: "Despesas por condição e forma de pagamento", + icon: , + component: ({ data, period, adminPayerSlug }) => ( + + ), + }, + { + id: "expenses-by-category", + title: "Categorias por Despesas", + subtitle: "Distribuição de despesas por categoria", + icon: , + component: ({ data, period }) => ( + + ), + }, + { + id: "income-by-category", + title: "Categorias por Receitas", + subtitle: "Distribuição de receitas por categoria", + icon: , + component: ({ data, period }) => ( + + ), + }, + { + id: "purchases-by-category", + title: "Lançamentos por Categorias", + subtitle: "Distribuição de lançamentos por categoria", + icon: , + component: ({ data }) => ( + + ), + }, + { + id: "recurring-expenses", + title: "Lançamentos Recorrentes", + subtitle: "Despesas recorrentes do período", + icon: , + component: ({ data }) => ( + + ), + }, + { + id: "installment-expenses", + title: "Lançamentos Parcelados", + subtitle: "Acompanhe as parcelas abertas", + icon: , + component: ({ data }) => ( + + ), + }, { id: "pagadores", title: "Pagadores", @@ -138,16 +284,16 @@ export const widgetsConfig: WidgetConfig[] = [ ), }, { - id: "goals-progress", - title: "Progresso de Orçamentos", - subtitle: "Orçamentos por categoria no período", - icon: , + id: "attachments", + title: "Anexos", + subtitle: "Comprovantes do período", + icon: , component: ({ data }) => ( - + ), action: ( Ver todos @@ -155,80 +301,4 @@ export const widgetsConfig: WidgetConfig[] = [ ), }, - { - id: "payment-overview", - title: "Comportamento de Pagamento", - subtitle: "Despesas por condição e forma de pagamento", - icon: , - component: ({ data }) => ( - - ), - }, - { - id: "recurring-expenses", - title: "Lançamentos Recorrentes", - subtitle: "Despesas recorrentes do período", - icon: , - component: ({ data }) => ( - - ), - }, - { - id: "installment-expenses", - title: "Lançamentos Parcelados", - subtitle: "Acompanhe as parcelas abertas", - icon: , - component: ({ data }) => ( - - ), - }, - { - id: "spending-overview", - title: "Panorama de Gastos", - subtitle: "Principais despesas e frequência por local", - icon: , - component: ({ data }) => ( - - ), - }, - { - id: "purchases-by-category", - title: "Lançamentos por Categorias", - subtitle: "Distribuição de lançamentos por categoria", - icon: , - component: ({ data }) => ( - - ), - }, - { - id: "income-by-category", - title: "Categorias por Receitas", - subtitle: "Distribuição de receitas por categoria", - icon: , - component: ({ data, period }) => ( - - ), - }, - { - id: "expenses-by-category", - title: "Categorias por Despesas", - subtitle: "Distribuição de despesas por categoria", - icon: , - component: ({ data, period }) => ( - - ), - }, ]; diff --git a/src/proxy.ts b/src/proxy.ts index 011a964..0fe5f17 100644 --- a/src/proxy.ts +++ b/src/proxy.ts @@ -49,6 +49,7 @@ function buildCsp(): string { `img-src 'self' ${imgExtras} data: blob:`, "font-src 'self'", `connect-src 'self' ${connectExtras}`, + `frame-src 'self'${s3Origin ? ` ${s3Origin}` : ""}`, "frame-ancestors 'none'", ].join("; "); } From 1f9098879e88352b7632d3decc6acdb03653b76f Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 17:51:14 +0000 Subject: [PATCH 06/32] feat(parcelas): redesenho do card de grupo com dialog de detalhes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Card de grupo de parcelas ganhou um dialog ao clicar em "Ver detalhes", separando parcelas pagas e pendentes, com seleção parcial e logo do estabelecimento. Substituída lógica de expand inline pelo dialog. Co-Authored-By: Claude Sonnet 4.6 --- .../installment-group-card.tsx | 446 ++++++++++++------ 1 file changed, 292 insertions(+), 154 deletions(-) diff --git a/src/features/dashboard/components/installment-analysis/installment-group-card.tsx b/src/features/dashboard/components/installment-analysis/installment-group-card.tsx index 89325c8..90a297e 100644 --- a/src/features/dashboard/components/installment-analysis/installment-group-card.tsx +++ b/src/features/dashboard/components/installment-analysis/installment-group-card.tsx @@ -1,19 +1,35 @@ "use client"; import { - RiArrowDownSLine, - RiArrowRightSLine, + RiBankCard2Line, RiCheckboxCircleFill, + RiEyeLine, + RiTimeLine, } from "@remixicon/react"; import { format } from "date-fns"; import { ptBR } from "date-fns/locale"; +import Image from "next/image"; import { useState } from "react"; import MoneyValues from "@/shared/components/money-values"; import { Badge } from "@/shared/components/ui/badge"; -import { Card, CardContent } from "@/shared/components/ui/card"; +import { Button } from "@/shared/components/ui/button"; +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/shared/components/ui/card"; import { Checkbox } from "@/shared/components/ui/checkbox"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/shared/components/ui/dialog"; import { Progress } from "@/shared/components/ui/progress"; -import { cn } from "@/shared/utils/ui"; +import { cn } from "@/shared/utils"; import type { InstallmentGroup } from "./types"; type InstallmentGroupCardProps = { @@ -29,18 +45,22 @@ export function InstallmentGroupCard({ onToggleGroup, onToggleInstallment, }: InstallmentGroupCardProps) { - const [isExpanded, setIsExpanded] = useState(false); + const [isDetailsOpen, setIsDetailsOpen] = useState(false); const unpaidInstallments = group.pendingInstallments.filter( (i) => !i.isSettled, ); - + const paidInstallments = group.pendingInstallments.filter((i) => i.isSettled); const unpaidCount = unpaidInstallments.length; const isFullySelected = selectedInstallments.size === unpaidInstallments.length && unpaidInstallments.length > 0; + const isPartiallySelected = selectedInstallments.size > 0 && !isFullySelected; + + const hasSelection = selectedInstallments.size > 0; + const progress = group.totalInstallments > 0 ? (group.paidInstallments / group.totalInstallments) * 100 @@ -50,186 +70,304 @@ export function InstallmentGroupCard({ .filter((i) => selectedInstallments.has(i.id) && !i.isSettled) .reduce((sum, i) => sum + Number(i.amount), 0); - // Calcular valor total de todas as parcelas (pagas + pendentes) const totalAmount = group.pendingInstallments.reduce( (sum, i) => sum + i.amount, 0, ); - // Calcular valor pendente (apenas não pagas) const pendingAmount = unpaidInstallments.reduce( (sum, i) => sum + i.amount, 0, ); return ( - - - {/* Header do card */} -
- + <> + + {/* Header Section */} + +
+ {/* Checkbox de seleção do grupo */} +
+ +
-
-
-
- {group.cartaoLogo && ( - +
+ {group.cartaoLogo ? ( + {group.cartaoName + ) : ( +
+ +
)} - {group.name} - - | {group.cartaoName} - -
- -
-
- Total: - -
-
- - Pendente: - - +
+ + {group.name} + + + {group.cartaoName ?? "Compra parcelada"} +
- {/* Progress bar */} -
-
+ {/* Badge de status */} + + {progress === 100 ? "Quitado" : `${Math.round(progress)}% pago`} + +
+ + + + {/* Grid de valores */} +
+
+

+ Valor total +

+ +
+
+

+ Pendente +

+ 0 ? "text-amber-600" : "text-success-600", + )} + /> +
+
+ + {/* Barra de progresso */} +
+
+
+ - {group.paidInstallments} de {group.totalInstallments} pagas + {group.paidInstallments} de {group.totalInstallments} parcelas + pagas -
+
+ {unpaidCount > 0 && ( +
+ {unpaidCount} {unpaidCount === 1 ? "pendente" : "pendentes"} - {selectedInstallments.size > 0 && ( - - • Selecionado:{" "} - - - )}
-
- -
- - {/* Botão de expandir */} - +
+
-
- {/* Lista de parcelas expandida */} - {isExpanded && ( -
- {group.pendingInstallments.map((installment) => { - const isSelected = selectedInstallments.has(installment.id); - const isPaid = installment.isSettled; - const dueDate = installment.dueDate - ? format(installment.dueDate, "dd/MM/yyyy", { locale: ptBR }) - : format(installment.purchaseDate, "dd/MM/yyyy", { - locale: ptBR, - }); + {/* Valor selecionado */} + {hasSelection && ( +
+ + {selectedInstallments.size}{" "} + {selectedInstallments.size === 1 + ? "parcela selecionada" + : "parcelas selecionadas"} + + +
+ )} - return ( -
- - !isPaid && onToggleInstallment(installment.id) - } - aria-label={`Selecionar parcela ${installment.currentInstallment} de ${group.totalInstallments}`} - /> + {/* Botão para abrir detalhes */} + + + -
-
-

- Parcela {installment.currentInstallment}/ - {group.totalInstallments} - {isPaid && ( - - Pago - - )} -

-

- Vencimento: {dueDate} -

-
- - -
+ {/* Modal de detalhes */} + + + +
+ {group.cartaoLogo ? ( + {group.cartaoName + ) : ( +
+
- ); - })} + )} + {group.name} +
+ + Detalhes das parcelas do grupo {group.name} + +
+ +
+ {/* Parcelas pagas */} + {paidInstallments.length > 0 && ( +
+

+ Parcelas pagas +

+ {paidInstallments.map((installment) => { + const dueDate = installment.dueDate + ? format(installment.dueDate, "dd MMM yyyy", { + locale: ptBR, + }) + : format(installment.purchaseDate, "dd MMM yyyy", { + locale: ptBR, + }); + + return ( +
+
+ +
+ +
+

+ Parcela {installment.currentInstallment}/ + {group.totalInstallments} +

+

+ Vencimento: {dueDate} +

+
+ + +
+ ); + })} +
+ )} + + {/* Parcelas pendentes */} + {unpaidInstallments.length > 0 && ( +
+

+ Parcelas pendentes +

+ {unpaidInstallments.map((installment) => { + const isSelected = selectedInstallments.has(installment.id); + const dueDate = installment.dueDate + ? format(installment.dueDate, "dd MMM yyyy", { + locale: ptBR, + }) + : format(installment.purchaseDate, "dd MMM yyyy", { + locale: ptBR, + }); + + return ( + + ); + })} +
+ )}
- )} - - + + {/* Footer com resumo da seleção */} + {hasSelection && ( +
+ + {selectedInstallments.size}{" "} + {selectedInstallments.size === 1 + ? "parcela selecionada" + : "parcelas selecionadas"} + + +
+ )} +
+
+ ); } From a7268d8f057c7b6bf0654096fe3e3ff866ed0522 Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 17:51:17 +0000 Subject: [PATCH 07/32] =?UTF-8?q?feat(inbox):=20redesenho=20do=20card=20de?= =?UTF-8?q?=20pr=C3=A9-lan=C3=A7amento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Logo maior (40px), nome do app em font-semibold, data em linha separada e valor monetário em destaque — melhor hierarquia visual. Co-Authored-By: Claude Sonnet 4.6 --- src/features/inbox/components/inbox-card.tsx | 45 +++++++++++--------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/src/features/inbox/components/inbox-card.tsx b/src/features/inbox/components/inbox-card.tsx index 8de995b..57d93bc 100644 --- a/src/features/inbox/components/inbox-card.tsx +++ b/src/features/inbox/components/inbox-card.tsx @@ -104,11 +104,11 @@ export const InboxCard = memo(function InboxCard({ return ( -
- +
+ {onSelectToggle && ( )} -
+
- - {item.sourceAppName || item.sourceApp} - - - - - {timeAgo} - - - {fullDate} - +
+ + {item.sourceAppName || item.sourceApp} + + + + + {timeAgo} + + + {fullDate} + +
{amount !== null && ( - + )}
From 3bd8117b65823c0d685180cde2c4c16aba73a0f3 Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 17:51:21 +0000 Subject: [PATCH 08/32] fix(i18n): corrigir textos "Payer" para "Pagador" em mensagens de erro Co-Authored-By: Claude Sonnet 4.6 --- src/features/accounts/actions.ts | 4 ++-- src/features/payers/actions.ts | 4 ++-- src/features/payers/detail-actions.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/features/accounts/actions.ts b/src/features/accounts/actions.ts index 0191494..56db01b 100644 --- a/src/features/accounts/actions.ts +++ b/src/features/accounts/actions.ts @@ -99,7 +99,7 @@ export async function createAccountAction( if (hasInitialBalance && !adminPayerId) { throw new Error( - "Payer com papel administrador não encontrado. Crie um pagador admin antes de definir um saldo inicial.", + "Pagador com papel administrador não encontrado. Crie um pagador admin antes de definir um saldo inicial.", ); } @@ -299,7 +299,7 @@ export async function transferBetweenAccountsAction( if (!adminPayerId) { throw new Error( - "Payer administrador não encontrado. Por favor, crie um pagador admin.", + "Pagador administrador não encontrado. Por favor, crie um pagador admin.", ); } diff --git a/src/features/payers/actions.ts b/src/features/payers/actions.ts index d2e6802..df836f6 100644 --- a/src/features/payers/actions.ts +++ b/src/features/payers/actions.ts @@ -130,7 +130,7 @@ export async function updatePayerAction( if (!existing) { return { success: false, - error: "Payer não encontrado.", + error: "Pagador não encontrado.", }; } @@ -180,7 +180,7 @@ export async function deletePayerAction( if (!existing) { return { success: false, - error: "Payer não encontrado.", + error: "Pagador não encontrado.", }; } diff --git a/src/features/payers/detail-actions.ts b/src/features/payers/detail-actions.ts index 701bc33..633e1ac 100644 --- a/src/features/payers/detail-actions.ts +++ b/src/features/payers/detail-actions.ts @@ -404,7 +404,7 @@ export async function sendPayerSummaryAction( }); if (!pagadorRow) { - return { success: false, error: "Payer não encontrado." }; + return { success: false, error: "Pagador não encontrado." }; } if (!pagadorRow.email) { From e8cc673e52afdc6a243fc486078702dbf6dceb7c Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 17:51:34 +0000 Subject: [PATCH 09/32] =?UTF-8?q?style(ui):=20padronizar=20tipografia=20?= =?UTF-8?q?=E2=80=94=20font-medium=20para=20font-semibold?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Padronização de peso tipográfico em títulos, rótulos de seção, nomes de entidades e valores monetários em toda a interface. Co-Authored-By: Claude Sonnet 4.6 --- src/app/(dashboard)/accounts/layout.tsx | 2 +- src/app/(dashboard)/budgets/layout.tsx | 2 +- src/app/(dashboard)/calendar/layout.tsx | 2 +- src/app/(dashboard)/cards/layout.tsx | 2 +- src/app/(dashboard)/categories/layout.tsx | 2 +- src/app/(dashboard)/changelog/layout.tsx | 2 +- src/app/(dashboard)/inbox/layout.tsx | 2 +- src/app/(dashboard)/insights/layout.tsx | 2 +- src/app/(dashboard)/notes/layout.tsx | 2 +- src/app/(dashboard)/payers/layout.tsx | 2 +- .../(dashboard)/reports/card-usage/layout.tsx | 2 +- .../(dashboard)/reports/card-usage/page.tsx | 2 +- .../reports/category-trends/layout.tsx | 2 +- .../reports/establishments/layout.tsx | 2 +- .../reports/installment-analysis/layout.tsx | 2 +- src/app/(dashboard)/settings/layout.tsx | 2 +- src/app/(dashboard)/settings/page.tsx | 16 ++++---- src/app/(dashboard)/transactions/layout.tsx | 2 +- src/app/(landing-page)/page.tsx | 40 +++++++++---------- .../accounts/components/account-card.tsx | 4 +- .../components/account-statement-card.tsx | 6 +-- .../components/attachment-grid-item.tsx | 16 +++----- .../components/attachment-preview.tsx | 2 +- .../components/attachments-page.tsx | 10 ----- src/features/auth/components/auth-header.tsx | 2 +- .../budgets/components/budget-card.tsx | 2 +- .../calendar/components/calendar-grid.tsx | 4 +- .../calendar/components/event-modal.tsx | 2 +- src/features/cards/components/card-item.tsx | 14 +++---- .../categories/components/categories-page.tsx | 2 +- .../components/category-detail-header.tsx | 8 ++-- .../components/category-picker-dialog.tsx | 2 +- .../categories/category-details-queries.ts | 10 +++-- .../components/bills/bill-list-item.tsx | 6 +-- .../components/bills/bill-payment-dialog.tsx | 4 +- .../category-breakdown-widget-view.tsx | 4 +- .../components/category-history-widget.tsx | 6 ++- .../components/dashboard-metrics-cards.tsx | 23 ++++++----- .../components/dashboard-welcome.tsx | 12 ++++-- .../goals-progress/goal-progress-item.tsx | 5 ++- .../installment-analysis-page.tsx | 6 +-- .../installment-expense-list-item.tsx | 7 +++- .../components/invoices/invoice-list-item.tsx | 16 ++++++-- .../invoices/invoice-payment-dialog.tsx | 4 +- .../components/my-accounts-widget.tsx | 10 +++-- .../dashboard/components/payers-widget.tsx | 7 +++- .../components/payment-overview-widget.tsx | 6 +++ .../payment-breakdown-list-item.tsx | 20 +++++++++- .../payment-conditions-widget.tsx | 31 ++++++++++---- .../payment-methods-widget.tsx | 35 +++++++++++----- .../payment-overview-widget-view.tsx | 16 +++++++- .../payment-status-category-section.tsx | 9 ++--- .../purchases-by-category-widget.tsx | 5 ++- .../components/recurring-expenses-widget.tsx | 2 +- .../components/top-establishments-widget.tsx | 5 ++- .../components/top-expenses-widget.tsx | 5 ++- .../inbox/components/inbox-details-dialog.tsx | 2 +- .../insights/components/insights-grid.tsx | 2 +- .../insights/components/insights-page.tsx | 2 +- .../insights/components/model-selector.tsx | 2 +- .../components/invoice-summary-card.tsx | 8 ++-- .../landing/components/setup-tabs.tsx | 2 +- src/features/notes/components/note-card.tsx | 2 +- .../components/details/payer-header-card.tsx | 12 +++--- .../components/details/payer-history-card.tsx | 2 +- .../components/details/payer-info-card.tsx | 4 +- .../details/payer-leave-share-card.tsx | 2 +- .../details/payer-monthly-summary-card.tsx | 8 ++-- .../components/details/payer-sharing-card.tsx | 4 +- src/features/payers/components/payer-card.tsx | 4 +- .../payers/components/payer-dialog.tsx | 2 +- .../components/cards/card-usage-chart.tsx | 4 +- .../components/cards/cards-overview.tsx | 12 +++--- .../reports/components/category-cell.tsx | 4 +- .../components/category-report-chart.tsx | 2 +- .../reports/components/category-table.tsx | 14 +++---- .../establishments/highlights-cards.tsx | 4 +- .../establishments/summary-cards.tsx | 8 ++-- .../settings/components/api-tokens-form.tsx | 2 +- .../settings/components/changelog-tab.tsx | 2 +- .../components/delete-account-form.tsx | 4 +- .../settings/components/passkeys-form.tsx | 2 +- .../settings/components/preferences-form.tsx | 2 +- .../components/update-password-form.tsx | 2 +- .../attachments/attachment-item.tsx | 1 + .../attachments/attachment-section.tsx | 6 ++- .../anticipate-installments-dialog.tsx | 8 ++-- .../installment-selection-table.tsx | 2 +- .../components/dialogs/mass-add-dialog.tsx | 4 +- .../dialogs/transaction-details-dialog.tsx | 10 ++--- .../components/import/review-table.tsx | 4 +- .../components/shared/anticipation-card.tsx | 6 +-- .../calculator/calculator-display.tsx | 2 +- src/shared/components/money-values.tsx | 4 +- .../month-picker/month-navigation.tsx | 2 +- .../navigation/navbar/feedback-dialog.tsx | 2 +- .../navigation/navbar/nav-dropdown.tsx | 2 +- .../components/navigation/navbar/nav-menu.tsx | 2 +- .../navigation/navbar/nav-tools.tsx | 4 +- .../navigation/navbar/navbar-user.tsx | 6 ++- .../navigation/sidebar/nav-link.tsx | 2 +- src/shared/components/page-description.tsx | 2 +- src/shared/components/payment-success.tsx | 2 +- src/shared/components/ui/alert-dialog.tsx | 2 +- src/shared/components/ui/chart.tsx | 2 +- src/shared/components/ui/checkbox.tsx | 7 ++-- src/shared/components/ui/currency-input.tsx | 5 +-- src/shared/components/ui/dialog.tsx | 2 +- src/shared/components/ui/empty.tsx | 2 +- src/shared/components/ui/sidebar.tsx | 2 +- src/shared/components/widget-card.tsx | 2 +- 111 files changed, 361 insertions(+), 272 deletions(-) diff --git a/src/app/(dashboard)/accounts/layout.tsx b/src/app/(dashboard)/accounts/layout.tsx index 15fb99f..5a1ca6c 100644 --- a/src/app/(dashboard)/accounts/layout.tsx +++ b/src/app/(dashboard)/accounts/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Contas" diff --git a/src/app/(dashboard)/budgets/layout.tsx b/src/app/(dashboard)/budgets/layout.tsx index ab0990a..7785525 100644 --- a/src/app/(dashboard)/budgets/layout.tsx +++ b/src/app/(dashboard)/budgets/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Orçamentos" diff --git a/src/app/(dashboard)/calendar/layout.tsx b/src/app/(dashboard)/calendar/layout.tsx index f25ece7..f53c330 100644 --- a/src/app/(dashboard)/calendar/layout.tsx +++ b/src/app/(dashboard)/calendar/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Calendário" diff --git a/src/app/(dashboard)/cards/layout.tsx b/src/app/(dashboard)/cards/layout.tsx index a0ac936..2d841e1 100644 --- a/src/app/(dashboard)/cards/layout.tsx +++ b/src/app/(dashboard)/cards/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Cartões" diff --git a/src/app/(dashboard)/categories/layout.tsx b/src/app/(dashboard)/categories/layout.tsx index 369c330..f3add03 100644 --- a/src/app/(dashboard)/categories/layout.tsx +++ b/src/app/(dashboard)/categories/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Categorias" diff --git a/src/app/(dashboard)/changelog/layout.tsx b/src/app/(dashboard)/changelog/layout.tsx index 25fc1c0..d4779c2 100644 --- a/src/app/(dashboard)/changelog/layout.tsx +++ b/src/app/(dashboard)/changelog/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Changelog" diff --git a/src/app/(dashboard)/inbox/layout.tsx b/src/app/(dashboard)/inbox/layout.tsx index 78c3dc9..78eda03 100644 --- a/src/app/(dashboard)/inbox/layout.tsx +++ b/src/app/(dashboard)/inbox/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Pré-Lançamentos" diff --git a/src/app/(dashboard)/insights/layout.tsx b/src/app/(dashboard)/insights/layout.tsx index 4e3a77e..c16f177 100644 --- a/src/app/(dashboard)/insights/layout.tsx +++ b/src/app/(dashboard)/insights/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Insights" diff --git a/src/app/(dashboard)/notes/layout.tsx b/src/app/(dashboard)/notes/layout.tsx index ec49120..048976e 100644 --- a/src/app/(dashboard)/notes/layout.tsx +++ b/src/app/(dashboard)/notes/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Anotações" diff --git a/src/app/(dashboard)/payers/layout.tsx b/src/app/(dashboard)/payers/layout.tsx index b98f945..5131b00 100644 --- a/src/app/(dashboard)/payers/layout.tsx +++ b/src/app/(dashboard)/payers/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Pagadores" diff --git a/src/app/(dashboard)/reports/card-usage/layout.tsx b/src/app/(dashboard)/reports/card-usage/layout.tsx index 3533594..305a744 100644 --- a/src/app/(dashboard)/reports/card-usage/layout.tsx +++ b/src/app/(dashboard)/reports/card-usage/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Uso de Cartões" diff --git a/src/app/(dashboard)/reports/card-usage/page.tsx b/src/app/(dashboard)/reports/card-usage/page.tsx index 993ff27..a6904cc 100644 --- a/src/app/(dashboard)/reports/card-usage/page.tsx +++ b/src/app/(dashboard)/reports/card-usage/page.tsx @@ -71,7 +71,7 @@ export default async function RelatorioCartoesPage({
-

Nenhum cartão selecionado

+

Nenhum cartão selecionado

Selecione um cartão para ver os detalhes de uso.

diff --git a/src/app/(dashboard)/reports/category-trends/layout.tsx b/src/app/(dashboard)/reports/category-trends/layout.tsx index a224d3b..a5e6b89 100644 --- a/src/app/(dashboard)/reports/category-trends/layout.tsx +++ b/src/app/(dashboard)/reports/category-trends/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Tendências" diff --git a/src/app/(dashboard)/reports/establishments/layout.tsx b/src/app/(dashboard)/reports/establishments/layout.tsx index bd72f6f..3229542 100644 --- a/src/app/(dashboard)/reports/establishments/layout.tsx +++ b/src/app/(dashboard)/reports/establishments/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Top Estabelecimentos" diff --git a/src/app/(dashboard)/reports/installment-analysis/layout.tsx b/src/app/(dashboard)/reports/installment-analysis/layout.tsx index 3c1e076..eb28770 100644 --- a/src/app/(dashboard)/reports/installment-analysis/layout.tsx +++ b/src/app/(dashboard)/reports/installment-analysis/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Análise de Parcelas" diff --git a/src/app/(dashboard)/settings/layout.tsx b/src/app/(dashboard)/settings/layout.tsx index 7720d91..9f0bbec 100644 --- a/src/app/(dashboard)/settings/layout.tsx +++ b/src/app/(dashboard)/settings/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -
+
} title="Ajustes" diff --git a/src/app/(dashboard)/settings/page.tsx b/src/app/(dashboard)/settings/page.tsx index 4e404b4..5b1d9a0 100644 --- a/src/app/(dashboard)/settings/page.tsx +++ b/src/app/(dashboard)/settings/page.tsx @@ -67,7 +67,7 @@ export default async function Page() {
-

Preferências

+

Preferências

Personalize sua experiência no OpenMonetis ajustando as configurações de acordo com suas necessidades. @@ -92,7 +92,9 @@ export default async function Page() {

-

OpenMonetis Companion

+

+ OpenMonetis Companion +

Android @@ -114,7 +116,7 @@ export default async function Page() {
-

Alterar nome

+

Alterar nome

Atualize como seu nome aparece no OpenMonetis. Esse nome pode ser exibido em diferentes seções do app e em comunicações. @@ -130,7 +132,7 @@ export default async function Page() {

-

Alterar senha

+

Alterar senha

Defina uma nova senha para sua conta. Guarde-a em local seguro. @@ -146,7 +148,7 @@ export default async function Page() {

-

Passkeys

+

Passkeys

Passkeys permitem login sem senha, usando biometria (Face ID, Touch ID, Windows Hello) ou chaves de segurança. @@ -162,7 +164,7 @@ export default async function Page() {

-

Alterar e-mail

+

Alterar e-mail

Atualize o e-mail associado à sua conta. Você precisará confirmar os links enviados para o novo e também para o e-mail @@ -182,7 +184,7 @@ export default async function Page() {

-

+

Ações perigosas

diff --git a/src/app/(dashboard)/transactions/layout.tsx b/src/app/(dashboard)/transactions/layout.tsx index 2cbc7c0..2f68a21 100644 --- a/src/app/(dashboard)/transactions/layout.tsx +++ b/src/app/(dashboard)/transactions/layout.tsx @@ -11,7 +11,7 @@ export default function RootLayout({ children: React.ReactNode; }) { return ( -

+
} title="Lançamentos" diff --git a/src/app/(landing-page)/page.tsx b/src/app/(landing-page)/page.tsx index 0e767d1..75c57ee 100644 --- a/src/app/(landing-page)/page.tsx +++ b/src/app/(landing-page)/page.tsx @@ -120,13 +120,13 @@ export default async function Page() {
-
+
Projeto Open Source -

+

Suas finanças, do seu jeito

@@ -207,9 +207,7 @@ export default async function Page() { className="flex flex-col items-center text-center gap-1.5" > - - {value} - + {value} {label} @@ -229,7 +227,7 @@ export default async function Page() { Conheça as telas -

+

Veja o que você pode fazer

@@ -254,7 +252,7 @@ export default async function Page() { O que tem aqui -

+

Funcionalidades que importam

@@ -282,7 +280,7 @@ export default async function Page() { />

-

+

{feature.title}

@@ -298,7 +296,7 @@ export default async function Page() {

-

+

Também inclui

@@ -319,7 +317,7 @@ export default async function Page() { />
-

+

{feature.title}

@@ -346,7 +344,7 @@ export default async function Page() { Mobile -

+

Use o OpenMonetis no celular sem perder o fluxo

@@ -384,7 +382,7 @@ export default async function Page() { PWA instalável -

+

Leve o OpenMonetis para a tela inicial

@@ -430,7 +428,7 @@ export default async function Page() { Companion Android

-

+

Capture, envie e revise no mesmo fluxo

@@ -529,7 +527,7 @@ export default async function Page() { Stack técnica -

+

O que roda por baixo

@@ -556,7 +554,7 @@ export default async function Page() { />

-

+

{item.title}

@@ -582,7 +580,7 @@ export default async function Page() { Como usar -

+

Rode no seu computador

@@ -617,7 +615,7 @@ export default async function Page() { Para quem é? -

+

Feito para quem gosta de controle

@@ -644,7 +642,7 @@ export default async function Page() { />

-

{item.title}

+

{item.title}

{item.description}

@@ -664,7 +662,7 @@ export default async function Page() {
-

+

Pronto para testar?

@@ -715,7 +713,7 @@ export default async function Page() {

-

Projeto

+

Projeto

  • -

    Companion

    +

    Companion

    • ) : null} -

      {accountName}

      +

      + {accountName} +

      {(excludeFromBalance || excludeInitialBalanceFromIncome) && ( diff --git a/src/features/accounts/components/account-statement-card.tsx b/src/features/accounts/components/account-statement-card.tsx index 12b16d0..750a8db 100644 --- a/src/features/accounts/components/account-statement-card.tsx +++ b/src/features/accounts/components/account-statement-card.tsx @@ -68,7 +68,7 @@ export function AccountStatementCard({
    ) : null}
    -

    +

    {accountName}

    @@ -81,12 +81,12 @@ export function AccountStatementCard({ {/* Linha 2 — saldo final (hero) */}

    -

    +

    Saldo ao final do período

    - - PDF Protegido - + PDF Protegido
    ); } @@ -153,7 +151,7 @@ export function AttachmentGridItem({ -

    +

    {attachment.fileName}

    @@ -180,25 +178,21 @@ export function AttachmentGridItem({ {attachment.transactionName}
    - + {formatCurrency(amount)}
    {/* Footer: Tamanho + Botão Detalhes */}
    - + {formatBytes(attachment.fileSize)} diff --git a/src/features/attachments/components/attachment-preview.tsx b/src/features/attachments/components/attachment-preview.tsx index caed828..4466cdd 100644 --- a/src/features/attachments/components/attachment-preview.tsx +++ b/src/features/attachments/components/attachment-preview.tsx @@ -105,7 +105,7 @@ export function AttachmentPreview({ > - + {currentIndex + 1} / {attachments.length}
    @@ -113,7 +113,7 @@ export function BillPaymentDialog({
diff --git a/src/features/dashboard/components/category-breakdown/category-breakdown-widget-view.tsx b/src/features/dashboard/components/category-breakdown/category-breakdown-widget-view.tsx index 2b0228d..1c234f3 100644 --- a/src/features/dashboard/components/category-breakdown/category-breakdown-widget-view.tsx +++ b/src/features/dashboard/components/category-breakdown/category-breakdown-widget-view.tsx @@ -281,12 +281,12 @@ export function CategoryBreakdownWidgetView({
{category.percentageChange !== null ? ( {hasIncrease ? ( diff --git a/src/features/dashboard/components/category-history-widget.tsx b/src/features/dashboard/components/category-history-widget.tsx index 7e7edc1..a14960d 100644 --- a/src/features/dashboard/components/category-history-widget.tsx +++ b/src/features/dashboard/components/category-history-widget.tsx @@ -197,7 +197,9 @@ export function CategoryHistoryWidget({ data }: CategoryHistoryWidgetProps) { style={{ backgroundColor: color }} /> )} - {category.name} + + {category.name} +
- + {formatCurrency(value)}
diff --git a/src/features/dashboard/components/dashboard-metrics-cards.tsx b/src/features/dashboard/components/dashboard-metrics-cards.tsx index 30b03d6..ac80de0 100644 --- a/src/features/dashboard/components/dashboard-metrics-cards.tsx +++ b/src/features/dashboard/components/dashboard-metrics-cards.tsx @@ -116,13 +116,14 @@ const getPercentChange = (current: number, previous: number): string => { } const change = ((current - previous) / Math.abs(previous)) * 100; - return Number.isFinite(change) && Math.abs(change) < 1000000 - ? formatPercentage(change, { - maximumFractionDigits: 1, - minimumFractionDigits: 1, - signDisplay: "always", - }) - : "—"; + if (!Number.isFinite(change)) return "—"; + if (change > 999) return "+999%"; + if (change < -999) return "-999%"; + return formatPercentage(change, { + maximumFractionDigits: 2, + minimumFractionDigits: 2, + signDisplay: "always", + }); }; const getTrendBadgeClass = (trend: Trend, invertTrend: boolean): string => { @@ -159,7 +160,7 @@ export function DashboardMetricsCards({ metrics }: DashboardMetricsCardsProps) {
- + {label}
@@ -195,7 +196,7 @@ export function DashboardMetricsCards({ metrics }: DashboardMetricsCardsProps) {
no mês anterior diff --git a/src/features/dashboard/components/dashboard-welcome.tsx b/src/features/dashboard/components/dashboard-welcome.tsx index 32649b1..3bea253 100644 --- a/src/features/dashboard/components/dashboard-welcome.tsx +++ b/src/features/dashboard/components/dashboard-welcome.tsx @@ -1,17 +1,21 @@ import { formatCurrentDate, getGreeting } from "./welcome-widget"; -export function DashboardWelcome({ name }: { name?: string | null }) { +type DashboardWelcomeProps = { + name?: string | null; +}; + +export function DashboardWelcome({ name }: DashboardWelcomeProps) { const displayName = name && name.trim().length > 0 ? name : "Administrador"; const formattedDate = formatCurrentDate(); const greeting = getGreeting(); return (
-
-

+
+

{greeting}, {displayName}

-

{formattedDate}

+

{formattedDate}

); diff --git a/src/features/dashboard/components/goals-progress/goal-progress-item.tsx b/src/features/dashboard/components/goals-progress/goal-progress-item.tsx index 4ea14bc..9a7c2e0 100644 --- a/src/features/dashboard/components/goals-progress/goal-progress-item.tsx +++ b/src/features/dashboard/components/goals-progress/goal-progress-item.tsx @@ -44,8 +44,9 @@ export function GoalProgressItem({ {item.categoryName}

- de{" "} - + {" "} + de{" "} + {formatGoalProgressPercentage(percentageDelta, true)} diff --git a/src/features/dashboard/components/installment-analysis/installment-analysis-page.tsx b/src/features/dashboard/components/installment-analysis/installment-analysis-page.tsx index 093ce12..f60aebe 100644 --- a/src/features/dashboard/components/installment-analysis/installment-analysis-page.tsx +++ b/src/features/dashboard/components/installment-analysis/installment-analysis-page.tsx @@ -132,12 +132,12 @@ export function InstallmentAnalysisPage({ {/* Card de resumo principal */} -

+

Se você pagar tudo que está selecionado:

{selectedCount} {selectedCount === 1 ? "parcela" : "parcelas"}{" "} @@ -167,7 +167,7 @@ export function InstallmentAnalysisPage({ {/* Seção de Lançamentos Parcelados */} {data.installmentGroups.length > 0 && ( -

+
{data.installmentGroups.map((group) => ( ) : null}
- +

@@ -67,7 +70,7 @@ export function InstallmentExpenseListItem({ {" · Restante "} {" "} ({remainingInstallments})

diff --git a/src/features/dashboard/components/invoices/invoice-list-item.tsx b/src/features/dashboard/components/invoices/invoice-list-item.tsx index 5f7d3da..fcb0672 100644 --- a/src/features/dashboard/components/invoices/invoice-list-item.tsx +++ b/src/features/dashboard/components/invoices/invoice-list-item.tsx @@ -116,7 +116,10 @@ export function InvoiceListItem({ invoice, onPay }: InvoiceListItemProps) {

- +
))} @@ -144,7 +147,7 @@ export function InvoiceListItem({ invoice, onPay }: InvoiceListItemProps) { paymentTooltipLabel ? ( - + {paymentInfo.label} @@ -153,7 +156,9 @@ export function InvoiceListItem({ invoice, onPay }: InvoiceListItemProps) { ) : ( - {paymentInfo.label} + + {paymentInfo.label} + ) ) : null}
@@ -161,7 +166,10 @@ export function InvoiceListItem({ invoice, onPay }: InvoiceListItemProps) {
- +
@@ -130,7 +130,7 @@ export function InvoicePaymentDialog({
diff --git a/src/features/dashboard/components/my-accounts-widget.tsx b/src/features/dashboard/components/my-accounts-widget.tsx index eedddbe..4eff4c5 100644 --- a/src/features/dashboard/components/my-accounts-widget.tsx +++ b/src/features/dashboard/components/my-accounts-widget.tsx @@ -78,7 +78,7 @@ export function MyAccountsWidget({

Saldo Total

- +
{excludedAccountsCount > 0 ? ( @@ -137,7 +137,7 @@ export function MyAccountsWidget({
) : (
    - {displayedAccounts.map((account) => { + {displayedAccounts.map((account, index) => { const logoSrc = resolveLogoSrc(account.logo); return ( @@ -154,6 +154,7 @@ export function MyAccountsWidget({ fill sizes="38px" className="object-contain rounded-full" + priority={index === 0} /> ) : null}
@@ -199,7 +200,10 @@ export function MyAccountsWidget({
- +
); diff --git a/src/features/dashboard/components/payers-widget.tsx b/src/features/dashboard/components/payers-widget.tsx index d443918..fae2e57 100644 --- a/src/features/dashboard/components/payers-widget.tsx +++ b/src/features/dashboard/components/payers-widget.tsx @@ -83,10 +83,13 @@ export function PayersWidget({ payers }: PayersWidgetProps) {
- + {percentageChange !== null && ( 0 ? "text-destructive" : percentageChange < 0 diff --git a/src/features/dashboard/components/payment-overview-widget.tsx b/src/features/dashboard/components/payment-overview-widget.tsx index 2de4276..4a0bb7b 100644 --- a/src/features/dashboard/components/payment-overview-widget.tsx +++ b/src/features/dashboard/components/payment-overview-widget.tsx @@ -8,11 +8,15 @@ import { PaymentOverviewWidgetView } from "./payment-overview/payment-overview-w type PaymentOverviewWidgetProps = { paymentConditionsData: PaymentConditionsData; paymentMethodsData: PaymentMethodsData; + period: string; + adminPayerSlug: string | null; }; export function PaymentOverviewWidget({ paymentConditionsData, paymentMethodsData, + period, + adminPayerSlug, }: PaymentOverviewWidgetProps) { const { activeTab, handleTabChange } = usePaymentOverviewWidgetController(); @@ -22,6 +26,8 @@ export function PaymentOverviewWidget({ paymentConditionsData={paymentConditionsData} paymentMethodsData={paymentMethodsData} onTabChange={handleTabChange} + period={period} + adminPayerSlug={adminPayerSlug} /> ); } diff --git a/src/features/dashboard/components/payment-overview/payment-breakdown-list-item.tsx b/src/features/dashboard/components/payment-overview/payment-breakdown-list-item.tsx index 2f37786..c645fe4 100644 --- a/src/features/dashboard/components/payment-overview/payment-breakdown-list-item.tsx +++ b/src/features/dashboard/components/payment-overview/payment-breakdown-list-item.tsx @@ -1,3 +1,5 @@ +import { RiExternalLinkLine } from "@remixicon/react"; +import Link from "next/link"; import type { ReactNode } from "react"; import { formatPaymentBreakdownPercentage, @@ -17,6 +19,7 @@ export type PaymentBreakdownListItemData = { amount: number; transactions: number; percentage: number; + href?: string; }; type PaymentBreakdownListItemProps = { @@ -40,8 +43,21 @@ export function PaymentBreakdownListItem({
-

{item.title}

- + {item.href ? ( + + {item.title} + + + ) : ( +

{item.title}

+ )} +
diff --git a/src/features/dashboard/components/payment-overview/payment-conditions-widget.tsx b/src/features/dashboard/components/payment-overview/payment-conditions-widget.tsx index 189d398..73bbe60 100644 --- a/src/features/dashboard/components/payment-overview/payment-conditions-widget.tsx +++ b/src/features/dashboard/components/payment-overview/payment-conditions-widget.tsx @@ -1,6 +1,8 @@ import { RiCheckLine, RiSlideshowLine } from "@remixicon/react"; import type { PaymentConditionsData } from "@/features/dashboard/payments/payment-conditions-queries"; import { getConditionIcon } from "@/shared/utils/icons"; +import { formatPeriodForUrl } from "@/shared/utils/period"; +import { slugify } from "@/shared/utils/string"; import { PaymentBreakdownList, type PaymentBreakdownListItemData, @@ -8,6 +10,8 @@ import { type PaymentConditionsWidgetProps = { data: PaymentConditionsData; + period: string; + adminPayerSlug: string | null; }; const resolveConditionIcon = (condition: string) => @@ -15,16 +19,27 @@ const resolveConditionIcon = (condition: string) => export function PaymentConditionsWidget({ data, + period, + adminPayerSlug, }: PaymentConditionsWidgetProps) { const items: PaymentBreakdownListItemData[] = data.conditions.map( - (condition) => ({ - id: condition.condition, - title: condition.condition, - icon: resolveConditionIcon(condition.condition), - amount: condition.amount, - transactions: condition.transactions, - percentage: condition.percentage, - }), + (condition) => { + const params = new URLSearchParams({ + type: slugify("Despesa"), + condition: slugify(condition.condition), + periodo: formatPeriodForUrl(period), + }); + if (adminPayerSlug) params.set("payer", adminPayerSlug); + return { + id: condition.condition, + title: condition.condition, + icon: resolveConditionIcon(condition.condition), + amount: condition.amount, + transactions: condition.transactions, + percentage: condition.percentage, + href: `/transactions?${params.toString()}`, + }; + }, ); return ( diff --git a/src/features/dashboard/components/payment-overview/payment-methods-widget.tsx b/src/features/dashboard/components/payment-overview/payment-methods-widget.tsx index cf84b59..a056b47 100644 --- a/src/features/dashboard/components/payment-overview/payment-methods-widget.tsx +++ b/src/features/dashboard/components/payment-overview/payment-methods-widget.tsx @@ -1,6 +1,8 @@ import { RiBankCard2Line, RiMoneyDollarCircleLine } from "@remixicon/react"; import type { PaymentMethodsData } from "@/features/dashboard/payments/payment-methods-queries"; import { getPaymentMethodIcon } from "@/shared/utils/icons"; +import { formatPeriodForUrl } from "@/shared/utils/period"; +import { slugify } from "@/shared/utils/string"; import { PaymentBreakdownList, type PaymentBreakdownListItemData, @@ -8,6 +10,8 @@ import { type PaymentMethodsWidgetProps = { data: PaymentMethodsData; + period: string; + adminPayerSlug: string | null; }; const resolvePaymentMethodIcon = (paymentMethod: string) => @@ -15,15 +19,28 @@ const resolvePaymentMethodIcon = (paymentMethod: string) => ); -export function PaymentMethodsWidget({ data }: PaymentMethodsWidgetProps) { - const items: PaymentBreakdownListItemData[] = data.methods.map((method) => ({ - id: method.paymentMethod, - title: method.paymentMethod, - icon: resolvePaymentMethodIcon(method.paymentMethod), - amount: method.amount, - transactions: method.transactions, - percentage: method.percentage, - })); +export function PaymentMethodsWidget({ + data, + period, + adminPayerSlug, +}: PaymentMethodsWidgetProps) { + const items: PaymentBreakdownListItemData[] = data.methods.map((method) => { + const params = new URLSearchParams({ + type: slugify("Despesa"), + payment: slugify(method.paymentMethod), + periodo: formatPeriodForUrl(period), + }); + if (adminPayerSlug) params.set("payer", adminPayerSlug); + return { + id: method.paymentMethod, + title: method.paymentMethod, + icon: resolvePaymentMethodIcon(method.paymentMethod), + amount: method.amount, + transactions: method.transactions, + percentage: method.percentage, + href: `/transactions?${params.toString()}`, + }; + }); return ( void; + period: string; + adminPayerSlug: string | null; }; export function PaymentOverviewWidgetView({ @@ -23,6 +25,8 @@ export function PaymentOverviewWidgetView({ paymentConditionsData, paymentMethodsData, onTabChange, + period, + adminPayerSlug, }: PaymentOverviewWidgetViewProps) { return ( @@ -38,11 +42,19 @@ export function PaymentOverviewWidgetView({ - + - + ); diff --git a/src/features/dashboard/components/payment-status/payment-status-category-section.tsx b/src/features/dashboard/components/payment-status/payment-status-category-section.tsx index cb6942e..907f9c8 100644 --- a/src/features/dashboard/components/payment-status/payment-status-category-section.tsx +++ b/src/features/dashboard/components/payment-status/payment-status-category-section.tsx @@ -24,10 +24,7 @@ export function PaymentStatusCategorySection({
{title} - +
@@ -35,13 +32,13 @@ export function PaymentStatusCategorySection({
- + confirmados
- + pendentes
diff --git a/src/features/dashboard/components/purchases-by-category-widget.tsx b/src/features/dashboard/components/purchases-by-category-widget.tsx index 687a425..c2f53d4 100644 --- a/src/features/dashboard/components/purchases-by-category-widget.tsx +++ b/src/features/dashboard/components/purchases-by-category-widget.tsx @@ -178,7 +178,10 @@ export function PurchasesByCategoryWidget({
- +
); diff --git a/src/features/dashboard/components/recurring-expenses-widget.tsx b/src/features/dashboard/components/recurring-expenses-widget.tsx index 9b848f7..59b0868 100644 --- a/src/features/dashboard/components/recurring-expenses-widget.tsx +++ b/src/features/dashboard/components/recurring-expenses-widget.tsx @@ -45,7 +45,7 @@ export function RecurringExpensesWidget({ {expense.name}

- +
diff --git a/src/features/dashboard/components/top-establishments-widget.tsx b/src/features/dashboard/components/top-establishments-widget.tsx index bbddea3..e3742a7 100644 --- a/src/features/dashboard/components/top-establishments-widget.tsx +++ b/src/features/dashboard/components/top-establishments-widget.tsx @@ -48,7 +48,10 @@ export function TopEstablishmentsWidget({
- +
); diff --git a/src/features/dashboard/components/top-expenses-widget.tsx b/src/features/dashboard/components/top-expenses-widget.tsx index c0cf92d..fddf358 100644 --- a/src/features/dashboard/components/top-expenses-widget.tsx +++ b/src/features/dashboard/components/top-expenses-widget.tsx @@ -113,7 +113,10 @@ export function TopExpensesWidget({
- +
); diff --git a/src/features/inbox/components/inbox-details-dialog.tsx b/src/features/inbox/components/inbox-details-dialog.tsx index b7ae91a..0e5d84f 100644 --- a/src/features/inbox/components/inbox-details-dialog.tsx +++ b/src/features/inbox/components/inbox-details-dialog.tsx @@ -67,7 +67,7 @@ export function InboxDetailsDialog({
-

+

Notificação Original

{item.originalTitle && ( diff --git a/src/features/insights/components/insights-grid.tsx b/src/features/insights/components/insights-grid.tsx index 56dcd58..caa415e 100644 --- a/src/features/insights/components/insights-grid.tsx +++ b/src/features/insights/components/insights-grid.tsx @@ -82,7 +82,7 @@ export function InsightsGrid({ insights }: InsightsGridProps) {
- + {categoryConfig.title}
diff --git a/src/features/insights/components/insights-page.tsx b/src/features/insights/components/insights-page.tsx index 099dcae..90ebd93 100644 --- a/src/features/insights/components/insights-page.tsx +++ b/src/features/insights/components/insights-page.tsx @@ -301,7 +301,7 @@ function ErrorState({ return (
-

{title}

+

{title}

{error}

-

+

{formatCurrency(summary.paymentSplits.instant)}

diff --git a/src/features/payers/components/details/payer-history-card.tsx b/src/features/payers/components/details/payer-history-card.tsx index da83da0..82ff394 100644 --- a/src/features/payers/components/details/payer-history-card.tsx +++ b/src/features/payers/components/details/payer-history-card.tsx @@ -63,7 +63,7 @@ export function PayerHistoryCard({ data }: PagadorHistoryCardProps) { return ( - + Evolução (últimos 6 meses)

diff --git a/src/features/payers/components/details/payer-info-card.tsx b/src/features/payers/components/details/payer-info-card.tsx index 5a5a3ec..2213aa1 100644 --- a/src/features/payers/components/details/payer-info-card.tsx +++ b/src/features/payers/components/details/payer-info-card.tsx @@ -31,7 +31,7 @@ export function PagadorInfoCard({ payer }: PayerInfoCardProps) { return ( - + Detalhes do pagador @@ -106,7 +106,7 @@ export function PagadorInfoCard({ payer }: PayerInfoCardProps) { const resolveRoleLabel = (role: string | null) => { if (role === PAYER_ROLE_ADMIN) return "Administrador"; - return "Payer"; + return "Pagador"; }; type InfoItemProps = { diff --git a/src/features/payers/components/details/payer-leave-share-card.tsx b/src/features/payers/components/details/payer-leave-share-card.tsx index 6e5ecda..63c3f6c 100644 --- a/src/features/payers/components/details/payer-leave-share-card.tsx +++ b/src/features/payers/components/details/payer-leave-share-card.tsx @@ -53,7 +53,7 @@ export function PayerLeaveShareCard({ return ( - + Acesso Compartilhado

diff --git a/src/features/payers/components/details/payer-monthly-summary-card.tsx b/src/features/payers/components/details/payer-monthly-summary-card.tsx index 8b745d0..4b64fbf 100644 --- a/src/features/payers/components/details/payer-monthly-summary-card.tsx +++ b/src/features/payers/components/details/payer-monthly-summary-card.tsx @@ -51,7 +51,7 @@ export function PayerMonthlySummaryCard({ return ( - Totais do mês + Totais do mês

{periodLabel} - Despesas por forma de pagamento

@@ -65,7 +65,7 @@ export function PayerMonthlySummaryCard({
@@ -100,7 +100,7 @@ export function PayerMonthlySummaryCard({ totalBase > 0 ? Math.round((entry.value / totalBase) * 100) : 0; return (
- + {percent}% das despesas diff --git a/src/features/payers/components/details/payer-sharing-card.tsx b/src/features/payers/components/details/payer-sharing-card.tsx index f6b56ad..15908f8 100644 --- a/src/features/payers/components/details/payer-sharing-card.tsx +++ b/src/features/payers/components/details/payer-sharing-card.tsx @@ -84,7 +84,9 @@ export function PayerSharingCard({ return ( - Compartilhamentos + + Compartilhamentos +

Compartilhe o código abaixo com outra pessoa. Ela poderá adicioná-lo na página de pagadores usando a opção Adicionar por código para ter diff --git a/src/features/payers/components/payer-card.tsx b/src/features/payers/components/payer-card.tsx index 2298357..4be439c 100644 --- a/src/features/payers/components/payer-card.tsx +++ b/src/features/payers/components/payer-card.tsx @@ -42,9 +42,7 @@ export function PayerCard({ payer, onEdit, onRemove }: PayerCardProps) { {/* Nome e badges */}

-

- {payer.name} -

+

{payer.name}

{isAdmin ? ( ) : null} diff --git a/src/features/payers/components/payer-dialog.tsx b/src/features/payers/components/payer-dialog.tsx index 9fdd9e6..8c9d742 100644 --- a/src/features/payers/components/payer-dialog.tsx +++ b/src/features/payers/components/payer-dialog.tsx @@ -119,7 +119,7 @@ export function PayerDialog({ const payerId = payer?.id; if (mode === "update" && !payerId) { - const message = "Payer inválido."; + const message = "Pagador inválido."; setErrorMessage(message); toast.error(message); return; diff --git a/src/features/reports/components/cards/card-usage-chart.tsx b/src/features/reports/components/cards/card-usage-chart.tsx index 261d809..78e045d 100644 --- a/src/features/reports/components/cards/card-usage-chart.tsx +++ b/src/features/reports/components/cards/card-usage-chart.tsx @@ -142,7 +142,7 @@ export function CardUsageChart({ data, limit, card }: CardUsageChartProps) { Uso - + {formatCurrency(value, { maximumFractionDigits: 0, minimumFractionDigits: 0, @@ -154,7 +154,7 @@ export function CardUsageChart({ data, limit, card }: CardUsageChartProps) { % do Limite - + {formatPercentage(usagePercent, { maximumFractionDigits: 0, minimumFractionDigits: 0, diff --git a/src/features/reports/components/cards/cards-overview.tsx b/src/features/reports/components/cards/cards-overview.tsx index f6a2b1f..b2d6f80 100644 --- a/src/features/reports/components/cards/cards-overview.tsx +++ b/src/features/reports/components/cards/cards-overview.tsx @@ -67,11 +67,11 @@ export function CardsOverview({ data }: CardsOverviewProps) {

{card.title}

{card.isMoney ? ( ) : ( -

+

{formatPercentage(card.value, { maximumFractionDigits: 0, minimumFractionDigits: 0, @@ -83,7 +83,7 @@ export function CardsOverview({ data }: CardsOverviewProps) { ))}

-

Meus cartões

+

Meus cartões

{/* Cards list */}
@@ -116,7 +116,7 @@ export function CardsOverview({ data }: CardsOverviewProps) {
- + {card.name} {brandAsset && ( @@ -129,7 +129,7 @@ export function CardsOverview({ data }: CardsOverviewProps) { /> )}
-

+

{formatCurrency(card.currentUsage)} /{" "} {formatCurrency(card.limit)}

@@ -141,7 +141,7 @@ export function CardsOverview({ data }: CardsOverviewProps) { `[&>div]:${getUsageColor(card.usagePercent)}`, )} /> - + {formatPercentage(card.usagePercent, { maximumFractionDigits: 0, minimumFractionDigits: 0, diff --git a/src/features/reports/components/category-cell.tsx b/src/features/reports/components/category-cell.tsx index 82d0fb7..dd792b2 100644 --- a/src/features/reports/components/category-cell.tsx +++ b/src/features/reports/components/category-cell.tsx @@ -53,7 +53,9 @@ export function CategoryCell({ > {isIncrease && } {isDecrease && } - {formatPercentageChange(percentageChange)} + + {formatPercentageChange(percentageChange)} +
)}
diff --git a/src/features/reports/components/category-report-chart.tsx b/src/features/reports/components/category-report-chart.tsx index 51447fa..fe4b4d6 100644 --- a/src/features/reports/components/category-report-chart.tsx +++ b/src/features/reports/components/category-report-chart.tsx @@ -73,7 +73,7 @@ function AreaTooltip({ {entry.name}
- + {currencyFormatter.format(Number(entry.value))}
diff --git a/src/features/reports/components/category-table.tsx b/src/features/reports/components/category-table.tsx index ab76c22..9170a83 100644 --- a/src/features/reports/components/category-table.tsx +++ b/src/features/reports/components/category-table.tsx @@ -78,12 +78,12 @@ export function CategoryTable({ {periods.map((period) => ( {formatPeriodLabel(period)} ))} - +
Média @@ -100,7 +100,7 @@ export function CategoryTable({
- + Total @@ -128,7 +128,7 @@ export function CategoryTable({ /> {category.name} @@ -149,7 +149,7 @@ export function CategoryTable({ ); })} - + {(() => { const nonZeroCount = periods.filter( (p) => (category.monthlyData.get(p)?.amount ?? 0) > 0, @@ -178,10 +178,10 @@ export function CategoryTable({ ); })} - + {formatCurrency(sectionTotals.averageMonthlyTotal)} - + {formatCurrency(sectionTotals.grandTotal)} diff --git a/src/features/reports/components/establishments/highlights-cards.tsx b/src/features/reports/components/establishments/highlights-cards.tsx index 541c0d9..0cca1be 100644 --- a/src/features/reports/components/establishments/highlights-cards.tsx +++ b/src/features/reports/components/establishments/highlights-cards.tsx @@ -19,7 +19,7 @@ export function HighlightsCards({ summary }: HighlightsCardsProps) {

Mais Frequente

-

+

{summary.mostFrequent || "—"}

@@ -35,7 +35,7 @@ export function HighlightsCards({ summary }: HighlightsCardsProps) {

Maior Gasto Total

-

+

{summary.highestSpending || "—"}

diff --git a/src/features/reports/components/establishments/summary-cards.tsx b/src/features/reports/components/establishments/summary-cards.tsx index e869bd8..7c4c466 100644 --- a/src/features/reports/components/establishments/summary-cards.tsx +++ b/src/features/reports/components/establishments/summary-cards.tsx @@ -53,16 +53,14 @@ export function SummaryCards({ summary }: SummaryCardsProps) {
-

- {card.title} -

+

{card.title}

{card.isMoney ? ( ) : ( -

{card.value}

+

{card.value}

)}

{card.description} diff --git a/src/features/settings/components/api-tokens-form.tsx b/src/features/settings/components/api-tokens-form.tsx index 34aa16c..9ed686e 100644 --- a/src/features/settings/components/api-tokens-form.tsx +++ b/src/features/settings/components/api-tokens-form.tsx @@ -139,7 +139,7 @@ export function ApiTokensForm({ tokens }: ApiTokensFormProps) {

-

Dispositivos conectados

+

Dispositivos conectados

Gerencie os dispositivos que podem enviar notificações para o OpenMonetis. diff --git a/src/features/settings/components/changelog-tab.tsx b/src/features/settings/components/changelog-tab.tsx index b9151d3..84d4b22 100644 --- a/src/features/settings/components/changelog-tab.tsx +++ b/src/features/settings/components/changelog-tab.tsx @@ -32,7 +32,7 @@ export function ChangelogTab({ versions }: { versions: ChangelogVersion[] }) { {versions.map((version) => (

-

v{version.version}

+

v{version.version}

{version.date} diff --git a/src/features/settings/components/delete-account-form.tsx b/src/features/settings/components/delete-account-form.tsx index 9904877..7e1a193 100644 --- a/src/features/settings/components/delete-account-form.tsx +++ b/src/features/settings/components/delete-account-form.tsx @@ -84,7 +84,7 @@ export function DeleteAccountForm() {
-

Zerar conta

+

Zerar conta

Apaga todos os dados do OpenMonetis e deixa sua conta no estado inicial, mantendo seu login e credenciais de acesso. @@ -120,7 +120,7 @@ export function DeleteAccountForm() {

-

Deletar conta

+

Deletar conta

Remove seu usuário e todos os dados associados de forma permanente. diff --git a/src/features/settings/components/passkeys-form.tsx b/src/features/settings/components/passkeys-form.tsx index ab181d6..23dec11 100644 --- a/src/features/settings/components/passkeys-form.tsx +++ b/src/features/settings/components/passkeys-form.tsx @@ -197,7 +197,7 @@ export function PasskeysForm() {

-

Suas passkeys

+

Suas passkeys

Gerencie suas passkeys para login sem senha.

diff --git a/src/features/settings/components/preferences-form.tsx b/src/features/settings/components/preferences-form.tsx index b51d001..e46a8b4 100644 --- a/src/features/settings/components/preferences-form.tsx +++ b/src/features/settings/components/preferences-form.tsx @@ -145,7 +145,7 @@ export function PreferencesForm({ {/* Seção: Lançamentos */}
-

Lançamentos

+

Lançamentos

Configurações de exibição da tabela de movimentações.

diff --git a/src/features/settings/components/update-password-form.tsx b/src/features/settings/components/update-password-form.tsx index e8a3321..ebf73bd 100644 --- a/src/features/settings/components/update-password-form.tsx +++ b/src/features/settings/components/update-password-form.tsx @@ -131,7 +131,7 @@ export function UpdatePasswordForm({ authProvider }: UpdatePasswordFormProps) {
-

+

Alteração de senha não disponível

diff --git a/src/features/transactions/components/attachments/attachment-item.tsx b/src/features/transactions/components/attachments/attachment-item.tsx index 2f520e3..5b2cedc 100644 --- a/src/features/transactions/components/attachments/attachment-item.tsx +++ b/src/features/transactions/components/attachments/attachment-item.tsx @@ -54,6 +54,7 @@ function AttachmentPreview({

diff --git a/src/features/transactions/components/attachments/attachment-section.tsx b/src/features/transactions/components/attachments/attachment-section.tsx index 3fa89b5..4481bca 100644 --- a/src/features/transactions/components/attachments/attachment-section.tsx +++ b/src/features/transactions/components/attachments/attachment-section.tsx @@ -44,8 +44,10 @@ export function AttachmentSection({ } = useTransactionAttachments(transactionId); useEffect(() => { - onLoaded?.(items.length); - }, [items.length, onLoaded]); + if (!isLoading) { + onLoaded?.(items.length); + } + }, [items.length, isLoading, onLoaded]); const invalidateAttachments = () => { void queryClient.invalidateQueries({ diff --git a/src/features/transactions/components/dialogs/anticipate-installments-dialog/anticipate-installments-dialog.tsx b/src/features/transactions/components/dialogs/anticipate-installments-dialog/anticipate-installments-dialog.tsx index ca464ae..e1c7d5d 100644 --- a/src/features/transactions/components/dialogs/anticipate-installments-dialog/anticipate-installments-dialog.tsx +++ b/src/features/transactions/components/dialogs/anticipate-installments-dialog/anticipate-installments-dialog.tsx @@ -342,21 +342,21 @@ export function AnticipateInstallmentsDialog({ {/* Seção 3: Resumo */} {selectedIds.length > 0 && (
-

Resumo

+

Resumo

{selectedIds.length} parcela {selectedIds.length > 1 ? "s" : ""}
-
+
{Number(formState.discount) > 0 && (
Desconto
-
+
-{" "}
Total
-
+
diff --git a/src/features/transactions/components/dialogs/anticipate-installments-dialog/installment-selection-table.tsx b/src/features/transactions/components/dialogs/anticipate-installments-dialog/installment-selection-table.tsx index 322301d..eff3ad1 100644 --- a/src/features/transactions/components/dialogs/anticipate-installments-dialog/installment-selection-table.tsx +++ b/src/features/transactions/components/dialogs/anticipate-installments-dialog/installment-selection-table.tsx @@ -116,7 +116,7 @@ export function InstallmentSelectionTable({ {formatDate(inst.dueDate)} - + diff --git a/src/features/transactions/components/dialogs/mass-add-dialog.tsx b/src/features/transactions/components/dialogs/mass-add-dialog.tsx index 33d640b..533fd4e 100644 --- a/src/features/transactions/components/dialogs/mass-add-dialog.tsx +++ b/src/features/transactions/components/dialogs/mass-add-dialog.tsx @@ -279,7 +279,7 @@ export function MassAddDialog({
{/* Fixed Fields Section */}
-

Valores Padrão

+

Valores Padrão

{/* Transaction Type */}
@@ -452,7 +452,7 @@ export function MassAddDialog({ {/* Transactions Section */}
-

Lançamentos

+

Lançamentos

{transactions.map((transaction, index) => ( diff --git a/src/features/transactions/components/dialogs/transaction-details-dialog.tsx b/src/features/transactions/components/dialogs/transaction-details-dialog.tsx index 6ff5ce7..e392aed 100644 --- a/src/features/transactions/components/dialogs/transaction-details-dialog.tsx +++ b/src/features/transactions/components/dialogs/transaction-details-dialog.tsx @@ -88,7 +88,7 @@ export function TransactionDetailsDialog({

Resumo

-

+

{currencyFormatter.format(valorTotal)}

@@ -116,7 +116,7 @@ export function TransactionDetailsDialog({
-

+

Detalhes

    @@ -167,7 +167,7 @@ export function TransactionDetailsDialog({
-

+

Valores

From e4b9dd4254898d5de3d9c945e91de891e729a18e Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 22:43:49 +0000 Subject: [PATCH 18/32] =?UTF-8?q?chore:=20vers=C3=A3o=202.3.7=20=E2=80=94?= =?UTF-8?q?=20corrigir=20vers=C3=A3o=20e=20consolidar=20CHANGELOG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85a6ac4..b6ad35d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR - Docker: corrigido crash loop no container com mensagem `exec /app/docker-entrypoint.sh: no such file or directory` causado por CRLF no `docker-entrypoint.sh` em ambientes Windows/WSL2 — adicionado `sed -i 's/\r$//'` no Dockerfile e `.gitattributes` com `eol=lf` para scripts shell - S3: corrigido `Error: Region is missing` ao usar o app sem S3 configurado — `S3_REGION` vazio (string vazia) não era tratado pelo operador `??`; substituído por `||` em todo o `s3-client.ts` - i18n: corrigidas mensagens de erro que exibiam "Payer" em inglês em vez de "Pagador" +- Logos: corrigido modal seletor de logos de cartões e contas para renderizar miniaturas sem avisos de proporção ## [2.3.6] - 2026-04-09 From bf6adfa3f164f87409f5cef5a71ef6256def3409 Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sat, 11 Apr 2026 22:50:03 +0000 Subject: [PATCH 19/32] =?UTF-8?q?chore(analytics):=20mover=20configura?= =?UTF-8?q?=C3=A7=C3=A3o=20do=20Umami=20para=20vari=C3=A1veis=20de=20ambie?= =?UTF-8?q?nte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UMAMI_URL, UMAMI_WEBSITE_ID e UMAMI_DOMAINS carregados via process.env - script só é injetado se as vars estiverem definidas - CSP atualizada dinamicamente com base no UMAMI_URL - documentado no .env.example Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 7 +++++++ src/app/layout.tsx | 16 ++++++++++------ src/proxy.ts | 8 ++++---- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/.env.example b/.env.example index d99ce4c..9b7e723 100644 --- a/.env.example +++ b/.env.example @@ -44,6 +44,13 @@ GOOGLE_CLIENT_SECRET= # Se não definido, todas as rotas ficam acessíveis. # PUBLIC_DOMAIN=openmonetis.com +# === Analytics (Opcional) === +# Umami: https://umami.is — self-hosted ou cloud +UMAMI_URL= +UMAMI_WEBSITE_ID= +# Domínios rastreados (ex: openmonetis.com) — corresponde ao data-domains do script +UMAMI_DOMAINS= + # === AI Providers (Opcional) === ANTHROPIC_API_KEY= OPENAI_API_KEY= diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 51fa934..182fc2f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -29,12 +29,16 @@ export default function RootLayout({ > -