From 904e8ed017683b0b08215745d72773a427b50d5a Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 21 Jan 2026 21:33:20 +0100
Subject: [PATCH 01/69] Cherry-pick packages/i18n
---
clients/packages/i18n/package.json | 38 +
clients/packages/i18n/src/index.ts | 49 +
clients/packages/i18n/src/locales/en.json | 5 +
clients/packages/i18n/tsconfig.json | 9 +
clients/pnpm-lock.yaml | 4275 ++++++++++-----------
5 files changed, 2074 insertions(+), 2302 deletions(-)
create mode 100644 clients/packages/i18n/package.json
create mode 100644 clients/packages/i18n/src/index.ts
create mode 100644 clients/packages/i18n/src/locales/en.json
create mode 100644 clients/packages/i18n/tsconfig.json
diff --git a/clients/packages/i18n/package.json b/clients/packages/i18n/package.json
new file mode 100644
index 0000000000..7727e01dbe
--- /dev/null
+++ b/clients/packages/i18n/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@polar-sh/i18n",
+ "version": "0.1.0",
+ "description": "Polar i18n - Locale files and translation utilities",
+ "author": "Polar",
+ "license": "Apache-2.0",
+ "type": "module",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/polarsource/polar.git",
+ "directory": "clients/packages/i18n"
+ },
+ "scripts": {
+ "translate": "tsx scripts/translate.ts",
+ "validate": "tsx scripts/validate.ts",
+ "lint": "prettier -c .",
+ "typecheck": "tsc --noEmit",
+ "test": "vitest run",
+ "test:watch": "vitest"
+ },
+ "exports": {
+ "./locales/en.json": "./src/locales/en.json",
+ "./locales/sv.json": "./src/locales/generated-translations/sv.json",
+ "./locales/es.json": "./src/locales/generated-translations/es.json",
+ "./locales/fr.json": "./src/locales/generated-translations/fr.json",
+ "./locales/nl.json": "./src/locales/generated-translations/nl.json"
+ },
+ "devDependencies": {
+ "@polar-sh/typescript-config": "workspace:*",
+ "@types/node": "^22.16.1",
+ "dotenv": "^16.4.5",
+ "openai": "^4.103.0",
+ "prettier": "^3.7.4",
+ "tsx": "^4.19.0",
+ "typescript": "latest",
+ "vitest": "^3.2.4"
+ }
+}
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
new file mode 100644
index 0000000000..80cfd139b6
--- /dev/null
+++ b/clients/packages/i18n/src/index.ts
@@ -0,0 +1,49 @@
+import { useCallback } from 'react'
+
+export const SUPPORTED_LOCALES = ['en'] as const
+export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
+export const DEFAULT_LOCALE = 'en'
+
+export function isSupportedLocale(locale: string): locale is SupportedLocale {
+ return SUPPORTED_LOCALES.includes(locale as SupportedLocale)
+}
+
+import en from './locales/en.json'
+
+export type Translations = typeof en
+
+type LeafPaths = T extends object
+ ? {
+ [K in keyof T & string]: T[K] extends object
+ ? `${K}.${LeafPaths}`
+ : K
+ }[keyof T & string]
+ : never
+
+export type TranslationKey = LeafPaths
+
+const translations: Record = {
+ en,
+}
+
+export function getTranslations(
+ locale: SupportedLocale = DEFAULT_LOCALE,
+): Translations {
+ return translations[locale] ?? translations[DEFAULT_LOCALE]
+}
+
+export const useTranslations = (locale: SupportedLocale) => {
+ return useCallback(
+ (key: TranslationKey): string => {
+ const translations = getTranslations(locale)
+
+ return key
+ .split('.')
+ .reduce(
+ (obj, k) => (obj as Record)[k],
+ translations,
+ ) as string
+ },
+ [locale],
+ )
+}
diff --git a/clients/packages/i18n/src/locales/en.json b/clients/packages/i18n/src/locales/en.json
new file mode 100644
index 0000000000..38e12a7793
--- /dev/null
+++ b/clients/packages/i18n/src/locales/en.json
@@ -0,0 +1,5 @@
+{
+ "checkout": {
+ "poweredBy": "Powered by"
+ }
+}
diff --git a/clients/packages/i18n/tsconfig.json b/clients/packages/i18n/tsconfig.json
new file mode 100644
index 0000000000..f63364cf1f
--- /dev/null
+++ b/clients/packages/i18n/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@polar-sh/typescript-config/react-library.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "resolveJsonModule": true
+ },
+ "include": ["src", "scripts"],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index 3f4fde4b3a..5c0656e6b9 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -9,11 +9,6 @@ overrides:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3
-patchedDependencies:
- openapi-typescript@7.10.1:
- hash: d5d81a1091dd25eaff66014508c84e42c721bcbe3f7693dcf58aa2c28132735b
- path: patches/openapi-typescript@7.10.1.patch
-
importers:
.:
@@ -28,17 +23,17 @@ importers:
specifier: 1.2.2
version: 1.2.2
prettier:
- specifier: ^3.8.1
- version: 3.8.1
+ specifier: ^3.7.4
+ version: 3.7.4
prettier-plugin-organize-imports:
specifier: ^4.3.0
- version: 4.3.0(prettier@3.8.1)(typescript@5.9.3)
+ version: 4.3.0(prettier@3.7.4)(typescript@5.9.3)
prettier-plugin-tailwindcss:
specifier: ^0.7.2
- version: 0.7.2(prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3))(prettier@3.8.1)
+ version: 0.7.2(prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3))(prettier@3.7.4)
turbo:
- specifier: ^2.7.6
- version: 2.7.6
+ specifier: ^2.7.2
+ version: 2.7.2
apps/app:
dependencies:
@@ -50,79 +45,76 @@ importers:
version: 0.3.1(@react-navigation/core@7.13.6(react@19.1.0))(expo@54.0.29)(react@19.1.0)
'@dev-plugins/react-query':
specifier: ^0.1.0
- version: 0.1.0(@tanstack/react-query@5.90.20(react@19.1.0))(expo@54.0.29)
+ version: 0.1.0(@tanstack/react-query@5.90.12(react@19.1.0))(expo@54.0.29)
'@expo-google-fonts/instrument-serif':
specifier: ^0.4.1
version: 0.4.1
'@expo/metro-runtime':
specifier: ~6.1.2
- version: 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@expo/ui':
specifier: 0.2.0-beta.7
- version: 0.2.0-beta.7(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 0.2.0-beta.7(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@expo/vector-icons':
specifier: ^15.0.3
- version: 15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@gorhom/bottom-sheet':
specifier: ^5.2.8
- version: 5.2.8(@types/react@19.2.3)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 5.2.8(@types/react@19.2.3)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@polar-sh/client':
specifier: workspace:*
version: link:../../packages/client
- '@polar-sh/currency':
- specifier: workspace:^
- version: link:../../packages/currency
'@react-native-async-storage/async-storage':
specifier: 2.2.0
- version: 2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
'@react-native-community/cli':
specifier: latest
- version: 20.1.0(typescript@5.9.3)
+ version: 20.0.2(typescript@5.9.3)
'@react-native-community/netinfo':
specifier: ^11.4.1
- version: 11.4.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 11.4.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
'@react-navigation/bottom-tabs':
specifier: ^7.8.12
- version: 7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@react-navigation/native':
specifier: ^7.1.25
- version: 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@sentry/react-native':
specifier: ^7.7.0
- version: 7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@shopify/flash-list':
specifier: 2.0.2
- version: 2.0.2(@babel/runtime@7.28.6)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 2.0.2(@babel/runtime@7.28.4)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@shopify/react-native-skia':
specifier: 2.2.12
- version: 2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@shopify/restyle':
specifier: ^2.4.5
- version: 2.4.5(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 2.4.5(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@tanstack/react-query':
specifier: ^5.90.12
- version: 5.90.20(react@19.1.0)
+ version: 5.90.12(react@19.1.0)
date-fns:
specifier: ^4.1.0
version: 4.1.0
expo:
specifier: ~54.0.29
- version: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-asset:
specifier: ~12.0.11
- version: 12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-auth-session:
specifier: ~7.0.10
- version: 7.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 7.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-blur:
specifier: ~15.0.8
- version: 15.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 15.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-clipboard:
specifier: ~8.0.8
- version: 8.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 8.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-constants:
specifier: ~18.0.12
- version: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
expo-crypto:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.29)
@@ -134,25 +126,25 @@ importers:
version: 8.0.10(expo@54.0.29)
expo-font:
specifier: ~14.0.10
- version: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-haptics:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.29)
expo-image:
specifier: ~3.0.11
- version: 3.0.11(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 3.0.11(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-insights:
specifier: ~0.10.8
version: 0.10.8(expo@54.0.29)
expo-linking:
specifier: ~8.0.10
- version: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-notifications:
specifier: ~0.32.15
- version: 0.32.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 0.32.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-router:
specifier: ~6.0.19
- version: 6.0.19(40cf5459a2da5a2ee24052faf185eb05)
+ version: 6.0.19(daa6e6378deabbbe32c786346aac9231)
expo-secure-store:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.29)
@@ -161,25 +153,25 @@ importers:
version: 31.0.12(expo@54.0.29)
expo-status-bar:
specifier: ~3.0.9
- version: 3.0.9(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 3.0.9(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-store-review:
specifier: ^9.0.9
- version: 9.0.9(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 9.0.9(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
expo-symbols:
specifier: ~1.0.8
- version: 1.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 1.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
expo-system-ui:
specifier: ~6.0.9
- version: 6.0.9(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 6.0.9(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
expo-updates:
specifier: ~29.0.15
- version: 29.0.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 29.0.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-web-browser:
specifier: ~15.0.10
- version: 15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
nativewind:
specifier: ^4.2.1
- version: 4.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(yaml@2.8.2))
+ version: 4.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))
patch-package:
specifier: ^8.0.1
version: 8.0.1
@@ -194,43 +186,43 @@ importers:
version: 6.0.0(react@19.1.0)
react-hook-form:
specifier: ^7.68.0
- version: 7.71.1(react@19.1.0)
+ version: 7.68.0(react@19.1.0)
react-native:
specifier: 0.81.5
- version: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
react-native-gesture-handler:
specifier: ~2.28.0
- version: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react-native-reanimated:
specifier: ~4.1.6
- version: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react-native-safe-area-context:
specifier: ^5.6.2
- version: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react-native-screens:
specifier: ~4.16.0
- version: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react-native-svg:
specifier: 15.12.1
- version: 15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react-native-web:
specifier: ~0.21.2
version: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react-native-webview:
specifier: 13.15.0
- version: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react-native-worklets:
specifier: 0.5.1
- version: 0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
slugify:
specifier: ^1.6.6
version: 1.6.6
tailwindcss:
specifier: ^3.4.19
- version: 3.4.19(yaml@2.8.2)
+ version: 3.4.19(tsx@4.21.0)(yaml@2.8.2)
victory-native:
specifier: ^41.20.2
- version: 41.20.2(56acb8d1da5f9cc0e4ae48affe1ead3b)
+ version: 41.20.2(304cb029cd54f6dc7590a1eb71d5c0a3)
devDependencies:
'@babel/core':
specifier: ^7.28.5
@@ -255,10 +247,10 @@ importers:
version: 10.0.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ version: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
jest-expo:
specifier: ~54.0.16
- version: 54.0.16(@babel/core@7.28.5)(expo@54.0.29)(jest@29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 54.0.16(@babel/core@7.28.5)(expo@54.0.29)(jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react-test-renderer:
specifier: 18.3.1
version: 18.3.1(react@19.1.0)
@@ -270,70 +262,67 @@ importers:
dependencies:
'@ai-sdk/anthropic':
specifier: ^2.0.56
- version: 2.0.56(zod@4.3.6)
+ version: 2.0.56(zod@4.3.5)
'@ai-sdk/google':
specifier: ^2.0.46
- version: 2.0.46(zod@4.3.6)
+ version: 2.0.46(zod@4.3.5)
'@ai-sdk/mcp':
specifier: ^0.0.11
- version: 0.0.11(zod@4.3.6)
+ version: 0.0.11(zod@4.3.5)
'@ai-sdk/react':
specifier: ^2.0.115
- version: 2.0.115(react@19.2.4)(zod@4.3.6)
+ version: 2.0.115(react@19.2.3)(zod@4.3.5)
'@cloudflare/stream-react':
specifier: ^1.9.3
- version: 1.9.3(react@19.2.4)
+ version: 1.9.3(react@19.2.3)
'@date-fns/utc':
specifier: ^2.1.1
version: 2.1.1
'@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.3(react@19.2.3))(react@19.2.3)
'@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.3(react@19.2.3))(react@19.2.3))(react@19.2.3)
'@dnd-kit/utilities':
specifier: ^3.2.2
- version: 3.2.2(react@19.2.4)
+ version: 3.2.2(react@19.2.3)
'@emotion/react':
specifier: ^11.14.0
- version: 11.14.0(@types/react@19.2.3)(react@19.2.4)
+ version: 11.14.0(@types/react@19.2.3)(react@19.2.3)
'@emotion/styled':
specifier: ^11.14.1
- version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
'@hookform/error-message':
specifier: ^2.0.1
- version: 2.0.1(react-dom@19.2.4(react@19.2.4))(react-hook-form@7.71.1(react@19.2.4))(react@19.2.4)
+ version: 2.0.1(react-dom@19.2.3(react@19.2.3))(react-hook-form@7.70.0(react@19.2.3))(react@19.2.3)
'@mdx-js/loader':
specifier: ^3.1.1
version: 3.1.1(webpack@5.102.1)
'@mdx-js/react':
specifier: ^3.1.1
- version: 3.1.1(@types/react@19.2.3)(react@19.2.4)
+ version: 3.1.1(@types/react@19.2.3)(react@19.2.3)
'@modelcontextprotocol/sdk':
- specifier: ^1.25.3
- version: 1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.6)
+ specifier: ^1.25.1
+ version: 1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5)
'@mui/icons-material':
- specifier: ^7.3.7
- version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ specifier: ^7.3.6
+ version: 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
'@mui/material':
- specifier: ^7.3.7
- version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ specifier: ^7.3.6
+ version: 7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@next/mdx':
- specifier: ^16.1.5
- version: 16.1.5(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4))
+ specifier: 16.1.1
+ version: 16.1.1(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.3))
'@next/third-parties':
- specifier: ^16.1.5
- version: 16.1.5(next@16.1.5(@babel/core@7.28.5)(@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))(react@19.2.4)
+ specifier: 16.1.1
+ version: 16.1.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)
'@polar-sh/checkout':
specifier: workspace:^
version: link:../../packages/checkout
'@polar-sh/client':
specifier: workspace:*
version: link:../../packages/client
- '@polar-sh/currency':
- specifier: workspace:^
- version: link:../../packages/currency
'@polar-sh/customer-portal':
specifier: workspace:*
version: link:../../packages/customer-portal
@@ -341,35 +330,35 @@ importers:
specifier: workspace:*
version: link:../../packages/mdx
'@polar-sh/sdk':
- specifier: ^0.42.5
- version: 0.42.5
+ specifier: ^0.42.1
+ version: 0.42.1
'@polar-sh/ui':
specifier: workspace:*
version: link:../../packages/ui
'@posthog/ai':
- specifier: ^7.5.4
- version: 7.5.4(@ai-sdk/provider@2.0.0)(@modelcontextprotocol/sdk@1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.6))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(posthog-node@5.24.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(ws@8.18.3)(zod-to-json-schema@3.25.0(zod@4.3.6))
+ specifier: ^7.3.0
+ version: 7.3.0(@ai-sdk/provider@2.0.0)(@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(posthog-node@5.18.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(ws@8.18.3)(zod-to-json-schema@3.25.0(zod@4.3.5))
'@posthog/core':
- specifier: ^1.14.0
- version: 1.14.0
+ specifier: ^1.9.0
+ version: 1.9.0
'@radix-ui/react-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.16
- version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-toast':
specifier: ^1.2.15
- version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@sentry/nextjs':
- specifier: ^10.37.0
- version: 10.37.0(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(next@16.1.5(@babel/core@7.28.5)(@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))(react@19.2.4)(webpack@5.102.1)
+ specifier: ^10.32.1
+ version: 10.32.1(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.102.1)
'@shikijs/rehype':
- specifier: ^3.21.0
- version: 3.21.0
+ specifier: ^3.20.0
+ version: 3.20.0
'@stripe/react-stripe-js':
specifier: ^4.0.2
- version: 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@stripe/stripe-js':
specifier: ^7.9.0
version: 7.9.0
@@ -383,17 +372,17 @@ importers:
specifier: ^0.5.19
version: 0.5.19(tailwindcss@4.1.18)
'@tanstack/react-query':
- specifier: ^5.90.20
- version: 5.90.20(react@19.2.4)
+ specifier: ^5.90.16
+ version: 5.90.16(react@19.2.3)
'@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.3(react@19.2.3))(react@19.2.3)
'@vercel/blob':
specifier: ^0.23.4
version: 0.23.4
ai:
specifier: ^5.0.113
- version: 5.0.113(zod@4.3.6)
+ version: 5.0.113(zod@4.3.5)
big.js:
specifier: ^7.0.1
version: 7.0.1
@@ -401,8 +390,8 @@ importers:
specifier: ^0.7.1
version: 0.7.1
crawler-user-agents:
- specifier: ^1.26.0
- version: 1.26.0
+ specifier: ^1.24.0
+ version: 1.24.0
date-fns:
specifier: ^4.1.0
version: 4.1.0
@@ -413,74 +402,74 @@ importers:
specifier: ^0.1.15
version: 0.1.15
eventemitter3:
- specifier: ^5.0.4
- version: 5.0.4
+ specifier: ^5.0.1
+ version: 5.0.1
framer-motion:
- specifier: ^12.29.2
- version: 12.29.2(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ specifier: ^12.23.26
+ version: 12.23.26(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
geist:
specifier: ^1.5.1
- version: 1.5.1(next@16.1.5(@babel/core@7.28.5)(@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))
+ version: 1.5.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))
hash-wasm:
specifier: ^4.12.0
version: 4.12.0
import-in-the-middle:
- specifier: ^2.0.5
- version: 2.0.5
+ specifier: ^2.0.1
+ version: 2.0.1
lodash.debounce:
specifier: ^4.0.8
version: 4.0.8
lucide-react:
- specifier: ^0.563.0
- version: 0.563.0(react@19.2.4)
+ specifier: ^0.562.0
+ version: 0.562.0(react@19.2.3)
markdown-to-jsx:
specifier: ^8.0.0
- version: 8.0.0(react@19.2.4)
+ version: 8.0.0(react@19.2.3)
nanoid:
specifier: ^5.1.6
version: 5.1.6
next:
- specifier: ^16.1.5
- version: 16.1.5(@babel/core@7.28.5)(@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.1.1
+ version: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
next-themes:
specifier: ^0.4.6
- version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
nuqs:
specifier: ^2.8.6
- version: 2.8.6(next@16.1.5(@babel/core@7.28.5)(@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))(react@19.2.4)
+ version: 2.8.6(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)
posthog-js:
- specifier: ^1.335.3
- version: 1.335.3
+ specifier: ^1.313.0
+ version: 1.313.0
posthog-node:
- specifier: ^5.24.2
- version: 5.24.2
+ specifier: ^5.18.1
+ version: 5.18.1
qrcode:
specifier: ^1.5.4
version: 1.5.4
react:
- specifier: 19.2.4
- version: 19.2.4
+ specifier: 19.2.3
+ version: 19.2.3
react-dom:
- specifier: 19.2.4
- version: 19.2.4(react@19.2.4)
+ specifier: 19.2.3
+ version: 19.2.3(react@19.2.3)
react-dropzone:
specifier: ^14.3.8
- version: 14.3.8(react@19.2.4)
+ version: 14.3.8(react@19.2.3)
react-focus-lock:
specifier: ^2.13.7
- version: 2.13.7(@types/react@19.2.3)(react@19.2.4)
+ version: 2.13.7(@types/react@19.2.3)(react@19.2.3)
react-hook-form:
- specifier: ~7.71.1
- version: 7.71.1(react@19.2.4)
+ specifier: ~7.70.0
+ version: 7.70.0(react@19.2.3)
react-timeago:
specifier: ^8.3.0
- version: 8.3.0(react@19.2.4)
+ version: 8.3.0(react@19.2.3)
react-use:
specifier: ^17.6.0
- version: 17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 17.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
recharts:
- specifier: ^3.7.0
- version: 3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1)
+ specifier: ^3.6.0
+ version: 3.6.0(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.3)(react@19.2.3)(redux@5.0.1)
rehype-mdx-import-media:
specifier: ^1.2.0
version: 1.2.0
@@ -497,8 +486,8 @@ importers:
specifier: ^8.0.1
version: 8.0.1
shiki:
- specifier: ^3.21.0
- version: 3.21.0
+ specifier: ^3.20.0
+ version: 3.20.0
slugify:
specifier: ^1.6.6
version: 1.6.6
@@ -515,12 +504,12 @@ importers:
specifier: ^1.4.0
version: 1.4.0
zod:
- specifier: ^4.3.6
- version: 4.3.6
+ specifier: ^4.3.5
+ version: 4.3.5
devDependencies:
'@next/bundle-analyzer':
- specifier: ^16.1.5
- version: 16.1.5
+ specifier: 16.1.1
+ version: 16.1.1
'@polar-sh/eslint-config':
specifier: workspace:*
version: link:../../packages/eslint-config
@@ -546,8 +535,8 @@ importers:
specifier: ^2.0.13
version: 2.0.13
'@types/node':
- specifier: ^24.0.0
- version: 24.10.9
+ specifier: ^22.19.3
+ version: 22.19.3
'@types/qrcode':
specifier: ^1.5.6
version: 1.5.6
@@ -561,11 +550,11 @@ importers:
specifier: ^1.4.6
version: 1.4.6
'@types/web':
- specifier: ^0.0.323
- version: 0.0.323
+ specifier: ^0.0.312
+ version: 0.0.312
'@vitejs/plugin-react':
specifier: ^5.1.2
- version: 5.1.2(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))
+ version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
'@vitest/ui':
specifier: ^3.2.4
version: 3.2.4(vitest@3.2.4)
@@ -588,8 +577,8 @@ importers:
specifier: ^8.5.6
version: 8.5.6
prettier:
- specifier: ^3.8.1
- version: 3.8.1
+ specifier: ^3.7.4
+ version: 3.7.4
prop-types:
specifier: ^15.8.1
version: 15.8.1
@@ -604,19 +593,19 @@ importers:
version: 4.1.18
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@types/node@24.10.9)(typescript@5.9.3)
+ version: 10.9.2(@types/node@22.19.3)(typescript@5.9.3)
typescript:
specifier: 5.9.3
version: 5.9.3
unist-util-visit:
- specifier: ^5.1.0
- version: 5.1.0
+ specifier: ^5.0.0
+ version: 5.0.0
vite-tsconfig-paths:
specifier: ^5.1.4
- version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))
+ version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.9)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.9)(typescript@5.9.3))(terser@5.46.0)(yaml@2.8.2)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
examples/checkout-embed:
dependencies:
@@ -629,12 +618,9 @@ importers:
packages/checkout:
dependencies:
- '@polar-sh/currency':
- specifier: workspace:^
- version: link:../currency
'@polar-sh/sdk':
- specifier: ^0.42.5
- version: 0.42.5
+ specifier: ^0.42.1
+ version: 0.42.1
'@polar-sh/ui':
specifier: workspace:^
version: link:../ui
@@ -642,21 +628,21 @@ importers:
specifier: ^0.1.15
version: 0.1.15
eventemitter3:
- specifier: ^5.0.4
- version: 5.0.4
+ specifier: ^5.0.1
+ version: 5.0.1
markdown-to-jsx:
specifier: ^8.0.0
- version: 8.0.0(react@19.2.4)
+ version: 8.0.0(react@19.2.3)
react-hook-form:
- specifier: ~7.71.1
- version: 7.71.1(react@19.2.4)
+ specifier: ~7.70.0
+ version: 7.70.0(react@19.2.3)
devDependencies:
'@polar-sh/typescript-config':
specifier: workspace:*
version: link:../typescript-config
'@stripe/react-stripe-js':
specifier: ^4.0.2
- version: 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@stripe/stripe-js':
specifier: ^7.9.0
version: 7.9.0
@@ -664,14 +650,14 @@ importers:
specifier: 19.2.3
version: 19.2.3
react:
- specifier: ^19.2.4
- version: 19.2.4
+ specifier: ^19.2.3
+ version: 19.2.3
terser:
- specifier: ^5.46.0
- version: 5.46.0
+ specifier: ^5.44.1
+ version: 5.44.1
tsup:
specifier: ^8.5.1
- version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.2)
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
typescript:
specifier: latest
version: 5.9.3
@@ -690,29 +676,14 @@ importers:
version: link:../typescript-config
openapi-typescript:
specifier: ^7.10.1
- version: 7.10.1(patch_hash=d5d81a1091dd25eaff66014508c84e42c721bcbe3f7693dcf58aa2c28132735b)(typescript@5.9.3)
+ version: 7.10.1(typescript@5.9.3)
tsup:
specifier: ^8.5.1
- version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.2)
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
typescript:
specifier: latest
version: 5.9.3
- packages/currency:
- devDependencies:
- '@polar-sh/typescript-config':
- specifier: workspace:*
- version: link:../typescript-config
- tsup:
- specifier: ^8.5.1
- version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.2)
- typescript:
- specifier: latest
- version: 5.9.3
- vitest:
- specifier: ^4.0.18
- version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.0.2)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(yaml@2.8.2)
-
packages/customer-portal:
dependencies:
'@polar-sh/client':
@@ -720,10 +691,10 @@ importers:
version: link:../client
'@tanstack/react-query':
specifier: ^5.0.0
- version: 5.90.20(react@19.2.4)
+ version: 5.90.16(react@19.2.3)
react:
specifier: ^18.0.0 || ^19.0.0
- version: 19.2.4
+ version: 19.2.3
devDependencies:
'@polar-sh/eslint-config':
specifier: workspace:*
@@ -732,8 +703,8 @@ importers:
specifier: workspace:*
version: link:../typescript-config
'@testing-library/react':
- specifier: ^16.3.2
- version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ specifier: ^16.0.0
+ version: 16.3.1(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@types/react':
specifier: 19.2.3
version: 19.2.3
@@ -744,17 +715,17 @@ importers:
specifier: ^25.0.0
version: 25.0.1
msw:
- specifier: ^2.12.7
+ specifier: ^2.0.0
version: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
tsup:
- specifier: ^8.5.1
- version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.2)
+ specifier: ^8.0.0
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
typescript:
specifier: latest
version: 5.9.3
vitest:
specifier: ^2.0.0
- version: 2.1.9(@types/node@25.0.2)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)
+ version: 2.1.9(@types/node@25.0.2)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.44.1)
packages/eslint-config:
devDependencies:
@@ -781,7 +752,7 @@ importers:
version: 7.0.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-turbo:
specifier: ^2.6.3
- version: 2.6.3(eslint@9.39.2(jiti@2.6.1))(turbo@2.7.6)
+ version: 2.6.3(eslint@9.39.2(jiti@2.6.1))(turbo@2.7.2)
globals:
specifier: ^16.5.0
version: 16.5.0
@@ -792,6 +763,33 @@ importers:
specifier: ^8.50.0
version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ packages/i18n:
+ devDependencies:
+ '@polar-sh/typescript-config':
+ specifier: workspace:*
+ version: link:../typescript-config
+ '@types/node':
+ specifier: ^22.16.1
+ version: 22.19.3
+ dotenv:
+ specifier: ^16.4.5
+ version: 16.6.1
+ openai:
+ specifier: ^4.103.0
+ version: 4.104.0(ws@8.18.3)
+ prettier:
+ specifier: ^3.7.4
+ version: 3.7.4
+ tsx:
+ specifier: ^4.19.0
+ version: 4.21.0
+ typescript:
+ specifier: latest
+ version: 5.9.3
+ vitest:
+ specifier: ^3.2.4
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+
packages/mdx:
dependencies:
estree-util-is-identifier-name:
@@ -811,63 +809,60 @@ importers:
packages/ui:
dependencies:
- '@polar-sh/currency':
- specifier: workspace:^
- version: link:../currency
'@radix-ui/react-accordion':
specifier: ^1.2.12
- version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-alert-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-checkbox':
specifier: ^1.3.3
- version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.16
- version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-label':
specifier: ^2.1.8
- version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-popover':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-radio-group':
specifier: ^1.3.8
- version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-select':
specifier: ^2.2.6
- version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-separator':
specifier: ^1.1.8
- version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-slot':
specifier: ^1.2.4
- version: 1.2.4(@types/react@19.2.3)(react@19.2.4)
+ version: 1.2.4(@types/react@19.2.3)(react@19.2.3)
'@radix-ui/react-switch':
specifier: ^1.2.6
- version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-tabs':
specifier: ^1.1.13
- version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-toast':
specifier: ^1.2.15
- version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-toggle':
specifier: ^1.1.10
- version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-toggle-group':
specifier: ^1.1.11
- version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@radix-ui/react-tooltip':
specifier: ^1.2.8
- version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@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.3(react@19.2.3))(react@19.2.3)
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -876,28 +871,31 @@ importers:
version: 2.1.1
cmdk:
specifier: ^1.1.1
- version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ countries-list:
+ specifier: ^3.2.2
+ version: 3.2.2
date-fns:
specifier: ^4.1.0
version: 4.1.0
input-otp:
specifier: ^1.4.2
- version: 1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
lucide-react:
- specifier: ^0.563.0
- version: 0.563.0(react@19.2.4)
+ specifier: ^0.562.0
+ version: 0.562.0(react@19.2.3)
react-day-picker:
specifier: ^9.13.0
- version: 9.13.0(react@19.2.4)
+ version: 9.13.0(react@19.2.3)
react-hook-form:
- specifier: ~7.71.1
- version: 7.71.1(react@19.2.4)
+ specifier: ~7.70.0
+ version: 7.70.0(react@19.2.3)
react-timeago:
specifier: ^8.3.0
- version: 8.3.0(react@19.2.4)
+ version: 8.3.0(react@19.2.3)
recharts:
- specifier: ^3.7.0
- version: 3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1)
+ specifier: ^3.6.0
+ version: 3.6.0(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.3)(react@19.2.3)(redux@5.0.1)
tailwind-merge:
specifier: ^3.4.0
version: 3.4.0
@@ -912,17 +910,17 @@ importers:
specifier: 19.2.3
version: 19.2.3(@types/react@19.2.3)
prettier:
- specifier: ^3.8.1
- version: 3.8.1
+ specifier: ^3.7.4
+ version: 3.7.4
react:
- specifier: ^19.2.4
- version: 19.2.4
+ specifier: ^19.2.3
+ version: 19.2.3
react-dom:
- specifier: ^19.2.4
- version: 19.2.4(react@19.2.4)
+ specifier: ^19.2.3
+ version: 19.2.3(react@19.2.3)
tsup:
specifier: ^8.5.1
- version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.2)
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
typescript:
specifier: 5.9.3
version: 5.9.3
@@ -1024,8 +1022,8 @@ packages:
'@babel/code-frame@7.10.4':
resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==}
- '@babel/code-frame@7.28.6':
- resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==}
+ '@babel/code-frame@7.27.1':
+ resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
engines: {node: '>=6.9.0'}
'@babel/compat-data@7.28.5':
@@ -1036,8 +1034,8 @@ packages:
resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
engines: {node: '>=6.9.0'}
- '@babel/generator@7.28.6':
- resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==}
+ '@babel/generator@7.28.5':
+ resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-annotate-as-pure@7.27.3':
@@ -1131,8 +1129,8 @@ packages:
resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.28.6':
- resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==}
+ '@babel/parser@7.28.5':
+ resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -1508,20 +1506,20 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/runtime@7.28.6':
- resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
+ '@babel/runtime@7.28.4':
+ resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
engines: {node: '>=6.9.0'}
- '@babel/template@7.28.6':
- resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
+ '@babel/template@7.27.2':
+ resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.28.6':
- resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==}
+ '@babel/traverse@7.28.5':
+ resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.28.6':
- resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==}
+ '@babel/types@7.28.5':
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
engines: {node: '>=6.9.0'}
'@bacons/apple-targets@3.0.6':
@@ -2235,11 +2233,11 @@ packages:
'@floating-ui/utils@0.2.10':
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
- '@google/genai@1.38.0':
- resolution: {integrity: sha512-V/4CQVQGovvGHuS73lwJwHKR9x33kCij3zz/ReEQ4A7RJaV0U7m4k1mvYhFk55cGZdF5JLKu2S9BTaFuEs5xTA==}
+ '@google/genai@1.33.0':
+ resolution: {integrity: sha512-ThUjFZ1N0DU88peFjnQkb8K198EWaW2RmmnDShFQ+O+xkIH9itjpRe358x3L/b4X/A7dimkvq63oz49Vbh7Cog==}
engines: {node: '>=20.0.0'}
peerDependencies:
- '@modelcontextprotocol/sdk': ^1.25.2
+ '@modelcontextprotocol/sdk': ^1.24.0
peerDependenciesMeta:
'@modelcontextprotocol/sdk':
optional: true
@@ -2271,8 +2269,8 @@ packages:
'@hapi/topo@5.1.0':
resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
- '@hono/node-server@1.19.9':
- resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==}
+ '@hono/node-server@1.19.7':
+ resolution: {integrity: sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==}
engines: {node: '>=18.14.1'}
peerDependencies:
hono: ^4
@@ -2592,8 +2590,8 @@ packages:
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
- '@langchain/core@1.1.17':
- resolution: {integrity: sha512-g7/kcKbKEwNZSyyT7aT0utxn7wTOtKErqz0cL6VjrV4v/aOb9g+dKcfj17YkSm42YQmJp/rB2IXGc17vQPEBqA==}
+ '@langchain/core@1.1.5':
+ resolution: {integrity: sha512-m+EhnHhaCnVPJt4HRmhElBN3ZBvQGfXL/hm80UV3EHNUPNUCHi6q6de7dqrw/l4oTvmX0nC08Fm2ta1U59o1bQ==}
engines: {node: '>=20'}
'@langchain/langgraph-checkpoint@1.0.0':
@@ -2602,10 +2600,10 @@ packages:
peerDependencies:
'@langchain/core': ^1.0.1
- '@langchain/langgraph-sdk@1.5.5':
- resolution: {integrity: sha512-SyiAs6TVXPWlt/8cI9pj/43nbIvclY3ytKqUFbL5MplCUnItetEyqvH87EncxyVF5D7iJKRZRfSVYBMmOZbjbQ==}
+ '@langchain/langgraph-sdk@1.3.0':
+ resolution: {integrity: sha512-4DiGhNpZKFYkBoVbUP38KUMD7EOcLwittXKet0TnkfFDoFvoZm18ygNZV49b6JQL4EsHRjRNVHXwl47HdlGyGA==}
peerDependencies:
- '@langchain/core': ^1.1.15
+ '@langchain/core': ^1.0.1
react: ^18 || ^19
react-dom: ^18 || ^19
peerDependenciesMeta:
@@ -2616,12 +2614,12 @@ packages:
react-dom:
optional: true
- '@langchain/langgraph@1.1.2':
- resolution: {integrity: sha512-kpZCttZ0N+jHSl5Vh/zVNElD5SxGR4sTjjLiBC00aLGf9JK+Sa/XXO6Bsk3WWXFtA1dY+4tUzUqH0mAHfN0WvA==}
+ '@langchain/langgraph@1.0.5':
+ resolution: {integrity: sha512-r0strjMmEa4IIcbhXKMubQmhh+WhpKyaRPc00Tj9R6O+Ubf9qsKVSd9F1vZBZ2nC6FYSHxBRGA4fO3KGz2m+DA==}
engines: {node: '>=18'}
peerDependencies:
'@langchain/core': ^1.0.1
- zod: ^3.25.32 || ^4.2.0
+ zod: ^3.25.32 || ^4.1.0
zod-to-json-schema: ^3.x
peerDependenciesMeta:
zod-to-json-schema:
@@ -2667,8 +2665,8 @@ packages:
'@types/react': 19.2.3
react: '>=16'
- '@modelcontextprotocol/sdk@1.25.3':
- resolution: {integrity: sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==}
+ '@modelcontextprotocol/sdk@1.25.1':
+ resolution: {integrity: sha512-yO28oVFFC7EBoiKdAn+VqRm+plcfv4v0xp6osG/VsCB0NlPZWi87ajbCZZ8f/RvOFLEu7//rSRmuZZ7lMoe3gQ==}
engines: {node: '>=18'}
peerDependencies:
'@cfworker/json-schema': ^4.1.1
@@ -2681,27 +2679,27 @@ packages:
resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==}
engines: {node: '>=18'}
- '@mui/core-downloads-tracker@7.3.7':
- resolution: {integrity: sha512-8jWwS6FweMkpyRkrJooamUGe1CQfO1yJ+lM43IyUJbrhHW/ObES+6ry4vfGi8EKaldHL3t3BG1bcLcERuJPcjg==}
+ '@mui/core-downloads-tracker@7.3.6':
+ resolution: {integrity: sha512-QaYtTHlr8kDFN5mE1wbvVARRKH7Fdw1ZuOjBJcFdVpfNfRYKF3QLT4rt+WaB6CKJvpqxRsmEo0kpYinhH5GeHg==}
- '@mui/icons-material@7.3.7':
- resolution: {integrity: sha512-3Q+ulAqG+A1+R4ebgoIs7AccaJhIGy+Xi/9OnvX376jQ6wcy+rz4geDGrxQxCGzdjOQr4Z3NgyFSZCz4T999lA==}
+ '@mui/icons-material@7.3.6':
+ resolution: {integrity: sha512-0FfkXEj22ysIq5pa41A2NbcAhJSvmcZQ/vcTIbjDsd6hlslG82k5BEBqqS0ZJprxwIL3B45qpJ+bPHwJPlF7uQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
- '@mui/material': ^7.3.7
+ '@mui/material': ^7.3.6
'@types/react': 19.2.3
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
- '@mui/material@7.3.7':
- resolution: {integrity: sha512-6bdIxqzeOtBAj2wAsfhWCYyMKPLkRO9u/2o5yexcL0C3APqyy91iGSWgT3H7hg+zR2XgE61+WAu12wXPON8b6A==}
+ '@mui/material@7.3.6':
+ resolution: {integrity: sha512-R4DaYF3dgCQCUAkr4wW1w26GHXcf5rCmBRHVBuuvJvaGLmZdD8EjatP80Nz5JCw0KxORAzwftnHzXVnjR8HnFw==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
- '@mui/material-pigment-css': ^7.3.7
+ '@mui/material-pigment-css': ^7.3.6
'@types/react': 19.2.3
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -2715,8 +2713,8 @@ packages:
'@types/react':
optional: true
- '@mui/private-theming@7.3.7':
- resolution: {integrity: sha512-w7r1+CYhG0syCAQUWAuV5zSaU2/67WA9JXUderdb7DzCIJdp/5RmJv6L85wRjgKCMsxFF0Kfn0kPgPbPgw/jdw==}
+ '@mui/private-theming@7.3.6':
+ resolution: {integrity: sha512-Ws9wZpqM+FlnbZXaY/7yvyvWQo1+02Tbx50mVdNmzWEi51C51y56KAbaDCYyulOOBL6BJxuaqG8rNNuj7ivVyw==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': 19.2.3
@@ -2725,8 +2723,8 @@ packages:
'@types/react':
optional: true
- '@mui/styled-engine@7.3.7':
- resolution: {integrity: sha512-y/QkNXv6cF6dZ5APztd/dFWfQ6LHKPx3skyYO38YhQD4+Cxd6sFAL3Z38WMSSC8LQz145Mpp3CcLrSCLKPwYAg==}
+ '@mui/styled-engine@7.3.6':
+ resolution: {integrity: sha512-+wiYbtvj+zyUkmDB+ysH6zRjuQIJ+CM56w0fEXV+VDNdvOuSywG+/8kpjddvvlfMLsaWdQe5oTuYGBcodmqGzQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.4.1
@@ -2738,8 +2736,8 @@ packages:
'@emotion/styled':
optional: true
- '@mui/system@7.3.7':
- resolution: {integrity: sha512-DovL3k+FBRKnhmatzUMyO5bKkhMLlQ9L7Qw5qHrre3m8zCZmE+31NDVBFfqrbrA7sq681qaEIHdkWD5nmiAjyQ==}
+ '@mui/system@7.3.6':
+ resolution: {integrity: sha512-8fehAazkHNP1imMrdD2m2hbA9sl7Ur6jfuNweh5o4l9YPty4iaZzRXqYvBCWQNwFaSHmMEj2KPbyXGp7Bt73Rg==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -2754,16 +2752,16 @@ packages:
'@types/react':
optional: true
- '@mui/types@7.4.10':
- resolution: {integrity: sha512-0+4mSjknSu218GW3isRqoxKRTOrTLd/vHi/7UC4+wZcUrOAqD9kRk7UQRL1mcrzqRoe7s3UT6rsRpbLkW5mHpQ==}
+ '@mui/types@7.4.9':
+ resolution: {integrity: sha512-dNO8Z9T2cujkSIaCnWwprfeKmTWh97cnjkgmpFJ2sbfXLx8SMZijCYHOtP/y5nnUb/Rm2omxbDMmtUoSaUtKaw==}
peerDependencies:
'@types/react': 19.2.3
peerDependenciesMeta:
'@types/react':
optional: true
- '@mui/utils@7.3.7':
- resolution: {integrity: sha512-+YjnjMRnyeTkWnspzoxRdiSOgkrcpTikhNPoxOZW0APXx+urHtUoXJ9lbtCZRCA5a4dg5gSbd19alL1DvRs5fg==}
+ '@mui/utils@7.3.6':
+ resolution: {integrity: sha512-jn+Ba02O6PiFs7nKva8R2aJJ9kJC+3kQ2R0BbKNY3KQQ36Qng98GnPRFTlbwYTdMD6hLEBKaMLUktyg/rTfd2w==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': 19.2.3
@@ -2775,17 +2773,17 @@ packages:
'@napi-rs/wasm-runtime@0.2.12':
resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
- '@next/bundle-analyzer@16.1.5':
- resolution: {integrity: sha512-/iPMrxbvgMZQX1huKZu+rnh7bxo2m5/o0PpOWLMRcAlQ2METpZ7/a3SP/aXFePZAyrQpgpndTldXW3LxPXM/KA==}
+ '@next/bundle-analyzer@16.1.1':
+ resolution: {integrity: sha512-aNJy301GGH8k36rDgrYdnyYEdjRQg6csMi1njzqHo+3qyZvOOWMHSv+p7SztNTzP5RU2KRwX0pPwYBtDcE+vVA==}
- '@next/env@16.1.5':
- resolution: {integrity: sha512-CRSCPJiSZoi4Pn69RYBDI9R7YK2g59vLexPQFXY0eyw+ILevIenCywzg+DqmlBik9zszEnw2HLFOUlLAcJbL7g==}
+ '@next/env@16.1.1':
+ resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==}
'@next/eslint-plugin-next@16.0.10':
resolution: {integrity: sha512-b2NlWN70bbPLmfyoLvvidPKWENBYYIe017ZGUpElvQjDytCWgxPJx7L9juxHt0xHvNVA08ZHJdOyhGzon/KJuw==}
- '@next/mdx@16.1.5':
- resolution: {integrity: sha512-TYzfGfZiXtf6HXZpqJoKq+2DRB1FjY9BR1HWhfl7WoSW/BAEr6X+WmdrdrCtqNpkY8VSoWHVWP0KNbyTqY7ZTA==}
+ '@next/mdx@16.1.1':
+ resolution: {integrity: sha512-XvlZ28/K7kXb1vgTeZWHjjfxDx9BVz/s1bbVlsFOvPfYuSVRmlUkhaiyJTA/7mm9OdpeC57+uHR6k1fUcn5AaA==}
peerDependencies:
'@mdx-js/loader': '>=0.15.0'
'@mdx-js/react': '>=0.15.0'
@@ -2795,60 +2793,60 @@ packages:
'@mdx-js/react':
optional: true
- '@next/swc-darwin-arm64@16.1.5':
- resolution: {integrity: sha512-eK7Wdm3Hjy/SCL7TevlH0C9chrpeOYWx2iR7guJDaz4zEQKWcS1IMVfMb9UKBFMg1XgzcPTYPIp1Vcpukkjg6Q==}
+ '@next/swc-darwin-arm64@16.1.1':
+ resolution: {integrity: sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@16.1.5':
- resolution: {integrity: sha512-foQscSHD1dCuxBmGkbIr6ScAUF6pRoDZP6czajyvmXPAOFNnQUJu2Os1SGELODjKp/ULa4fulnBWoHV3XdPLfA==}
+ '@next/swc-darwin-x64@16.1.1':
+ resolution: {integrity: sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@16.1.5':
- resolution: {integrity: sha512-qNIb42o3C02ccIeSeKjacF3HXotGsxh/FMk/rSRmCzOVMtoWH88odn2uZqF8RLsSUWHcAqTgYmPD3pZ03L9ZAA==}
+ '@next/swc-linux-arm64-gnu@16.1.1':
+ resolution: {integrity: sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@next/swc-linux-arm64-musl@16.1.5':
- resolution: {integrity: sha512-U+kBxGUY1xMAzDTXmuVMfhaWUZQAwzRaHJ/I6ihtR5SbTVUEaDRiEU9YMjy1obBWpdOBuk1bcm+tsmifYSygfw==}
+ '@next/swc-linux-arm64-musl@16.1.1':
+ resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@next/swc-linux-x64-gnu@16.1.5':
- resolution: {integrity: sha512-gq2UtoCpN7Ke/7tKaU7i/1L7eFLfhMbXjNghSv0MVGF1dmuoaPeEVDvkDuO/9LVa44h5gqpWeJ4mRRznjDv7LA==}
+ '@next/swc-linux-x64-gnu@16.1.1':
+ resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@next/swc-linux-x64-musl@16.1.5':
- resolution: {integrity: sha512-bQWSE729PbXT6mMklWLf8dotislPle2L70E9q6iwETYEOt092GDn0c+TTNj26AjmeceSsC4ndyGsK5nKqHYXjQ==}
+ '@next/swc-linux-x64-musl@16.1.1':
+ resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@next/swc-win32-arm64-msvc@16.1.5':
- resolution: {integrity: sha512-LZli0anutkIllMtTAWZlDqdfvjWX/ch8AFK5WgkNTvaqwlouiD1oHM+WW8RXMiL0+vAkAJyAGEzPPjO+hnrSNQ==}
+ '@next/swc-win32-arm64-msvc@16.1.1':
+ resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@16.1.5':
- resolution: {integrity: sha512-7is37HJTNQGhjPpQbkKjKEboHYQnCgpVt/4rBrrln0D9nderNxZ8ZWs8w1fAtzUx7wEyYjQ+/13myFgFj6K2Ng==}
+ '@next/swc-win32-x64-msvc@16.1.1':
+ resolution: {integrity: sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
- '@next/third-parties@16.1.5':
- resolution: {integrity: sha512-p8BKg+Y6ovrh2AE4su6MjaEDBYIuk5CkeA1Gtld5V7L3+3nBN2D2N4In2YfsHxFVRVa6fPZXyd2keqEoCpIcnw==}
+ '@next/third-parties@16.1.1':
+ resolution: {integrity: sha512-i3NWXWiNpXGaUi6vGDrK7rC5qLhuCmuhD1BeaOh4Ma8piUBeUhOjEa1UfpVndeC3JcqWXPaYzqO1Hd1U6hql/w==}
peerDependencies:
next: ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0-beta.0
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
@@ -2878,24 +2876,16 @@ packages:
'@open-draft/until@2.1.0':
resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==}
- '@opentelemetry/api-logs@0.207.0':
- resolution: {integrity: sha512-lAb0jQRVyleQQGiuuvCOTDVspc14nx6XJjP4FspJ1sNARo3Regq4ZZbrc3rN4b1TYSuUCvgH+UXUPug4SLOqEQ==}
- engines: {node: '>=8.0.0'}
-
'@opentelemetry/api-logs@0.208.0':
resolution: {integrity: sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==}
engines: {node: '>=8.0.0'}
- '@opentelemetry/api-logs@0.211.0':
- resolution: {integrity: sha512-swFdZq8MCdmdR22jTVGQDhwqDzcI4M10nhjXkLr1EsIzXgZBqm4ZlmmcWsg3TSNf+3mzgOiqveXmBLZuDi2Lgg==}
- engines: {node: '>=8.0.0'}
-
'@opentelemetry/api@1.9.0':
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
- '@opentelemetry/context-async-hooks@2.5.0':
- resolution: {integrity: sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==}
+ '@opentelemetry/context-async-hooks@2.2.0':
+ resolution: {integrity: sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
@@ -2906,170 +2896,140 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/core@2.5.0':
- resolution: {integrity: sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': '>=1.0.0 <1.10.0'
-
- '@opentelemetry/exporter-logs-otlp-http@0.208.0':
- resolution: {integrity: sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==}
+ '@opentelemetry/instrumentation-amqplib@0.55.0':
+ resolution: {integrity: sha512-5ULoU8p+tWcQw5PDYZn8rySptGSLZHNX/7srqo2TioPnAAcvTy6sQFQXsNPrAnyRRtYGMetXVyZUy5OaX1+IfA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-amqplib@0.58.0':
- resolution: {integrity: sha512-fjpQtH18J6GxzUZ+cwNhWUpb71u+DzT7rFkg5pLssDGaEber91Y2WNGdpVpwGivfEluMlNMZumzjEqfg8DeKXQ==}
+ '@opentelemetry/instrumentation-connect@0.52.0':
+ resolution: {integrity: sha512-GXPxfNB5szMbV3I9b7kNWSmQBoBzw7MT0ui6iU/p+NIzVx3a06Ri2cdQO7tG9EKb4aKSLmfX9Cw5cKxXqX6Ohg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-connect@0.54.0':
- resolution: {integrity: sha512-43RmbhUhqt3uuPnc16cX6NsxEASEtn8z/cYV8Zpt6EP4p2h9s4FNuJ4Q9BbEQ2C0YlCCB/2crO1ruVz/hWt8fA==}
+ '@opentelemetry/instrumentation-dataloader@0.26.0':
+ resolution: {integrity: sha512-P2BgnFfTOarZ5OKPmYfbXfDFjQ4P9WkQ1Jji7yH5/WwB6Wm/knynAoA1rxbjWcDlYupFkyT0M1j6XLzDzy0aCA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-dataloader@0.28.0':
- resolution: {integrity: sha512-ExXGBp0sUj8yhm6Znhf9jmuOaGDsYfDES3gswZnKr4MCqoBWQdEFn6EoDdt5u+RdbxQER+t43FoUihEfTSqsjA==}
+ '@opentelemetry/instrumentation-express@0.57.0':
+ resolution: {integrity: sha512-HAdx/o58+8tSR5iW+ru4PHnEejyKrAy9fYFhlEI81o10nYxrGahnMAHWiSjhDC7UQSY3I4gjcPgSKQz4rm/asg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-express@0.59.0':
- resolution: {integrity: sha512-pMKV/qnHiW/Q6pmbKkxt0eIhuNEtvJ7sUAyee192HErlr+a1Jx+FZ3WjfmzhQL1geewyGEiPGkmjjAgNY8TgDA==}
+ '@opentelemetry/instrumentation-fs@0.28.0':
+ resolution: {integrity: sha512-FFvg8fq53RRXVBRHZViP+EMxMR03tqzEGpuq55lHNbVPyFklSVfQBN50syPhK5UYYwaStx0eyCtHtbRreusc5g==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-fs@0.30.0':
- resolution: {integrity: sha512-n3Cf8YhG7reaj5dncGlRIU7iT40bxPOjsBEA5Bc1a1g6e9Qvb+JFJ7SEiMlPbUw4PBmxE3h40ltE8LZ3zVt6OA==}
+ '@opentelemetry/instrumentation-generic-pool@0.52.0':
+ resolution: {integrity: sha512-ISkNcv5CM2IwvsMVL31Tl61/p2Zm2I2NAsYq5SSBgOsOndT0TjnptjufYVScCnD5ZLD1tpl4T3GEYULLYOdIdQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-generic-pool@0.54.0':
- resolution: {integrity: sha512-8dXMBzzmEdXfH/wjuRvcJnUFeWzZHUnExkmFJ2uPfa31wmpyBCMxO59yr8f/OXXgSogNgi/uPo9KW9H7LMIZ+g==}
+ '@opentelemetry/instrumentation-graphql@0.56.0':
+ resolution: {integrity: sha512-IPvNk8AFoVzTAM0Z399t34VDmGDgwT6rIqCUug8P9oAGerl2/PEIYMPOl/rerPGu+q8gSWdmbFSjgg7PDVRd3Q==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-graphql@0.58.0':
- resolution: {integrity: sha512-+yWVVY7fxOs3j2RixCbvue8vUuJ1inHxN2q1sduqDB0Wnkr4vOzVKRYl/Zy7B31/dcPS72D9lo/kltdOTBM3bQ==}
+ '@opentelemetry/instrumentation-hapi@0.55.0':
+ resolution: {integrity: sha512-prqAkRf9e4eEpy4G3UcR32prKE8NLNlA90TdEU1UsghOTg0jUvs40Jz8LQWFEs5NbLbXHYGzB4CYVkCI8eWEVQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-hapi@0.57.0':
- resolution: {integrity: sha512-Os4THbvls8cTQTVA8ApLfZZztuuqGEeqog0XUnyRW7QVF0d/vOVBEcBCk1pazPFmllXGEdNbbat8e2fYIWdFbw==}
+ '@opentelemetry/instrumentation-http@0.208.0':
+ resolution: {integrity: sha512-rhmK46DRWEbQQB77RxmVXGyjs6783crXCnFjYQj+4tDH/Kpv9Rbg3h2kaNyp5Vz2emF1f9HOQQvZoHzwMWOFZQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-http@0.211.0':
- resolution: {integrity: sha512-n0IaQ6oVll9PP84SjbOCwDjaJasWRHi6BLsbMLiT6tNj7QbVOkuA5sk/EfZczwI0j5uTKl1awQPivO/ldVtsqA==}
+ '@opentelemetry/instrumentation-ioredis@0.56.0':
+ resolution: {integrity: sha512-XSWeqsd3rKSsT3WBz/JKJDcZD4QYElZEa0xVdX8f9dh4h4QgXhKRLorVsVkK3uXFbC2sZKAS2Ds+YolGwD83Dg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-ioredis@0.59.0':
- resolution: {integrity: sha512-875UxzBHWkW+P4Y45SoFM2AR8f8TzBMD8eO7QXGCyFSCUMP5s9vtt/BS8b/r2kqLyaRPK6mLbdnZznK3XzQWvw==}
+ '@opentelemetry/instrumentation-kafkajs@0.18.0':
+ resolution: {integrity: sha512-KCL/1HnZN5zkUMgPyOxfGjLjbXjpd4odDToy+7c+UsthIzVLFf99LnfIBE8YSSrYE4+uS7OwJMhvhg3tWjqMBg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-kafkajs@0.20.0':
- resolution: {integrity: sha512-yJXOuWZROzj7WmYCUiyT27tIfqBrVtl1/TwVbQyWPz7rL0r1Lu7kWjD0PiVeTCIL6CrIZ7M2s8eBxsTAOxbNvw==}
+ '@opentelemetry/instrumentation-knex@0.53.0':
+ resolution: {integrity: sha512-xngn5cH2mVXFmiT1XfQ1aHqq1m4xb5wvU6j9lSgLlihJ1bXzsO543cpDwjrZm2nMrlpddBf55w8+bfS4qDh60g==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-knex@0.55.0':
- resolution: {integrity: sha512-FtTL5DUx5Ka/8VK6P1VwnlUXPa3nrb7REvm5ddLUIeXXq4tb9pKd+/ThB1xM/IjefkRSN3z8a5t7epYw1JLBJQ==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': ^1.3.0
-
- '@opentelemetry/instrumentation-koa@0.59.0':
- resolution: {integrity: sha512-K9o2skADV20Skdu5tG2bogPKiSpXh4KxfLjz6FuqIVvDJNibwSdu5UvyyBzRVp1rQMV6UmoIk6d3PyPtJbaGSg==}
+ '@opentelemetry/instrumentation-koa@0.57.0':
+ resolution: {integrity: sha512-3JS8PU/D5E3q295mwloU2v7c7/m+DyCqdu62BIzWt+3u9utjxC9QS7v6WmUNuoDN3RM+Q+D1Gpj13ERo+m7CGg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.9.0
- '@opentelemetry/instrumentation-lru-memoizer@0.55.0':
- resolution: {integrity: sha512-FDBfT7yDGcspN0Cxbu/k8A0Pp1Jhv/m7BMTzXGpcb8ENl3tDj/51U65R5lWzUH15GaZA15HQ5A5wtafklxYj7g==}
+ '@opentelemetry/instrumentation-lru-memoizer@0.53.0':
+ resolution: {integrity: sha512-LDwWz5cPkWWr0HBIuZUjslyvijljTwmwiItpMTHujaULZCxcYE9eU44Qf/pbVC8TulT0IhZi+RoGvHKXvNhysw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mongodb@0.64.0':
- resolution: {integrity: sha512-pFlCJjweTqVp7B220mCvCld1c1eYKZfQt1p3bxSbcReypKLJTwat+wbL2YZoX9jPi5X2O8tTKFEOahO5ehQGsA==}
+ '@opentelemetry/instrumentation-mongodb@0.61.0':
+ resolution: {integrity: sha512-OV3i2DSoY5M/pmLk+68xr5RvkHU8DRB3DKMzYJdwDdcxeLs62tLbkmRyqJZsYf3Ht7j11rq35pHOWLuLzXL7pQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mongoose@0.57.0':
- resolution: {integrity: sha512-MthiekrU/BAJc5JZoZeJmo0OTX6ycJMiP6sMOSRTkvz5BrPMYDqaJos0OgsLPL/HpcgHP7eo5pduETuLguOqcg==}
+ '@opentelemetry/instrumentation-mongoose@0.55.0':
+ resolution: {integrity: sha512-5afj0HfF6aM6Nlqgu6/PPHFk8QBfIe3+zF9FGpX76jWPS0/dujoEYn82/XcLSaW5LPUDW8sni+YeK0vTBNri+w==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mysql2@0.57.0':
- resolution: {integrity: sha512-nHSrYAwF7+aV1E1V9yOOP9TchOodb6fjn4gFvdrdQXiRE7cMuffyLLbCZlZd4wsspBzVwOXX8mpURdRserAhNA==}
+ '@opentelemetry/instrumentation-mysql2@0.55.0':
+ resolution: {integrity: sha512-0cs8whQG55aIi20gnK8B7cco6OK6N+enNhW0p5284MvqJ5EPi+I1YlWsWXgzv/V2HFirEejkvKiI4Iw21OqDWg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mysql@0.57.0':
- resolution: {integrity: sha512-HFS/+FcZ6Q7piM7Il7CzQ4VHhJvGMJWjx7EgCkP5AnTntSN5rb5Xi3TkYJHBKeR27A0QqPlGaCITi93fUDs++Q==}
+ '@opentelemetry/instrumentation-mysql@0.54.0':
+ resolution: {integrity: sha512-bqC1YhnwAeWmRzy1/Xf9cDqxNG2d/JDkaxnqF5N6iJKN1eVWI+vg7NfDkf52/Nggp3tl1jcC++ptC61BD6738A==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-pg@0.63.0':
- resolution: {integrity: sha512-dKm/ODNN3GgIQVlbD6ZPxwRc3kleLf95hrRWXM+l8wYo+vSeXtEpQPT53afEf6VFWDVzJK55VGn8KMLtSve/cg==}
+ '@opentelemetry/instrumentation-pg@0.61.0':
+ resolution: {integrity: sha512-UeV7KeTnRSM7ECHa3YscoklhUtTQPs6V6qYpG283AB7xpnPGCUCUfECFT9jFg6/iZOQTt3FHkB1wGTJCNZEvPw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-redis@0.59.0':
- resolution: {integrity: sha512-JKv1KDDYA2chJ1PC3pLP+Q9ISMQk6h5ey+99mB57/ARk0vQPGZTTEb4h4/JlcEpy7AYT8HIGv7X6l+br03Neeg==}
+ '@opentelemetry/instrumentation-redis@0.57.0':
+ resolution: {integrity: sha512-bCxTHQFXzrU3eU1LZnOZQ3s5LURxQPDlU3/upBzlWY77qOI1GZuGofazj3jtzjctMJeBEJhNwIFEgRPBX1kp/Q==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-tedious@0.30.0':
- resolution: {integrity: sha512-bZy9Q8jFdycKQ2pAsyuHYUHNmCxCOGdG6eg1Mn75RvQDccq832sU5OWOBnc12EFUELI6icJkhR7+EQKMBam2GA==}
+ '@opentelemetry/instrumentation-tedious@0.27.0':
+ resolution: {integrity: sha512-jRtyUJNZppPBjPae4ZjIQ2eqJbcRaRfJkr0lQLHFmOU/no5A6e9s1OHLd5XZyZoBJ/ymngZitanyRRA5cniseA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-undici@0.21.0':
- resolution: {integrity: sha512-gok0LPUOTz2FQ1YJMZzaHcOzDFyT64XJ8M9rNkugk923/p6lDGms/cRW1cqgqp6N6qcd6K6YdVHwPEhnx9BWbw==}
+ '@opentelemetry/instrumentation-undici@0.19.0':
+ resolution: {integrity: sha512-Pst/RhR61A2OoZQZkn6OLpdVpXp6qn3Y92wXa6umfJe9rV640r4bc6SWvw4pPN6DiQqPu2c8gnSSZPDtC6JlpQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.7.0
- '@opentelemetry/instrumentation@0.207.0':
- resolution: {integrity: sha512-y6eeli9+TLKnznrR8AZlQMSJT7wILpXH+6EYq5Vf/4Ao+huI7EedxQHwRgVUOMLFbe7VFDvHJrX9/f4lcwnJsA==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': ^1.3.0
-
- '@opentelemetry/instrumentation@0.211.0':
- resolution: {integrity: sha512-h0nrZEC/zvI994nhg7EgQ8URIHt0uDTwN90r3qQUdZORS455bbx+YebnGeEuFghUT0HlJSrLF4iHw67f+odY+Q==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': ^1.3.0
-
- '@opentelemetry/otlp-exporter-base@0.208.0':
- resolution: {integrity: sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': ^1.3.0
-
- '@opentelemetry/otlp-transformer@0.208.0':
- resolution: {integrity: sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==}
+ '@opentelemetry/instrumentation@0.208.0':
+ resolution: {integrity: sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
@@ -3084,38 +3044,14 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
- '@opentelemetry/resources@2.5.0':
- resolution: {integrity: sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': '>=1.3.0 <1.10.0'
-
- '@opentelemetry/sdk-logs@0.208.0':
- resolution: {integrity: sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': '>=1.4.0 <1.10.0'
-
- '@opentelemetry/sdk-metrics@2.2.0':
- resolution: {integrity: sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': '>=1.9.0 <1.10.0'
-
'@opentelemetry/sdk-trace-base@2.2.0':
resolution: {integrity: sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
- '@opentelemetry/sdk-trace-base@2.5.0':
- resolution: {integrity: sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==}
- engines: {node: ^18.19.0 || >=20.6.0}
- peerDependencies:
- '@opentelemetry/api': '>=1.3.0 <1.10.0'
-
- '@opentelemetry/semantic-conventions@1.39.0':
- resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==}
+ '@opentelemetry/semantic-conventions@1.38.0':
+ resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==}
engines: {node: '>=14'}
'@opentelemetry/sql-common@0.41.2':
@@ -3136,12 +3072,12 @@ packages:
resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==}
engines: {node: '>=12.22.0'}
- '@pnpm/npm-conf@3.0.2':
- resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==}
+ '@pnpm/npm-conf@2.3.1':
+ resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==}
engines: {node: '>=12'}
- '@polar-sh/sdk@0.42.5':
- resolution: {integrity: sha512-GzC3/ElCtMO55+KeXwFTANlydZzw5qI3DU/F9vAFIsUKuegSmh+Xu03KCL+ct9/imJOvLUQucYhUSsNKqo2j2Q==}
+ '@polar-sh/sdk@0.42.1':
+ resolution: {integrity: sha512-4euyChnpZcjho2KhwnSXCBhJr5m8k+oaIicvwFHOZ/cXxKIKh7+EicJagSKg6jmuuq4YMOFhsxreHk3qqKXdWQ==}
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
@@ -3149,57 +3085,24 @@ packages:
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
- '@posthog/ai@7.5.4':
- resolution: {integrity: sha512-Z0KVUK6fnkjj8InFB5NY4S1A8esx9o9qtjV+FTsW5ifymLsmEjPmVX4+AmIwpGlw6D9pyltDHaDe7/IT5MHW/w==}
- engines: {node: ^20.20.0 || >=22.22.0}
+ '@posthog/ai@7.3.0':
+ resolution: {integrity: sha512-8AngpYfRklUoGnKbh3VocAvHR0tgRnk+wAB3s8AEsOUNn5DrCfCitloUW5vTLmFBUAj7UMULkMBBWbALD9MkrQ==}
+ engines: {node: '>=20'}
peerDependencies:
- '@ai-sdk/provider': ^2.0.0 || ^3.0.0
+ '@ai-sdk/provider': ^2.0.0 || ^3.0.0-beta.0
posthog-node: ^5.0.0
peerDependenciesMeta:
'@ai-sdk/provider':
optional: true
- '@posthog/core@1.14.0':
- resolution: {integrity: sha512-havjGYHwL8Gy6LXIR911h+M/sYlJLQbepxP/cc1M7Cp3v8F92bzpqkbuvUIUyb7/izkxfGwc9wMqKAo0QxMTrg==}
+ '@posthog/core@1.9.0':
+ resolution: {integrity: sha512-j7KSWxJTUtNyKynLt/p0hfip/3I46dWU2dk+pt7dKRoz2l5CYueHuHK4EO7Wlgno5yo1HO4sc4s30MXMTICHJw==}
- '@posthog/types@1.335.3':
- resolution: {integrity: sha512-mReFmfI+ep5sH3cnFhjvWfOcl3j6olKpN5lHFbOomLGxYTHMXcyMUBE3/o8WfrAgR1qxKQUsWMNcv6BhLr/GKA==}
-
- '@prisma/instrumentation@7.2.0':
- resolution: {integrity: sha512-Rh9Z4x5kEj1OdARd7U18AtVrnL6rmLSI0qYShaB4W7Wx5BKbgzndWF+QnuzMb7GLfVdlT5aYCXoPQVYuYtVu0g==}
+ '@prisma/instrumentation@6.19.0':
+ resolution: {integrity: sha512-QcuYy25pkXM8BJ37wVFBO7Zh34nyRV1GOb2n3lPkkbRYfl4hWl3PTcImP41P0KrzVXfa/45p6eVCos27x3exIg==}
peerDependencies:
'@opentelemetry/api': ^1.8
- '@protobufjs/aspromise@1.1.2':
- resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
-
- '@protobufjs/base64@1.1.2':
- resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
-
- '@protobufjs/codegen@2.0.4':
- resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
-
- '@protobufjs/eventemitter@1.1.0':
- resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
-
- '@protobufjs/fetch@1.1.0':
- resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
-
- '@protobufjs/float@1.0.2':
- resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
-
- '@protobufjs/inquire@1.1.0':
- resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
-
- '@protobufjs/path@1.1.2':
- resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
-
- '@protobufjs/pool@1.1.0':
- resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
-
- '@protobufjs/utf8@1.1.0':
- resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
-
'@radix-ui/number@1.1.1':
resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==}
@@ -3735,41 +3638,41 @@ packages:
peerDependencies:
react-native: ^0.0.0-0 || >=0.65 <1.0
- '@react-native-community/cli-clean@20.1.0':
- resolution: {integrity: sha512-77L4DifWfxAT8ByHnkypge7GBMYpbJAjBGV+toowt5FQSGaTBDcBHCX+FFqFRukD5fH6i8sZ41Gtw+nbfCTTIA==}
+ '@react-native-community/cli-clean@20.0.2':
+ resolution: {integrity: sha512-hfbC69fTD0fqZCCep8aqnVztBXUhAckNhi76lEV7USENtgBRwNq2s1wATgKAzOhxKuAL9TEkf5TZ/Dhp/YLhCQ==}
- '@react-native-community/cli-config-android@20.1.0':
- resolution: {integrity: sha512-3A01ZDyFeCALzzPcwP/fleHoP3sGNq1UX7FzxkTrOFX8RRL9ntXNXQd27E56VU4BBxGAjAJT4Utw8pcOjJceIA==}
+ '@react-native-community/cli-config-android@20.0.2':
+ resolution: {integrity: sha512-5yZ2Grr89omnMptV36ilV4EIrRLrIYQAsTTVU/hNI2vL7lz6WB8rPhP5QuovXk3TIjl1Wz2r9A6ZNO2SNJ8nig==}
- '@react-native-community/cli-config-apple@20.1.0':
- resolution: {integrity: sha512-n6JVs8Q3yxRbtZQOy05ofeb1kGtspGN3SgwPmuaqvURF9fsuS7c4/9up2Kp9C+1D2J1remPJXiZLNGOcJvfpOA==}
+ '@react-native-community/cli-config-apple@20.0.2':
+ resolution: {integrity: sha512-6MLL9Duu/JytqI6XfYuc78LSkRGfJoCqTSfqTJzBNSnz6S7XJps9spGBlgvrGh/j0howBpQlFH0J8Ws4N4mCxA==}
- '@react-native-community/cli-config@20.1.0':
- resolution: {integrity: sha512-1x9rhLLR/dKKb92Lb5O0l0EmUG08FHf+ZVyVEf9M+tX+p5QIm52MRiy43R0UAZ2jJnFApxRk+N3sxoYK4Dtnag==}
+ '@react-native-community/cli-config@20.0.2':
+ resolution: {integrity: sha512-OuSAyqTv0MBbRqSyO+80IKasHnwLESydZBTrLjIGwGhDokMH07mZo8Io2H8X300WWa57LC2L8vQf73TzGS3ikQ==}
- '@react-native-community/cli-doctor@20.1.0':
- resolution: {integrity: sha512-QfJF1GVjA4PBrIT3SJ0vFFIu0km1vwOmLDlOYVqfojajZJ+Dnvl0f94GN1il/jT7fITAxom///XH3/URvi7YTQ==}
+ '@react-native-community/cli-doctor@20.0.2':
+ resolution: {integrity: sha512-PQ8BdoNDE2OaMGLH66HZE7FV4qj0iWBHi0lkPUTb8eJJ+vlvzUtBf0N9QSv2TAzFjA59a2FElk6jBWnDC/ql1A==}
- '@react-native-community/cli-platform-android@20.1.0':
- resolution: {integrity: sha512-TeHPDThOwDppQRpndm9kCdRCBI8AMy3HSIQ+iy7VYQXL5BtZ5LfmGdusoj7nVN/ZGn0Lc6Gwts5qowyupXdeKg==}
+ '@react-native-community/cli-platform-android@20.0.2':
+ resolution: {integrity: sha512-Wo2AIkdv3PMEMT4k7QiNm3smNpWK6rd+glVH4Nm6Hco1EgLQ4I9x+gwcS1yN53UHYtq9YnguDCXk2L8duUESDQ==}
- '@react-native-community/cli-platform-apple@20.1.0':
- resolution: {integrity: sha512-0ih1hrYezSM2cuOlVnwBEFtMwtd8YgpTLmZauDJCv50rIumtkI1cQoOgLoS4tbPCj9U/Vn2a9BFH0DLFOOIacg==}
+ '@react-native-community/cli-platform-apple@20.0.2':
+ resolution: {integrity: sha512-PdsQVFLY+wGnAN1kZ38XzzWiUlqaG1cXdpkQ1rYaiiNu3PVTc2/KtteLcPG/wbApbfoPggQ/ffh+JGg7NL+HNw==}
- '@react-native-community/cli-platform-ios@20.1.0':
- resolution: {integrity: sha512-XN7Da9z4WsJxtqVtEzY8q2bv22OsvzaFP5zy5+phMWNoJlU4lf7IvBSxqGYMpQ9XhYP7arDw5vmW4W34s06rnA==}
+ '@react-native-community/cli-platform-ios@20.0.2':
+ resolution: {integrity: sha512-bVOqLsBztT+xVV65uztJ7R/dtjj4vaPXJU1RLi35zLtr1APAxzf+2ydiixxtBjNFylM3AZlF8iL5WXjeWVqrmA==}
- '@react-native-community/cli-server-api@20.1.0':
- resolution: {integrity: sha512-Tb415Oh8syXNT2zOzLzFkBXznzGaqKCiaichxKzGCDKg6JGHp3jSuCmcTcaPeYC7oc32n/S3Psw7798r4Q/7lA==}
+ '@react-native-community/cli-server-api@20.0.2':
+ resolution: {integrity: sha512-u4tUzWnc+qthaDvd1NxdCqCNMY7Px6dAH1ODAXMtt+N27llGMJOl0J3slMx03dScftOWbGM61KA5cCpaxphYVQ==}
- '@react-native-community/cli-tools@20.1.0':
- resolution: {integrity: sha512-/YmzHGOkY6Bgrv4OaA1L8rFqsBlQd1EB2/ipAoKPiieV0EcB5PUamUSuNeFU3sBZZTYQCUENwX4wgOHgFUlDnQ==}
+ '@react-native-community/cli-tools@20.0.2':
+ resolution: {integrity: sha512-bPYhRYggW9IIM8pvrZF/0r6HaxCyEWDn6zfPQPMWlkQUwkzFZ8GBY/M7yiHgDzozWKPT4DqZPumrq806Vcksow==}
- '@react-native-community/cli-types@20.1.0':
- resolution: {integrity: sha512-D0kDspcwgbVXyNjwicT7Bb1JgXjijTw1JJd+qxyF/a9+sHv7TU4IchV+gN38QegeXqVyM4Ym7YZIvXMFBmyJqA==}
+ '@react-native-community/cli-types@20.0.2':
+ resolution: {integrity: sha512-OZzy6U4M8Szg8iiF459OoTjRKggxLrdhZVHKfRhrAUfojhjRiWbJNkkPxJtOIPeNSgsB0heizgpE4QwCgnYeuQ==}
- '@react-native-community/cli@20.1.0':
- resolution: {integrity: sha512-441WsVtRe4nGJ9OzA+QMU1+22lA6Q2hRWqqIMKD0wjEMLqcSfOZyu2UL9a/yRpL/dRpyUsU4n7AxqKfTKO/Csg==}
+ '@react-native-community/cli@20.0.2':
+ resolution: {integrity: sha512-ocgRFKRLX8b5rEK38SJfpr0AMl6SqseWljk6c5LxCG/zpCfPPNQdXq1OsDvmEwsqO4OEQ6tmOaSm9OgTm6FhbQ==}
engines: {node: '>=20.19.4'}
hasBin: true
@@ -4065,52 +3968,48 @@ packages:
resolution: {integrity: sha512-rPg1+JZlfp912pZONQAWZzbSaZ9L6R2VrMcCEa+2e2Gqk9um4b+LqF5RQWZsbt5Z0n0azSy/KQ6zAe/zTPXSOg==}
engines: {node: '>=18'}
- '@sentry-internal/browser-utils@10.37.0':
- resolution: {integrity: sha512-rqdESYaVio9Ktz55lhUhtBsBUCF3wvvJuWia5YqoHDd+egyIfwWxITTAa0TSEyZl7283A4WNHNl0hyeEMblmfA==}
+ '@sentry-internal/browser-utils@10.32.1':
+ resolution: {integrity: sha512-sjLLep1es3rTkbtAdTtdpc/a6g7v7bK5YJiZJsUigoJ4NTiFeMI5uIDCxbH/tjJ1q23YE1LzVn7T96I+qBRjHA==}
engines: {node: '>=18'}
'@sentry-internal/feedback@10.26.0':
resolution: {integrity: sha512-0vk9eQP0CXD7Y2WkcCIWHaAqnXOAi18/GupgWLnbB2kuQVYVtStWxtW+OWRe8W/XwSnZ5m6JBTVeokuk/O16DQ==}
engines: {node: '>=18'}
- '@sentry-internal/feedback@10.37.0':
- resolution: {integrity: sha512-P0PVlfrDvfvCYg2KPIS7YUG/4i6ZPf8z1MicXx09C9Cz9W9UhSBh/nii13eBdDtLav2BFMKhvaFMcghXHX03Hw==}
+ '@sentry-internal/feedback@10.32.1':
+ resolution: {integrity: sha512-O24G8jxbfBY1RE/v2qFikPJISVMOrd/zk8FKyl+oUVYdOxU2Ucjk2cR3EQruBFlc7irnL6rT3GPfRZ/kBgLkmQ==}
engines: {node: '>=18'}
'@sentry-internal/replay-canvas@10.26.0':
resolution: {integrity: sha512-vs7d/P+8M1L1JVAhhJx2wo15QDhqAipnEQvuRZ6PV7LUcS1un9/Vx49FMxpIkx6JcKADJVwtXrS1sX2hoNT/kw==}
engines: {node: '>=18'}
- '@sentry-internal/replay-canvas@10.37.0':
- resolution: {integrity: sha512-PyIYSbjLs+L5essYV0MyIsh4n5xfv2eV7l0nhUoPJv9Bak3kattQY3tholOj0EP3SgKgb+8HSZnmazgF++Hbog==}
+ '@sentry-internal/replay-canvas@10.32.1':
+ resolution: {integrity: sha512-/XGTzWNWVc+B691fIVekV2KeoHFEDA5KftrLFAhEAW7uWOwk/xy3aQX4TYM0LcPm2PBKvoumlAD+Sd/aXk63oA==}
engines: {node: '>=18'}
'@sentry-internal/replay@10.26.0':
resolution: {integrity: sha512-FMySQnY2/p0dVtFUBgUO+aMdK2ovqnd7Q/AkvMQUsN/5ulyj6KZx3JX3CqOqRtAr1izoCe4Kh2pi5t//sQmvsg==}
engines: {node: '>=18'}
- '@sentry-internal/replay@10.37.0':
- resolution: {integrity: sha512-snuk12ZaDerxesSnetNIwKoth/51R0y/h3eXD/bGtXp+hnSkeXN5HanI/RJl297llRjn4zJYRShW9Nx86Ay0Dw==}
+ '@sentry-internal/replay@10.32.1':
+ resolution: {integrity: sha512-KKmLUgIaLRM0VjrMA1ByQTawZyRDYSkG2evvEOVpEtR9F0sumidAQdi7UY71QEKE1RYe/Jcp/3WoaqsMh8tbnQ==}
engines: {node: '>=18'}
'@sentry/babel-plugin-component-annotate@4.6.1':
resolution: {integrity: sha512-aSIk0vgBqv7PhX6/Eov+vlI4puCE0bRXzUG5HdCsHBpAfeMkI8Hva6kSOusnzKqs8bf04hU7s3Sf0XxGTj/1AA==}
engines: {node: '>= 14'}
- '@sentry/babel-plugin-component-annotate@4.8.0':
- resolution: {integrity: sha512-cy/9Eipkv23MsEJ4IuB4dNlVwS9UqOzI3Eu+QPake5BVFgPYCX0uP0Tr3Z43Ime6Rb+BiDnWC51AJK9i9afHYw==}
- engines: {node: '>= 14'}
-
'@sentry/browser@10.26.0':
resolution: {integrity: sha512-uvV4hnkt8bh8yP0disJ0fszy8FdnkyGtzyIVKdeQZbNUefwbDhd3H0KJrAHhJ5ocULMH3B+dipdPmw2QXbEflg==}
engines: {node: '>=18'}
- '@sentry/browser@10.37.0':
- resolution: {integrity: sha512-kheqJNqGZP5TSBCPv4Vienv1sfZwXKHQDYR+xrdHHYdZqwWuZMJJW/cLO9XjYAe+B9NnJ4UwJOoY4fPvU+HQ1Q==}
+ '@sentry/browser@10.32.1':
+ resolution: {integrity: sha512-NPNCXTZ05ZGTFyJdKNqjykpFm+urem0ebosILQiw3C4BxNVNGH4vfYZexyl6prRhmg91oB6GjVNiVDuJiap1gg==}
engines: {node: '>=18'}
- '@sentry/bundler-plugin-core@4.8.0':
- resolution: {integrity: sha512-QaXd/NzaZ2vmiA2FNu2nBkgQU+17N3fE+zVOTzG0YK54QDSJMd4n3AeJIEyPhSzkOob+GqtO22nbYf6AATFMAw==}
+ '@sentry/bundler-plugin-core@4.6.1':
+ resolution: {integrity: sha512-WPeRbnMXm927m4Kr69NTArPfI+p5/34FHftdCRI3LFPMyhZDzz6J3wLy4hzaVUgmMf10eLzmq2HGEMvpQmdynA==}
engines: {node: '>= 14'}
'@sentry/cli-darwin@2.58.2':
@@ -4221,41 +4120,41 @@ packages:
resolution: {integrity: sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q==}
engines: {node: '>=18'}
- '@sentry/core@10.37.0':
- resolution: {integrity: sha512-hkRz7S4gkKLgPf+p3XgVjVm7tAfvcEPZxeACCC6jmoeKhGkzN44nXwLiqqshJ25RMcSrhfFvJa/FlBg6zupz7g==}
+ '@sentry/core@10.32.1':
+ resolution: {integrity: sha512-PH2ldpSJlhqsMj2vCTyU0BI2Fx1oIDhm7Izo5xFALvjVCS0gmlqHt1udu6YlKn8BtpGH6bGzssvv5APrk+OdPQ==}
engines: {node: '>=18'}
- '@sentry/nextjs@10.37.0':
- resolution: {integrity: sha512-y4iPrdKsKq8VoD42whWn/+JBTv5kqnENBUg7zQoCedqOCFKVpUnDhbme+7msPyobxQ8BHbWIqKVFDka5S+upAg==}
+ '@sentry/nextjs@10.32.1':
+ resolution: {integrity: sha512-MlgQiKg9P2clKeyH+ZLdmNiMNfTMs/2DBK9V/enLZvYJd1sy5hmrkAV/NiLxVP0uXAeMEVtrgFMIb64cH7ZcXQ==}
engines: {node: '>=18'}
peerDependencies:
next: ^13.2.0 || ^14.0 || ^15.0.0-rc.0 || ^16.0.0-0
- '@sentry/node-core@10.37.0':
- resolution: {integrity: sha512-gQXf9764ZlEZQqqIaysxOrpHu2H867WN/G8EsHgaUJxxZMJ4ZMixinuFef+iQUE3la3/2MPoGx0A8AR7vRH9hA==}
+ '@sentry/node-core@10.32.1':
+ resolution: {integrity: sha512-w56rxdBanBKc832zuwnE+zNzUQ19fPxfHEtOhK8JGPu3aSwQYcIxwz9z52lOx3HN7k/8Fj5694qlT3x/PokhRw==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
- '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0
- '@opentelemetry/core': ^1.30.1 || ^2.1.0
+ '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0
'@opentelemetry/instrumentation': '>=0.57.1 <1'
- '@opentelemetry/resources': ^1.30.1 || ^2.1.0
- '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
- '@opentelemetry/semantic-conventions': ^1.39.0
+ '@opentelemetry/resources': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/semantic-conventions': ^1.37.0
- '@sentry/node@10.37.0':
- resolution: {integrity: sha512-R0n0McfnPy9D1mGKQXNPG3pfw53QxHBHNbCXGAQJoB1LjUHENM+A645tYBheac4SQjMhbu8i9De9ZyHIQKce/Q==}
+ '@sentry/node@10.32.1':
+ resolution: {integrity: sha512-oxlybzt8QW0lx/QaEj1DcvZDRXkgouewFelu/10dyUwv5So3YvipfvWInda+yMLmn25OggbloDQ0gyScA2jU3g==}
engines: {node: '>=18'}
- '@sentry/opentelemetry@10.37.0':
- resolution: {integrity: sha512-elRAsmgAcaprVFV1JoxxqU9eteBz3g9fpmecfDk5KTe/Txr2OOxdIiLF/4I0g4MMib3DKtr6iGgme2J+l8H8cA==}
+ '@sentry/opentelemetry@10.32.1':
+ resolution: {integrity: sha512-YLssSz5Y+qPvufrh2cDaTXDoXU8aceOhB+YTjT8/DLF6SOj7Tzen52aAcjNaifawaxEsLCC8O+B+A2iA+BllvA==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
- '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0
- '@opentelemetry/core': ^1.30.1 || ^2.1.0
- '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
- '@opentelemetry/semantic-conventions': ^1.39.0
+ '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/semantic-conventions': ^1.37.0
'@sentry/react-native@7.7.0':
resolution: {integrity: sha512-D+gqiw88mOnouY+Pd8A3wcUDOilPOIcypBPw7WL9v+K1jM12Snf6sosEG4xgFFMXoK+GSsYAeC5MR0skD/b+Zg==}
@@ -4274,8 +4173,8 @@ packages:
peerDependencies:
react: ^16.14.0 || 17.x || 18.x || 19.x
- '@sentry/react@10.37.0':
- resolution: {integrity: sha512-XLnXJOHgsCeVAVBbO+9AuGlZWnCxLQHLOmKxpIr8wjE3g7dHibtug6cv8JLx78O4dd7aoCqv2TTyyKY9FLJ2EQ==}
+ '@sentry/react@10.32.1':
+ resolution: {integrity: sha512-/tX0HeACbAmVP57x8txTrGk/U3fa9pDBaoAtlOrnPv5VS/aC5SGkehXWeTGSAa+ahlOWwp3IF8ILVXRiOoG/Vg==}
engines: {node: '>=18'}
peerDependencies:
react: ^16.14.0 || 17.x || 18.x || 19.x
@@ -4284,36 +4183,36 @@ packages:
resolution: {integrity: sha512-mDpG7lnOJppbk9iKrnuvkuiCTbh3aBAlUK4NZxZNLOSI0SeefYXHRAcri89BqWZ/MT98sQLU+Hf+rlwrwq38/A==}
engines: {node: '>=18'}
- '@sentry/vercel-edge@10.37.0':
- resolution: {integrity: sha512-mm4wk4kBep4z/ca5PmBlngayqLmbUIEJwBwOsfr7kzM4v89x+otl4+KUghYdXNWmIhS0frMaGGTrIX2hCVy9aQ==}
+ '@sentry/vercel-edge@10.32.1':
+ resolution: {integrity: sha512-3hrc7TVs4ZeYSCOZdgmv9D1Bke2osnImfupceW8THecNv3uEUjYbrC2UkS/TFMiVHc9qpYzUnKbsGezMp3Bcaw==}
engines: {node: '>=18'}
- '@sentry/webpack-plugin@4.8.0':
- resolution: {integrity: sha512-x4gayRA/J8CEcowrXWA2scaPZx+hd18squORJElHZKC46PGYRKvQfAWQ7qRCX6gtJ2v53x9264n9D8f3b9rp9g==}
+ '@sentry/webpack-plugin@4.6.1':
+ resolution: {integrity: sha512-CJgT/t2pQWsPsMx9VJ86goU/orCQhL2HhDj5ZYBol6fPPoEGeTqKOPCnv/xsbCAfGSp1uHpyRLTA/Gx96u7VVA==}
engines: {node: '>= 14'}
peerDependencies:
webpack: '>=4.40.0'
- '@shikijs/core@3.21.0':
- resolution: {integrity: sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==}
+ '@shikijs/core@3.20.0':
+ resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==}
- '@shikijs/engine-javascript@3.21.0':
- resolution: {integrity: sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==}
+ '@shikijs/engine-javascript@3.20.0':
+ resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==}
- '@shikijs/engine-oniguruma@3.21.0':
- resolution: {integrity: sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==}
+ '@shikijs/engine-oniguruma@3.20.0':
+ resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==}
- '@shikijs/langs@3.21.0':
- resolution: {integrity: sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==}
+ '@shikijs/langs@3.20.0':
+ resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==}
- '@shikijs/rehype@3.21.0':
- resolution: {integrity: sha512-fTQvwsZL67QdosMFdTgQ5SNjW3nxaPplRy//312hqOctRbIwviTV0nAbhv3NfnztHXvFli2zLYNKsTz/f9tbpQ==}
+ '@shikijs/rehype@3.20.0':
+ resolution: {integrity: sha512-/sqob3V/lJK0m2mZ64nkcWPN88im0D9atkI3S3PUBvtJZTHnJXVwZhHQFRDyObgEIa37IpHYHR3CuFtXB5bT2g==}
- '@shikijs/themes@3.21.0':
- resolution: {integrity: sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==}
+ '@shikijs/themes@3.20.0':
+ resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==}
- '@shikijs/types@3.21.0':
- resolution: {integrity: sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==}
+ '@shikijs/types@3.20.0':
+ resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -4490,11 +4389,19 @@ packages:
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
- '@tanstack/query-core@5.90.20':
- resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==}
+ '@tanstack/query-core@5.90.12':
+ resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==}
- '@tanstack/react-query@5.90.20':
- resolution: {integrity: sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==}
+ '@tanstack/query-core@5.90.16':
+ resolution: {integrity: sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==}
+
+ '@tanstack/react-query@5.90.12':
+ resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==}
+ peerDependencies:
+ react: ^18 || ^19
+
+ '@tanstack/react-query@5.90.16':
+ resolution: {integrity: sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==}
peerDependencies:
react: ^18 || ^19
@@ -4513,8 +4420,8 @@ packages:
resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
engines: {node: '>=18'}
- '@testing-library/react@16.3.2':
- resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==}
+ '@testing-library/react@16.3.1':
+ resolution: {integrity: sha512-gr4KtAWqIOQoucWYD/f6ki+j5chXfcPc74Col/6poTyqTmn7zRmodWahWRCp8tYd+GMqBonw6hstNzqjbs6gjw==}
engines: {node: '>=18'}
peerDependencies:
'@testing-library/dom': ^10.0.0
@@ -4742,11 +4649,17 @@ packages:
'@types/mysql@2.15.27':
resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==}
+ '@types/node-fetch@2.6.13':
+ resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==}
+
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
- '@types/node@24.10.9':
- resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==}
+ '@types/node@18.19.130':
+ resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==}
+
+ '@types/node@22.19.3':
+ resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==}
'@types/node@25.0.2':
resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==}
@@ -4754,8 +4667,8 @@ packages:
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
- '@types/pg-pool@2.0.7':
- resolution: {integrity: sha512-U4CwmGVQcbEuqpyju8/ptOKg6gEC+Tqsvj2xS9o1g71bUh8twxnC6ZL5rZKCsGN0iyH0CwgUyc9VR5owNQF9Ng==}
+ '@types/pg-pool@2.0.6':
+ resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==}
'@types/pg@8.15.6':
resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==}
@@ -4787,6 +4700,9 @@ packages:
'@types/react@19.2.3':
resolution: {integrity: sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==}
+ '@types/retry@0.12.0':
+ resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
+
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
@@ -4802,9 +4718,6 @@ packages:
'@types/tough-cookie@4.0.5':
resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
- '@types/trusted-types@2.0.7':
- resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
-
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -4817,8 +4730,8 @@ packages:
'@types/uuid@10.0.0':
resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==}
- '@types/web@0.0.323':
- resolution: {integrity: sha512-2/3r+jdsu0UdRRIsjOeIALbbC315SjAW/k8TKIJDRMz0BY5/EbBXnXaCV7ZLkN4wDk7RXCaYRW9TA0HJuJ2jWw==}
+ '@types/web@0.0.312':
+ resolution: {integrity: sha512-dh5IM+N4QS9Nkoq6ZLaTx8vaqUUfC9j8yIGhmYvlc/V19hfAvMjE+LjBHlWCf92nYIz4ZE352I7GrVWh5NBRuw==}
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
@@ -5019,9 +4932,6 @@ packages:
'@vitest/expect@3.2.4':
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
- '@vitest/expect@4.0.18':
- resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==}
-
'@vitest/mocker@2.1.9':
resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==}
peerDependencies:
@@ -5044,53 +4954,30 @@ packages:
vite:
optional: true
- '@vitest/mocker@4.0.18':
- resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==}
- peerDependencies:
- msw: ^2.4.9
- vite: ^6.0.0 || ^7.0.0-0
- peerDependenciesMeta:
- msw:
- optional: true
- vite:
- optional: true
-
'@vitest/pretty-format@2.1.9':
resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==}
'@vitest/pretty-format@3.2.4':
resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
- '@vitest/pretty-format@4.0.18':
- resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==}
-
'@vitest/runner@2.1.9':
resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==}
'@vitest/runner@3.2.4':
resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
- '@vitest/runner@4.0.18':
- resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==}
-
'@vitest/snapshot@2.1.9':
resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==}
'@vitest/snapshot@3.2.4':
resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
- '@vitest/snapshot@4.0.18':
- resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==}
-
'@vitest/spy@2.1.9':
resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==}
'@vitest/spy@3.2.4':
resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
- '@vitest/spy@4.0.18':
- resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==}
-
'@vitest/ui@3.2.4':
resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==}
peerDependencies:
@@ -5102,9 +4989,6 @@ packages:
'@vitest/utils@3.2.4':
resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
- '@vitest/utils@4.0.18':
- resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==}
-
'@vscode/sudo-prompt@9.3.1':
resolution: {integrity: sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==}
@@ -5229,6 +5113,10 @@ packages:
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
engines: {node: '>= 14'}
+ agentkeepalive@4.6.0:
+ resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
+ engines: {node: '>= 8.0.0'}
+
ai@5.0.113:
resolution: {integrity: sha512-26vivpSO/mzZj0k1Si2IpsFspp26ttQICHRySQiMrtWcRd5mnJMX2a8sG28vmZ38C+JUn1cWmfZrsLMxkSMw9g==}
engines: {node: '>=18'}
@@ -5648,10 +5536,6 @@ packages:
resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==}
engines: {node: '>=18'}
- chai@6.2.2:
- resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
- engines: {node: '>=18'}
-
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -5728,9 +5612,6 @@ packages:
cjs-module-lexer@1.4.3:
resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
- cjs-module-lexer@2.2.0:
- resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==}
-
class-variance-authority@0.7.1:
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
@@ -5930,8 +5811,11 @@ packages:
typescript:
optional: true
- crawler-user-agents@1.26.0:
- resolution: {integrity: sha512-42Y8R6LcQtlXomY5cHtUYdUTZOLjHJp/0JlDlnPQH6vVTnGUMOcCaHc84VQUH4v2eQNdnoZw/UYIRRLZPnWQNw==}
+ countries-list@3.2.2:
+ resolution: {integrity: sha512-ABJ/RWQBrPWy+hRuZoW+0ooK8p65Eo3WmUZwHm6v4wmfSPznNAKzjy3+UUYrJK2v3182BVsgWxdB6ROidj39kw==}
+
+ crawler-user-agents@1.24.0:
+ resolution: {integrity: sha512-ZySEdg5TZf9TbLY+sEesqrTMs1afScmGCdyqMQ8mWUzhFA54zsXLtDgUpnOt0dwrOOAb7zRE1obL7J9yA34Emw==}
create-jest@29.7.0:
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
@@ -6277,9 +6161,6 @@ packages:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
- dompurify@3.3.1:
- resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==}
-
domutils@3.2.2:
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
@@ -6645,8 +6526,8 @@ packages:
eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
- eventemitter3@5.0.4:
- resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
+ eventemitter3@5.0.1:
+ resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
@@ -7097,6 +6978,9 @@ packages:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
+ form-data-encoder@1.7.2:
+ resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==}
+
form-data@4.0.5:
resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
engines: {node: '>= 6'}
@@ -7105,6 +6989,10 @@ packages:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
engines: {node: '>=0.4.x'}
+ formdata-node@4.4.1:
+ resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==}
+ engines: {node: '>= 12.20'}
+
formdata-polyfill@4.0.10:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
@@ -7119,8 +7007,8 @@ packages:
fraction.js@5.3.4:
resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
- framer-motion@12.29.2:
- resolution: {integrity: sha512-lSNRzBJk4wuIy0emYQ/nfZ7eWhqud2umPKw2QAQki6uKhZPKm2hRQHeQoHTG9MIvfobb+A/LbEWPJU794ZUKrg==}
+ framer-motion@12.23.26:
+ resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0 || ^19.0.0
@@ -7460,6 +7348,9 @@ packages:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
+ humanize-ms@1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+
hyphenate-style-name@1.1.0:
resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==}
@@ -7471,8 +7362,8 @@ packages:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
- iconv-lite@0.7.2:
- resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==}
+ iconv-lite@0.7.1:
+ resolution: {integrity: sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==}
engines: {node: '>=0.10.0'}
ieee754@1.2.1:
@@ -7501,8 +7392,8 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
- import-in-the-middle@2.0.5:
- resolution: {integrity: sha512-0InH9/4oDCBRzWXhpOqusspLBrVfK1vPvbn9Wxl8DAQ8yyx5fWJRETICSwkiAMaYntjJAMBP1R4B6cQnEUYVEA==}
+ import-in-the-middle@2.0.1:
+ resolution: {integrity: sha512-bruMpJ7xz+9jwGzrwEhWgvRrlKRYCRDBrfU+ur3FcasYXLJDxTruJ//8g2Noj+QFyRBeqbpj8Bhn4Fbw6HjvhA==}
import-local@3.2.0:
resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
@@ -7668,10 +7559,6 @@ packages:
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
- is-network-error@1.3.0:
- resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==}
- engines: {node: '>=16'}
-
is-node-process@1.2.0:
resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==}
@@ -8121,22 +8008,22 @@ packages:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
- ky@1.14.3:
- resolution: {integrity: sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==}
+ ky@1.14.2:
+ resolution: {integrity: sha512-q3RBbsO5A5zrPhB6CaCS8ZUv+NWCXv6JJT4Em0i264G9W0fdPB8YRfnnEi7Dm7X7omAkBIPojzYJ2D1oHTHqug==}
engines: {node: '>=18'}
lan-network@0.1.7:
resolution: {integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==}
hasBin: true
- langchain@1.2.14:
- resolution: {integrity: sha512-nLtc7ZQT8VUor6eT7Yg7d43W0HDZ3wIujN2uonnvUrycK2P+i5TRDAhlcqEcGviZdVqk0TZMXcQ3IXrtSHnbvQ==}
+ langchain@1.2.0:
+ resolution: {integrity: sha512-HC+5zN1RPenV/QU9pbo4V0Hv7R8rP4ZBXnnqhkBrSYqfvhcQ644dZQIcB3vryjqLhi82xZE2oNSplQLjnhX6xw==}
engines: {node: '>=20'}
peerDependencies:
- '@langchain/core': 1.1.17
+ '@langchain/core': 1.1.5
- langsmith@0.4.10:
- resolution: {integrity: sha512-l9QP/a7RXBXdaoAnNx99X+TK8aul8Qe4us1oCybdMgDmYMLT5PAwlJactvSdTlT8NOeSoFThYa2N7ijznBNe9w==}
+ langsmith@0.3.87:
+ resolution: {integrity: sha512-XXR1+9INH8YX96FKWc5tie0QixWz6tOqAsAKfcJyPkE0xPep+NDz0IQLR32q4bn10QK3LqD2HN6T3n6z1YLW7Q==}
peerDependencies:
'@opentelemetry/api': '*'
'@opentelemetry/exporter-trace-otlp-proto': '*'
@@ -8358,9 +8245,6 @@ packages:
resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==}
hasBin: true
- long@5.3.2:
- resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
-
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
@@ -8381,8 +8265,8 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
- lucide-react@0.563.0:
- resolution: {integrity: sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==}
+ lucide-react@0.562.0:
+ resolution: {integrity: sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==}
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -8824,11 +8708,11 @@ packages:
module-details-from-path@1.0.4:
resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==}
- motion-dom@12.29.2:
- resolution: {integrity: sha512-/k+NuycVV8pykxyiTCoFzIVLA95Nb1BFIVvfSu9L50/6K6qNeAYtkxXILy/LRutt7AzaYDc2myj0wkCVVYAPPA==}
+ motion-dom@12.23.23:
+ resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==}
- motion-utils@12.29.2:
- resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==}
+ motion-utils@12.23.6:
+ resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==}
mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
@@ -8919,8 +8803,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.1.5:
- resolution: {integrity: sha512-f+wE+NSbiQgh3DSAlTaw2FwY5yGdVViAtp8TotNQj4kk4Q8Bh1sC/aL9aH+Rg1YAVn18OYXsRDT7U/079jgP7w==}
+ next@16.1.1:
+ resolution: {integrity: sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -9069,9 +8953,6 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
- obug@2.1.1:
- resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
-
ofetch@1.5.1:
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
@@ -9120,8 +9001,20 @@ packages:
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
engines: {node: '>=12'}
- openai@6.16.0:
- resolution: {integrity: sha512-fZ1uBqjFUjXzbGc35fFtYKEOxd20kd9fDpFeqWtsOZWiubY8CZ1NAlXHW3iathaFvqmNtCWMIsosCuyeI7Joxg==}
+ openai@4.104.0:
+ resolution: {integrity: sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==}
+ hasBin: true
+ peerDependencies:
+ ws: ^8.18.0
+ zod: ^3.23.8
+ peerDependenciesMeta:
+ ws:
+ optional: true
+ zod:
+ optional: true
+
+ openai@6.13.0:
+ resolution: {integrity: sha512-yHbMo+EpNGPG3sRrXvmo0LhUPFN4bAURJw3G17bE+ax1G4tcTFCa9ZjvCWh3cvni0aHY0uWlk2IxcsPH4NR9Ow==}
hasBin: true
peerDependencies:
ws: ^8.18.0
@@ -9206,22 +9099,14 @@ packages:
resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
engines: {node: '>=8'}
- p-queue@9.1.0:
- resolution: {integrity: sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==}
- engines: {node: '>=20'}
-
- p-retry@7.1.1:
- resolution: {integrity: sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==}
- engines: {node: '>=20'}
+ p-retry@4.6.2:
+ resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==}
+ engines: {node: '>=8'}
p-timeout@3.2.0:
resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
engines: {node: '>=8'}
- p-timeout@7.0.1:
- resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==}
- engines: {node: '>=20'}
-
p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
@@ -9469,12 +9354,12 @@ packages:
resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
engines: {node: '>=0.10.0'}
- posthog-js@1.335.3:
- resolution: {integrity: sha512-ZQg3ozgsPom+SZtAxMN97Zx9Vqkdsv1D4TZU/OqbAZdm27PswV6+ShBurm3nKm9jrlUU1cGHMRn2ZJZf249znQ==}
+ posthog-js@1.313.0:
+ resolution: {integrity: sha512-CL8RkC7m9BTZrix86w0fdnSCVqC/gxrfs6c4Wfkz/CldFD7f2912S2KqnWFmwRVDGIwm9IR82YhublQ88gdDKw==}
- posthog-node@5.24.2:
- resolution: {integrity: sha512-cywIUYtSIC9BilgLlZd1R2xNk6omKL6tywG/SCPmUJKeG2jhjvJHSrHXYx4x3uQsUjn8aB9UVI8km+W326Zm8g==}
- engines: {node: ^20.20.0 || >=22.22.0}
+ posthog-node@5.18.1:
+ resolution: {integrity: sha512-Hi7cRqAlvuEitdiurXJFdMip+BxcwYoX66at5RErMVP91V+Ph9BspGiawC3mJx/4znjwUjF29kAhf8oZQ2uJ5Q==}
+ engines: {node: '>=20'}
preact@10.28.0:
resolution: {integrity: sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA==}
@@ -9553,8 +9438,8 @@ packages:
engines: {node: '>=10.13.0'}
hasBin: true
- prettier@3.8.1:
- resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
+ prettier@3.7.4:
+ resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
engines: {node: '>=14'}
hasBin: true
@@ -9597,10 +9482,6 @@ packages:
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
- protobufjs@7.5.4:
- resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
- engines: {node: '>=12.0.0'}
-
proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
@@ -9634,9 +9515,6 @@ packages:
quansync@0.2.11:
resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
- query-selector-shadow-dom@1.0.1:
- resolution: {integrity: sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==}
-
query-string@7.1.3:
resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
engines: {node: '>=6'}
@@ -9688,10 +9566,10 @@ packages:
peerDependencies:
react: ^19.1.0
- react-dom@19.2.4:
- resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
+ react-dom@19.2.3:
+ resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
peerDependencies:
- react: ^19.2.4
+ react: ^19.2.3
react-dropzone@14.3.8:
resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==}
@@ -9722,8 +9600,14 @@ packages:
peerDependencies:
react: '>=17.0.0'
- react-hook-form@7.71.1:
- resolution: {integrity: sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==}
+ react-hook-form@7.68.0:
+ resolution: {integrity: sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ react: ^16.8.0 || ^17 || ^18 || ^19
+
+ react-hook-form@7.70.0:
+ resolution: {integrity: sha512-COOMajS4FI3Wuwrs3GPpi/Jeef/5W1DRR84Yl5/ShlT3dKVFUfoGiEZ/QE6Uw8P4T2/CLJdcTVYKvWBMQTEpvw==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^16.8.0 || ^17 || ^18 || ^19
@@ -9922,8 +9806,8 @@ packages:
resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==}
engines: {node: '>=0.10.0'}
- react@19.2.4:
- resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
+ react@19.2.3:
+ resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -9945,8 +9829,8 @@ packages:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
- recharts@3.7.0:
- resolution: {integrity: sha512-l2VCsy3XXeraxIID9fx23eCb6iCBsxUQDnE8tWm6DFdszVAO7WVY/ChAD9wVit01y6B2PMupYiMmQwhgPHc9Ew==}
+ recharts@3.6.0:
+ resolution: {integrity: sha512-L5bjxvQRAe26RlToBAziKUB7whaGKEwD3znoM6fz3DrTowCIC/FnJYnuq1GEzB8Zv2kdTfaxQfi5GoH0tBinyg==}
engines: {node: '>=18'}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -10006,8 +9890,8 @@ packages:
resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==}
engines: {node: '>=4'}
- registry-auth-token@5.1.1:
- resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==}
+ registry-auth-token@5.1.0:
+ resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==}
engines: {node: '>=14'}
registry-url@6.0.1:
@@ -10110,6 +9994,10 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
+ resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+
resolve@1.7.1:
resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==}
@@ -10313,8 +10201,8 @@ packages:
resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
engines: {node: '>= 0.4'}
- shiki@3.21.0:
- resolution: {integrity: sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==}
+ shiki@3.20.0:
+ resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==}
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -10651,7 +10539,6 @@ packages:
tar@7.5.2:
resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==}
engines: {node: '>=18'}
- deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me
temp-dir@2.0.0:
resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
@@ -10681,8 +10568,8 @@ packages:
uglify-js:
optional: true
- terser@5.46.0:
- resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==}
+ terser@5.44.1:
+ resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==}
engines: {node: '>=10'}
hasBin: true
@@ -10743,10 +10630,6 @@ packages:
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
engines: {node: '>=14.0.0'}
- tinyrainbow@3.0.3:
- resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==}
- engines: {node: '>=14.0.0'}
-
tinyspy@3.0.2:
resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
engines: {node: '>=14.0.0'}
@@ -10895,38 +10778,43 @@ packages:
typescript:
optional: true
- turbo-darwin-64@2.7.6:
- resolution: {integrity: sha512-bYu0qnWju2Ha3EbIkPCk1SMLT3sltKh1P/Jy5FER6BmH++H5z+T5MHh3W1Xoers9rk4N1VdKvog9FO1pxQyjhw==}
+ tsx@4.21.0:
+ resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+
+ turbo-darwin-64@2.7.2:
+ resolution: {integrity: sha512-dxY3X6ezcT5vm3coK6VGixbrhplbQMwgNsCsvZamS/+/6JiebqW9DKt4NwpgYXhDY2HdH00I7FWs3wkVuan4rA==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.7.6:
- resolution: {integrity: sha512-KCxTf3Y1hgNLYIWRLw8bwH8Zie9RyCGoxAlXYsCBI/YNqBSR+ZZK9KYzFxAqDaVaNvTwLFv3rJRGsXOFWg4+Uw==}
+ turbo-darwin-arm64@2.7.2:
+ resolution: {integrity: sha512-1bXmuwPLqNFt3mzrtYcVx1sdJ8UYb124Bf48nIgcpMCGZy3kDhgxNv1503kmuK/37OGOZbsWSQFU4I08feIuSg==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.7.6:
- resolution: {integrity: sha512-vjoU8zIfNgvJR3cMitgw7inEoi6bmuVuFawDl5yKtxjAEhDktFdRBpGS3WojD4l3BklBbIK689ssXcGf21LxRA==}
+ turbo-linux-64@2.7.2:
+ resolution: {integrity: sha512-kP+TiiMaiPugbRlv57VGLfcjFNsFbo8H64wMBCPV2270Or2TpDCBULMzZrvEsvWFjT3pBFvToYbdp8/Kw0jAQg==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.7.6:
- resolution: {integrity: sha512-TcMpBvTqZf+1DptrVYLbZls7WY1UVNDTGaf0bo7/GCgWYv5eZHCVo4Td7kCJeDU4glbXg67REX0md0S0V6ghMg==}
+ turbo-linux-arm64@2.7.2:
+ resolution: {integrity: sha512-VDJwQ0+8zjAfbyY6boNaWfP6RIez4ypKHxwkuB6SrWbOSk+vxTyW5/hEjytTwK8w/TsbKVcMDyvpora8tEsRFw==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.7.6:
- resolution: {integrity: sha512-1/MhkYldiihjneY8QnnDMbAkHXn/udTWSVYS94EMlkE9AShozsLTTOT1gDOpX06EfEW5njP09suhMvxbvwuwpQ==}
+ turbo-windows-64@2.7.2:
+ resolution: {integrity: sha512-rPjqQXVnI6A6oxgzNEE8DNb6Vdj2Wwyhfv3oDc+YM3U9P7CAcBIlKv/868mKl4vsBtz4ouWpTQNXG8vljgJO+w==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.7.6:
- resolution: {integrity: sha512-0wDVnUJLFAWm4ZzOQFDkbyyUqaszorTGf3Rdc22IRIyJTTLd6ajqdb+cWD89UZ1RKr953+PZR1gqgWQY4PDuhA==}
+ turbo-windows-arm64@2.7.2:
+ resolution: {integrity: sha512-tcnHvBhO515OheIFWdxA+qUvZzNqqcHbLVFc1+n+TJ1rrp8prYicQtbtmsiKgMvr/54jb9jOabU62URAobnB7g==}
cpu: [arm64]
os: [win32]
- turbo@2.7.6:
- resolution: {integrity: sha512-PO9AvJLEsNLO+EYhF4zB+v10hOjsJe5kJW+S6tTbRv+TW7gf1Qer4mfjP9h3/y9h8ZiPvOrenxnEgDtFgaM5zw==}
+ turbo@2.7.2:
+ resolution: {integrity: sha512-5JIA5aYBAJSAhrhbyag1ZuMSgUZnHtI+Sq3H8D3an4fL8PeF+L1yYvbEJg47akP1PFfATMf5ehkqFnxfkmuwZQ==}
hasBin: true
tw-animate-css@1.4.0:
@@ -11007,6 +10895,12 @@ packages:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
+ undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+
+ undici-types@6.21.0:
+ resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
+
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
@@ -11060,8 +10954,8 @@ packages:
unist-util-visit-parents@6.0.2:
resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
- unist-util-visit@5.1.0:
- resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
+ unist-util-visit@5.0.0:
+ resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
@@ -11151,10 +11045,6 @@ packages:
resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
hasBin: true
- uuid@13.0.0:
- resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==}
- hasBin: true
-
uuid@7.0.3:
resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==}
hasBin: true
@@ -11352,40 +11242,6 @@ packages:
jsdom:
optional: true
- vitest@4.0.18:
- resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==}
- engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
- hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@opentelemetry/api': ^1.9.0
- '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
- '@vitest/browser-playwright': 4.0.18
- '@vitest/browser-preview': 4.0.18
- '@vitest/browser-webdriverio': 4.0.18
- '@vitest/ui': 4.0.18
- happy-dom: '*'
- jsdom: '*'
- peerDependenciesMeta:
- '@edge-runtime/vm':
- optional: true
- '@opentelemetry/api':
- optional: true
- '@types/node':
- optional: true
- '@vitest/browser-playwright':
- optional: true
- '@vitest/browser-preview':
- optional: true
- '@vitest/browser-webdriverio':
- optional: true
- '@vitest/ui':
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
-
vlq@1.0.1:
resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==}
@@ -11403,8 +11259,8 @@ packages:
warn-once@0.1.1:
resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==}
- watchpack@2.5.1:
- resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==}
+ watchpack@2.5.0:
+ resolution: {integrity: sha512-e6vZvY6xboSwLz2GD36c16+O/2Z6fKvIf4pOXptw2rY9MVwE/TXc6RGqxD3I3x0a28lwBY7DE+76uTPSsBrrCA==}
engines: {node: '>=10.13.0'}
wcwidth@1.0.1:
@@ -11414,8 +11270,12 @@ packages:
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
engines: {node: '>= 8'}
- web-vitals@5.1.0:
- resolution: {integrity: sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==}
+ web-streams-polyfill@4.0.0-beta.3:
+ resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}
+ engines: {node: '>= 14'}
+
+ web-vitals@4.2.4:
+ resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==}
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@@ -11457,7 +11317,6 @@ packages:
whatwg-encoding@2.0.0:
resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
engines: {node: '>=12'}
- deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation
whatwg-encoding@3.1.1:
resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
@@ -11692,8 +11551,8 @@ packages:
peerDependencies:
zod: ^3.25.0 || ^4.0.0
- zod@4.3.6:
- resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
+ zod@4.3.5:
+ resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==}
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -11706,67 +11565,67 @@ snapshots:
'@acemir/cssom@0.9.29': {}
- '@ai-sdk/anthropic@2.0.56(zod@4.3.6)':
+ '@ai-sdk/anthropic@2.0.56(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
- zod: 4.3.6
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
+ zod: 4.3.5
- '@ai-sdk/gateway@2.0.21(zod@4.3.6)':
+ '@ai-sdk/gateway@2.0.21(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
'@vercel/oidc': 3.0.5
- zod: 4.3.6
+ zod: 4.3.5
- '@ai-sdk/google@2.0.46(zod@4.3.6)':
+ '@ai-sdk/google@2.0.46(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
- zod: 4.3.6
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
+ zod: 4.3.5
- '@ai-sdk/mcp@0.0.11(zod@4.3.6)':
+ '@ai-sdk/mcp@0.0.11(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.18(zod@4.3.6)
+ '@ai-sdk/provider-utils': 3.0.18(zod@4.3.5)
pkce-challenge: 5.0.1
- zod: 4.3.6
+ zod: 4.3.5
- '@ai-sdk/provider-utils@3.0.18(zod@4.3.6)':
+ '@ai-sdk/provider-utils@3.0.18(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 2.0.0
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
- zod: 4.3.6
+ zod: 4.3.5
- '@ai-sdk/provider-utils@3.0.19(zod@4.3.6)':
+ '@ai-sdk/provider-utils@3.0.19(zod@4.3.5)':
dependencies:
'@ai-sdk/provider': 2.0.0
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
- zod: 4.3.6
+ zod: 4.3.5
'@ai-sdk/provider@2.0.0':
dependencies:
json-schema: 0.4.0
- '@ai-sdk/react@2.0.115(react@19.2.4)(zod@4.3.6)':
+ '@ai-sdk/react@2.0.115(react@19.2.3)(zod@4.3.5)':
dependencies:
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
- ai: 5.0.113(zod@4.3.6)
- react: 19.2.4
- swr: 2.3.8(react@19.2.4)
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
+ ai: 5.0.113(zod@4.3.5)
+ react: 19.2.3
+ swr: 2.3.8(react@19.2.3)
throttleit: 2.1.0
optionalDependencies:
- zod: 4.3.6
+ zod: 4.3.5
'@alloc/quick-lru@5.2.0': {}
- '@anthropic-ai/sdk@0.71.2(zod@4.3.6)':
+ '@anthropic-ai/sdk@0.71.2(zod@4.3.5)':
dependencies:
json-schema-to-ts: 3.1.1
optionalDependencies:
- zod: 4.3.6
+ zod: 4.3.5
'@apm-js-collab/code-transformer@0.8.2': {}
@@ -11808,7 +11667,7 @@ snapshots:
dependencies:
'@babel/highlight': 7.25.9
- '@babel/code-frame@7.28.6':
+ '@babel/code-frame@7.27.1':
dependencies:
'@babel/helper-validator-identifier': 7.28.5
js-tokens: 4.0.0
@@ -11818,15 +11677,15 @@ snapshots:
'@babel/core@7.28.5':
dependencies:
- '@babel/code-frame': 7.28.6
- '@babel/generator': 7.28.6
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
'@babel/helpers': 7.28.4
- '@babel/parser': 7.28.6
- '@babel/template': 7.28.6
- '@babel/traverse': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
'@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0
debug: 4.4.3(supports-color@10.2.2)
@@ -11836,17 +11695,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/generator@7.28.6':
+ '@babel/generator@7.28.5':
dependencies:
- '@babel/parser': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.27.3':
dependencies:
- '@babel/types': 7.28.6
+ '@babel/types': 7.28.5
'@babel/helper-compilation-targets@7.27.2':
dependencies:
@@ -11864,7 +11723,7 @@ snapshots:
'@babel/helper-optimise-call-expression': 7.27.1
'@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
semver: 6.3.1
transitivePeerDependencies:
- supports-color
@@ -11891,15 +11750,15 @@ snapshots:
'@babel/helper-member-expression-to-functions@7.28.5':
dependencies:
- '@babel/traverse': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
transitivePeerDependencies:
- supports-color
'@babel/helper-module-imports@7.27.1':
dependencies:
- '@babel/traverse': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -11908,13 +11767,13 @@ snapshots:
'@babel/core': 7.28.5
'@babel/helper-module-imports': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
'@babel/helper-optimise-call-expression@7.27.1':
dependencies:
- '@babel/types': 7.28.6
+ '@babel/types': 7.28.5
'@babel/helper-plugin-utils@7.27.1': {}
@@ -11923,7 +11782,7 @@ snapshots:
'@babel/core': 7.28.5
'@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-wrap-function': 7.28.3
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -11932,14 +11791,14 @@ snapshots:
'@babel/core': 7.28.5
'@babel/helper-member-expression-to-functions': 7.28.5
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
dependencies:
- '@babel/traverse': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -11951,16 +11810,16 @@ snapshots:
'@babel/helper-wrap-function@7.28.3':
dependencies:
- '@babel/template': 7.28.6
- '@babel/traverse': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
transitivePeerDependencies:
- supports-color
'@babel/helpers@7.28.4':
dependencies:
- '@babel/template': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
'@babel/highlight@7.25.9':
dependencies:
@@ -11969,9 +11828,9 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
- '@babel/parser@7.28.6':
+ '@babel/parser@7.28.5':
dependencies:
- '@babel/types': 7.28.6
+ '@babel/types': 7.28.5
'@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.5)':
dependencies:
@@ -12102,7 +11961,7 @@ snapshots:
'@babel/core': 7.28.5
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5)
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -12144,7 +12003,7 @@ snapshots:
'@babel/helper-globals': 7.28.0
'@babel/helper-plugin-utils': 7.27.1
'@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -12152,13 +12011,13 @@ snapshots:
dependencies:
'@babel/core': 7.28.5
'@babel/helper-plugin-utils': 7.27.1
- '@babel/template': 7.28.6
+ '@babel/template': 7.27.2
'@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)':
dependencies:
'@babel/core': 7.28.5
'@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -12186,7 +12045,7 @@ snapshots:
'@babel/core': 7.28.5
'@babel/helper-compilation-targets': 7.27.2
'@babel/helper-plugin-utils': 7.27.1
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -12231,7 +12090,7 @@ snapshots:
'@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5)
'@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5)
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -12299,7 +12158,7 @@ snapshots:
'@babel/helper-module-imports': 7.27.1
'@babel/helper-plugin-utils': 7.27.1
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
- '@babel/types': 7.28.6
+ '@babel/types': 7.28.5
transitivePeerDependencies:
- supports-color
@@ -12389,27 +12248,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/runtime@7.28.6': {}
+ '@babel/runtime@7.28.4': {}
- '@babel/template@7.28.6':
+ '@babel/template@7.27.2':
dependencies:
- '@babel/code-frame': 7.28.6
- '@babel/parser': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/code-frame': 7.27.1
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
- '@babel/traverse@7.28.6':
+ '@babel/traverse@7.28.5':
dependencies:
- '@babel/code-frame': 7.28.6
- '@babel/generator': 7.28.6
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
'@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.6
- '@babel/template': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
debug: 4.4.3(supports-color@10.2.2)
transitivePeerDependencies:
- supports-color
- '@babel/types@7.28.6':
+ '@babel/types@7.28.5':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
@@ -12579,9 +12438,9 @@ snapshots:
human-id: 4.1.3
prettier: 2.8.8
- '@cloudflare/stream-react@1.9.3(react@19.2.4)':
+ '@cloudflare/stream-react@1.9.3(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
'@cspotcode/source-map-support@0.8.1':
dependencies:
@@ -12619,42 +12478,42 @@ snapshots:
dependencies:
'@react-navigation/core': 7.13.6(react@19.1.0)
'@react-navigation/devtools': 7.0.45(react@19.1.0)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
nanoid: 5.1.6
transitivePeerDependencies:
- react
- '@dev-plugins/react-query@0.1.0(@tanstack/react-query@5.90.20(react@19.1.0))(expo@54.0.29)':
+ '@dev-plugins/react-query@0.1.0(@tanstack/react-query@5.90.12(react@19.1.0))(expo@54.0.29)':
dependencies:
- '@tanstack/react-query': 5.90.20(react@19.1.0)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@tanstack/react-query': 5.90.12(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
flatted: 3.3.3
'@discoveryjs/json-ext@0.5.7': {}
- '@dnd-kit/accessibility@3.1.1(react@19.2.4)':
+ '@dnd-kit/accessibility@3.1.1(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
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.3(react@19.2.3))(react@19.2.3)':
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.3)
+ '@dnd-kit/utilities': 3.2.2(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
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.3(react@19.2.3))(react@19.2.3))(react@19.2.3)':
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.3(react@19.2.3))(react@19.2.3)
+ '@dnd-kit/utilities': 3.2.2(react@19.2.3)
+ react: 19.2.3
tslib: 2.8.1
- '@dnd-kit/utilities@3.2.2(react@19.2.4)':
+ '@dnd-kit/utilities@3.2.2(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
tslib: 2.8.1
'@egjs/hammerjs@2.0.17':
@@ -12680,7 +12539,7 @@ snapshots:
'@emotion/babel-plugin@11.13.5':
dependencies:
'@babel/helper-module-imports': 7.27.1
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
'@emotion/hash': 0.9.2
'@emotion/memoize': 0.9.0
'@emotion/serialize': 1.3.3
@@ -12709,17 +12568,17 @@ snapshots:
'@emotion/memoize@0.9.0': {}
- '@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4)':
+ '@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
'@emotion/cache': 11.14.0
'@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3)
'@emotion/utils': 1.4.2
'@emotion/weak-memoize': 0.4.0
hoist-non-react-statics: 3.3.2
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
transitivePeerDependencies:
@@ -12735,16 +12594,16 @@ snapshots:
'@emotion/sheet@1.4.0': {}
- '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
+ '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
'@emotion/is-prop-valid': 1.4.0
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.3)
'@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3)
'@emotion/utils': 1.4.2
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
transitivePeerDependencies:
@@ -12752,9 +12611,9 @@ snapshots:
'@emotion/unitless@0.10.0': {}
- '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.4)':
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
'@emotion/utils@1.4.2': {}
@@ -12962,7 +12821,7 @@ snapshots:
'@expo-google-fonts/instrument-serif@0.4.1': {}
- '@expo/cli@54.0.19(expo-router@6.0.19)(expo@54.0.29)(graphql@16.12.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
+ '@expo/cli@54.0.19(expo-router@6.0.19)(expo@54.0.29)(graphql@16.12.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
dependencies:
'@0no-co/graphql.web': 1.2.0(graphql@16.12.0)
'@expo/code-signing-certificates': 0.0.5
@@ -12996,7 +12855,7 @@ snapshots:
connect: 3.7.0
debug: 4.4.3(supports-color@10.2.2)
env-editor: 0.4.2
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-server: 1.0.5
freeport-async: 2.0.0
getenv: 2.0.0
@@ -13029,8 +12888,8 @@ snapshots:
wrap-ansi: 7.0.0
ws: 8.18.3
optionalDependencies:
- expo-router: 6.0.19(40cf5459a2da5a2ee24052faf185eb05)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo-router: 6.0.19(daa6e6378deabbbe32c786346aac9231)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
transitivePeerDependencies:
- bufferutil
- graphql
@@ -13088,12 +12947,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
chalk: 4.1.2
optionalDependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
'@expo/env@2.0.8':
dependencies:
@@ -13141,9 +13000,9 @@ snapshots:
'@expo/metro-config@54.0.11(expo@54.0.29)':
dependencies:
- '@babel/code-frame': 7.28.6
+ '@babel/code-frame': 7.27.1
'@babel/core': 7.28.5
- '@babel/generator': 7.28.6
+ '@babel/generator': 7.28.5
'@expo/config': 12.0.12
'@expo/env': 2.0.8
'@expo/json-file': 10.0.8
@@ -13163,19 +13022,19 @@ snapshots:
postcss: 8.4.49
resolve-from: 5.0.0
optionalDependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@expo/metro-runtime@6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@expo/metro-runtime@6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
anser: 1.4.10
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
stacktrace-parser: 0.1.11
whatwg-fetch: 3.6.20
optionalDependencies:
@@ -13235,7 +13094,7 @@ snapshots:
'@expo/json-file': 10.0.8
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3(supports-color@10.2.2)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
resolve-from: 5.0.0
semver: 7.7.3
xml2js: 0.6.0
@@ -13252,18 +13111,18 @@ snapshots:
'@expo/sudo-prompt@9.3.2': {}
- '@expo/ui@0.2.0-beta.7(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@expo/ui@0.2.0-beta.7(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
sf-symbols-typescript: 2.2.0
- '@expo/vector-icons@15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@expo/vector-icons@15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
- expo-font: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-font: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
'@expo/ws-tunnel@1.0.6': {}
@@ -13285,42 +13144,41 @@ snapshots:
'@floating-ui/core': 1.7.3
'@floating-ui/utils': 0.2.10
- '@floating-ui/react-dom@2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ '@floating-ui/react-dom@2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@floating-ui/dom': 1.7.4
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
'@floating-ui/utils@0.2.10': {}
- '@google/genai@1.38.0(@modelcontextprotocol/sdk@1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.6))':
+ '@google/genai@1.33.0(@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5))':
dependencies:
google-auth-library: 10.5.0
- protobufjs: 7.5.4
ws: 8.18.3
optionalDependencies:
- '@modelcontextprotocol/sdk': 1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.6)
+ '@modelcontextprotocol/sdk': 1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5)
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@gorhom/bottom-sheet@5.2.8(@types/react@19.2.3)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@gorhom/bottom-sheet@5.2.8(@types/react@19.2.3)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@gorhom/portal': 1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@gorhom/portal': 1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
optionalDependencies:
'@types/react': 19.2.3
- '@gorhom/portal@1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@gorhom/portal@1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
nanoid: 3.3.11
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
'@hapi/hoek@9.3.0': {}
@@ -13328,15 +13186,15 @@ snapshots:
dependencies:
'@hapi/hoek': 9.3.0
- '@hono/node-server@1.19.9(hono@4.11.1)':
+ '@hono/node-server@1.19.7(hono@4.11.1)':
dependencies:
hono: 4.11.1
- '@hookform/error-message@2.0.1(react-dom@19.2.4(react@19.2.4))(react-hook-form@7.71.1(react@19.2.4))(react@19.2.4)':
+ '@hookform/error-message@2.0.1(react-dom@19.2.3(react@19.2.3))(react-hook-form@7.70.0(react@19.2.3))(react@19.2.3)':
dependencies:
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- react-hook-form: 7.71.1(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-hook-form: 7.70.0(react@19.2.3)
'@humanfs/core@0.19.1': {}
@@ -13428,12 +13286,12 @@ snapshots:
'@inquirer/ansi@1.0.2': {}
- '@inquirer/confirm@5.1.21(@types/node@24.10.9)':
+ '@inquirer/confirm@5.1.21(@types/node@22.19.3)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@24.10.9)
- '@inquirer/type': 3.0.10(@types/node@24.10.9)
+ '@inquirer/core': 10.3.2(@types/node@22.19.3)
+ '@inquirer/type': 3.0.10(@types/node@22.19.3)
optionalDependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
optional: true
'@inquirer/confirm@5.1.21(@types/node@25.0.2)':
@@ -13443,18 +13301,18 @@ snapshots:
optionalDependencies:
'@types/node': 25.0.2
- '@inquirer/core@10.3.2(@types/node@24.10.9)':
+ '@inquirer/core@10.3.2(@types/node@22.19.3)':
dependencies:
'@inquirer/ansi': 1.0.2
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@24.10.9)
+ '@inquirer/type': 3.0.10(@types/node@22.19.3)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
optional: true
'@inquirer/core@10.3.2(@types/node@25.0.2)':
@@ -13473,15 +13331,15 @@ snapshots:
'@inquirer/external-editor@1.0.3(@types/node@25.0.2)':
dependencies:
chardet: 2.1.1
- iconv-lite: 0.7.2
+ iconv-lite: 0.7.1
optionalDependencies:
'@types/node': 25.0.2
'@inquirer/figures@1.0.15': {}
- '@inquirer/type@3.0.10(@types/node@24.10.9)':
+ '@inquirer/type@3.0.10(@types/node@22.19.3)':
optionalDependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
optional: true
'@inquirer/type@3.0.10(@types/node@25.0.2)':
@@ -13522,27 +13380,27 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))':
+ '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ jest-config: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -13571,7 +13429,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -13589,7 +13447,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -13611,7 +13469,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.31
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
chalk: 4.1.2
collect-v8-coverage: 1.0.3
exit: 0.1.2
@@ -13681,7 +13539,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
'@types/yargs': 17.0.35
chalk: 4.1.2
@@ -13714,49 +13572,48 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
- '@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))':
+ '@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))':
dependencies:
'@cfworker/json-schema': 4.1.1
ansi-styles: 5.2.0
camelcase: 6.3.0
decamelize: 1.2.0
js-tiktoken: 1.0.21
- langsmith: 0.4.10(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))
+ langsmith: 0.3.87(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
mustache: 4.2.0
p-queue: 6.6.2
uuid: 10.0.0
- zod: 4.3.6
+ zod: 4.3.5
transitivePeerDependencies:
- '@opentelemetry/api'
- '@opentelemetry/exporter-trace-otlp-proto'
- '@opentelemetry/sdk-trace-base'
- openai
- '@langchain/langgraph-checkpoint@1.0.0(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))':
+ '@langchain/langgraph-checkpoint@1.0.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))':
dependencies:
- '@langchain/core': 1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))
+ '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
uuid: 10.0.0
- '@langchain/langgraph-sdk@1.5.5(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ '@langchain/langgraph-sdk@1.3.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- p-queue: 9.1.0
- p-retry: 7.1.1
- uuid: 13.0.0
+ p-queue: 6.6.2
+ p-retry: 4.6.2
+ uuid: 9.0.1
optionalDependencies:
- '@langchain/core': 1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
- '@langchain/langgraph@1.1.2(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod-to-json-schema@3.25.0(zod@4.3.6))(zod@4.3.6)':
+ '@langchain/langgraph@1.0.5(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod-to-json-schema@3.25.0(zod@4.3.5))(zod@4.3.5)':
dependencies:
- '@langchain/core': 1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))
- '@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))
- '@langchain/langgraph-sdk': 1.5.5(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@standard-schema/spec': 1.1.0
+ '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
+ '@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))
+ '@langchain/langgraph-sdk': 1.3.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
uuid: 10.0.0
- zod: 4.3.6
+ zod: 4.3.5
optionalDependencies:
- zod-to-json-schema: 3.25.0(zod@4.3.6)
+ zod-to-json-schema: 3.25.0(zod@4.3.5)
transitivePeerDependencies:
- react
- react-dom
@@ -13777,7 +13634,7 @@ snapshots:
'@manypkg/find-root@1.1.0':
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
'@types/node': 12.20.55
find-up: 4.1.0
fs-extra: 8.1.0
@@ -13788,7 +13645,7 @@ snapshots:
'@manypkg/get-packages@1.1.3':
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
'@changesets/types': 4.1.0
'@manypkg/find-root': 1.1.0
fs-extra: 8.1.0
@@ -13840,20 +13697,20 @@ snapshots:
unified: 11.0.5
unist-util-position-from-estree: 2.0.0
unist-util-stringify-position: 4.0.0
- unist-util-visit: 5.1.0
+ unist-util-visit: 5.0.0
vfile: 6.0.3
transitivePeerDependencies:
- supports-color
- '@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
'@types/mdx': 2.0.13
'@types/react': 19.2.3
- react: 19.2.4
+ react: 19.2.3
- '@modelcontextprotocol/sdk@1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.6)':
+ '@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5)':
dependencies:
- '@hono/node-server': 1.19.9(hono@4.11.1)
+ '@hono/node-server': 1.19.7(hono@4.11.1)
ajv: 8.17.1
ajv-formats: 3.0.1(ajv@8.17.1)
content-type: 1.0.5
@@ -13867,8 +13724,8 @@ snapshots:
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
raw-body: 3.0.2
- zod: 4.3.6
- zod-to-json-schema: 3.25.0(zod@4.3.6)
+ zod: 4.3.5
+ zod-to-json-schema: 3.25.0(zod@4.3.5)
optionalDependencies:
'@cfworker/json-schema': 4.1.1
transitivePeerDependencies:
@@ -13884,89 +13741,89 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
- '@mui/core-downloads-tracker@7.3.7': {}
+ '@mui/core-downloads-tracker@7.3.6': {}
- '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
+ '@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
- '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- react: 19.2.4
+ '@babel/runtime': 7.28.4
+ '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ '@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
- '@mui/core-downloads-tracker': 7.3.7
- '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
- '@mui/types': 7.4.10(@types/react@19.2.3)
- '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
+ '@babel/runtime': 7.28.4
+ '@mui/core-downloads-tracker': 7.3.6
+ '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
+ '@mui/types': 7.4.9(@types/react@19.2.3)
+ '@mui/utils': 7.3.6(@types/react@19.2.3)(react@19.2.3)
'@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.12(@types/react@19.2.3)
clsx: 2.1.1
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
react-is: 19.2.3
- react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.3)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
'@types/react': 19.2.3
- '@mui/private-theming@7.3.7(@types/react@19.2.3)(react@19.2.4)':
+ '@mui/private-theming@7.3.6(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
- '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
+ '@babel/runtime': 7.28.4
+ '@mui/utils': 7.3.6(@types/react@19.2.3)(react@19.2.3)
prop-types: 15.8.1
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(react@19.2.4)':
+ '@mui/styled-engine@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
'@emotion/cache': 11.14.0
'@emotion/serialize': 1.3.3
'@emotion/sheet': 1.4.0
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.3)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
- '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
+ '@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
- '@mui/private-theming': 7.3.7(@types/react@19.2.3)(react@19.2.4)
- '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(react@19.2.4)
- '@mui/types': 7.4.10(@types/react@19.2.3)
- '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
+ '@babel/runtime': 7.28.4
+ '@mui/private-theming': 7.3.6(@types/react@19.2.3)(react@19.2.3)
+ '@mui/styled-engine': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(react@19.2.3)
+ '@mui/types': 7.4.9(@types/react@19.2.3)
+ '@mui/utils': 7.3.6(@types/react@19.2.3)(react@19.2.3)
clsx: 2.1.1
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.3)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
'@types/react': 19.2.3
- '@mui/types@7.4.10(@types/react@19.2.3)':
+ '@mui/types@7.4.9(@types/react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
optionalDependencies:
'@types/react': 19.2.3
- '@mui/utils@7.3.7(@types/react@19.2.3)(react@19.2.4)':
+ '@mui/utils@7.3.6(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
- '@mui/types': 7.4.10(@types/react@19.2.3)
+ '@babel/runtime': 7.28.4
+ '@mui/types': 7.4.9(@types/react@19.2.3)
'@types/prop-types': 15.7.15
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.2.4
+ react: 19.2.3
react-is: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -13978,54 +13835,54 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
- '@next/bundle-analyzer@16.1.5':
+ '@next/bundle-analyzer@16.1.1':
dependencies:
webpack-bundle-analyzer: 4.10.1
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- '@next/env@16.1.5': {}
+ '@next/env@16.1.1': {}
'@next/eslint-plugin-next@16.0.10':
dependencies:
fast-glob: 3.3.1
- '@next/mdx@16.1.5(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4))':
+ '@next/mdx@16.1.1(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.3))':
dependencies:
source-map: 0.7.6
optionalDependencies:
'@mdx-js/loader': 3.1.1(webpack@5.102.1)
- '@mdx-js/react': 3.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@mdx-js/react': 3.1.1(@types/react@19.2.3)(react@19.2.3)
- '@next/swc-darwin-arm64@16.1.5':
+ '@next/swc-darwin-arm64@16.1.1':
optional: true
- '@next/swc-darwin-x64@16.1.5':
+ '@next/swc-darwin-x64@16.1.1':
optional: true
- '@next/swc-linux-arm64-gnu@16.1.5':
+ '@next/swc-linux-arm64-gnu@16.1.1':
optional: true
- '@next/swc-linux-arm64-musl@16.1.5':
+ '@next/swc-linux-arm64-musl@16.1.1':
optional: true
- '@next/swc-linux-x64-gnu@16.1.5':
+ '@next/swc-linux-x64-gnu@16.1.1':
optional: true
- '@next/swc-linux-x64-musl@16.1.5':
+ '@next/swc-linux-x64-musl@16.1.1':
optional: true
- '@next/swc-win32-arm64-msvc@16.1.5':
+ '@next/swc-win32-arm64-msvc@16.1.1':
optional: true
- '@next/swc-win32-x64-msvc@16.1.5':
+ '@next/swc-win32-x64-msvc@16.1.1':
optional: true
- '@next/third-parties@16.1.5(next@16.1.5(@babel/core@7.28.5)(@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))(react@19.2.4)':
+ '@next/third-parties@16.1.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)':
dependencies:
- next: 16.1.5(@babel/core@7.28.5)(@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)
- react: 19.2.4
+ next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
third-party-capital: 1.0.20
'@nodelib/fs.scandir@2.1.5':
@@ -14051,316 +13908,236 @@ snapshots:
'@open-draft/until@2.1.0': {}
- '@opentelemetry/api-logs@0.207.0':
- dependencies:
- '@opentelemetry/api': 1.9.0
-
'@opentelemetry/api-logs@0.208.0':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs@0.211.0':
- dependencies:
- '@opentelemetry/api': 1.9.0
-
'@opentelemetry/api@1.9.0': {}
- '@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/semantic-conventions': 1.38.0
- '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-amqplib@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/semantic-conventions': 1.39.0
-
- '@opentelemetry/exporter-logs-otlp-http@0.208.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.208.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0)
-
- '@opentelemetry/instrumentation-amqplib@0.58.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-connect@0.54.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-connect@0.52.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
'@types/connect': 3.4.38
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-dataloader@0.28.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-dataloader@0.26.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-express@0.59.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-express@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-fs@0.30.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-fs@0.28.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-generic-pool@0.54.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-generic-pool@0.52.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-graphql@0.58.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-graphql@0.56.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-hapi@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-hapi@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-http@0.211.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-http@0.208.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
forwarded-parse: 2.1.2
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-ioredis@0.59.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-ioredis@0.56.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.38.2
- '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-kafkajs@0.20.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-kafkajs@0.18.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-knex@0.55.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-knex@0.53.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-koa@0.59.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-koa@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-lru-memoizer@0.55.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-lru-memoizer@0.53.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mongodb@0.64.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mongodb@0.61.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mongoose@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mongoose@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mysql2@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mysql2@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
'@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mysql@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mysql@0.54.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@types/mysql': 2.15.27
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-pg@0.63.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-pg@0.61.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
'@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0)
'@types/pg': 8.15.6
- '@types/pg-pool': 2.0.7
+ '@types/pg-pool': 2.0.6
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-redis@0.59.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-redis@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.38.2
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-tedious@0.30.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-tedious@0.27.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
'@types/tedious': 4.0.14
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-undici@0.21.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
- transitivePeerDependencies:
- - supports-color
-
- '@opentelemetry/instrumentation@0.207.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-undici@0.19.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.207.0
- import-in-the-middle: 2.0.5
- require-in-the-middle: 8.0.1
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation@0.211.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.211.0
- import-in-the-middle: 2.0.5
+ '@opentelemetry/api-logs': 0.208.0
+ import-in-the-middle: 2.0.1
require-in-the-middle: 8.0.1
transitivePeerDependencies:
- supports-color
- '@opentelemetry/otlp-exporter-base@0.208.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0)
-
- '@opentelemetry/otlp-transformer@0.208.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.208.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-metrics': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
- protobufjs: 7.5.4
-
'@opentelemetry/redis-common@0.38.2': {}
'@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
-
- '@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
-
- '@opentelemetry/sdk-logs@0.208.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.208.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
-
- '@opentelemetry/sdk-metrics@2.2.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
'@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
-
- '@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/semantic-conventions': 1.38.0
- '@opentelemetry/semantic-conventions@1.39.0': {}
+ '@opentelemetry/semantic-conventions@1.38.0': {}
'@opentelemetry/sql-common@0.41.2(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
'@pkgjs/parseargs@0.11.0':
optional: true
@@ -14371,32 +14148,31 @@ snapshots:
dependencies:
graceful-fs: 4.2.10
- '@pnpm/npm-conf@3.0.2':
+ '@pnpm/npm-conf@2.3.1':
dependencies:
'@pnpm/config.env-replace': 1.1.0
'@pnpm/network.ca-file': 1.0.2
config-chain: 1.1.13
- '@polar-sh/sdk@0.42.5':
+ '@polar-sh/sdk@0.42.1':
dependencies:
standardwebhooks: 1.0.0
- zod: 4.3.6
+ zod: 4.3.5
'@polka/url@1.0.0-next.29': {}
'@popperjs/core@2.11.8': {}
- '@posthog/ai@7.5.4(@ai-sdk/provider@2.0.0)(@modelcontextprotocol/sdk@1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.6))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(posthog-node@5.24.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(ws@8.18.3)(zod-to-json-schema@3.25.0(zod@4.3.6))':
+ '@posthog/ai@7.3.0(@ai-sdk/provider@2.0.0)(@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(posthog-node@5.18.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(ws@8.18.3)(zod-to-json-schema@3.25.0(zod@4.3.5))':
dependencies:
- '@anthropic-ai/sdk': 0.71.2(zod@4.3.6)
- '@google/genai': 1.38.0(@modelcontextprotocol/sdk@1.25.3(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.6))
- '@langchain/core': 1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))
- '@posthog/core': 1.14.0
- langchain: 1.2.14(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod-to-json-schema@3.25.0(zod@4.3.6))
- openai: 6.16.0(ws@8.18.3)(zod@4.3.6)
- posthog-node: 5.24.2
+ '@anthropic-ai/sdk': 0.71.2(zod@4.3.5)
+ '@google/genai': 1.33.0(@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5))
+ '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
+ langchain: 1.2.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod-to-json-schema@3.25.0(zod@4.3.5))
+ openai: 6.13.0(ws@8.18.3)(zod@4.3.5)
+ posthog-node: 5.18.1
uuid: 11.1.0
- zod: 4.3.6
+ zod: 4.3.5
optionalDependencies:
'@ai-sdk/provider': 2.0.0
transitivePeerDependencies:
@@ -14412,114 +14188,89 @@ snapshots:
- ws
- zod-to-json-schema
- '@posthog/core@1.14.0':
+ '@posthog/core@1.9.0':
dependencies:
cross-spawn: 7.0.6
- '@posthog/types@1.335.3': {}
-
- '@prisma/instrumentation@7.2.0(@opentelemetry/api@1.9.0)':
+ '@prisma/instrumentation@6.19.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.207.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@protobufjs/aspromise@1.1.2': {}
-
- '@protobufjs/base64@1.1.2': {}
-
- '@protobufjs/codegen@2.0.4': {}
-
- '@protobufjs/eventemitter@1.1.0': {}
-
- '@protobufjs/fetch@1.1.0':
- dependencies:
- '@protobufjs/aspromise': 1.1.2
- '@protobufjs/inquire': 1.1.0
-
- '@protobufjs/float@1.0.2': {}
-
- '@protobufjs/inquire@1.1.0': {}
-
- '@protobufjs/path@1.1.2': {}
-
- '@protobufjs/pool@1.1.0': {}
-
- '@protobufjs/utf8@1.1.0': {}
-
'@radix-ui/number@1.1.1': {}
'@radix-ui/primitive@1.1.3': {}
- '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14536,14 +14287,14 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14554,9 +14305,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -14566,9 +14317,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-context@1.1.2(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-context@1.1.2(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -14594,24 +14345,24 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
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.3)(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14622,9 +14373,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-direction@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-direction@1.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -14641,30 +14392,30 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14675,9 +14426,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -14692,13 +14443,13 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14710,85 +14461,85 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-id@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-id@1.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- react: 19.2.4
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
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.3)(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
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.3)(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@floating-ui/react-dom': 2.1.6(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.3)
'@radix-ui/rect': 1.1.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14803,12 +14554,12 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14823,12 +14574,12 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14842,38 +14593,38 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(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.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-slot': 1.2.4(@types/react@19.2.3)(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.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14895,57 +14646,57 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
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.3)(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14964,31 +14715,31 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-slot@1.2.3(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-slot@1.2.3(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- react: 19.2.4
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-slot@1.2.4(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-slot@1.2.4(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- react: 19.2.4
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -15009,84 +14760,84 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -15097,9 +14848,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -15111,11 +14862,11 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- react: 19.2.4
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -15126,10 +14877,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- react: 19.2.4
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -15140,10 +14891,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- react: 19.2.4
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -15153,123 +14904,123 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
'@radix-ui/rect': 1.1.1
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-size@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-size@1.1.1(@types/react@19.2.3)(react@19.2.3)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- react: 19.2.4
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
'@radix-ui/rect@1.1.1': {}
- '@react-native-async-storage/async-storage@2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
+ '@react-native-async-storage/async-storage@2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
dependencies:
merge-options: 3.0.4
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- '@react-native-community/cli-clean@20.1.0':
+ '@react-native-community/cli-clean@20.0.2':
dependencies:
- '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-tools': 20.0.2
+ chalk: 4.1.2
execa: 5.1.1
fast-glob: 3.3.3
- picocolors: 1.1.1
- '@react-native-community/cli-config-android@20.1.0':
+ '@react-native-community/cli-config-android@20.0.2':
dependencies:
- '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-tools': 20.0.2
+ chalk: 4.1.2
fast-glob: 3.3.3
fast-xml-parser: 4.5.3
- picocolors: 1.1.1
- '@react-native-community/cli-config-apple@20.1.0':
+ '@react-native-community/cli-config-apple@20.0.2':
dependencies:
- '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-tools': 20.0.2
+ chalk: 4.1.2
execa: 5.1.1
fast-glob: 3.3.3
- picocolors: 1.1.1
- '@react-native-community/cli-config@20.1.0(typescript@5.9.3)':
+ '@react-native-community/cli-config@20.0.2(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-tools': 20.0.2
+ chalk: 4.1.2
cosmiconfig: 9.0.0(typescript@5.9.3)
deepmerge: 4.3.1
fast-glob: 3.3.3
joi: 17.13.3
- picocolors: 1.1.1
transitivePeerDependencies:
- typescript
- '@react-native-community/cli-doctor@20.1.0(typescript@5.9.3)':
+ '@react-native-community/cli-doctor@20.0.2(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-config': 20.1.0(typescript@5.9.3)
- '@react-native-community/cli-platform-android': 20.1.0
- '@react-native-community/cli-platform-apple': 20.1.0
- '@react-native-community/cli-platform-ios': 20.1.0
- '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-config': 20.0.2(typescript@5.9.3)
+ '@react-native-community/cli-platform-android': 20.0.2
+ '@react-native-community/cli-platform-apple': 20.0.2
+ '@react-native-community/cli-platform-ios': 20.0.2
+ '@react-native-community/cli-tools': 20.0.2
+ chalk: 4.1.2
command-exists: 1.2.9
deepmerge: 4.3.1
envinfo: 7.21.0
execa: 5.1.1
node-stream-zip: 1.15.0
ora: 5.4.1
- picocolors: 1.1.1
semver: 7.7.3
wcwidth: 1.0.1
yaml: 2.8.2
transitivePeerDependencies:
- typescript
- '@react-native-community/cli-platform-android@20.1.0':
+ '@react-native-community/cli-platform-android@20.0.2':
dependencies:
- '@react-native-community/cli-config-android': 20.1.0
- '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-config-android': 20.0.2
+ '@react-native-community/cli-tools': 20.0.2
+ chalk: 4.1.2
execa: 5.1.1
logkitty: 0.7.1
- picocolors: 1.1.1
- '@react-native-community/cli-platform-apple@20.1.0':
+ '@react-native-community/cli-platform-apple@20.0.2':
dependencies:
- '@react-native-community/cli-config-apple': 20.1.0
- '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-config-apple': 20.0.2
+ '@react-native-community/cli-tools': 20.0.2
+ chalk: 4.1.2
execa: 5.1.1
fast-xml-parser: 4.5.3
- picocolors: 1.1.1
- '@react-native-community/cli-platform-ios@20.1.0':
+ '@react-native-community/cli-platform-ios@20.0.2':
dependencies:
- '@react-native-community/cli-platform-apple': 20.1.0
+ '@react-native-community/cli-platform-apple': 20.0.2
- '@react-native-community/cli-server-api@20.1.0':
+ '@react-native-community/cli-server-api@20.0.2':
dependencies:
- '@react-native-community/cli-tools': 20.1.0
+ '@react-native-community/cli-tools': 20.0.2
body-parser: 1.20.4
compression: 1.8.1
connect: 3.7.0
@@ -15284,38 +15035,38 @@ snapshots:
- supports-color
- utf-8-validate
- '@react-native-community/cli-tools@20.1.0':
+ '@react-native-community/cli-tools@20.0.2':
dependencies:
'@vscode/sudo-prompt': 9.3.1
appdirsjs: 1.2.7
+ chalk: 4.1.2
execa: 5.1.1
find-up: 5.0.0
launch-editor: 2.12.0
mime: 2.6.0
ora: 5.4.1
- picocolors: 1.1.1
prompts: 2.4.2
semver: 7.7.3
- '@react-native-community/cli-types@20.1.0':
+ '@react-native-community/cli-types@20.0.2':
dependencies:
joi: 17.13.3
- '@react-native-community/cli@20.1.0(typescript@5.9.3)':
+ '@react-native-community/cli@20.0.2(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-clean': 20.1.0
- '@react-native-community/cli-config': 20.1.0(typescript@5.9.3)
- '@react-native-community/cli-doctor': 20.1.0(typescript@5.9.3)
- '@react-native-community/cli-server-api': 20.1.0
- '@react-native-community/cli-tools': 20.1.0
- '@react-native-community/cli-types': 20.1.0
+ '@react-native-community/cli-clean': 20.0.2
+ '@react-native-community/cli-config': 20.0.2(typescript@5.9.3)
+ '@react-native-community/cli-doctor': 20.0.2(typescript@5.9.3)
+ '@react-native-community/cli-server-api': 20.0.2
+ '@react-native-community/cli-tools': 20.0.2
+ '@react-native-community/cli-types': 20.0.2
+ chalk: 4.1.2
commander: 9.5.0
deepmerge: 4.3.1
execa: 5.1.1
find-up: 5.0.0
fs-extra: 8.1.0
graceful-fs: 4.2.11
- picocolors: 1.1.1
prompts: 2.4.2
semver: 7.7.3
transitivePeerDependencies:
@@ -15324,15 +15075,15 @@ snapshots:
- typescript
- utf-8-validate
- '@react-native-community/netinfo@11.4.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
+ '@react-native-community/netinfo@11.4.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
dependencies:
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
'@react-native/assets-registry@0.81.5': {}
'@react-native/babel-plugin-codegen@0.81.5(@babel/core@7.28.5)':
dependencies:
- '@babel/traverse': 7.28.6
+ '@babel/traverse': 7.28.5
'@react-native/codegen': 0.81.5(@babel/core@7.28.5)
transitivePeerDependencies:
- '@babel/core'
@@ -15380,7 +15131,7 @@ snapshots:
'@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5)
'@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
'@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5)
- '@babel/template': 7.28.6
+ '@babel/template': 7.27.2
'@react-native/babel-plugin-codegen': 0.81.5(@babel/core@7.28.5)
babel-plugin-syntax-hermes-parser: 0.29.1
babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.28.5)
@@ -15391,14 +15142,14 @@ snapshots:
'@react-native/codegen@0.81.5(@babel/core@7.28.5)':
dependencies:
'@babel/core': 7.28.5
- '@babel/parser': 7.28.6
+ '@babel/parser': 7.28.5
glob: 7.2.3
hermes-parser: 0.29.1
invariant: 2.2.4
nullthrows: 1.1.1
yargs: 17.7.2
- '@react-native/community-cli-plugin@0.81.5(@react-native-community/cli@20.1.0(typescript@5.9.3))':
+ '@react-native/community-cli-plugin@0.81.5(@react-native-community/cli@20.0.2(typescript@5.9.3))':
dependencies:
'@react-native/dev-middleware': 0.81.5
debug: 4.4.3(supports-color@10.2.2)
@@ -15408,7 +15159,7 @@ snapshots:
metro-core: 0.83.3
semver: 7.7.3
optionalDependencies:
- '@react-native-community/cli': 20.1.0(typescript@5.9.3)
+ '@react-native-community/cli': 20.0.2(typescript@5.9.3)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -15444,24 +15195,24 @@ snapshots:
'@react-native/normalize-colors@0.81.5': {}
- '@react-native/virtualized-lists@0.81.5(@types/react@19.2.3)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-native/virtualized-lists@0.81.5(@types/react@19.2.3)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
invariant: 2.2.4
nullthrows: 1.1.1
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
optionalDependencies:
'@types/react': 19.2.3
- '@react-navigation/bottom-tabs@7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/bottom-tabs@7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/elements': 2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -15485,38 +15236,38 @@ snapshots:
react: 19.1.0
stacktrace-parser: 0.1.11
- '@react-navigation/elements@2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/elements@2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
use-latest-callback: 0.2.6(react@19.1.0)
use-sync-external-store: 1.6.0(react@19.1.0)
- '@react-navigation/native-stack@7.8.6(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native-stack@7.8.6(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/elements': 2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
warn-once: 0.1.1
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
'@react-navigation/core': 7.13.6(react@19.1.0)
escape-string-regexp: 4.0.0
fast-deep-equal: 3.1.3
nanoid: 3.3.11
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
use-latest-callback: 0.2.6(react@19.1.0)
'@react-navigation/routers@7.5.2':
@@ -15546,7 +15297,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.3)(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.3)(react@19.2.3)(redux@5.0.1))(react@19.2.3)':
dependencies:
'@standard-schema/spec': 1.1.0
'@standard-schema/utils': 0.3.0
@@ -15555,8 +15306,8 @@ 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.3)(react@19.2.4)(redux@5.0.1)
+ react: 19.2.3
+ react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.3)(redux@5.0.1)
'@rolldown/pluginutils@1.0.0-beta.53': {}
@@ -15652,42 +15403,40 @@ snapshots:
dependencies:
'@sentry/core': 10.26.0
- '@sentry-internal/browser-utils@10.37.0':
+ '@sentry-internal/browser-utils@10.32.1':
dependencies:
- '@sentry/core': 10.37.0
+ '@sentry/core': 10.32.1
'@sentry-internal/feedback@10.26.0':
dependencies:
'@sentry/core': 10.26.0
- '@sentry-internal/feedback@10.37.0':
+ '@sentry-internal/feedback@10.32.1':
dependencies:
- '@sentry/core': 10.37.0
+ '@sentry/core': 10.32.1
'@sentry-internal/replay-canvas@10.26.0':
dependencies:
'@sentry-internal/replay': 10.26.0
'@sentry/core': 10.26.0
- '@sentry-internal/replay-canvas@10.37.0':
+ '@sentry-internal/replay-canvas@10.32.1':
dependencies:
- '@sentry-internal/replay': 10.37.0
- '@sentry/core': 10.37.0
+ '@sentry-internal/replay': 10.32.1
+ '@sentry/core': 10.32.1
'@sentry-internal/replay@10.26.0':
dependencies:
'@sentry-internal/browser-utils': 10.26.0
'@sentry/core': 10.26.0
- '@sentry-internal/replay@10.37.0':
+ '@sentry-internal/replay@10.32.1':
dependencies:
- '@sentry-internal/browser-utils': 10.37.0
- '@sentry/core': 10.37.0
+ '@sentry-internal/browser-utils': 10.32.1
+ '@sentry/core': 10.32.1
'@sentry/babel-plugin-component-annotate@4.6.1': {}
- '@sentry/babel-plugin-component-annotate@4.8.0': {}
-
'@sentry/browser@10.26.0':
dependencies:
'@sentry-internal/browser-utils': 10.26.0
@@ -15696,18 +15445,18 @@ snapshots:
'@sentry-internal/replay-canvas': 10.26.0
'@sentry/core': 10.26.0
- '@sentry/browser@10.37.0':
+ '@sentry/browser@10.32.1':
dependencies:
- '@sentry-internal/browser-utils': 10.37.0
- '@sentry-internal/feedback': 10.37.0
- '@sentry-internal/replay': 10.37.0
- '@sentry-internal/replay-canvas': 10.37.0
- '@sentry/core': 10.37.0
+ '@sentry-internal/browser-utils': 10.32.1
+ '@sentry-internal/feedback': 10.32.1
+ '@sentry-internal/replay': 10.32.1
+ '@sentry-internal/replay-canvas': 10.32.1
+ '@sentry/core': 10.32.1
- '@sentry/bundler-plugin-core@4.8.0':
+ '@sentry/bundler-plugin-core@4.6.1':
dependencies:
'@babel/core': 7.28.5
- '@sentry/babel-plugin-component-annotate': 4.8.0
+ '@sentry/babel-plugin-component-annotate': 4.6.1
'@sentry/cli': 2.58.4
dotenv: 16.6.1
find-up: 5.0.0
@@ -15808,22 +15557,23 @@ snapshots:
'@sentry/core@10.26.0': {}
- '@sentry/core@10.37.0': {}
+ '@sentry/core@10.32.1': {}
- '@sentry/nextjs@10.37.0(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(next@16.1.5(@babel/core@7.28.5)(@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))(react@19.2.4)(webpack@5.102.1)':
+ '@sentry/nextjs@10.32.1(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.102.1)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/semantic-conventions': 1.39.0
+ '@opentelemetry/semantic-conventions': 1.38.0
'@rollup/plugin-commonjs': 28.0.1(rollup@4.53.5)
- '@sentry-internal/browser-utils': 10.37.0
- '@sentry/bundler-plugin-core': 4.8.0
- '@sentry/core': 10.37.0
- '@sentry/node': 10.37.0
- '@sentry/opentelemetry': 10.37.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)
- '@sentry/react': 10.37.0(react@19.2.4)
- '@sentry/vercel-edge': 10.37.0
- '@sentry/webpack-plugin': 4.8.0(webpack@5.102.1)
- next: 16.1.5(@babel/core@7.28.5)(@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)
+ '@sentry-internal/browser-utils': 10.32.1
+ '@sentry/bundler-plugin-core': 4.6.1
+ '@sentry/core': 10.32.1
+ '@sentry/node': 10.32.1
+ '@sentry/opentelemetry': 10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ '@sentry/react': 10.32.1(react@19.2.3)
+ '@sentry/vercel-edge': 10.32.1
+ '@sentry/webpack-plugin': 4.6.1(webpack@5.102.1)
+ next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ resolve: 1.22.8
rollup: 4.53.5
stacktrace-parser: 0.1.11
transitivePeerDependencies:
@@ -15835,72 +15585,72 @@ snapshots:
- supports-color
- webpack
- '@sentry/node-core@10.37.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.211.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)':
+ '@sentry/node-core@10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
dependencies:
'@apm-js-collab/tracing-hooks': 0.3.1
'@opentelemetry/api': 1.9.0
- '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
- '@sentry/core': 10.37.0
- '@sentry/opentelemetry': 10.37.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)
- import-in-the-middle: 2.0.5
+ '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
+ '@sentry/core': 10.32.1
+ '@sentry/opentelemetry': 10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ import-in-the-middle: 2.0.1
transitivePeerDependencies:
- supports-color
- '@sentry/node@10.37.0':
+ '@sentry/node@10.32.1':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-amqplib': 0.58.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-connect': 0.54.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-dataloader': 0.28.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-express': 0.59.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-fs': 0.30.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-generic-pool': 0.54.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-graphql': 0.58.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-hapi': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-http': 0.211.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-ioredis': 0.59.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-kafkajs': 0.20.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-knex': 0.55.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-koa': 0.59.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-lru-memoizer': 0.55.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mongodb': 0.64.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mongoose': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mysql': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mysql2': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-pg': 0.63.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-redis': 0.59.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-tedious': 0.30.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-undici': 0.21.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
- '@prisma/instrumentation': 7.2.0(@opentelemetry/api@1.9.0)
- '@sentry/core': 10.37.0
- '@sentry/node-core': 10.37.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.211.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)
- '@sentry/opentelemetry': 10.37.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)
- import-in-the-middle: 2.0.5
+ '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-amqplib': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-connect': 0.52.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-dataloader': 0.26.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-express': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-fs': 0.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-generic-pool': 0.52.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-graphql': 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-hapi': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-http': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-ioredis': 0.56.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-kafkajs': 0.18.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-knex': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-koa': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-lru-memoizer': 0.53.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongodb': 0.61.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongoose': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql': 0.54.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql2': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-pg': 0.61.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-redis': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-tedious': 0.27.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-undici': 0.19.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
+ '@prisma/instrumentation': 6.19.0(@opentelemetry/api@1.9.0)
+ '@sentry/core': 10.32.1
+ '@sentry/node-core': 10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ '@sentry/opentelemetry': 10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ import-in-the-middle: 2.0.1
minimatch: 9.0.5
transitivePeerDependencies:
- supports-color
- '@sentry/opentelemetry@10.37.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)':
+ '@sentry/opentelemetry@10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.39.0
- '@sentry/core': 10.37.0
+ '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
+ '@sentry/core': 10.32.1
- '@sentry/react-native@7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@sentry/react-native@7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
'@sentry/babel-plugin-component-annotate': 4.6.1
'@sentry/browser': 10.26.0
@@ -15909,9 +15659,9 @@ snapshots:
'@sentry/react': 10.26.0(react@19.1.0)
'@sentry/types': 10.26.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
optionalDependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- encoding
- supports-color
@@ -15923,25 +15673,26 @@ snapshots:
hoist-non-react-statics: 3.3.2
react: 19.1.0
- '@sentry/react@10.37.0(react@19.2.4)':
+ '@sentry/react@10.32.1(react@19.2.3)':
dependencies:
- '@sentry/browser': 10.37.0
- '@sentry/core': 10.37.0
- react: 19.2.4
+ '@sentry/browser': 10.32.1
+ '@sentry/core': 10.32.1
+ hoist-non-react-statics: 3.3.2
+ react: 19.2.3
'@sentry/types@10.26.0':
dependencies:
'@sentry/core': 10.26.0
- '@sentry/vercel-edge@10.37.0':
+ '@sentry/vercel-edge@10.32.1':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
- '@sentry/core': 10.37.0
+ '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+ '@sentry/core': 10.32.1
- '@sentry/webpack-plugin@4.8.0(webpack@5.102.1)':
+ '@sentry/webpack-plugin@4.6.1(webpack@5.102.1)':
dependencies:
- '@sentry/bundler-plugin-core': 4.8.0
+ '@sentry/bundler-plugin-core': 4.6.1
unplugin: 1.0.1
uuid: 9.0.1
webpack: 5.102.1
@@ -15949,68 +15700,68 @@ snapshots:
- encoding
- supports-color
- '@shikijs/core@3.21.0':
+ '@shikijs/core@3.20.0':
dependencies:
- '@shikijs/types': 3.21.0
+ '@shikijs/types': 3.20.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
- '@shikijs/engine-javascript@3.21.0':
+ '@shikijs/engine-javascript@3.20.0':
dependencies:
- '@shikijs/types': 3.21.0
+ '@shikijs/types': 3.20.0
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 4.3.4
- '@shikijs/engine-oniguruma@3.21.0':
+ '@shikijs/engine-oniguruma@3.20.0':
dependencies:
- '@shikijs/types': 3.21.0
+ '@shikijs/types': 3.20.0
'@shikijs/vscode-textmate': 10.0.2
- '@shikijs/langs@3.21.0':
+ '@shikijs/langs@3.20.0':
dependencies:
- '@shikijs/types': 3.21.0
+ '@shikijs/types': 3.20.0
- '@shikijs/rehype@3.21.0':
+ '@shikijs/rehype@3.20.0':
dependencies:
- '@shikijs/types': 3.21.0
+ '@shikijs/types': 3.20.0
'@types/hast': 3.0.4
hast-util-to-string: 3.0.1
- shiki: 3.21.0
+ shiki: 3.20.0
unified: 11.0.5
- unist-util-visit: 5.1.0
+ unist-util-visit: 5.0.0
- '@shikijs/themes@3.21.0':
+ '@shikijs/themes@3.20.0':
dependencies:
- '@shikijs/types': 3.21.0
+ '@shikijs/types': 3.20.0
- '@shikijs/types@3.21.0':
+ '@shikijs/types@3.20.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
'@shikijs/vscode-textmate@10.0.2': {}
- '@shopify/flash-list@2.0.2(@babel/runtime@7.28.6)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@shopify/flash-list@2.0.2(@babel/runtime@7.28.4)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
tslib: 2.8.1
- '@shopify/react-native-skia@2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@shopify/react-native-skia@2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
canvaskit-wasm: 0.40.0
react: 19.1.0
react-reconciler: 0.31.0(react@19.1.0)
optionalDependencies:
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@shopify/restyle@2.4.5(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@shopify/restyle@2.4.5(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
'@sideway/address@4.1.5':
dependencies:
@@ -16038,12 +15789,12 @@ snapshots:
'@standard-schema/utils@0.3.0': {}
- '@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ '@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@stripe/stripe-js': 7.9.0
prop-types: 15.8.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
'@stripe/stripe-js@7.9.0': {}
@@ -16130,30 +15881,32 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 4.1.18
- '@tanstack/query-core@5.90.20': {}
+ '@tanstack/query-core@5.90.12': {}
- '@tanstack/react-query@5.90.20(react@19.1.0)':
+ '@tanstack/query-core@5.90.16': {}
+
+ '@tanstack/react-query@5.90.12(react@19.1.0)':
dependencies:
- '@tanstack/query-core': 5.90.20
+ '@tanstack/query-core': 5.90.12
react: 19.1.0
- '@tanstack/react-query@5.90.20(react@19.2.4)':
+ '@tanstack/react-query@5.90.16(react@19.2.3)':
dependencies:
- '@tanstack/query-core': 5.90.20
- react: 19.2.4
+ '@tanstack/query-core': 5.90.16
+ react: 19.2.3
- '@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.3(react@19.2.3))(react@19.2.3)':
dependencies:
'@tanstack/table-core': 8.21.3
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
'@tanstack/table-core@8.21.3': {}
'@testing-library/dom@10.4.1':
dependencies:
- '@babel/code-frame': 7.28.6
- '@babel/runtime': 7.28.6
+ '@babel/code-frame': 7.27.1
+ '@babel/runtime': 7.28.4
'@types/aria-query': 5.0.4
aria-query: 5.3.0
dom-accessibility-api: 0.5.16
@@ -16161,12 +15914,12 @@ snapshots:
picocolors: 1.1.1
pretty-format: 27.5.1
- '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ '@testing-library/react@16.3.1(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
'@testing-library/dom': 10.4.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -16190,24 +15943,24 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
'@types/babel__generator': 7.27.0
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.28.0
'@types/babel__generator@7.27.0':
dependencies:
- '@babel/types': 7.28.6
+ '@babel/types': 7.28.5
'@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
'@types/babel__traverse@7.28.0':
dependencies:
- '@babel/types': 7.28.6
+ '@babel/types': 7.28.5
'@types/big.js@6.2.2': {}
@@ -16218,7 +15971,7 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
'@types/d3-array@3.2.2': {}
@@ -16365,7 +16118,7 @@ snapshots:
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
'@types/hammerjs@2.0.46': {}
@@ -16392,7 +16145,7 @@ snapshots:
'@types/jsdom@20.0.1':
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
'@types/tough-cookie': 4.0.5
parse5: 7.3.0
@@ -16418,13 +16171,22 @@ snapshots:
'@types/mysql@2.15.27':
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
+
+ '@types/node-fetch@2.6.13':
+ dependencies:
+ '@types/node': 22.19.3
+ form-data: 4.0.5
'@types/node@12.20.55': {}
- '@types/node@24.10.9':
+ '@types/node@18.19.130':
dependencies:
- undici-types: 7.16.0
+ undici-types: 5.26.5
+
+ '@types/node@22.19.3':
+ dependencies:
+ undici-types: 6.21.0
'@types/node@25.0.2':
dependencies:
@@ -16433,13 +16195,13 @@ snapshots:
'@types/parse-json@4.0.2': {}
- '@types/pg-pool@2.0.7':
+ '@types/pg-pool@2.0.6':
dependencies:
'@types/pg': 8.15.6
'@types/pg@8.15.6':
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
pg-protocol: 1.10.3
pg-types: 2.2.0
@@ -16447,7 +16209,7 @@ snapshots:
'@types/qrcode@1.5.6':
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
'@types/react-dom@19.2.3(@types/react@19.2.3)':
dependencies:
@@ -16469,21 +16231,20 @@ snapshots:
dependencies:
csstype: 3.2.3
+ '@types/retry@0.12.0': {}
+
'@types/stack-utils@2.0.3': {}
'@types/statuses@2.0.6': {}
'@types/tedious@4.0.14':
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
'@types/tinycolor2@1.4.6': {}
'@types/tough-cookie@4.0.5': {}
- '@types/trusted-types@2.0.7':
- optional: true
-
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
@@ -16492,7 +16253,7 @@ snapshots:
'@types/uuid@10.0.0': {}
- '@types/web@0.0.323': {}
+ '@types/web@0.0.312': {}
'@types/yargs-parser@21.0.3': {}
@@ -16725,7 +16486,7 @@ snapshots:
'@vercel/oidc@3.0.5': {}
- '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))':
+ '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@babel/core': 7.28.5
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
@@ -16733,7 +16494,7 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-beta.53
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
- vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
@@ -16752,41 +16513,23 @@ snapshots:
chai: 5.3.3
tinyrainbow: 2.0.0
- '@vitest/expect@4.0.18':
- dependencies:
- '@standard-schema/spec': 1.1.0
- '@types/chai': 5.2.3
- '@vitest/spy': 4.0.18
- '@vitest/utils': 4.0.18
- chai: 6.2.2
- tinyrainbow: 3.0.3
-
- '@vitest/mocker@2.1.9(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0))':
+ '@vitest/mocker@2.1.9(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1))':
dependencies:
'@vitest/spy': 2.1.9
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
msw: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
- vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
+ vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1)
- '@vitest/mocker@3.2.4(msw@2.12.7(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))':
+ '@vitest/mocker@3.2.4(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- msw: 2.12.7(@types/node@24.10.9)(typescript@5.9.3)
- vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
-
- '@vitest/mocker@4.0.18(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))':
- dependencies:
- '@vitest/spy': 4.0.18
- estree-walker: 3.0.3
- magic-string: 0.30.21
- optionalDependencies:
- msw: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
- vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
+ msw: 2.12.7(@types/node@22.19.3)(typescript@5.9.3)
+ vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/pretty-format@2.1.9':
dependencies:
@@ -16796,10 +16539,6 @@ snapshots:
dependencies:
tinyrainbow: 2.0.0
- '@vitest/pretty-format@4.0.18':
- dependencies:
- tinyrainbow: 3.0.3
-
'@vitest/runner@2.1.9':
dependencies:
'@vitest/utils': 2.1.9
@@ -16811,11 +16550,6 @@ snapshots:
pathe: 2.0.3
strip-literal: 3.1.0
- '@vitest/runner@4.0.18':
- dependencies:
- '@vitest/utils': 4.0.18
- pathe: 2.0.3
-
'@vitest/snapshot@2.1.9':
dependencies:
'@vitest/pretty-format': 2.1.9
@@ -16828,12 +16562,6 @@ snapshots:
magic-string: 0.30.21
pathe: 2.0.3
- '@vitest/snapshot@4.0.18':
- dependencies:
- '@vitest/pretty-format': 4.0.18
- magic-string: 0.30.21
- pathe: 2.0.3
-
'@vitest/spy@2.1.9':
dependencies:
tinyspy: 3.0.2
@@ -16842,8 +16570,6 @@ snapshots:
dependencies:
tinyspy: 4.0.4
- '@vitest/spy@4.0.18': {}
-
'@vitest/ui@3.2.4(vitest@3.2.4)':
dependencies:
'@vitest/utils': 3.2.4
@@ -16853,7 +16579,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.15
tinyrainbow: 2.0.0
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.9)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.9)(typescript@5.9.3))(terser@5.46.0)(yaml@2.8.2)
+ vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/utils@2.1.9':
dependencies:
@@ -16867,11 +16593,6 @@ snapshots:
loupe: 3.2.1
tinyrainbow: 2.0.0
- '@vitest/utils@4.0.18':
- dependencies:
- '@vitest/pretty-format': 4.0.18
- tinyrainbow: 3.0.3
-
'@vscode/sudo-prompt@9.3.1': {}
'@webassemblyjs/ast@1.14.1':
@@ -17011,13 +16732,17 @@ snapshots:
agent-base@7.1.4: {}
- ai@5.0.113(zod@4.3.6):
+ agentkeepalive@4.6.0:
dependencies:
- '@ai-sdk/gateway': 2.0.21(zod@4.3.6)
+ humanize-ms: 1.2.1
+
+ ai@5.0.113(zod@4.3.5):
+ dependencies:
+ '@ai-sdk/gateway': 2.0.21(zod@4.3.5)
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
'@opentelemetry/api': 1.9.0
- zod: 4.3.6
+ zod: 4.3.5
ajv-formats@2.1.1(ajv@8.17.1):
optionalDependencies:
@@ -17248,14 +16973,14 @@ snapshots:
babel-plugin-jest-hoist@29.6.3:
dependencies:
- '@babel/template': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
'@types/babel__core': 7.20.5
'@types/babel__traverse': 7.28.0
babel-plugin-macros@3.1.0:
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
cosmiconfig: 7.1.0
resolve: 1.22.11
@@ -17285,7 +17010,7 @@ snapshots:
babel-plugin-react-compiler@1.0.0:
dependencies:
- '@babel/types': 7.28.6
+ '@babel/types': 7.28.5
babel-plugin-react-native-web@0.21.2: {}
@@ -17318,7 +17043,7 @@ snapshots:
'@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5)
- babel-preset-expo@54.0.8(@babel/core@7.28.5)(@babel/runtime@7.28.6)(expo@54.0.29)(react-refresh@0.14.2):
+ babel-preset-expo@54.0.8(@babel/core@7.28.5)(@babel/runtime@7.28.4)(expo@54.0.29)(react-refresh@0.14.2):
dependencies:
'@babel/helper-module-imports': 7.27.1
'@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.5)
@@ -17344,8 +17069,8 @@ snapshots:
react-refresh: 0.14.2
resolve-from: 5.0.0
optionalDependencies:
- '@babel/runtime': 7.28.6
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@babel/runtime': 7.28.4
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@babel/core'
- supports-color
@@ -17419,7 +17144,7 @@ snapshots:
content-type: 1.0.5
debug: 4.4.3(supports-color@10.2.2)
http-errors: 2.0.1
- iconv-lite: 0.7.2
+ iconv-lite: 0.7.1
on-finished: 2.4.1
qs: 6.14.0
raw-body: 3.0.2
@@ -17525,8 +17250,6 @@ snapshots:
loupe: 3.2.1
pathval: 2.0.1
- chai@6.2.2: {}
-
chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
@@ -17581,7 +17304,7 @@ snapshots:
chrome-launcher@0.15.2:
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -17592,7 +17315,7 @@ snapshots:
chromium-edge-launcher@0.2.0:
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -17607,8 +17330,6 @@ snapshots:
cjs-module-lexer@1.4.3: {}
- cjs-module-lexer@2.2.0: {}
-
class-variance-authority@0.7.1:
dependencies:
clsx: 2.1.1
@@ -17643,14 +17364,14 @@ snapshots:
clsx@2.1.1: {}
- cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.3)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
transitivePeerDependencies:
- '@types/react'
- '@types/react-dom'
@@ -17801,15 +17522,17 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
- crawler-user-agents@1.26.0: {}
+ countries-list@3.2.2: {}
- create-jest@29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3)):
+ crawler-user-agents@1.24.0: {}
+
+ create-jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ jest-config: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -18095,7 +17818,7 @@ snapshots:
dom-helpers@5.2.1:
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
csstype: 3.2.3
dom-serializer@2.0.0:
@@ -18116,10 +17839,6 @@ snapshots:
dependencies:
domelementtype: 2.3.0
- dompurify@3.3.1:
- optionalDependencies:
- '@types/trusted-types': 2.0.7
-
domutils@3.2.2:
dependencies:
dom-serializer: 2.0.0
@@ -18493,11 +18212,11 @@ snapshots:
eslint-plugin-react-hooks@7.0.1(eslint@9.39.2(jiti@2.6.1)):
dependencies:
'@babel/core': 7.28.5
- '@babel/parser': 7.28.6
+ '@babel/parser': 7.28.5
eslint: 9.39.2(jiti@2.6.1)
hermes-parser: 0.25.1
- zod: 4.3.6
- zod-validation-error: 4.0.2(zod@4.3.6)
+ zod: 4.3.5
+ zod-validation-error: 4.0.2(zod@4.3.5)
transitivePeerDependencies:
- supports-color
@@ -18545,11 +18264,11 @@ snapshots:
string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
- eslint-plugin-turbo@2.6.3(eslint@9.39.2(jiti@2.6.1))(turbo@2.7.6):
+ eslint-plugin-turbo@2.6.3(eslint@9.39.2(jiti@2.6.1))(turbo@2.7.2):
dependencies:
dotenv: 16.0.3
eslint: 9.39.2(jiti@2.6.1)
- turbo: 2.7.6
+ turbo: 2.7.2
eslint-scope@5.1.1:
dependencies:
@@ -18718,7 +18437,7 @@ snapshots:
eventemitter3@4.0.7: {}
- eventemitter3@5.0.4: {}
+ eventemitter3@5.0.1: {}
events@3.3.0: {}
@@ -18756,61 +18475,61 @@ snapshots:
expo-application@7.0.8(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-asset@12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-asset@12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/image-utils': 0.8.8
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
transitivePeerDependencies:
- supports-color
- expo-auth-session@7.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-auth-session@7.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
expo-application: 7.0.8(expo@54.0.29)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
expo-crypto: 15.0.8(expo@54.0.29)
- expo-linking: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-web-browser: 15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-linking: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-web-browser: 15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
transitivePeerDependencies:
- expo
- supports-color
- expo-blur@15.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-blur@15.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- expo-clipboard@8.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-clipboard@8.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- expo-constants@18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-constants@18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
dependencies:
'@expo/config': 12.0.12
'@expo/env': 2.0.8
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
transitivePeerDependencies:
- supports-color
expo-crypto@15.0.8(expo@54.0.29):
dependencies:
base64-js: 1.5.1
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-dev-client@6.0.20(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-dev-launcher: 6.0.20(expo@54.0.29)
expo-dev-menu: 7.0.18(expo@54.0.29)
expo-dev-menu-interface: 2.0.0(expo@54.0.29)
@@ -18822,7 +18541,7 @@ snapshots:
expo-dev-launcher@6.0.20(expo@54.0.29):
dependencies:
ajv: 8.17.1
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-dev-menu: 7.0.18(expo@54.0.29)
expo-manifests: 1.0.10(expo@54.0.29)
transitivePeerDependencies:
@@ -18830,62 +18549,62 @@ snapshots:
expo-dev-menu-interface@2.0.0(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-dev-menu@7.0.18(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-dev-menu-interface: 2.0.0(expo@54.0.29)
expo-device@8.0.10(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
ua-parser-js: 0.7.41
expo-eas-client@1.0.8: {}
- expo-file-system@19.0.21(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-file-system@19.0.21(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
fontfaceobserver: 2.3.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
expo-haptics@15.0.8(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-image@3.0.11(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-image@3.0.11(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
optionalDependencies:
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
expo-insights@0.10.8(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-eas-client: 1.0.8
expo-json-utils@0.15.0: {}
expo-keep-awake@15.0.8(expo@54.0.29)(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- expo-linking@8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-linking@8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
transitivePeerDependencies:
- expo
- supports-color
@@ -18893,7 +18612,7 @@ snapshots:
expo-manifests@1.0.10(expo@54.0.29):
dependencies:
'@expo/config': 12.0.12
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-json-utils: 0.15.0
transitivePeerDependencies:
- supports-color
@@ -18906,42 +18625,42 @@ snapshots:
require-from-string: 2.0.2
resolve-from: 5.0.0
- expo-modules-core@3.0.29(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-modules-core@3.0.29(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- expo-notifications@0.32.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-notifications@0.32.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/image-utils': 0.8.8
'@ide/backoff': 1.0.0
abort-controller: 3.0.0
assert: 2.1.0
badgin: 1.2.3
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-application: 7.0.8(expo@54.0.29)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
transitivePeerDependencies:
- supports-color
- expo-router@6.0.19(40cf5459a2da5a2ee24052faf185eb05):
+ expo-router@6.0.19(daa6e6378deabbbe32c786346aac9231):
dependencies:
- '@expo/metro-runtime': 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@expo/metro-runtime': 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@expo/schema-utils': 0.1.8
'@radix-ui/react-slot': 1.2.0(@types/react@19.2.3)(react@19.1.0)
'@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@react-navigation/bottom-tabs': 7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native-stack': 7.8.6(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/bottom-tabs': 7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native-stack': 7.8.6(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
client-only: 0.0.1
debug: 4.4.3(supports-color@10.2.2)
escape-string-regexp: 4.0.0
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
- expo-linking: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-linking: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-server: 1.0.5
fast-deep-equal: 3.1.3
invariant: 2.2.4
@@ -18949,10 +18668,10 @@ snapshots:
query-string: 7.1.3
react: 19.1.0
react-fast-compare: 3.2.2
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
semver: 7.6.3
server-only: 0.0.1
sf-symbols-typescript: 2.2.0
@@ -18961,8 +18680,8 @@ snapshots:
vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
optionalDependencies:
react-dom: 19.1.0(react@19.1.0)
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -18972,42 +18691,42 @@ snapshots:
expo-secure-store@15.0.8(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-server@1.0.5: {}
expo-splash-screen@31.0.12(expo@54.0.29):
dependencies:
'@expo/prebuild-config': 54.0.7(expo@54.0.29)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- supports-color
- expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-store-review@9.0.9(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-store-review@9.0.9(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
expo-structured-headers@5.0.0: {}
- expo-symbols@1.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-symbols@1.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
sf-symbols-typescript: 2.2.0
- expo-system-ui@6.0.9(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-system-ui@6.0.9(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
dependencies:
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3(supports-color@10.2.2)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
optionalDependencies:
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
@@ -19015,9 +18734,9 @@ snapshots:
expo-updates-interface@2.0.0(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-updates@29.0.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-updates@29.0.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/code-signing-certificates': 0.0.5
'@expo/plist': 0.4.8
@@ -19025,7 +18744,7 @@ snapshots:
arg: 4.1.0
chalk: 4.1.2
debug: 4.4.3(supports-color@10.2.2)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-eas-client: 1.0.8
expo-manifests: 1.0.10(expo@54.0.29)
expo-structured-headers: 5.0.0
@@ -19034,44 +18753,44 @@ snapshots:
glob: 13.0.0
ignore: 5.3.2
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
resolve-from: 5.0.0
transitivePeerDependencies:
- supports-color
- expo-web-browser@15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-web-browser@15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- expo@54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo@54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
- '@babel/runtime': 7.28.6
- '@expo/cli': 54.0.19(expo-router@6.0.19)(expo@54.0.29)(graphql@16.12.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ '@babel/runtime': 7.28.4
+ '@expo/cli': 54.0.19(expo-router@6.0.19)(expo@54.0.29)(graphql@16.12.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
'@expo/config': 12.0.12
'@expo/config-plugins': 54.0.4
- '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@expo/fingerprint': 0.15.4
'@expo/metro': 54.1.0
'@expo/metro-config': 54.0.11(expo@54.0.29)
- '@expo/vector-icons': 15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@expo/vector-icons': 15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
'@ungap/structured-clone': 1.3.0
- babel-preset-expo: 54.0.8(@babel/core@7.28.5)(@babel/runtime@7.28.6)(expo@54.0.29)(react-refresh@0.14.2)
- expo-asset: 12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
- expo-file-system: 19.0.21(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
- expo-font: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ babel-preset-expo: 54.0.8(@babel/core@7.28.5)(@babel/runtime@7.28.4)(expo@54.0.29)(react-refresh@0.14.2)
+ expo-asset: 12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-file-system: 19.0.21(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-font: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
expo-keep-awake: 15.0.8(expo@54.0.29)(react@19.1.0)
expo-modules-autolinking: 3.0.23
- expo-modules-core: 3.0.29(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-modules-core: 3.0.29(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
react-refresh: 0.14.2
whatwg-url-without-unicode: 8.0.0-3
optionalDependencies:
- '@expo/metro-runtime': 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-webview: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@expo/metro-runtime': 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-webview: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@babel/core'
- bufferutil
@@ -19281,6 +19000,8 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
+ form-data-encoder@1.7.2: {}
+
form-data@4.0.5:
dependencies:
asynckit: 0.4.0
@@ -19291,6 +19012,11 @@ snapshots:
format@0.2.2: {}
+ formdata-node@4.4.1:
+ dependencies:
+ node-domexception: 1.0.0
+ web-streams-polyfill: 4.0.0-beta.3
+
formdata-polyfill@4.0.10:
dependencies:
fetch-blob: 3.2.0
@@ -19301,15 +19027,15 @@ snapshots:
fraction.js@5.3.4: {}
- framer-motion@12.29.2(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ framer-motion@12.23.26(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
- motion-dom: 12.29.2
- motion-utils: 12.29.2
+ motion-dom: 12.23.23
+ motion-utils: 12.23.6
tslib: 2.8.1
optionalDependencies:
'@emotion/is-prop-valid': 1.4.0
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
freeport-async@2.0.0: {}
@@ -19370,9 +19096,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- geist@1.5.1(next@16.1.5(@babel/core@7.28.5)(@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)):
+ geist@1.5.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)):
dependencies:
- next: 16.1.5(@babel/core@7.28.5)(@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.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
generator-function@2.0.1: {}
@@ -19737,6 +19463,10 @@ snapshots:
human-signals@2.1.0: {}
+ humanize-ms@1.2.1:
+ dependencies:
+ ms: 2.1.3
+
hyphenate-style-name@1.1.0: {}
iconv-lite@0.4.24:
@@ -19747,7 +19477,7 @@ snapshots:
dependencies:
safer-buffer: 2.1.2
- iconv-lite@0.7.2:
+ iconv-lite@0.7.1:
dependencies:
safer-buffer: 2.1.2
@@ -19770,11 +19500,11 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
- import-in-the-middle@2.0.5:
+ import-in-the-middle@2.0.1:
dependencies:
acorn: 8.15.0
acorn-import-attributes: 1.9.5(acorn@8.15.0)
- cjs-module-lexer: 2.2.0
+ cjs-module-lexer: 1.4.3
module-details-from-path: 1.0.4
import-local@3.2.0:
@@ -19801,10 +19531,10 @@ snapshots:
dependencies:
css-in-js-utils: 3.1.0
- input-otp@1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ input-otp@1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
internal-slot@1.1.0:
dependencies:
@@ -19927,8 +19657,6 @@ snapshots:
is-negative-zero@2.0.3: {}
- is-network-error@1.3.0: {}
-
is-node-process@1.2.0: {}
is-number-object@1.1.1:
@@ -20016,7 +19744,7 @@ snapshots:
istanbul-lib-instrument@5.2.1:
dependencies:
'@babel/core': 7.28.5
- '@babel/parser': 7.28.6
+ '@babel/parser': 7.28.5
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 6.3.1
@@ -20026,7 +19754,7 @@ snapshots:
istanbul-lib-instrument@6.0.3:
dependencies:
'@babel/core': 7.28.5
- '@babel/parser': 7.28.6
+ '@babel/parser': 7.28.5
'@istanbuljs/schema': 0.1.3
istanbul-lib-coverage: 3.2.2
semver: 7.7.3
@@ -20086,7 +19814,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
chalk: 4.1.2
co: 4.6.0
dedent: 1.7.0(babel-plugin-macros@3.1.0)
@@ -20106,16 +19834,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3)):
+ jest-cli@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ create-jest: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ jest-config: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -20125,7 +19853,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3)):
+ jest-config@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
dependencies:
'@babel/core': 7.28.5
'@jest/test-sequencer': 29.7.0
@@ -20150,8 +19878,8 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 24.10.9
- ts-node: 10.9.2(@types/node@24.10.9)(typescript@5.9.3)
+ '@types/node': 22.19.3
+ ts-node: 10.9.2(@types/node@22.19.3)(typescript@5.9.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -20181,7 +19909,7 @@ snapshots:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/jsdom': 20.0.1
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
jest-mock: 29.7.0
jest-util: 29.7.0
jsdom: 20.0.3
@@ -20195,25 +19923,25 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
jest-mock: 29.7.0
jest-util: 29.7.0
- jest-expo@54.0.16(@babel/core@7.28.5)(expo@54.0.29)(jest@29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ jest-expo@54.0.16(@babel/core@7.28.5)(expo@54.0.29)(jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/config': 12.0.12
'@expo/json-file': 10.0.8
'@jest/create-cache-key-function': 29.7.0
'@jest/globals': 29.7.0
babel-jest: 29.7.0(@babel/core@7.28.5)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
jest-environment-jsdom: 29.7.0
jest-snapshot: 29.7.0
jest-watch-select-projects: 2.0.0
- jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3)))
+ jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)))
json5: 2.2.3
lodash: 4.17.21
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
react-test-renderer: 19.1.0(react@19.1.0)
server-only: 0.0.1
stacktrace-js: 2.0.2
@@ -20232,7 +19960,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -20258,7 +19986,7 @@ snapshots:
jest-message-util@29.7.0:
dependencies:
- '@babel/code-frame': 7.28.6
+ '@babel/code-frame': 7.27.1
'@jest/types': 29.6.3
'@types/stack-utils': 2.0.3
chalk: 4.1.2
@@ -20271,7 +19999,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -20306,7 +20034,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -20334,7 +20062,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
chalk: 4.1.2
cjs-module-lexer: 1.4.3
collect-v8-coverage: 1.0.3
@@ -20355,10 +20083,10 @@ snapshots:
jest-snapshot@29.7.0:
dependencies:
'@babel/core': 7.28.5
- '@babel/generator': 7.28.6
+ '@babel/generator': 7.28.5
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
'@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
- '@babel/types': 7.28.6
+ '@babel/types': 7.28.5
'@jest/expect-utils': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
@@ -20380,7 +20108,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -20401,11 +20129,11 @@ snapshots:
chalk: 3.0.0
prompts: 2.4.2
- jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))):
+ jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))):
dependencies:
ansi-escapes: 6.2.1
chalk: 4.1.2
- jest: 29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ jest: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
jest-regex-util: 29.6.3
jest-watcher: 29.7.0
slash: 5.1.0
@@ -20416,7 +20144,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -20425,23 +20153,23 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
merge-stream: 2.0.0
supports-color: 8.1.1
jest-worker@29.7.0:
dependencies:
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3)):
+ jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@24.10.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3))
+ jest-cli: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -20593,7 +20321,7 @@ snapshots:
json-schema-to-ts@3.1.1:
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
ts-algebra: 2.0.0
json-schema-traverse@0.4.1: {}
@@ -20660,18 +20388,18 @@ snapshots:
kleur@3.0.3: {}
- ky@1.14.3: {}
+ ky@1.14.2: {}
lan-network@0.1.7: {}
- langchain@1.2.14(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod-to-json-schema@3.25.0(zod@4.3.6)):
+ langchain@1.2.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod-to-json-schema@3.25.0(zod@4.3.5)):
dependencies:
- '@langchain/core': 1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))
- '@langchain/langgraph': 1.1.2(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod-to-json-schema@3.25.0(zod@4.3.6))(zod@4.3.6)
- '@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.17(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)))
- langsmith: 0.4.10(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6))
+ '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
+ '@langchain/langgraph': 1.0.5(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod-to-json-schema@3.25.0(zod@4.3.5))(zod@4.3.5)
+ '@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))
+ langsmith: 0.3.87(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
uuid: 10.0.0
- zod: 4.3.6
+ zod: 4.3.5
transitivePeerDependencies:
- '@opentelemetry/api'
- '@opentelemetry/exporter-trace-otlp-proto'
@@ -20681,7 +20409,7 @@ snapshots:
- react-dom
- zod-to-json-schema
- langsmith@0.4.10(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.16.0(ws@8.18.3)(zod@4.3.6)):
+ langsmith@0.3.87(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)):
dependencies:
'@types/uuid': 10.0.0
chalk: 4.1.2
@@ -20691,8 +20419,8 @@ snapshots:
uuid: 10.0.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
- openai: 6.16.0(ws@8.18.3)(zod@4.3.6)
+ '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
+ openai: 6.13.0(ws@8.18.3)(zod@4.3.5)
launch-editor@2.12.0:
dependencies:
@@ -20848,8 +20576,6 @@ snapshots:
dayjs: 1.11.19
yargs: 15.4.1
- long@5.3.2: {}
-
longest-streak@3.1.0: {}
loose-envify@1.4.0:
@@ -20866,9 +20592,9 @@ snapshots:
dependencies:
yallist: 3.1.1
- lucide-react@0.563.0(react@19.2.4):
+ lucide-react@0.562.0(react@19.2.3):
dependencies:
- react: 19.2.4
+ react: 19.2.3
lz-string@1.5.0: {}
@@ -20894,9 +20620,9 @@ snapshots:
markdown-table@3.0.4: {}
- markdown-to-jsx@8.0.0(react@19.2.4):
+ markdown-to-jsx@8.0.0(react@19.2.3):
optionalDependencies:
- react: 19.2.4
+ react: 19.2.3
marky@1.3.0: {}
@@ -21057,7 +20783,7 @@ snapshots:
micromark-util-sanitize-uri: 2.0.1
trim-lines: 3.0.1
unist-util-position: 5.0.0
- unist-util-visit: 5.1.0
+ unist-util-visit: 5.0.0
vfile: 6.0.3
mdast-util-to-markdown@2.1.2:
@@ -21069,7 +20795,7 @@ snapshots:
mdast-util-to-string: 4.0.0
micromark-util-classify-character: 2.0.1
micromark-util-decode-string: 2.0.1
- unist-util-visit: 5.1.0
+ unist-util-visit: 5.0.0
zwitch: 2.0.4
mdast-util-to-string@4.0.0:
@@ -21215,12 +20941,12 @@ snapshots:
metro-minify-terser@0.83.2:
dependencies:
flow-enums-runtime: 0.0.6
- terser: 5.46.0
+ terser: 5.44.1
metro-minify-terser@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
- terser: 5.46.0
+ terser: 5.44.1
metro-resolver@0.83.2:
dependencies:
@@ -21232,19 +20958,19 @@ snapshots:
metro-runtime@0.83.2:
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
flow-enums-runtime: 0.0.6
metro-runtime@0.83.3:
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
flow-enums-runtime: 0.0.6
metro-source-map@0.83.2:
dependencies:
- '@babel/traverse': 7.28.6
- '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.6'
- '@babel/types': 7.28.6
+ '@babel/traverse': 7.28.5
+ '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.5'
+ '@babel/types': 7.28.5
flow-enums-runtime: 0.0.6
invariant: 2.2.4
metro-symbolicate: 0.83.2
@@ -21257,9 +20983,9 @@ snapshots:
metro-source-map@0.83.3:
dependencies:
- '@babel/traverse': 7.28.6
- '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.6'
- '@babel/types': 7.28.6
+ '@babel/traverse': 7.28.5
+ '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.5'
+ '@babel/types': 7.28.5
flow-enums-runtime: 0.0.6
invariant: 2.2.4
metro-symbolicate: 0.83.3
@@ -21295,9 +21021,9 @@ snapshots:
metro-transform-plugins@0.83.2:
dependencies:
'@babel/core': 7.28.5
- '@babel/generator': 7.28.6
- '@babel/template': 7.28.6
- '@babel/traverse': 7.28.6
+ '@babel/generator': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
flow-enums-runtime: 0.0.6
nullthrows: 1.1.1
transitivePeerDependencies:
@@ -21306,9 +21032,9 @@ snapshots:
metro-transform-plugins@0.83.3:
dependencies:
'@babel/core': 7.28.5
- '@babel/generator': 7.28.6
- '@babel/template': 7.28.6
- '@babel/traverse': 7.28.6
+ '@babel/generator': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
flow-enums-runtime: 0.0.6
nullthrows: 1.1.1
transitivePeerDependencies:
@@ -21317,9 +21043,9 @@ snapshots:
metro-transform-worker@0.83.2:
dependencies:
'@babel/core': 7.28.5
- '@babel/generator': 7.28.6
- '@babel/parser': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/generator': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
flow-enums-runtime: 0.0.6
metro: 0.83.2
metro-babel-transformer: 0.83.2
@@ -21337,9 +21063,9 @@ snapshots:
metro-transform-worker@0.83.3:
dependencies:
'@babel/core': 7.28.5
- '@babel/generator': 7.28.6
- '@babel/parser': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/generator': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
flow-enums-runtime: 0.0.6
metro: 0.83.3
metro-babel-transformer: 0.83.3
@@ -21356,13 +21082,13 @@ snapshots:
metro@0.83.2:
dependencies:
- '@babel/code-frame': 7.28.6
+ '@babel/code-frame': 7.27.1
'@babel/core': 7.28.5
- '@babel/generator': 7.28.6
- '@babel/parser': 7.28.6
- '@babel/template': 7.28.6
- '@babel/traverse': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/generator': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
accepts: 1.3.8
chalk: 4.1.2
ci-info: 2.0.0
@@ -21403,13 +21129,13 @@ snapshots:
metro@0.83.3:
dependencies:
- '@babel/code-frame': 7.28.6
+ '@babel/code-frame': 7.27.1
'@babel/core': 7.28.5
- '@babel/generator': 7.28.6
- '@babel/parser': 7.28.6
- '@babel/template': 7.28.6
- '@babel/traverse': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/generator': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
accepts: 1.3.8
chalk: 4.1.2
ci-info: 2.0.0
@@ -21783,11 +21509,11 @@ snapshots:
module-details-from-path@1.0.4: {}
- motion-dom@12.29.2:
+ motion-dom@12.23.23:
dependencies:
- motion-utils: 12.29.2
+ motion-utils: 12.23.6
- motion-utils@12.29.2: {}
+ motion-utils@12.23.6: {}
mri@1.2.0: {}
@@ -21797,9 +21523,9 @@ snapshots:
ms@2.1.3: {}
- msw@2.12.7(@types/node@24.10.9)(typescript@5.9.3):
+ msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3):
dependencies:
- '@inquirer/confirm': 5.1.21(@types/node@24.10.9)
+ '@inquirer/confirm': 5.1.21(@types/node@22.19.3)
'@mswjs/interceptors': 0.40.0
'@open-draft/deferred-promise': 2.2.0
'@types/statuses': 2.0.6
@@ -21858,15 +21584,15 @@ snapshots:
object-assign: 4.1.1
thenify-all: 1.6.0
- nano-css@5.6.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ nano-css@5.6.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
css-tree: 1.1.3
csstype: 3.2.3
fastest-stable-stringify: 2.0.2
inline-style-prefixer: 7.0.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
rtl-css-js: 1.16.1
stacktrace-js: 2.0.2
stylis: 4.3.6
@@ -21877,12 +21603,12 @@ snapshots:
napi-postinstall@0.3.4: {}
- nativewind@4.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(yaml@2.8.2)):
+ nativewind@4.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
comment-json: 4.5.0
debug: 4.4.3(supports-color@10.2.2)
- react-native-css-interop: 0.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(yaml@2.8.2))
- tailwindcss: 3.4.19(yaml@2.8.2)
+ react-native-css-interop: 0.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))
+ tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- react
- react-native
@@ -21903,30 +21629,30 @@ snapshots:
nested-error-stacks@2.0.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.3(react@19.2.3))(react@19.2.3):
dependencies:
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
- next@16.1.5(@babel/core@7.28.5)(@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.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
- '@next/env': 16.1.5
+ '@next/env': 16.1.1
'@swc/helpers': 0.5.15
baseline-browser-mapping: 2.9.7
caniuse-lite: 1.0.30001760
postcss: 8.4.31
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3)
optionalDependencies:
- '@next/swc-darwin-arm64': 16.1.5
- '@next/swc-darwin-x64': 16.1.5
- '@next/swc-linux-arm64-gnu': 16.1.5
- '@next/swc-linux-arm64-musl': 16.1.5
- '@next/swc-linux-x64-gnu': 16.1.5
- '@next/swc-linux-x64-musl': 16.1.5
- '@next/swc-win32-arm64-msvc': 16.1.5
- '@next/swc-win32-x64-msvc': 16.1.5
+ '@next/swc-darwin-arm64': 16.1.1
+ '@next/swc-darwin-x64': 16.1.1
+ '@next/swc-linux-arm64-gnu': 16.1.1
+ '@next/swc-linux-arm64-musl': 16.1.1
+ '@next/swc-linux-x64-gnu': 16.1.1
+ '@next/swc-linux-x64-musl': 16.1.1
+ '@next/swc-win32-arm64-msvc': 16.1.1
+ '@next/swc-win32-x64-msvc': 16.1.1
'@opentelemetry/api': 1.9.0
babel-plugin-react-compiler: 1.0.0
sharp: 0.33.3
@@ -21977,12 +21703,12 @@ snapshots:
nullthrows@1.1.1: {}
- nuqs@2.8.6(next@16.1.5(@babel/core@7.28.5)(@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))(react@19.2.4):
+ nuqs@2.8.6(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3):
dependencies:
'@standard-schema/spec': 1.0.0
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
- next: 16.1.5(@babel/core@7.28.5)(@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.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
nwsapi@2.2.23: {}
@@ -22043,8 +21769,6 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
- obug@2.1.1: {}
-
ofetch@1.5.1:
dependencies:
destr: 2.0.5
@@ -22100,10 +21824,24 @@ snapshots:
is-docker: 2.2.1
is-wsl: 2.2.0
- openai@6.16.0(ws@8.18.3)(zod@4.3.6):
+ openai@4.104.0(ws@8.18.3):
+ dependencies:
+ '@types/node': 18.19.130
+ '@types/node-fetch': 2.6.13
+ abort-controller: 3.0.0
+ agentkeepalive: 4.6.0
+ form-data-encoder: 1.7.2
+ formdata-node: 4.4.1
+ node-fetch: 2.7.0
optionalDependencies:
ws: 8.18.3
- zod: 4.3.6
+ transitivePeerDependencies:
+ - encoding
+
+ openai@6.13.0(ws@8.18.3)(zod@4.3.5):
+ optionalDependencies:
+ ws: 8.18.3
+ zod: 4.3.5
openapi-fetch@0.15.0:
dependencies:
@@ -22111,7 +21849,7 @@ snapshots:
openapi-typescript-helpers@0.0.15: {}
- openapi-typescript@7.10.1(patch_hash=d5d81a1091dd25eaff66014508c84e42c721bcbe3f7693dcf58aa2c28132735b)(typescript@5.9.3):
+ openapi-typescript@7.10.1(typescript@5.9.3):
dependencies:
'@redocly/openapi-core': 1.34.6(supports-color@10.2.2)
ansi-colors: 4.1.3
@@ -22196,29 +21934,23 @@ snapshots:
eventemitter3: 4.0.7
p-timeout: 3.2.0
- p-queue@9.1.0:
+ p-retry@4.6.2:
dependencies:
- eventemitter3: 5.0.4
- p-timeout: 7.0.1
-
- p-retry@7.1.1:
- dependencies:
- is-network-error: 1.3.0
+ '@types/retry': 0.12.0
+ retry: 0.13.1
p-timeout@3.2.0:
dependencies:
p-finally: 1.0.0
- p-timeout@7.0.1: {}
-
p-try@2.2.0: {}
package-json-from-dist@1.0.1: {}
package-json@10.0.1:
dependencies:
- ky: 1.14.3
- registry-auth-token: 5.1.1
+ ky: 1.14.2
+ registry-auth-token: 5.1.0
registry-url: 6.0.1
semver: 7.7.3
@@ -22244,14 +21976,14 @@ snapshots:
parse-json@5.2.0:
dependencies:
- '@babel/code-frame': 7.28.6
+ '@babel/code-frame': 7.27.1
error-ex: 1.3.4
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
parse-json@8.3.0:
dependencies:
- '@babel/code-frame': 7.28.6
+ '@babel/code-frame': 7.27.1
index-to-position: 1.2.0
type-fest: 4.41.0
@@ -22389,20 +22121,22 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.5.6
- postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2):
+ postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
jiti: 1.21.7
postcss: 8.5.6
+ tsx: 4.21.0
yaml: 2.8.2
- postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(yaml@2.8.2):
+ postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
jiti: 2.6.1
postcss: 8.5.6
+ tsx: 4.21.0
yaml: 2.8.2
postcss-nested@6.2.0(postcss@8.5.6):
@@ -22450,44 +22184,36 @@ snapshots:
dependencies:
xtend: 4.0.2
- posthog-js@1.335.3:
+ posthog-js@1.313.0:
dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.208.0
- '@opentelemetry/exporter-logs-otlp-http': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0)
- '@posthog/core': 1.14.0
- '@posthog/types': 1.335.3
+ '@posthog/core': 1.9.0
core-js: 3.47.0
- dompurify: 3.3.1
fflate: 0.4.8
preact: 10.28.0
- query-selector-shadow-dom: 1.0.1
- web-vitals: 5.1.0
+ web-vitals: 4.2.4
- posthog-node@5.24.2:
+ posthog-node@5.18.1:
dependencies:
- '@posthog/core': 1.14.0
+ '@posthog/core': 1.9.0
preact@10.28.0: {}
prelude-ls@1.2.1: {}
- prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3):
+ prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3):
dependencies:
- prettier: 3.8.1
+ prettier: 3.7.4
typescript: 5.9.3
- prettier-plugin-tailwindcss@0.7.2(prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3))(prettier@3.8.1):
+ prettier-plugin-tailwindcss@0.7.2(prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3))(prettier@3.7.4):
dependencies:
- prettier: 3.8.1
+ prettier: 3.7.4
optionalDependencies:
- prettier-plugin-organize-imports: 4.3.0(prettier@3.8.1)(typescript@5.9.3)
+ prettier-plugin-organize-imports: 4.3.0(prettier@3.7.4)(typescript@5.9.3)
prettier@2.8.8: {}
- prettier@3.8.1: {}
+ prettier@3.7.4: {}
pretty-bytes@5.6.0: {}
@@ -22530,21 +22256,6 @@ snapshots:
proto-list@1.2.4: {}
- protobufjs@7.5.4:
- dependencies:
- '@protobufjs/aspromise': 1.1.2
- '@protobufjs/base64': 1.1.2
- '@protobufjs/codegen': 2.0.4
- '@protobufjs/eventemitter': 1.1.0
- '@protobufjs/fetch': 1.1.0
- '@protobufjs/float': 1.0.2
- '@protobufjs/inquire': 1.1.0
- '@protobufjs/path': 1.1.2
- '@protobufjs/pool': 1.1.0
- '@protobufjs/utf8': 1.1.0
- '@types/node': 24.10.9
- long: 5.3.2
-
proxy-addr@2.0.7:
dependencies:
forwarded: 0.2.0
@@ -22574,8 +22285,6 @@ snapshots:
quansync@0.2.11: {}
- query-selector-shadow-dom@1.0.1: {}
-
query-string@7.1.3:
dependencies:
decode-uri-component: 0.2.2
@@ -22608,7 +22317,7 @@ snapshots:
dependencies:
bytes: 3.1.2
http-errors: 2.0.1
- iconv-lite: 0.7.2
+ iconv-lite: 0.7.1
unpipe: 1.0.0
rc@1.2.8:
@@ -22618,17 +22327,17 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
- react-clientside-effect@1.2.8(react@19.2.4):
+ react-clientside-effect@1.2.8(react@19.2.3):
dependencies:
- '@babel/runtime': 7.28.6
- react: 19.2.4
+ '@babel/runtime': 7.28.4
+ react: 19.2.3
- react-day-picker@9.13.0(react@19.2.4):
+ react-day-picker@9.13.0(react@19.2.3):
dependencies:
'@date-fns/tz': 1.4.1
date-fns: 4.1.0
date-fns-jalali: 4.1.0-0
- react: 19.2.4
+ react: 19.2.3
react-devtools-core@6.1.5:
dependencies:
@@ -22643,34 +22352,34 @@ snapshots:
react: 19.1.0
scheduler: 0.26.0
- react-dom@19.2.4(react@19.2.4):
+ react-dom@19.2.3(react@19.2.3):
dependencies:
- react: 19.2.4
+ react: 19.2.3
scheduler: 0.27.0
- react-dropzone@14.3.8(react@19.2.4):
+ react-dropzone@14.3.8(react@19.2.3):
dependencies:
attr-accept: 2.2.5
file-selector: 2.1.2
prop-types: 15.8.1
- react: 19.2.4
+ react: 19.2.3
react-error-boundary@6.0.0(react@19.1.0):
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
react: 19.1.0
react-fast-compare@3.2.2: {}
- react-focus-lock@2.13.7(@types/react@19.2.3)(react@19.2.4):
+ react-focus-lock@2.13.7(@types/react@19.2.3)(react@19.2.3):
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
focus-lock: 1.3.6
prop-types: 15.8.1
- react: 19.2.4
- react-clientside-effect: 1.2.8(react@19.2.4)
- use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.4)
- use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.3
+ react-clientside-effect: 1.2.8(react@19.2.3)
+ use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.3)
+ use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
@@ -22678,13 +22387,13 @@ snapshots:
dependencies:
react: 19.1.0
- react-hook-form@7.71.1(react@19.1.0):
+ react-hook-form@7.68.0(react@19.1.0):
dependencies:
react: 19.1.0
- react-hook-form@7.71.1(react@19.2.4):
+ react-hook-form@7.70.0(react@19.2.3):
dependencies:
- react: 19.2.4
+ react: 19.2.3
react-is@16.13.1: {}
@@ -22694,70 +22403,70 @@ snapshots:
react-is@19.2.3: {}
- react-native-css-interop@0.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(yaml@2.8.2)):
+ react-native-css-interop@0.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
'@babel/helper-module-imports': 7.27.1
- '@babel/traverse': 7.28.6
- '@babel/types': 7.28.6
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
debug: 4.4.3(supports-color@10.2.2)
lightningcss: 1.27.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
semver: 7.7.3
- tailwindcss: 3.4.19(yaml@2.8.2)
+ tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.2)
optionalDependencies:
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-svg: 15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-svg: 15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- supports-color
- react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
'@egjs/hammerjs': 2.0.17
hoist-non-react-statics: 3.3.2
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge@1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-is-edge-to-edge@1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
'@babel/core': 7.28.5
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-worklets: 0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-worklets: 0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
semver: 7.7.2
- react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
react-freeze: 1.0.4(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
warn-once: 0.1.1
- react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
css-select: 5.2.2
css-tree: 1.1.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
warn-once: 0.1.1
react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
'@react-native/normalize-colors': 0.74.89
fbjs: 3.0.5
inline-style-prefixer: 7.0.1
@@ -22770,14 +22479,14 @@ snapshots:
transitivePeerDependencies:
- encoding
- react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
escape-string-regexp: 4.0.0
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
dependencies:
'@babel/core': 7.28.5
'@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5)
@@ -22791,21 +22500,21 @@ snapshots:
'@babel/preset-typescript': 7.28.5(@babel/core@7.28.5)
convert-source-map: 2.0.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
semver: 7.7.2
transitivePeerDependencies:
- supports-color
- react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0):
+ react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0):
dependencies:
'@jest/create-cache-key-function': 29.7.0
'@react-native/assets-registry': 0.81.5
'@react-native/codegen': 0.81.5(@babel/core@7.28.5)
- '@react-native/community-cli-plugin': 0.81.5(@react-native-community/cli@20.1.0(typescript@5.9.3))
+ '@react-native/community-cli-plugin': 0.81.5(@react-native-community/cli@20.0.2(typescript@5.9.3))
'@react-native/gradle-plugin': 0.81.5
'@react-native/js-polyfills': 0.81.5
'@react-native/normalize-colors': 0.81.5
- '@react-native/virtualized-lists': 0.81.5(@types/react@19.2.3)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-native/virtualized-lists': 0.81.5(@types/react@19.2.3)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
abort-controller: 3.0.0
anser: 1.4.10
ansi-regex: 5.0.1
@@ -22848,11 +22557,11 @@ snapshots:
react: 19.1.0
scheduler: 0.25.0
- react-redux@9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1):
+ react-redux@9.2.0(@types/react@19.2.3)(react@19.2.3)(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.3
+ use-sync-external-store: 1.6.0(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
redux: 5.0.1
@@ -22869,10 +22578,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- react-remove-scroll-bar@2.3.8(@types/react@19.2.3)(react@19.2.4):
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.3)(react@19.2.3):
dependencies:
- react: 19.2.4
- react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.3
+ react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.3)
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.3
@@ -22888,14 +22597,14 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- react-remove-scroll@2.7.2(@types/react@19.2.3)(react@19.2.4):
+ react-remove-scroll@2.7.2(@types/react@19.2.3)(react@19.2.3):
dependencies:
- react: 19.2.4
- react-remove-scroll-bar: 2.3.8(@types/react@19.2.3)(react@19.2.4)
- react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.3
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.3)(react@19.2.3)
+ react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.3)
tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.4)
- use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.4)
+ use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.3)
+ use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
@@ -22913,10 +22622,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- react-style-singleton@2.2.3(@types/react@19.2.3)(react@19.2.4):
+ react-style-singleton@2.2.3(@types/react@19.2.3)(react@19.2.3):
dependencies:
get-nonce: 1.0.1
- react: 19.2.4
+ react: 19.2.3
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.3
@@ -22934,25 +22643,25 @@ snapshots:
react-is: 19.2.3
scheduler: 0.26.0
- react-timeago@8.3.0(react@19.2.4):
+ react-timeago@8.3.0(react@19.2.3):
dependencies:
- react: 19.2.4
+ react: 19.2.3
- react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
- react-universal-interface@0.6.2(react@19.2.4)(tslib@2.8.1):
+ react-universal-interface@0.6.2(react@19.2.3)(tslib@2.8.1):
dependencies:
- react: 19.2.4
+ react: 19.2.3
tslib: 2.8.1
- react-use@17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
+ react-use@17.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
dependencies:
'@types/js-cookie': 2.2.7
'@xobotyi/scrollbar-width': 1.9.5
@@ -22960,10 +22669,10 @@ snapshots:
fast-deep-equal: 3.1.3
fast-shallow-equal: 1.0.0
js-cookie: 2.2.1
- nano-css: 5.6.2(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)
- react-universal-interface: 0.6.2(react@19.2.4)(tslib@2.8.1)
+ nano-css: 5.6.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
+ react-universal-interface: 0.6.2(react@19.2.3)(tslib@2.8.1)
resize-observer-polyfill: 1.5.1
screenfull: 5.2.0
set-harmonic-interval: 1.0.1
@@ -22973,7 +22682,7 @@ snapshots:
react@19.1.0: {}
- react@19.2.4: {}
+ react@19.2.3: {}
read-cache@1.0.0:
dependencies:
@@ -22998,21 +22707,21 @@ snapshots:
readdirp@4.1.2: {}
- recharts@3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1):
+ recharts@3.6.0(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.3)(react@19.2.3)(redux@5.0.1):
dependencies:
- '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.3)(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.3)(react@19.2.3)(redux@5.0.1))(react@19.2.3)
clsx: 2.1.1
decimal.js-light: 2.5.1
es-toolkit: 1.43.0
- eventemitter3: 5.0.4
+ eventemitter3: 5.0.1
immer: 10.2.0
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
+ react: 19.2.3
+ react-dom: 19.2.3(react@19.2.3)
react-is: 19.2.3
- react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1)
+ react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.3)(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.3)
victory-vendor: 37.3.6
transitivePeerDependencies:
- '@types/react'
@@ -23100,9 +22809,9 @@ snapshots:
unicode-match-property-ecmascript: 2.0.0
unicode-match-property-value-ecmascript: 2.2.1
- registry-auth-token@5.1.1:
+ registry-auth-token@5.1.0:
dependencies:
- '@pnpm/npm-conf': 3.0.2
+ '@pnpm/npm-conf': 2.3.1
registry-url@6.0.1:
dependencies:
@@ -23120,7 +22829,7 @@ snapshots:
hast-util-properties-to-mdx-jsx-attributes: 1.0.1
parse-srcset: 1.0.2
unified: 11.0.5
- unist-util-visit: 5.1.0
+ unist-util-visit: 5.0.0
transitivePeerDependencies:
- supports-color
@@ -23138,7 +22847,7 @@ snapshots:
github-slugger: 2.0.0
hast-util-heading-rank: 3.0.0
hast-util-to-string: 3.0.1
- unist-util-visit: 5.1.0
+ unist-util-visit: 5.0.0
remark-frontmatter@5.0.0:
dependencies:
@@ -23248,6 +22957,12 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
+ resolve@1.22.8:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
resolve@1.7.1:
dependencies:
path-parse: 1.0.7
@@ -23326,7 +23041,7 @@ snapshots:
rtl-css-js@1.16.1:
dependencies:
- '@babel/runtime': 7.28.6
+ '@babel/runtime': 7.28.4
run-parallel@1.2.0:
dependencies:
@@ -23525,14 +23240,14 @@ snapshots:
shell-quote@1.8.3: {}
- shiki@3.21.0:
+ shiki@3.20.0:
dependencies:
- '@shikijs/core': 3.21.0
- '@shikijs/engine-javascript': 3.21.0
- '@shikijs/engine-oniguruma': 3.21.0
- '@shikijs/langs': 3.21.0
- '@shikijs/themes': 3.21.0
- '@shikijs/types': 3.21.0
+ '@shikijs/core': 3.20.0
+ '@shikijs/engine-javascript': 3.20.0
+ '@shikijs/engine-oniguruma': 3.20.0
+ '@shikijs/langs': 3.20.0
+ '@shikijs/themes': 3.20.0
+ '@shikijs/types': 3.20.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -23805,10 +23520,10 @@ snapshots:
dependencies:
inline-style-parser: 0.2.7
- styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.4):
+ styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3):
dependencies:
client-only: 0.0.1
- react: 19.2.4
+ react: 19.2.3
optionalDependencies:
'@babel/core': 7.28.5
@@ -23849,11 +23564,11 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- swr@2.3.8(react@19.2.4):
+ swr@2.3.8(react@19.2.3):
dependencies:
dequal: 2.0.3
- react: 19.2.4
- use-sync-external-store: 1.6.0(react@19.2.4)
+ react: 19.2.3
+ use-sync-external-store: 1.6.0(react@19.2.3)
symbol-tree@3.2.4: {}
@@ -23865,7 +23580,7 @@ snapshots:
dependencies:
tailwindcss: 4.1.18
- tailwindcss@3.4.19(yaml@2.8.2):
+ tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -23884,7 +23599,7 @@ snapshots:
postcss: 8.5.6
postcss-import: 15.1.0(postcss@8.5.6)
postcss-js: 4.1.0(postcss@8.5.6)
- postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2)
+ postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2)
postcss-nested: 6.2.0(postcss@8.5.6)
postcss-selector-parser: 6.1.2
resolve: 1.22.11
@@ -23920,10 +23635,10 @@ snapshots:
jest-worker: 27.5.1
schema-utils: 4.3.3
serialize-javascript: 6.0.2
- terser: 5.46.0
+ terser: 5.44.1
webpack: 5.102.1
- terser@5.46.0:
+ terser@5.44.1:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.15.0
@@ -23973,8 +23688,6 @@ snapshots:
tinyrainbow@2.0.0: {}
- tinyrainbow@3.0.3: {}
-
tinyspy@3.0.2: {}
tinyspy@4.0.4: {}
@@ -24052,14 +23765,14 @@ snapshots:
ts-interface-checker@0.1.13: {}
- ts-node@10.9.2(@types/node@24.10.9)(typescript@5.9.3):
+ ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.12
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
acorn: 8.15.0
acorn-walk: 8.3.4
arg: 4.1.3
@@ -24083,7 +23796,7 @@ snapshots:
tslib@2.8.1: {}
- tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3)(yaml@2.8.2):
+ tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2):
dependencies:
bundle-require: 5.1.0(esbuild@0.27.1)
cac: 6.7.14
@@ -24094,7 +23807,7 @@ snapshots:
fix-dts-default-cjs-exports: 1.0.1
joycon: 3.1.1
picocolors: 1.1.1
- postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(yaml@2.8.2)
+ postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2)
resolve-from: 5.0.0
rollup: 4.53.5
source-map: 0.7.6
@@ -24111,32 +23824,39 @@ snapshots:
- tsx
- yaml
- turbo-darwin-64@2.7.6:
+ tsx@4.21.0:
+ dependencies:
+ esbuild: 0.27.1
+ get-tsconfig: 4.13.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ turbo-darwin-64@2.7.2:
optional: true
- turbo-darwin-arm64@2.7.6:
+ turbo-darwin-arm64@2.7.2:
optional: true
- turbo-linux-64@2.7.6:
+ turbo-linux-64@2.7.2:
optional: true
- turbo-linux-arm64@2.7.6:
+ turbo-linux-arm64@2.7.2:
optional: true
- turbo-windows-64@2.7.6:
+ turbo-windows-64@2.7.2:
optional: true
- turbo-windows-arm64@2.7.6:
+ turbo-windows-arm64@2.7.2:
optional: true
- turbo@2.7.6:
+ turbo@2.7.2:
optionalDependencies:
- turbo-darwin-64: 2.7.6
- turbo-darwin-arm64: 2.7.6
- turbo-linux-64: 2.7.6
- turbo-linux-arm64: 2.7.6
- turbo-windows-64: 2.7.6
- turbo-windows-arm64: 2.7.6
+ turbo-darwin-64: 2.7.2
+ turbo-darwin-arm64: 2.7.2
+ turbo-linux-64: 2.7.2
+ turbo-linux-arm64: 2.7.2
+ turbo-windows-64: 2.7.2
+ turbo-windows-arm64: 2.7.2
tw-animate-css@1.4.0: {}
@@ -24226,7 +23946,12 @@ snapshots:
has-symbols: 1.1.0
which-boxed-primitive: 1.1.1
- undici-types@7.16.0: {}
+ undici-types@5.26.5: {}
+
+ undici-types@6.21.0: {}
+
+ undici-types@7.16.0:
+ optional: true
undici@5.29.0:
dependencies:
@@ -24284,7 +24009,7 @@ snapshots:
'@types/unist': 3.0.3
unist-util-is: 6.0.1
- unist-util-visit@5.1.0:
+ unist-util-visit@5.0.0:
dependencies:
'@types/unist': 3.0.3
unist-util-is: 6.0.1
@@ -24355,9 +24080,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- use-callback-ref@1.3.3(@types/react@19.2.3)(react@19.2.4):
+ use-callback-ref@1.3.3(@types/react@19.2.3)(react@19.2.3):
dependencies:
- react: 19.2.4
+ react: 19.2.3
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.3
@@ -24374,10 +24099,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- use-sidecar@1.1.3(@types/react@19.2.3)(react@19.2.4):
+ use-sidecar@1.1.3(@types/react@19.2.3)(react@19.2.3):
dependencies:
detect-node-es: 1.1.0
- react: 19.2.4
+ react: 19.2.3
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.3
@@ -24386,9 +24111,9 @@ snapshots:
dependencies:
react: 19.1.0
- use-sync-external-store@1.6.0(react@19.2.4):
+ use-sync-external-store@1.6.0(react@19.2.3):
dependencies:
- react: 19.2.4
+ react: 19.2.3
util-deprecate@1.0.2: {}
@@ -24406,8 +24131,6 @@ snapshots:
uuid@11.1.0: {}
- uuid@13.0.0: {}
-
uuid@7.0.3: {}
uuid@8.3.2: {}
@@ -24447,18 +24170,18 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- victory-native@41.20.2(56acb8d1da5f9cc0e4ae48affe1ead3b):
+ victory-native@41.20.2(304cb029cd54f6dc7590a1eb71d5c0a3):
dependencies:
- '@shopify/react-native-skia': 2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@shopify/react-native-skia': 2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
d3-scale: 4.0.2
d3-shape: 3.2.0
d3-zoom: 3.0.0
its-fine: 1.2.5(@types/react@19.2.3)(react@19.1.0)
react: 19.1.0
react-fast-compare: 3.2.2
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.0(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@types/react'
@@ -24479,13 +24202,13 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
- vite-node@2.1.9(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0):
+ vite-node@2.1.9(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1):
dependencies:
cac: 6.7.14
debug: 4.4.3(supports-color@10.2.2)
es-module-lexer: 1.7.0
pathe: 1.1.2
- vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
+ vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1)
transitivePeerDependencies:
- '@types/node'
- less
@@ -24497,13 +24220,13 @@ snapshots:
- supports-color
- terser
- vite-node@3.2.4(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2):
+ vite-node@3.2.4(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
cac: 6.7.14
debug: 4.4.3(supports-color@10.2.2)
es-module-lexer: 1.7.0
pathe: 2.0.3
- vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -24518,18 +24241,18 @@ snapshots:
- tsx
- yaml
- vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)):
+ vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
debug: 4.4.3(supports-color@10.2.2)
globrex: 0.1.2
tsconfck: 3.1.6(typescript@5.9.3)
optionalDependencies:
- vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
- typescript
- vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0):
+ vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1):
dependencies:
esbuild: 0.21.5
postcss: 8.5.6
@@ -24538,25 +24261,9 @@ snapshots:
'@types/node': 25.0.2
fsevents: 2.3.3
lightningcss: 1.30.2
- terser: 5.46.0
-
- vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2):
- dependencies:
- esbuild: 0.27.1
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.53.5
- tinyglobby: 0.2.15
- optionalDependencies:
- '@types/node': 24.10.9
- fsevents: 2.3.3
- jiti: 2.6.1
- lightningcss: 1.30.2
- terser: 5.46.0
- yaml: 2.8.2
+ terser: 5.44.1
- vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2):
+ vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
esbuild: 0.27.1
fdir: 6.5.0(picomatch@4.0.3)
@@ -24565,17 +24272,18 @@ snapshots:
rollup: 4.53.5
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 25.0.2
+ '@types/node': 22.19.3
fsevents: 2.3.3
jiti: 2.6.1
lightningcss: 1.30.2
- terser: 5.46.0
+ terser: 5.44.1
+ tsx: 4.21.0
yaml: 2.8.2
- vitest@2.1.9(@types/node@25.0.2)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0):
+ vitest@2.1.9(@types/node@25.0.2)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.44.1):
dependencies:
'@vitest/expect': 2.1.9
- '@vitest/mocker': 2.1.9(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0))
+ '@vitest/mocker': 2.1.9(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1))
'@vitest/pretty-format': 2.1.9
'@vitest/runner': 2.1.9
'@vitest/snapshot': 2.1.9
@@ -24591,8 +24299,8 @@ snapshots:
tinyexec: 0.3.2
tinypool: 1.1.1
tinyrainbow: 1.2.0
- vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
- vite-node: 2.1.9(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
+ vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1)
+ vite-node: 2.1.9(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 25.0.2
@@ -24608,11 +24316,11 @@ snapshots:
- supports-color
- terser
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.9)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.9)(typescript@5.9.3))(terser@5.46.0)(yaml@2.8.2):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@types/chai': 5.2.3
'@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(msw@2.12.7(@types/node@24.10.9)(typescript@5.9.3))(vite@7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))
+ '@vitest/mocker': 3.2.4(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@@ -24630,12 +24338,12 @@ snapshots:
tinyglobby: 0.2.15
tinypool: 1.1.1
tinyrainbow: 2.0.0
- vite: 7.3.0(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
- vite-node: 3.2.4(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ vite-node: 3.2.4(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
- '@types/node': 24.10.9
+ '@types/node': 22.19.3
'@vitest/ui': 3.2.4(vitest@3.2.4)
jsdom: 27.4.0(postcss@8.5.6)
transitivePeerDependencies:
@@ -24652,45 +24360,6 @@ snapshots:
- tsx
- yaml
- vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.0.2)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(yaml@2.8.2):
- dependencies:
- '@vitest/expect': 4.0.18
- '@vitest/mocker': 4.0.18(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2))
- '@vitest/pretty-format': 4.0.18
- '@vitest/runner': 4.0.18
- '@vitest/snapshot': 4.0.18
- '@vitest/spy': 4.0.18
- '@vitest/utils': 4.0.18
- es-module-lexer: 1.7.0
- expect-type: 1.3.0
- magic-string: 0.30.21
- obug: 2.1.1
- pathe: 2.0.3
- picomatch: 4.0.3
- std-env: 3.10.0
- tinybench: 2.9.0
- tinyexec: 1.0.2
- tinyglobby: 0.2.15
- tinyrainbow: 3.0.3
- vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(yaml@2.8.2)
- why-is-node-running: 2.3.0
- optionalDependencies:
- '@opentelemetry/api': 1.9.0
- '@types/node': 25.0.2
- jsdom: 27.4.0(postcss@8.5.6)
- transitivePeerDependencies:
- - jiti
- - less
- - lightningcss
- - msw
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - terser
- - tsx
- - yaml
-
vlq@1.0.1: {}
w3c-xmlserializer@4.0.0:
@@ -24707,7 +24376,7 @@ snapshots:
warn-once@0.1.1: {}
- watchpack@2.5.1:
+ watchpack@2.5.0:
dependencies:
glob-to-regexp: 0.4.1
graceful-fs: 4.2.11
@@ -24718,7 +24387,9 @@ snapshots:
web-streams-polyfill@3.3.3: {}
- web-vitals@5.1.0: {}
+ web-streams-polyfill@4.0.0-beta.3: {}
+
+ web-vitals@4.2.4: {}
webidl-conversions@3.0.1: {}
@@ -24776,7 +24447,7 @@ snapshots:
schema-utils: 4.3.3
tapable: 2.3.0
terser-webpack-plugin: 5.3.16(webpack@5.102.1)
- watchpack: 2.5.1
+ watchpack: 2.5.0
webpack-sources: 3.3.3
transitivePeerDependencies:
- '@swc/core'
@@ -24991,14 +24662,14 @@ snapshots:
yoctocolors-cjs@2.1.3: {}
- zod-to-json-schema@3.25.0(zod@4.3.6):
+ zod-to-json-schema@3.25.0(zod@4.3.5):
dependencies:
- zod: 4.3.6
+ zod: 4.3.5
- zod-validation-error@4.0.2(zod@4.3.6):
+ zod-validation-error@4.0.2(zod@4.3.5):
dependencies:
- zod: 4.3.6
+ zod: 4.3.5
- zod@4.3.6: {}
+ zod@4.3.5: {}
zwitch@2.0.4: {}
From 8e0c2f0b607036d239b712ae1eac4391b5bdcbe0 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 21 Jan 2026 22:30:38 +0100
Subject: [PATCH 02/69] Add locale resolver + translation hook
---
clients/apps/web/package.json | 1 +
.../checkout/[clientSecret]/CheckoutPage.tsx | 5 ++-
.../src/app/checkout/[clientSecret]/page.tsx | 13 ++++--
.../web/src/components/Checkout/Checkout.tsx | 9 +++-
clients/apps/web/src/utils/i18n/hooks.ts | 22 +++++++++
clients/apps/web/src/utils/i18n/index.ts | 45 +++++++++++++++++++
clients/packages/checkout/package.json | 1 +
.../checkout/src/components/CheckoutForm.tsx | 13 +++++-
clients/packages/i18n/package.json | 18 +++++++-
clients/packages/i18n/tsup.config.ts | 12 +++++
clients/pnpm-lock.yaml | 23 ++++++++--
11 files changed, 151 insertions(+), 11 deletions(-)
create mode 100644 clients/apps/web/src/utils/i18n/hooks.ts
create mode 100644 clients/apps/web/src/utils/i18n/index.ts
create mode 100644 clients/packages/i18n/tsup.config.ts
diff --git a/clients/apps/web/package.json b/clients/apps/web/package.json
index e56957265a..8f386d835a 100644
--- a/clients/apps/web/package.json
+++ b/clients/apps/web/package.json
@@ -42,6 +42,7 @@
"@polar-sh/client": "workspace:*",
"@polar-sh/currency": "workspace:^",
"@polar-sh/customer-portal": "workspace:*",
+ "@polar-sh/i18n": "workspace:*",
"@polar-sh/mdx": "workspace:*",
"@polar-sh/sdk": "^0.42.5",
"@polar-sh/ui": "workspace:*",
diff --git a/clients/apps/web/src/app/checkout/[clientSecret]/CheckoutPage.tsx b/clients/apps/web/src/app/checkout/[clientSecret]/CheckoutPage.tsx
index 81f76c1ba4..0e5aa98886 100644
--- a/clients/apps/web/src/app/checkout/[clientSecret]/CheckoutPage.tsx
+++ b/clients/apps/web/src/app/checkout/[clientSecret]/CheckoutPage.tsx
@@ -3,19 +3,22 @@
import Checkout from '@/components/Checkout/Checkout'
import CheckoutLayout from '@/components/Checkout/CheckoutLayout'
import { useCheckout } from '@polar-sh/checkout/providers'
+import { SupportedLocale } from '@polar-sh/i18n'
const ClientPage = ({
embed,
theme,
+ locale,
}: {
embed: boolean
theme?: 'light' | 'dark'
+ locale: SupportedLocale
}) => {
const { checkout } = useCheckout()
return (
-
+
)
}
diff --git a/clients/apps/web/src/app/checkout/[clientSecret]/page.tsx b/clients/apps/web/src/app/checkout/[clientSecret]/page.tsx
index fea886386b..6726212017 100644
--- a/clients/apps/web/src/app/checkout/[clientSecret]/page.tsx
+++ b/clients/apps/web/src/app/checkout/[clientSecret]/page.tsx
@@ -1,4 +1,5 @@
import { getPublicServerURL, getServerURL } from '@/utils/api'
+import { resolveLocale } from '@/utils/i18n'
import {
CheckoutFormProvider,
CheckoutProvider,
@@ -12,11 +13,17 @@ import CheckoutPage from './CheckoutPage'
export default async function Page(props: {
params: Promise<{ clientSecret: string }>
- searchParams: Promise<{ embed?: string; theme?: 'light' | 'dark' }>
+ searchParams: Promise<{
+ embed?: string
+ theme?: 'light' | 'dark'
+ locale?: string
+ }>
}) {
const searchParams = await props.searchParams
- const { embed: _embed, theme } = searchParams
+ const { embed: _embed, theme, locale: _locale } = searchParams
+
+ const locale = await resolveLocale(_locale)
const params = await props.params
@@ -81,7 +88,7 @@ export default async function Page(props: {
serverURL={getPublicServerURL()}
>
-
+
)
diff --git a/clients/apps/web/src/components/Checkout/Checkout.tsx b/clients/apps/web/src/components/Checkout/Checkout.tsx
index a10e3f8cf0..7e03da6d11 100644
--- a/clients/apps/web/src/components/Checkout/Checkout.tsx
+++ b/clients/apps/web/src/components/Checkout/Checkout.tsx
@@ -16,6 +16,7 @@ import {
} from '@polar-sh/checkout/guards'
import { useCheckoutFulfillmentListener } from '@polar-sh/checkout/hooks'
import { useCheckout, useCheckoutForm } from '@polar-sh/checkout/providers'
+import { SupportedLocale } from '@polar-sh/i18n'
import type { CheckoutConfirmStripe } from '@polar-sh/sdk/models/components/checkoutconfirmstripe'
import type { CheckoutPublicConfirmed } from '@polar-sh/sdk/models/components/checkoutpublicconfirmed'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
@@ -36,9 +37,14 @@ import CheckoutProductInfo from './CheckoutProductInfo'
export interface CheckoutProps {
embed?: boolean
theme?: 'light' | 'dark'
+ locale?: SupportedLocale
}
-const Checkout = ({ embed: _embed, theme: _theme }: CheckoutProps) => {
+const Checkout = ({
+ embed: _embed,
+ theme: _theme,
+ locale: _locale,
+}: CheckoutProps) => {
const { client } = useCheckout()
const {
checkout,
@@ -52,6 +58,7 @@ const Checkout = ({ embed: _embed, theme: _theme }: CheckoutProps) => {
const embed = _embed === true
const { resolvedTheme } = useTheme()
const theme = _theme || (resolvedTheme as 'light' | 'dark')
+ const locale: SupportedLocale = _locale || 'en'
const posthog = usePostHog()
const openedTrackedRef = useRef(false)
diff --git a/clients/apps/web/src/utils/i18n/hooks.ts b/clients/apps/web/src/utils/i18n/hooks.ts
new file mode 100644
index 0000000000..1aee3e3728
--- /dev/null
+++ b/clients/apps/web/src/utils/i18n/hooks.ts
@@ -0,0 +1,22 @@
+import {
+ type SupportedLocale,
+ type TranslationKey,
+ getTranslations,
+} from '@polar-sh/i18n'
+import { useCallback } from 'react'
+
+export const useTranslations = (locale: SupportedLocale) => {
+ return useCallback(
+ (key: TranslationKey): string => {
+ const translations = getTranslations(locale)
+
+ return key
+ .split('.')
+ .reduce(
+ (obj, k) => (obj as Record)[k],
+ translations,
+ ) as string
+ },
+ [locale],
+ )
+}
diff --git a/clients/apps/web/src/utils/i18n/index.ts b/clients/apps/web/src/utils/i18n/index.ts
new file mode 100644
index 0000000000..7edc0a8e91
--- /dev/null
+++ b/clients/apps/web/src/utils/i18n/index.ts
@@ -0,0 +1,45 @@
+import {
+ DEFAULT_LOCALE,
+ isSupportedLocale,
+ SUPPORTED_LOCALES,
+ type SupportedLocale,
+} from '@polar-sh/i18n'
+import { headers } from 'next/headers'
+
+function getLocaleFromAcceptLanguage(
+ acceptLanguage: string | null,
+): SupportedLocale {
+ if (!acceptLanguage) return DEFAULT_LOCALE
+
+ const languages = acceptLanguage
+ .split(',')
+ .map((lang) => {
+ const [code, qValue] = lang.trim().split(';q=')
+ return {
+ code: code.split('-')[0].toLowerCase(),
+ q: qValue ? parseFloat(qValue) : 1,
+ }
+ })
+ .sort((a, b) => b.q - a.q)
+
+ for (const { code } of languages) {
+ if (SUPPORTED_LOCALES.includes(code as SupportedLocale)) {
+ return code as SupportedLocale
+ }
+ }
+
+ return DEFAULT_LOCALE
+}
+
+export async function resolveLocale(
+ searchParamLocale?: string,
+): Promise {
+ if (searchParamLocale && isSupportedLocale(searchParamLocale)) {
+ return searchParamLocale
+ }
+
+ const headersList = await headers()
+ const acceptLanguage = headersList.get('accept-language')
+
+ return getLocaleFromAcceptLanguage(acceptLanguage)
+}
diff --git a/clients/packages/checkout/package.json b/clients/packages/checkout/package.json
index 7f858fd600..5534e473ab 100644
--- a/clients/packages/checkout/package.json
+++ b/clients/packages/checkout/package.json
@@ -75,6 +75,7 @@
"@polar-sh/currency": "workspace:^",
"@polar-sh/sdk": "^0.42.5",
"@polar-sh/ui": "workspace:^",
+ "@polar-sh/i18n": "workspace:*",
"event-source-plus": "^0.1.15",
"eventemitter3": "^5.0.4",
"markdown-to-jsx": "^8.0.0",
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 465e074cc2..d0d07b0d3a 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -1,6 +1,7 @@
'use client'
import { formatCurrency } from '@polar-sh/currency'
+import { SupportedLocale, useTranslations } from '@polar-sh/i18n'
import { CountryAlpha2Input } from '@polar-sh/sdk/models/components/addressinput'
import type { CheckoutConfirmStripe } from '@polar-sh/sdk/models/components/checkoutconfirmstripe'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
@@ -94,6 +95,9 @@ interface BaseCheckoutFormProps {
disabled?: boolean
isUpdatePending?: boolean
themePreset: ThemingPresetProps
+ subscribeNowButtonExperiment?: boolean
+ payNowButtonExperiment?: boolean
+ locale?: SupportedLocale
}
const BaseCheckoutForm = ({
@@ -107,6 +111,9 @@ const BaseCheckoutForm = ({
isUpdatePending,
children,
themePreset: themePresetProps,
+ subscribeNowButtonExperiment,
+ payNowButtonExperiment,
+ locale: localeProp,
}: React.PropsWithChildren) => {
const interval = hasProductCheckout(checkout)
? hasLegacyRecurringPrices(checkout.prices[checkout.product.id])
@@ -135,6 +142,10 @@ const BaseCheckoutForm = ({
[product],
)
+ const locale: SupportedLocale = localeProp || 'en'
+
+ const t = useTranslations(locale)
+
const country = watch('customerBillingAddress.country')
const watcher: WatchObserver = useCallback(
async (value, { name }) => {
@@ -909,7 +920,7 @@ const BaseCheckoutForm = ({
className="dark:text-polar-600 flex w-full flex-row items-center justify-center gap-x-3 text-sm text-gray-400"
target="_blank"
>
- Powered by
+ {t('checkout.poweredBy')}
diff --git a/clients/packages/i18n/package.json b/clients/packages/i18n/package.json
index 7727e01dbe..c5e83da831 100644
--- a/clients/packages/i18n/package.json
+++ b/clients/packages/i18n/package.json
@@ -5,6 +5,7 @@
"author": "Polar",
"license": "Apache-2.0",
"type": "module",
+ "private": true,
"repository": {
"type": "git",
"url": "https://github.com/polarsource/polar.git",
@@ -16,23 +17,38 @@
"lint": "prettier -c .",
"typecheck": "tsc --noEmit",
"test": "vitest run",
- "test:watch": "vitest"
+ "test:watch": "vitest",
+ "build": "rm -rf dist && tsup"
},
"exports": {
+ ".": {
+ "types": "./dist/index.d.ts",
+ "default": "./dist/index.js"
+ },
"./locales/en.json": "./src/locales/en.json",
"./locales/sv.json": "./src/locales/generated-translations/sv.json",
"./locales/es.json": "./src/locales/generated-translations/es.json",
"./locales/fr.json": "./src/locales/generated-translations/fr.json",
"./locales/nl.json": "./src/locales/generated-translations/nl.json"
},
+ "types": "./dist/index.d.ts",
+ "files": [
+ "dist"
+ ],
"devDependencies": {
"@polar-sh/typescript-config": "workspace:*",
"@types/node": "^22.16.1",
+ "@types/react": "^19.2.9",
"dotenv": "^16.4.5",
"openai": "^4.103.0",
"prettier": "^3.7.4",
+ "react": "^19.2.3",
"tsx": "^4.19.0",
+ "tsup": "^8.5.1",
"typescript": "latest",
"vitest": "^3.2.4"
+ },
+ "peerDependencies": {
+ "react": "^19.2.3"
}
}
diff --git a/clients/packages/i18n/tsup.config.ts b/clients/packages/i18n/tsup.config.ts
new file mode 100644
index 0000000000..da4de1c47c
--- /dev/null
+++ b/clients/packages/i18n/tsup.config.ts
@@ -0,0 +1,12 @@
+import { defineConfig, Options } from 'tsup'
+
+export const options: Options[] = [
+ {
+ entry: ['src/index.ts'],
+ format: ['cjs', 'esm'],
+ minify: true,
+ dts: true,
+ },
+]
+
+export default defineConfig(options)
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index 5c0656e6b9..d79cb40cfb 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -326,6 +326,9 @@ importers:
'@polar-sh/customer-portal':
specifier: workspace:*
version: link:../../packages/customer-portal
+ '@polar-sh/i18n':
+ specifier: workspace:*
+ version: link:../../packages/i18n
'@polar-sh/mdx':
specifier: workspace:*
version: link:../../packages/mdx
@@ -605,7 +608,7 @@ importers:
version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
examples/checkout-embed:
dependencies:
@@ -618,6 +621,9 @@ importers:
packages/checkout:
dependencies:
+ '@polar-sh/i18n':
+ specifier: workspace:*
+ version: link:../i18n
'@polar-sh/sdk':
specifier: ^0.42.1
version: 0.42.1
@@ -771,6 +777,9 @@ importers:
'@types/node':
specifier: ^22.16.1
version: 22.19.3
+ '@types/react':
+ specifier: 19.2.3
+ version: 19.2.3
dotenv:
specifier: ^16.4.5
version: 16.6.1
@@ -780,6 +789,12 @@ importers:
prettier:
specifier: ^3.7.4
version: 3.7.4
+ react:
+ specifier: ^19.2.3
+ version: 19.2.3
+ tsup:
+ specifier: ^8.5.1
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
tsx:
specifier: ^4.19.0
version: 4.21.0
@@ -788,7 +803,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
packages/mdx:
dependencies:
@@ -16579,7 +16594,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.15
tinyrainbow: 2.0.0
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/utils@2.1.9':
dependencies:
@@ -24316,7 +24331,7 @@ snapshots:
- supports-color
- terser
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0)(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@types/chai': 5.2.3
'@vitest/expect': 3.2.4
From f8e817079503ba9b793580f3a6cbff60bff6d58c Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 22 Jan 2026 11:11:48 +0100
Subject: [PATCH 03/69] Add type-safe string interpolation
---
clients/packages/i18n/src/index.ts | 70 +++++++++++++++++++++--
clients/packages/i18n/src/locales/en.json | 3 +
2 files changed, 69 insertions(+), 4 deletions(-)
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index 80cfd139b6..b3afb56abf 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -8,7 +8,16 @@ export function isSupportedLocale(locale: string): locale is SupportedLocale {
return SUPPORTED_LOCALES.includes(locale as SupportedLocale)
}
-import en from './locales/en.json'
+// import en from './locales/en.json'
+
+const en = {
+ checkout: {
+ poweredBy: 'Powered by',
+ },
+ playground: {
+ interpolation: 'This is a {test}',
+ },
+} as const
export type Translations = typeof en
@@ -22,6 +31,42 @@ type LeafPaths = T extends object
export type TranslationKey = LeafPaths
+// Get the literal string value at a dot-separated path
+type ValueAtPath<
+ T,
+ Path extends string,
+> = Path extends `${infer First}.${infer Rest}`
+ ? First extends keyof T
+ ? ValueAtPath
+ : never
+ : Path extends keyof T
+ ? T[Path]
+ : never
+
+// Recursively extract {placeholder} names from a string
+type ExtractPlaceholders =
+ S extends `${string}{${infer Key}}${infer Rest}`
+ ? Key | ExtractPlaceholders
+ : never
+
+// Build the interpolations type for a given key
+type InterpolationsFor = ExtractPlaceholders<
+ ValueAtPath & string
+>
+
+// The translate function type with conditional interpolations
+type TranslateFn = (
+ key: K,
+ ...args: InterpolationsFor extends never
+ ? []
+ : [
+ interpolations: Record<
+ InterpolationsFor,
+ string | { toString(): string }
+ >,
+ ]
+) => string
+
const translations: Record = {
en,
}
@@ -32,17 +77,34 @@ export function getTranslations(
return translations[locale] ?? translations[DEFAULT_LOCALE]
}
-export const useTranslations = (locale: SupportedLocale) => {
+export const useTranslations = (locale: SupportedLocale): TranslateFn => {
return useCallback(
- (key: TranslationKey): string => {
+ (
+ key: TranslationKey,
+ interpolations?: Record,
+ ): string => {
const translations = getTranslations(locale)
- return key
+ const template = key
.split('.')
.reduce(
(obj, k) => (obj as Record)[k],
translations,
) as string
+
+ if (!interpolations) {
+ return template
+ }
+
+ return template.replace(/\{([a-zA-Z0-9_]+)\}/g, (_, interpolationKey) => {
+ const value = interpolations[interpolationKey]
+
+ if (value === undefined) {
+ return `{${interpolationKey}}`
+ }
+
+ return value.toString()
+ })
},
[locale],
)
diff --git a/clients/packages/i18n/src/locales/en.json b/clients/packages/i18n/src/locales/en.json
index 38e12a7793..99bfa16fea 100644
--- a/clients/packages/i18n/src/locales/en.json
+++ b/clients/packages/i18n/src/locales/en.json
@@ -1,5 +1,8 @@
{
"checkout": {
"poweredBy": "Powered by"
+ },
+ "playground": {
+ "interpolation": "This is a {test}"
}
}
From c8085b11df77d60706d841c29f41b838a608cdaf Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 22 Jan 2026 12:11:38 +0100
Subject: [PATCH 04/69] Interpolation & plurals
---
.../checkout/src/components/CheckoutForm.tsx | 8 ++
clients/packages/i18n/src/index.ts | 109 +++++++++++-------
clients/packages/i18n/src/locales/en.json | 8 --
clients/packages/i18n/src/locales/en.ts | 20 ++++
4 files changed, 96 insertions(+), 49 deletions(-)
delete mode 100644 clients/packages/i18n/src/locales/en.json
create mode 100644 clients/packages/i18n/src/locales/en.ts
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index d0d07b0d3a..1149bbfcf4 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -921,6 +921,14 @@ const BaseCheckoutForm = ({
target="_blank"
>
{t('checkout.poweredBy')}
+ {t('playground.interpolation', { test: 123 })}
+ {t('playground.plurals', { count: 4 })}
+
+ {t('playground.pluralsWithInterpolation', {
+ count: 4,
+ query: 'test',
+ })}
+
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index b3afb56abf..b165ec9272 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -8,25 +8,20 @@ export function isSupportedLocale(locale: string): locale is SupportedLocale {
return SUPPORTED_LOCALES.includes(locale as SupportedLocale)
}
-// import en from './locales/en.json'
-
-const en = {
- checkout: {
- poweredBy: 'Powered by',
- },
- playground: {
- interpolation: 'This is a {test}',
- },
-} as const
+import { en } from './locales/en'
export type Translations = typeof en
type LeafPaths = T extends object
- ? {
- [K in keyof T & string]: T[K] extends object
- ? `${K}.${LeafPaths}`
- : K
- }[keyof T & string]
+ ? '_mode' extends keyof T
+ ? never
+ : {
+ [K in keyof T & string]: '_mode' extends keyof T[K]
+ ? K
+ : T[K] extends object
+ ? `${K}.${LeafPaths}`
+ : K
+ }[keyof T & string]
: never
export type TranslationKey = LeafPaths
@@ -49,22 +44,29 @@ type ExtractPlaceholders =
? Key | ExtractPlaceholders
: never
-// Build the interpolations type for a given key
-type InterpolationsFor = ExtractPlaceholders<
- ValueAtPath & string
->
+// Get all required interpolation keys for a translation key
+// Plurals always require 'count' + any {placeholders} in the templates
+type InterpolationKeys =
+ ValueAtPath extends infer V
+ ? '_mode' extends keyof V
+ ? 'count' | ExtractPlaceholders] & string>
+ : V extends string
+ ? ExtractPlaceholders
+ : never
+ : never
+
+type InterpolationValue = string | number | { toString(): string }
+
+type InterpolationsRecord = {
+ [K in Keys]: K extends 'count' ? number : InterpolationValue
+}
// The translate function type with conditional interpolations
type TranslateFn = (
key: K,
- ...args: InterpolationsFor extends never
+ ...args: InterpolationKeys extends never
? []
- : [
- interpolations: Record<
- InterpolationsFor,
- string | { toString(): string }
- >,
- ]
+ : [interpolations: InterpolationsRecord>]
) => string
const translations: Record = {
@@ -79,33 +81,58 @@ export function getTranslations(
export const useTranslations = (locale: SupportedLocale): TranslateFn => {
return useCallback(
- (
- key: TranslationKey,
- interpolations?: Record,
- ): string => {
+ ((key: string, interpolations?: Record) => {
const translations = getTranslations(locale)
- const template = key
+ const value = key
.split('.')
.reduce(
(obj, k) => (obj as Record)[k],
translations,
- ) as string
+ )
+
+ // Handle plural objects
+ if (
+ typeof value === 'object' &&
+ value !== null &&
+ '_mode' in value &&
+ (value as { _mode: string })._mode === 'plural'
+ ) {
+ const pluralObj = value as Record
+ const count = (interpolations as { count: number })?.count ?? 0
+
+ // Exact match first (=0, =1, etc.), then fall back to 'other'
+ const template = pluralObj[`=${count}`] ?? pluralObj.other
+
+ // Replace # with count, then handle other interpolations
+ let result = template.replace(/#/g, count.toString())
+
+ if (interpolations) {
+ result = result.replace(/\{([a-zA-Z0-9_]+)\}/g, (_, k) => {
+ const val = interpolations[k]
+ return val === undefined ? `{${k}}` : String(val)
+ })
+ }
- if (!interpolations) {
- return template
+ return result
}
- return template.replace(/\{([a-zA-Z0-9_]+)\}/g, (_, interpolationKey) => {
- const value = interpolations[interpolationKey]
+ // Regular string template
+ const template = value as string
- if (value === undefined) {
- return `{${interpolationKey}}`
- }
+ if (!interpolations) {
+ return template
+ }
- return value.toString()
+ return template.replace(/\{([a-zA-Z0-9_]+)\}/g, (_, k) => {
+ const val = interpolations[k]
+ return val === undefined ? `{${k}}` : String(val)
})
- },
+ }) as TranslateFn,
[locale],
)
}
+
+type _DebugValue = ValueAtPath
+type _DebugExtract = ExtractPlaceholders<'This is a {test}'>
+type _DebugDirect = Translations['playground']['interpolation']
diff --git a/clients/packages/i18n/src/locales/en.json b/clients/packages/i18n/src/locales/en.json
deleted file mode 100644
index 99bfa16fea..0000000000
--- a/clients/packages/i18n/src/locales/en.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "checkout": {
- "poweredBy": "Powered by"
- },
- "playground": {
- "interpolation": "This is a {test}"
- }
-}
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
new file mode 100644
index 0000000000..dd722f77d9
--- /dev/null
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -0,0 +1,20 @@
+export const en = {
+ checkout: {
+ poweredBy: 'Powered by',
+ },
+ playground: {
+ interpolation: 'This is a {test}',
+ plurals: {
+ _mode: 'plural',
+ '=0': 'No messages',
+ '=1': 'One message',
+ other: '# messages',
+ },
+ pluralsWithInterpolation: {
+ _mode: 'plural',
+ '=0': 'No results found for {query}',
+ '=1': 'One result found for {query}',
+ other: '# results found for {query}',
+ },
+ },
+} as const
From fb5c2b1fb7311b5cf489630b7e4ef01dc6dcde75 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 08:53:19 +0100
Subject: [PATCH 05/69] Re-run `pnpm i`
---
clients/pnpm-lock.yaml | 3241 ++++++++++++++++++++++++----------------
1 file changed, 1973 insertions(+), 1268 deletions(-)
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index d79cb40cfb..aca30daa18 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -9,6 +9,11 @@ overrides:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3
+patchedDependencies:
+ openapi-typescript@7.10.1:
+ hash: d5d81a1091dd25eaff66014508c84e42c721bcbe3f7693dcf58aa2c28132735b
+ path: patches/openapi-typescript@7.10.1.patch
+
importers:
.:
@@ -23,17 +28,17 @@ importers:
specifier: 1.2.2
version: 1.2.2
prettier:
- specifier: ^3.7.4
- version: 3.7.4
+ specifier: ^3.8.1
+ version: 3.8.1
prettier-plugin-organize-imports:
specifier: ^4.3.0
- version: 4.3.0(prettier@3.7.4)(typescript@5.9.3)
+ version: 4.3.0(prettier@3.8.1)(typescript@5.9.3)
prettier-plugin-tailwindcss:
specifier: ^0.7.2
- version: 0.7.2(prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3))(prettier@3.7.4)
+ version: 0.7.2(prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3))(prettier@3.8.1)
turbo:
- specifier: ^2.7.2
- version: 2.7.2
+ specifier: ^2.7.6
+ version: 2.8.3
apps/app:
dependencies:
@@ -64,6 +69,9 @@ importers:
'@polar-sh/client':
specifier: workspace:*
version: link:../../packages/client
+ '@polar-sh/currency':
+ specifier: workspace:^
+ version: link:../../packages/currency
'@react-native-async-storage/async-storage':
specifier: 2.2.0
version: 2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
@@ -262,67 +270,70 @@ importers:
dependencies:
'@ai-sdk/anthropic':
specifier: ^2.0.56
- version: 2.0.56(zod@4.3.5)
+ version: 2.0.56(zod@4.3.6)
'@ai-sdk/google':
specifier: ^2.0.46
- version: 2.0.46(zod@4.3.5)
+ version: 2.0.46(zod@4.3.6)
'@ai-sdk/mcp':
specifier: ^0.0.11
- version: 0.0.11(zod@4.3.5)
+ version: 0.0.11(zod@4.3.6)
'@ai-sdk/react':
specifier: ^2.0.115
- version: 2.0.115(react@19.2.3)(zod@4.3.5)
+ version: 2.0.115(react@19.2.4)(zod@4.3.6)
'@cloudflare/stream-react':
specifier: ^1.9.3
- version: 1.9.3(react@19.2.3)
+ version: 1.9.3(react@19.2.4)
'@date-fns/utc':
specifier: ^2.1.1
version: 2.1.1
'@dnd-kit/core':
specifier: ^6.3.1
- version: 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@dnd-kit/sortable':
specifier: ^10.0.0
- version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)
+ 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)
'@dnd-kit/utilities':
specifier: ^3.2.2
- version: 3.2.2(react@19.2.3)
+ version: 3.2.2(react@19.2.4)
'@emotion/react':
specifier: ^11.14.0
- version: 11.14.0(@types/react@19.2.3)(react@19.2.3)
+ version: 11.14.0(@types/react@19.2.3)(react@19.2.4)
'@emotion/styled':
specifier: ^11.14.1
- version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
+ version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
'@hookform/error-message':
specifier: ^2.0.1
- version: 2.0.1(react-dom@19.2.3(react@19.2.3))(react-hook-form@7.70.0(react@19.2.3))(react@19.2.3)
+ version: 2.0.1(react-dom@19.2.4(react@19.2.4))(react-hook-form@7.71.1(react@19.2.4))(react@19.2.4)
'@mdx-js/loader':
specifier: ^3.1.1
version: 3.1.1(webpack@5.102.1)
'@mdx-js/react':
specifier: ^3.1.1
- version: 3.1.1(@types/react@19.2.3)(react@19.2.3)
+ version: 3.1.1(@types/react@19.2.3)(react@19.2.4)
'@modelcontextprotocol/sdk':
- specifier: ^1.25.1
- version: 1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5)
+ specifier: ^1.25.3
+ version: 1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)
'@mui/icons-material':
- specifier: ^7.3.6
- version: 7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
+ specifier: ^7.3.7
+ version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
'@mui/material':
- specifier: ^7.3.6
- version: 7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^7.3.7
+ version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@next/mdx':
- specifier: 16.1.1
- version: 16.1.1(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.3))
+ specifier: ^16.1.5
+ version: 16.1.6(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4))
'@next/third-parties':
- specifier: 16.1.1
- version: 16.1.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)
+ specifier: ^16.1.5
+ version: 16.1.6(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4)
'@polar-sh/checkout':
specifier: workspace:^
version: link:../../packages/checkout
'@polar-sh/client':
specifier: workspace:*
version: link:../../packages/client
+ '@polar-sh/currency':
+ specifier: workspace:^
+ version: link:../../packages/currency
'@polar-sh/customer-portal':
specifier: workspace:*
version: link:../../packages/customer-portal
@@ -333,35 +344,35 @@ importers:
specifier: workspace:*
version: link:../../packages/mdx
'@polar-sh/sdk':
- specifier: ^0.42.1
- version: 0.42.1
+ specifier: ^0.42.5
+ version: 0.42.5
'@polar-sh/ui':
specifier: workspace:*
version: link:../../packages/ui
'@posthog/ai':
- specifier: ^7.3.0
- version: 7.3.0(@ai-sdk/provider@2.0.0)(@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(posthog-node@5.18.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(ws@8.18.3)(zod-to-json-schema@3.25.0(zod@4.3.5))
+ specifier: ^7.5.4
+ version: 7.8.5(@ai-sdk/provider@2.0.0)(@modelcontextprotocol/sdk@1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(posthog-node@5.24.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(ws@8.18.3)(zod-to-json-schema@3.25.1(zod@4.3.6))
'@posthog/core':
- specifier: ^1.9.0
- version: 1.9.0
+ specifier: ^1.14.0
+ version: 1.20.0
'@radix-ui/react-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.16
- version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-toast':
specifier: ^1.2.15
- version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@sentry/nextjs':
- specifier: ^10.32.1
- version: 10.32.1(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.102.1)
+ specifier: ^10.37.0
+ version: 10.38.0(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4)(webpack@5.102.1)
'@shikijs/rehype':
- specifier: ^3.20.0
- version: 3.20.0
+ specifier: ^3.21.0
+ version: 3.22.0
'@stripe/react-stripe-js':
specifier: ^4.0.2
- version: 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@stripe/stripe-js':
specifier: ^7.9.0
version: 7.9.0
@@ -375,17 +386,17 @@ importers:
specifier: ^0.5.19
version: 0.5.19(tailwindcss@4.1.18)
'@tanstack/react-query':
- specifier: ^5.90.16
- version: 5.90.16(react@19.2.3)
+ specifier: ^5.90.20
+ version: 5.90.20(react@19.2.4)
'@tanstack/react-table':
specifier: ^8.21.3
- version: 8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@vercel/blob':
specifier: ^0.23.4
version: 0.23.4
ai:
specifier: ^5.0.113
- version: 5.0.113(zod@4.3.5)
+ version: 5.0.113(zod@4.3.6)
big.js:
specifier: ^7.0.1
version: 7.0.1
@@ -393,8 +404,8 @@ importers:
specifier: ^0.7.1
version: 0.7.1
crawler-user-agents:
- specifier: ^1.24.0
- version: 1.24.0
+ specifier: ^1.26.0
+ version: 1.27.0
date-fns:
specifier: ^4.1.0
version: 4.1.0
@@ -405,74 +416,74 @@ importers:
specifier: ^0.1.15
version: 0.1.15
eventemitter3:
- specifier: ^5.0.1
- version: 5.0.1
+ specifier: ^5.0.4
+ version: 5.0.4
framer-motion:
- specifier: ^12.23.26
- version: 12.23.26(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^12.29.2
+ version: 12.31.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
geist:
specifier: ^1.5.1
- version: 1.5.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))
+ version: 1.5.1(next@16.1.6(@babel/core@7.28.5)(@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))
hash-wasm:
specifier: ^4.12.0
version: 4.12.0
import-in-the-middle:
- specifier: ^2.0.1
- version: 2.0.1
+ specifier: ^2.0.5
+ version: 2.0.6
lodash.debounce:
specifier: ^4.0.8
version: 4.0.8
lucide-react:
- specifier: ^0.562.0
- version: 0.562.0(react@19.2.3)
+ specifier: ^0.563.0
+ version: 0.563.0(react@19.2.4)
markdown-to-jsx:
specifier: ^8.0.0
- version: 8.0.0(react@19.2.3)
+ version: 8.0.0(react@19.2.4)
nanoid:
specifier: ^5.1.6
version: 5.1.6
next:
- specifier: 16.1.1
- version: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^16.1.5
+ version: 16.1.6(@babel/core@7.28.5)(@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-themes:
specifier: ^0.4.6
- version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
nuqs:
specifier: ^2.8.6
- version: 2.8.6(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)
+ version: 2.8.6(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4)
posthog-js:
- specifier: ^1.313.0
- version: 1.313.0
+ specifier: ^1.335.3
+ version: 1.341.0
posthog-node:
- specifier: ^5.18.1
- version: 5.18.1
+ specifier: ^5.24.2
+ version: 5.24.10
qrcode:
specifier: ^1.5.4
version: 1.5.4
react:
- specifier: 19.2.3
- version: 19.2.3
+ specifier: 19.2.4
+ version: 19.2.4
react-dom:
- specifier: 19.2.3
- version: 19.2.3(react@19.2.3)
+ specifier: 19.2.4
+ version: 19.2.4(react@19.2.4)
react-dropzone:
specifier: ^14.3.8
- version: 14.3.8(react@19.2.3)
+ version: 14.3.8(react@19.2.4)
react-focus-lock:
specifier: ^2.13.7
- version: 2.13.7(@types/react@19.2.3)(react@19.2.3)
+ version: 2.13.7(@types/react@19.2.3)(react@19.2.4)
react-hook-form:
- specifier: ~7.70.0
- version: 7.70.0(react@19.2.3)
+ specifier: ~7.71.1
+ version: 7.71.1(react@19.2.4)
react-timeago:
specifier: ^8.3.0
- version: 8.3.0(react@19.2.3)
+ version: 8.3.0(react@19.2.4)
react-use:
specifier: ^17.6.0
- version: 17.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
recharts:
- specifier: ^3.6.0
- version: 3.6.0(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.3)(react@19.2.3)(redux@5.0.1)
+ specifier: ^3.7.0
+ version: 3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1)
rehype-mdx-import-media:
specifier: ^1.2.0
version: 1.2.0
@@ -489,8 +500,8 @@ importers:
specifier: ^8.0.1
version: 8.0.1
shiki:
- specifier: ^3.20.0
- version: 3.20.0
+ specifier: ^3.21.0
+ version: 3.22.0
slugify:
specifier: ^1.6.6
version: 1.6.6
@@ -507,12 +518,12 @@ importers:
specifier: ^1.4.0
version: 1.4.0
zod:
- specifier: ^4.3.5
- version: 4.3.5
+ specifier: ^4.3.6
+ version: 4.3.6
devDependencies:
'@next/bundle-analyzer':
- specifier: 16.1.1
- version: 16.1.1
+ specifier: ^16.1.5
+ version: 16.1.6
'@polar-sh/eslint-config':
specifier: workspace:*
version: link:../../packages/eslint-config
@@ -538,8 +549,8 @@ importers:
specifier: ^2.0.13
version: 2.0.13
'@types/node':
- specifier: ^22.19.3
- version: 22.19.3
+ specifier: ^24.0.0
+ version: 24.10.10
'@types/qrcode':
specifier: ^1.5.6
version: 1.5.6
@@ -553,11 +564,11 @@ importers:
specifier: ^1.4.6
version: 1.4.6
'@types/web':
- specifier: ^0.0.312
- version: 0.0.312
+ specifier: ^0.0.323
+ version: 0.0.323
'@vitejs/plugin-react':
specifier: ^5.1.2
- version: 5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
+ version: 5.1.2(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@vitest/ui':
specifier: ^3.2.4
version: 3.2.4(vitest@3.2.4)
@@ -580,8 +591,8 @@ importers:
specifier: ^8.5.6
version: 8.5.6
prettier:
- specifier: ^3.7.4
- version: 3.7.4
+ specifier: ^3.8.1
+ version: 3.8.1
prop-types:
specifier: ^15.8.1
version: 15.8.1
@@ -596,19 +607,19 @@ importers:
version: 4.1.18
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@types/node@22.19.3)(typescript@5.9.3)
+ version: 10.9.2(@types/node@24.10.10)(typescript@5.9.3)
typescript:
specifier: 5.9.3
version: 5.9.3
unist-util-visit:
- specifier: ^5.0.0
- version: 5.0.0
+ specifier: ^5.1.0
+ version: 5.1.0
vite-tsconfig-paths:
specifier: ^5.1.4
- version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
+ version: 5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.10)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
examples/checkout-embed:
dependencies:
@@ -621,12 +632,15 @@ importers:
packages/checkout:
dependencies:
+ '@polar-sh/currency':
+ specifier: workspace:^
+ version: link:../currency
'@polar-sh/i18n':
specifier: workspace:*
version: link:../i18n
'@polar-sh/sdk':
- specifier: ^0.42.1
- version: 0.42.1
+ specifier: ^0.42.5
+ version: 0.42.5
'@polar-sh/ui':
specifier: workspace:^
version: link:../ui
@@ -634,21 +648,21 @@ importers:
specifier: ^0.1.15
version: 0.1.15
eventemitter3:
- specifier: ^5.0.1
- version: 5.0.1
+ specifier: ^5.0.4
+ version: 5.0.4
markdown-to-jsx:
specifier: ^8.0.0
- version: 8.0.0(react@19.2.3)
+ version: 8.0.0(react@19.2.4)
react-hook-form:
- specifier: ~7.70.0
- version: 7.70.0(react@19.2.3)
+ specifier: ~7.71.1
+ version: 7.71.1(react@19.2.4)
devDependencies:
'@polar-sh/typescript-config':
specifier: workspace:*
version: link:../typescript-config
'@stripe/react-stripe-js':
specifier: ^4.0.2
- version: 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@stripe/stripe-js':
specifier: ^7.9.0
version: 7.9.0
@@ -656,11 +670,11 @@ importers:
specifier: 19.2.3
version: 19.2.3
react:
- specifier: ^19.2.3
- version: 19.2.3
+ specifier: ^19.2.4
+ version: 19.2.4
terser:
- specifier: ^5.44.1
- version: 5.44.1
+ specifier: ^5.46.0
+ version: 5.46.0
tsup:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -682,13 +696,28 @@ importers:
version: link:../typescript-config
openapi-typescript:
specifier: ^7.10.1
- version: 7.10.1(typescript@5.9.3)
+ version: 7.10.1(patch_hash=d5d81a1091dd25eaff66014508c84e42c721bcbe3f7693dcf58aa2c28132735b)(typescript@5.9.3)
+ tsup:
+ specifier: ^8.5.1
+ version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
+ typescript:
+ specifier: latest
+ version: 5.9.3
+
+ packages/currency:
+ devDependencies:
+ '@polar-sh/typescript-config':
+ specifier: workspace:*
+ version: link:../typescript-config
tsup:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
typescript:
specifier: latest
version: 5.9.3
+ vitest:
+ specifier: ^4.0.18
+ version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.0.2)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
packages/customer-portal:
dependencies:
@@ -709,8 +738,8 @@ importers:
specifier: workspace:*
version: link:../typescript-config
'@testing-library/react':
- specifier: ^16.0.0
- version: 16.3.1(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ specifier: ^16.3.2
+ version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.3))(react@19.2.3)
'@types/react':
specifier: 19.2.3
version: 19.2.3
@@ -721,17 +750,17 @@ importers:
specifier: ^25.0.0
version: 25.0.1
msw:
- specifier: ^2.0.0
+ specifier: ^2.12.7
version: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
tsup:
- specifier: ^8.0.0
+ specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
typescript:
specifier: latest
version: 5.9.3
vitest:
specifier: ^2.0.0
- version: 2.1.9(@types/node@25.0.2)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.44.1)
+ version: 2.1.9(@types/node@25.0.2)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)
packages/eslint-config:
devDependencies:
@@ -758,7 +787,7 @@ importers:
version: 7.0.1(eslint@9.39.2(jiti@2.6.1))
eslint-plugin-turbo:
specifier: ^2.6.3
- version: 2.6.3(eslint@9.39.2(jiti@2.6.1))(turbo@2.7.2)
+ version: 2.6.3(eslint@9.39.2(jiti@2.6.1))(turbo@2.8.3)
globals:
specifier: ^16.5.0
version: 16.5.0
@@ -803,7 +832,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
packages/mdx:
dependencies:
@@ -824,60 +853,63 @@ importers:
packages/ui:
dependencies:
+ '@polar-sh/currency':
+ specifier: workspace:^
+ version: link:../currency
'@radix-ui/react-accordion':
specifier: ^1.2.12
- version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-alert-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-checkbox':
specifier: ^1.3.3
- version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.16
- version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-label':
specifier: ^2.1.8
- version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-popover':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-radio-group':
specifier: ^1.3.8
- version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-select':
specifier: ^2.2.6
- version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-separator':
specifier: ^1.1.8
- version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-slot':
specifier: ^1.2.4
- version: 1.2.4(@types/react@19.2.3)(react@19.2.3)
+ version: 1.2.4(@types/react@19.2.3)(react@19.2.4)
'@radix-ui/react-switch':
specifier: ^1.2.6
- version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-tabs':
specifier: ^1.1.13
- version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-toast':
specifier: ^1.2.15
- version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-toggle':
specifier: ^1.1.10
- version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-toggle-group':
specifier: ^1.1.11
- version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-tooltip':
specifier: ^1.2.8
- version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@tanstack/react-table':
specifier: ^8.21.3
- version: 8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -886,7 +918,7 @@ importers:
version: 2.1.1
cmdk:
specifier: ^1.1.1
- version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
countries-list:
specifier: ^3.2.2
version: 3.2.2
@@ -895,22 +927,22 @@ importers:
version: 4.1.0
input-otp:
specifier: ^1.4.2
- version: 1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
lucide-react:
- specifier: ^0.562.0
- version: 0.562.0(react@19.2.3)
+ specifier: ^0.563.0
+ version: 0.563.0(react@19.2.4)
react-day-picker:
specifier: ^9.13.0
- version: 9.13.0(react@19.2.3)
+ version: 9.13.0(react@19.2.4)
react-hook-form:
- specifier: ~7.70.0
- version: 7.70.0(react@19.2.3)
+ specifier: ~7.71.1
+ version: 7.71.1(react@19.2.4)
react-timeago:
specifier: ^8.3.0
- version: 8.3.0(react@19.2.3)
+ version: 8.3.0(react@19.2.4)
recharts:
- specifier: ^3.6.0
- version: 3.6.0(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.3)(react@19.2.3)(redux@5.0.1)
+ specifier: ^3.7.0
+ version: 3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1)
tailwind-merge:
specifier: ^3.4.0
version: 3.4.0
@@ -925,14 +957,14 @@ importers:
specifier: 19.2.3
version: 19.2.3(@types/react@19.2.3)
prettier:
- specifier: ^3.7.4
- version: 3.7.4
+ specifier: ^3.8.1
+ version: 3.8.1
react:
- specifier: ^19.2.3
- version: 19.2.3
+ specifier: ^19.2.4
+ version: 19.2.4
react-dom:
- specifier: ^19.2.3
- version: 19.2.3(react@19.2.3)
+ specifier: ^19.2.4
+ version: 19.2.4(react@19.2.4)
tsup:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -1007,8 +1039,8 @@ packages:
resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
engines: {node: '>=10'}
- '@anthropic-ai/sdk@0.71.2':
- resolution: {integrity: sha512-TGNDEUuEstk/DKu0/TflXAEt+p+p/WhTlFzEnoosvbaDU2LTjm42igSdlL0VijrKpWejtOKxX0b8A7uc+XiSAQ==}
+ '@anthropic-ai/sdk@0.72.1':
+ resolution: {integrity: sha512-MiUnue7qN7DvLIoYHgkedN2z05mRf2CutBzjXXY2krzOhG2r/rIfISS2uVkNLikgToB5hYIzw+xp2jdOtRkqYQ==}
hasBin: true
peerDependencies:
zod: ^3.25.0 || ^4.0.0
@@ -2248,11 +2280,11 @@ packages:
'@floating-ui/utils@0.2.10':
resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
- '@google/genai@1.33.0':
- resolution: {integrity: sha512-ThUjFZ1N0DU88peFjnQkb8K198EWaW2RmmnDShFQ+O+xkIH9itjpRe358x3L/b4X/A7dimkvq63oz49Vbh7Cog==}
+ '@google/genai@1.40.0':
+ resolution: {integrity: sha512-fhIww8smT0QYRX78qWOiz/nIQhHMF5wXOrlXvj33HBrz3vKDBb+wibLcEmTA+L9dmPD4KmfNr7UF3LDQVTXNjA==}
engines: {node: '>=20.0.0'}
peerDependencies:
- '@modelcontextprotocol/sdk': ^1.24.0
+ '@modelcontextprotocol/sdk': ^1.25.2
peerDependenciesMeta:
'@modelcontextprotocol/sdk':
optional: true
@@ -2284,8 +2316,8 @@ packages:
'@hapi/topo@5.1.0':
resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
- '@hono/node-server@1.19.7':
- resolution: {integrity: sha512-vUcD0uauS7EU2caukW8z5lJKtoGMokxNbJtBiwHgpqxEXokaHCBkQUmCHhjFB1VUTWdqj25QoMkMKzgjq+uhrw==}
+ '@hono/node-server@1.19.9':
+ resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==}
engines: {node: '>=18.14.1'}
peerDependencies:
hono: ^4
@@ -2605,8 +2637,8 @@ packages:
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
- '@langchain/core@1.1.5':
- resolution: {integrity: sha512-m+EhnHhaCnVPJt4HRmhElBN3ZBvQGfXL/hm80UV3EHNUPNUCHi6q6de7dqrw/l4oTvmX0nC08Fm2ta1U59o1bQ==}
+ '@langchain/core@1.1.19':
+ resolution: {integrity: sha512-hmNAcgeLLqNLnu8UK+HVTfB8170eCmAfsy4gFLBYeE+kdsnyO0Hd/Kd42pZi8Cgfux4OMX3yxl+g+/a1ktGe0A==}
engines: {node: '>=20'}
'@langchain/langgraph-checkpoint@1.0.0':
@@ -2615,10 +2647,10 @@ packages:
peerDependencies:
'@langchain/core': ^1.0.1
- '@langchain/langgraph-sdk@1.3.0':
- resolution: {integrity: sha512-4DiGhNpZKFYkBoVbUP38KUMD7EOcLwittXKet0TnkfFDoFvoZm18ygNZV49b6JQL4EsHRjRNVHXwl47HdlGyGA==}
+ '@langchain/langgraph-sdk@1.5.6':
+ resolution: {integrity: sha512-yNRhe4p+R0Xar/nXaTdnhZud79LC0mCgE9G1YCaBOSV6zW13dHMPW8aDs0aKHyRbn3+/LTwAKG+ipeDBA0qxKQ==}
peerDependencies:
- '@langchain/core': ^1.0.1
+ '@langchain/core': ^1.1.15
react: ^18 || ^19
react-dom: ^18 || ^19
peerDependenciesMeta:
@@ -2629,12 +2661,12 @@ packages:
react-dom:
optional: true
- '@langchain/langgraph@1.0.5':
- resolution: {integrity: sha512-r0strjMmEa4IIcbhXKMubQmhh+WhpKyaRPc00Tj9R6O+Ubf9qsKVSd9F1vZBZ2nC6FYSHxBRGA4fO3KGz2m+DA==}
+ '@langchain/langgraph@1.1.3':
+ resolution: {integrity: sha512-o/cEWeocDDSpyBI2MfX07LkNG4LzdRKxwcgUcbR4PyRzhxxCkeIZRCCYkXVQoDbdKqAczJa0D7+yjU9rmA5iHQ==}
engines: {node: '>=18'}
peerDependencies:
'@langchain/core': ^1.0.1
- zod: ^3.25.32 || ^4.1.0
+ zod: ^3.25.32 || ^4.2.0
zod-to-json-schema: ^3.x
peerDependenciesMeta:
zod-to-json-schema:
@@ -2680,8 +2712,8 @@ packages:
'@types/react': 19.2.3
react: '>=16'
- '@modelcontextprotocol/sdk@1.25.1':
- resolution: {integrity: sha512-yO28oVFFC7EBoiKdAn+VqRm+plcfv4v0xp6osG/VsCB0NlPZWi87ajbCZZ8f/RvOFLEu7//rSRmuZZ7lMoe3gQ==}
+ '@modelcontextprotocol/sdk@1.26.0':
+ resolution: {integrity: sha512-Y5RmPncpiDtTXDbLKswIJzTqu2hyBKxTNsgKqKclDbhIgg1wgtf1fRuvxgTnRfcnxtvvgbIEcqUOzZrJ6iSReg==}
engines: {node: '>=18'}
peerDependencies:
'@cfworker/json-schema': ^4.1.1
@@ -2694,27 +2726,27 @@ packages:
resolution: {integrity: sha512-EFd6cVbHsgLa6wa4RljGj6Wk75qoHxUSyc5asLyyPSyuhIcdS2Q3Phw6ImS1q+CkALthJRShiYfKANcQMuMqsQ==}
engines: {node: '>=18'}
- '@mui/core-downloads-tracker@7.3.6':
- resolution: {integrity: sha512-QaYtTHlr8kDFN5mE1wbvVARRKH7Fdw1ZuOjBJcFdVpfNfRYKF3QLT4rt+WaB6CKJvpqxRsmEo0kpYinhH5GeHg==}
+ '@mui/core-downloads-tracker@7.3.7':
+ resolution: {integrity: sha512-8jWwS6FweMkpyRkrJooamUGe1CQfO1yJ+lM43IyUJbrhHW/ObES+6ry4vfGi8EKaldHL3t3BG1bcLcERuJPcjg==}
- '@mui/icons-material@7.3.6':
- resolution: {integrity: sha512-0FfkXEj22ysIq5pa41A2NbcAhJSvmcZQ/vcTIbjDsd6hlslG82k5BEBqqS0ZJprxwIL3B45qpJ+bPHwJPlF7uQ==}
+ '@mui/icons-material@7.3.7':
+ resolution: {integrity: sha512-3Q+ulAqG+A1+R4ebgoIs7AccaJhIGy+Xi/9OnvX376jQ6wcy+rz4geDGrxQxCGzdjOQr4Z3NgyFSZCz4T999lA==}
engines: {node: '>=14.0.0'}
peerDependencies:
- '@mui/material': ^7.3.6
+ '@mui/material': ^7.3.7
'@types/react': 19.2.3
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
optional: true
- '@mui/material@7.3.6':
- resolution: {integrity: sha512-R4DaYF3dgCQCUAkr4wW1w26GHXcf5rCmBRHVBuuvJvaGLmZdD8EjatP80Nz5JCw0KxORAzwftnHzXVnjR8HnFw==}
+ '@mui/material@7.3.7':
+ resolution: {integrity: sha512-6bdIxqzeOtBAj2wAsfhWCYyMKPLkRO9u/2o5yexcL0C3APqyy91iGSWgT3H7hg+zR2XgE61+WAu12wXPON8b6A==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
- '@mui/material-pigment-css': ^7.3.6
+ '@mui/material-pigment-css': ^7.3.7
'@types/react': 19.2.3
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -2728,8 +2760,8 @@ packages:
'@types/react':
optional: true
- '@mui/private-theming@7.3.6':
- resolution: {integrity: sha512-Ws9wZpqM+FlnbZXaY/7yvyvWQo1+02Tbx50mVdNmzWEi51C51y56KAbaDCYyulOOBL6BJxuaqG8rNNuj7ivVyw==}
+ '@mui/private-theming@7.3.7':
+ resolution: {integrity: sha512-w7r1+CYhG0syCAQUWAuV5zSaU2/67WA9JXUderdb7DzCIJdp/5RmJv6L85wRjgKCMsxFF0Kfn0kPgPbPgw/jdw==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': 19.2.3
@@ -2738,8 +2770,8 @@ packages:
'@types/react':
optional: true
- '@mui/styled-engine@7.3.6':
- resolution: {integrity: sha512-+wiYbtvj+zyUkmDB+ysH6zRjuQIJ+CM56w0fEXV+VDNdvOuSywG+/8kpjddvvlfMLsaWdQe5oTuYGBcodmqGzQ==}
+ '@mui/styled-engine@7.3.7':
+ resolution: {integrity: sha512-y/QkNXv6cF6dZ5APztd/dFWfQ6LHKPx3skyYO38YhQD4+Cxd6sFAL3Z38WMSSC8LQz145Mpp3CcLrSCLKPwYAg==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.4.1
@@ -2751,8 +2783,8 @@ packages:
'@emotion/styled':
optional: true
- '@mui/system@7.3.6':
- resolution: {integrity: sha512-8fehAazkHNP1imMrdD2m2hbA9sl7Ur6jfuNweh5o4l9YPty4iaZzRXqYvBCWQNwFaSHmMEj2KPbyXGp7Bt73Rg==}
+ '@mui/system@7.3.7':
+ resolution: {integrity: sha512-DovL3k+FBRKnhmatzUMyO5bKkhMLlQ9L7Qw5qHrre3m8zCZmE+31NDVBFfqrbrA7sq681qaEIHdkWD5nmiAjyQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.5.0
@@ -2767,16 +2799,16 @@ packages:
'@types/react':
optional: true
- '@mui/types@7.4.9':
- resolution: {integrity: sha512-dNO8Z9T2cujkSIaCnWwprfeKmTWh97cnjkgmpFJ2sbfXLx8SMZijCYHOtP/y5nnUb/Rm2omxbDMmtUoSaUtKaw==}
+ '@mui/types@7.4.10':
+ resolution: {integrity: sha512-0+4mSjknSu218GW3isRqoxKRTOrTLd/vHi/7UC4+wZcUrOAqD9kRk7UQRL1mcrzqRoe7s3UT6rsRpbLkW5mHpQ==}
peerDependencies:
'@types/react': 19.2.3
peerDependenciesMeta:
'@types/react':
optional: true
- '@mui/utils@7.3.6':
- resolution: {integrity: sha512-jn+Ba02O6PiFs7nKva8R2aJJ9kJC+3kQ2R0BbKNY3KQQ36Qng98GnPRFTlbwYTdMD6hLEBKaMLUktyg/rTfd2w==}
+ '@mui/utils@7.3.7':
+ resolution: {integrity: sha512-+YjnjMRnyeTkWnspzoxRdiSOgkrcpTikhNPoxOZW0APXx+urHtUoXJ9lbtCZRCA5a4dg5gSbd19alL1DvRs5fg==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@types/react': 19.2.3
@@ -2788,17 +2820,17 @@ packages:
'@napi-rs/wasm-runtime@0.2.12':
resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
- '@next/bundle-analyzer@16.1.1':
- resolution: {integrity: sha512-aNJy301GGH8k36rDgrYdnyYEdjRQg6csMi1njzqHo+3qyZvOOWMHSv+p7SztNTzP5RU2KRwX0pPwYBtDcE+vVA==}
+ '@next/bundle-analyzer@16.1.6':
+ resolution: {integrity: sha512-ee2kagdTaeEWPlotgdTOqFHYcD3e2m2bbE3I9Rq2i6ABYi5OgopmtEUe8NM23viaYxLV2tDH/2nd5+qKoEr6cw==}
- '@next/env@16.1.1':
- resolution: {integrity: sha512-3oxyM97Sr2PqiVyMyrZUtrtM3jqqFxOQJVuKclDsgj/L728iZt/GyslkN4NwarledZATCenbk4Offjk1hQmaAA==}
+ '@next/env@16.1.6':
+ resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==}
'@next/eslint-plugin-next@16.0.10':
resolution: {integrity: sha512-b2NlWN70bbPLmfyoLvvidPKWENBYYIe017ZGUpElvQjDytCWgxPJx7L9juxHt0xHvNVA08ZHJdOyhGzon/KJuw==}
- '@next/mdx@16.1.1':
- resolution: {integrity: sha512-XvlZ28/K7kXb1vgTeZWHjjfxDx9BVz/s1bbVlsFOvPfYuSVRmlUkhaiyJTA/7mm9OdpeC57+uHR6k1fUcn5AaA==}
+ '@next/mdx@16.1.6':
+ resolution: {integrity: sha512-PT5JR4WPPYOls7WD6xEqUVVI9HDY8kY7XLQsNYB2lSZk5eJSXWu3ECtIYmfR0hZpx8Sg7BKZYKi2+u5OTSEx0w==}
peerDependencies:
'@mdx-js/loader': '>=0.15.0'
'@mdx-js/react': '>=0.15.0'
@@ -2808,60 +2840,60 @@ packages:
'@mdx-js/react':
optional: true
- '@next/swc-darwin-arm64@16.1.1':
- resolution: {integrity: sha512-JS3m42ifsVSJjSTzh27nW+Igfha3NdBOFScr9C80hHGrWx55pTrVL23RJbqir7k7/15SKlrLHhh/MQzqBBYrQA==}
+ '@next/swc-darwin-arm64@16.1.6':
+ resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@16.1.1':
- resolution: {integrity: sha512-hbyKtrDGUkgkyQi1m1IyD3q4I/3m9ngr+V93z4oKHrPcmxwNL5iMWORvLSGAf2YujL+6HxgVvZuCYZfLfb4bGw==}
+ '@next/swc-darwin-x64@16.1.6':
+ resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@16.1.1':
- resolution: {integrity: sha512-/fvHet+EYckFvRLQ0jPHJCUI5/B56+2DpI1xDSvi80r/3Ez+Eaa2Yq4tJcRTaB1kqj/HrYKn8Yplm9bNoMJpwQ==}
+ '@next/swc-linux-arm64-gnu@16.1.6':
+ resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@next/swc-linux-arm64-musl@16.1.1':
- resolution: {integrity: sha512-MFHrgL4TXNQbBPzkKKur4Fb5ICEJa87HM7fczFs2+HWblM7mMLdco3dvyTI+QmLBU9xgns/EeeINSZD6Ar+oLg==}
+ '@next/swc-linux-arm64-musl@16.1.6':
+ resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@next/swc-linux-x64-gnu@16.1.1':
- resolution: {integrity: sha512-20bYDfgOQAPUkkKBnyP9PTuHiJGM7HzNBbuqmD0jiFVZ0aOldz+VnJhbxzjcSabYsnNjMPsE0cyzEudpYxsrUQ==}
+ '@next/swc-linux-x64-gnu@16.1.6':
+ resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@next/swc-linux-x64-musl@16.1.1':
- resolution: {integrity: sha512-9pRbK3M4asAHQRkwaXwu601oPZHghuSC8IXNENgbBSyImHv/zY4K5udBusgdHkvJ/Tcr96jJwQYOll0qU8+fPA==}
+ '@next/swc-linux-x64-musl@16.1.6':
+ resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
- '@next/swc-win32-arm64-msvc@16.1.1':
- resolution: {integrity: sha512-bdfQkggaLgnmYrFkSQfsHfOhk/mCYmjnrbRCGgkMcoOBZ4n+TRRSLmT/CU5SATzlBJ9TpioUyBW/vWFXTqQRiA==}
+ '@next/swc-win32-arm64-msvc@16.1.6':
+ resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@16.1.1':
- resolution: {integrity: sha512-Ncwbw2WJ57Al5OX0k4chM68DKhEPlrXBaSXDCi2kPi5f4d8b3ejr3RRJGfKBLrn2YJL5ezNS7w2TZLHSti8CMw==}
+ '@next/swc-win32-x64-msvc@16.1.6':
+ resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
- '@next/third-parties@16.1.1':
- resolution: {integrity: sha512-i3NWXWiNpXGaUi6vGDrK7rC5qLhuCmuhD1BeaOh4Ma8piUBeUhOjEa1UfpVndeC3JcqWXPaYzqO1Hd1U6hql/w==}
+ '@next/third-parties@16.1.6':
+ resolution: {integrity: sha512-/cLY1egaH529ylSMSK+C8dA3nWDLL4hOFR4fca9OLWWxjcNwzsbuq2pPb/tmdWL9Zj3K1nTjd1pWQoSlaDQ0VA==}
peerDependencies:
next: ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0-beta.0
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
@@ -2891,16 +2923,24 @@ packages:
'@open-draft/until@2.1.0':
resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==}
+ '@opentelemetry/api-logs@0.207.0':
+ resolution: {integrity: sha512-lAb0jQRVyleQQGiuuvCOTDVspc14nx6XJjP4FspJ1sNARo3Regq4ZZbrc3rN4b1TYSuUCvgH+UXUPug4SLOqEQ==}
+ engines: {node: '>=8.0.0'}
+
'@opentelemetry/api-logs@0.208.0':
resolution: {integrity: sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==}
engines: {node: '>=8.0.0'}
+ '@opentelemetry/api-logs@0.211.0':
+ resolution: {integrity: sha512-swFdZq8MCdmdR22jTVGQDhwqDzcI4M10nhjXkLr1EsIzXgZBqm4ZlmmcWsg3TSNf+3mzgOiqveXmBLZuDi2Lgg==}
+ engines: {node: '>=8.0.0'}
+
'@opentelemetry/api@1.9.0':
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
- '@opentelemetry/context-async-hooks@2.2.0':
- resolution: {integrity: sha512-qRkLWiUEZNAmYapZ7KGS5C4OmBLcP/H2foXeOEaowYCR0wi89fHejrfYfbuLVCMLp/dWZXKvQusdbUEZjERfwQ==}
+ '@opentelemetry/context-async-hooks@2.5.0':
+ resolution: {integrity: sha512-uOXpVX0ZjO7heSVjhheW2XEPrhQAWr2BScDPoZ9UDycl5iuHG+Usyc3AIfG6kZeC1GyLpMInpQ6X5+9n69yOFw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
@@ -2911,140 +2951,170 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.0.0 <1.10.0'
- '@opentelemetry/instrumentation-amqplib@0.55.0':
- resolution: {integrity: sha512-5ULoU8p+tWcQw5PDYZn8rySptGSLZHNX/7srqo2TioPnAAcvTy6sQFQXsNPrAnyRRtYGMetXVyZUy5OaX1+IfA==}
+ '@opentelemetry/core@2.5.0':
+ resolution: {integrity: sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.0.0 <1.10.0'
+
+ '@opentelemetry/exporter-logs-otlp-http@0.208.0':
+ resolution: {integrity: sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation-amqplib@0.58.0':
+ resolution: {integrity: sha512-fjpQtH18J6GxzUZ+cwNhWUpb71u+DzT7rFkg5pLssDGaEber91Y2WNGdpVpwGivfEluMlNMZumzjEqfg8DeKXQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-connect@0.52.0':
- resolution: {integrity: sha512-GXPxfNB5szMbV3I9b7kNWSmQBoBzw7MT0ui6iU/p+NIzVx3a06Ri2cdQO7tG9EKb4aKSLmfX9Cw5cKxXqX6Ohg==}
+ '@opentelemetry/instrumentation-connect@0.54.0':
+ resolution: {integrity: sha512-43RmbhUhqt3uuPnc16cX6NsxEASEtn8z/cYV8Zpt6EP4p2h9s4FNuJ4Q9BbEQ2C0YlCCB/2crO1ruVz/hWt8fA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-dataloader@0.26.0':
- resolution: {integrity: sha512-P2BgnFfTOarZ5OKPmYfbXfDFjQ4P9WkQ1Jji7yH5/WwB6Wm/knynAoA1rxbjWcDlYupFkyT0M1j6XLzDzy0aCA==}
+ '@opentelemetry/instrumentation-dataloader@0.28.0':
+ resolution: {integrity: sha512-ExXGBp0sUj8yhm6Znhf9jmuOaGDsYfDES3gswZnKr4MCqoBWQdEFn6EoDdt5u+RdbxQER+t43FoUihEfTSqsjA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-express@0.57.0':
- resolution: {integrity: sha512-HAdx/o58+8tSR5iW+ru4PHnEejyKrAy9fYFhlEI81o10nYxrGahnMAHWiSjhDC7UQSY3I4gjcPgSKQz4rm/asg==}
+ '@opentelemetry/instrumentation-express@0.59.0':
+ resolution: {integrity: sha512-pMKV/qnHiW/Q6pmbKkxt0eIhuNEtvJ7sUAyee192HErlr+a1Jx+FZ3WjfmzhQL1geewyGEiPGkmjjAgNY8TgDA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-fs@0.28.0':
- resolution: {integrity: sha512-FFvg8fq53RRXVBRHZViP+EMxMR03tqzEGpuq55lHNbVPyFklSVfQBN50syPhK5UYYwaStx0eyCtHtbRreusc5g==}
+ '@opentelemetry/instrumentation-fs@0.30.0':
+ resolution: {integrity: sha512-n3Cf8YhG7reaj5dncGlRIU7iT40bxPOjsBEA5Bc1a1g6e9Qvb+JFJ7SEiMlPbUw4PBmxE3h40ltE8LZ3zVt6OA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-generic-pool@0.52.0':
- resolution: {integrity: sha512-ISkNcv5CM2IwvsMVL31Tl61/p2Zm2I2NAsYq5SSBgOsOndT0TjnptjufYVScCnD5ZLD1tpl4T3GEYULLYOdIdQ==}
+ '@opentelemetry/instrumentation-generic-pool@0.54.0':
+ resolution: {integrity: sha512-8dXMBzzmEdXfH/wjuRvcJnUFeWzZHUnExkmFJ2uPfa31wmpyBCMxO59yr8f/OXXgSogNgi/uPo9KW9H7LMIZ+g==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-graphql@0.56.0':
- resolution: {integrity: sha512-IPvNk8AFoVzTAM0Z399t34VDmGDgwT6rIqCUug8P9oAGerl2/PEIYMPOl/rerPGu+q8gSWdmbFSjgg7PDVRd3Q==}
+ '@opentelemetry/instrumentation-graphql@0.58.0':
+ resolution: {integrity: sha512-+yWVVY7fxOs3j2RixCbvue8vUuJ1inHxN2q1sduqDB0Wnkr4vOzVKRYl/Zy7B31/dcPS72D9lo/kltdOTBM3bQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-hapi@0.55.0':
- resolution: {integrity: sha512-prqAkRf9e4eEpy4G3UcR32prKE8NLNlA90TdEU1UsghOTg0jUvs40Jz8LQWFEs5NbLbXHYGzB4CYVkCI8eWEVQ==}
+ '@opentelemetry/instrumentation-hapi@0.57.0':
+ resolution: {integrity: sha512-Os4THbvls8cTQTVA8ApLfZZztuuqGEeqog0XUnyRW7QVF0d/vOVBEcBCk1pazPFmllXGEdNbbat8e2fYIWdFbw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-http@0.208.0':
- resolution: {integrity: sha512-rhmK46DRWEbQQB77RxmVXGyjs6783crXCnFjYQj+4tDH/Kpv9Rbg3h2kaNyp5Vz2emF1f9HOQQvZoHzwMWOFZQ==}
+ '@opentelemetry/instrumentation-http@0.211.0':
+ resolution: {integrity: sha512-n0IaQ6oVll9PP84SjbOCwDjaJasWRHi6BLsbMLiT6tNj7QbVOkuA5sk/EfZczwI0j5uTKl1awQPivO/ldVtsqA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-ioredis@0.56.0':
- resolution: {integrity: sha512-XSWeqsd3rKSsT3WBz/JKJDcZD4QYElZEa0xVdX8f9dh4h4QgXhKRLorVsVkK3uXFbC2sZKAS2Ds+YolGwD83Dg==}
+ '@opentelemetry/instrumentation-ioredis@0.59.0':
+ resolution: {integrity: sha512-875UxzBHWkW+P4Y45SoFM2AR8f8TzBMD8eO7QXGCyFSCUMP5s9vtt/BS8b/r2kqLyaRPK6mLbdnZznK3XzQWvw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-kafkajs@0.18.0':
- resolution: {integrity: sha512-KCL/1HnZN5zkUMgPyOxfGjLjbXjpd4odDToy+7c+UsthIzVLFf99LnfIBE8YSSrYE4+uS7OwJMhvhg3tWjqMBg==}
+ '@opentelemetry/instrumentation-kafkajs@0.20.0':
+ resolution: {integrity: sha512-yJXOuWZROzj7WmYCUiyT27tIfqBrVtl1/TwVbQyWPz7rL0r1Lu7kWjD0PiVeTCIL6CrIZ7M2s8eBxsTAOxbNvw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-knex@0.53.0':
- resolution: {integrity: sha512-xngn5cH2mVXFmiT1XfQ1aHqq1m4xb5wvU6j9lSgLlihJ1bXzsO543cpDwjrZm2nMrlpddBf55w8+bfS4qDh60g==}
+ '@opentelemetry/instrumentation-knex@0.55.0':
+ resolution: {integrity: sha512-FtTL5DUx5Ka/8VK6P1VwnlUXPa3nrb7REvm5ddLUIeXXq4tb9pKd+/ThB1xM/IjefkRSN3z8a5t7epYw1JLBJQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-koa@0.57.0':
- resolution: {integrity: sha512-3JS8PU/D5E3q295mwloU2v7c7/m+DyCqdu62BIzWt+3u9utjxC9QS7v6WmUNuoDN3RM+Q+D1Gpj13ERo+m7CGg==}
+ '@opentelemetry/instrumentation-koa@0.59.0':
+ resolution: {integrity: sha512-K9o2skADV20Skdu5tG2bogPKiSpXh4KxfLjz6FuqIVvDJNibwSdu5UvyyBzRVp1rQMV6UmoIk6d3PyPtJbaGSg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.9.0
- '@opentelemetry/instrumentation-lru-memoizer@0.53.0':
- resolution: {integrity: sha512-LDwWz5cPkWWr0HBIuZUjslyvijljTwmwiItpMTHujaULZCxcYE9eU44Qf/pbVC8TulT0IhZi+RoGvHKXvNhysw==}
+ '@opentelemetry/instrumentation-lru-memoizer@0.55.0':
+ resolution: {integrity: sha512-FDBfT7yDGcspN0Cxbu/k8A0Pp1Jhv/m7BMTzXGpcb8ENl3tDj/51U65R5lWzUH15GaZA15HQ5A5wtafklxYj7g==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mongodb@0.61.0':
- resolution: {integrity: sha512-OV3i2DSoY5M/pmLk+68xr5RvkHU8DRB3DKMzYJdwDdcxeLs62tLbkmRyqJZsYf3Ht7j11rq35pHOWLuLzXL7pQ==}
+ '@opentelemetry/instrumentation-mongodb@0.64.0':
+ resolution: {integrity: sha512-pFlCJjweTqVp7B220mCvCld1c1eYKZfQt1p3bxSbcReypKLJTwat+wbL2YZoX9jPi5X2O8tTKFEOahO5ehQGsA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mongoose@0.55.0':
- resolution: {integrity: sha512-5afj0HfF6aM6Nlqgu6/PPHFk8QBfIe3+zF9FGpX76jWPS0/dujoEYn82/XcLSaW5LPUDW8sni+YeK0vTBNri+w==}
+ '@opentelemetry/instrumentation-mongoose@0.57.0':
+ resolution: {integrity: sha512-MthiekrU/BAJc5JZoZeJmo0OTX6ycJMiP6sMOSRTkvz5BrPMYDqaJos0OgsLPL/HpcgHP7eo5pduETuLguOqcg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mysql2@0.55.0':
- resolution: {integrity: sha512-0cs8whQG55aIi20gnK8B7cco6OK6N+enNhW0p5284MvqJ5EPi+I1YlWsWXgzv/V2HFirEejkvKiI4Iw21OqDWg==}
+ '@opentelemetry/instrumentation-mysql2@0.57.0':
+ resolution: {integrity: sha512-nHSrYAwF7+aV1E1V9yOOP9TchOodb6fjn4gFvdrdQXiRE7cMuffyLLbCZlZd4wsspBzVwOXX8mpURdRserAhNA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-mysql@0.54.0':
- resolution: {integrity: sha512-bqC1YhnwAeWmRzy1/Xf9cDqxNG2d/JDkaxnqF5N6iJKN1eVWI+vg7NfDkf52/Nggp3tl1jcC++ptC61BD6738A==}
+ '@opentelemetry/instrumentation-mysql@0.57.0':
+ resolution: {integrity: sha512-HFS/+FcZ6Q7piM7Il7CzQ4VHhJvGMJWjx7EgCkP5AnTntSN5rb5Xi3TkYJHBKeR27A0QqPlGaCITi93fUDs++Q==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-pg@0.61.0':
- resolution: {integrity: sha512-UeV7KeTnRSM7ECHa3YscoklhUtTQPs6V6qYpG283AB7xpnPGCUCUfECFT9jFg6/iZOQTt3FHkB1wGTJCNZEvPw==}
+ '@opentelemetry/instrumentation-pg@0.63.0':
+ resolution: {integrity: sha512-dKm/ODNN3GgIQVlbD6ZPxwRc3kleLf95hrRWXM+l8wYo+vSeXtEpQPT53afEf6VFWDVzJK55VGn8KMLtSve/cg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-redis@0.57.0':
- resolution: {integrity: sha512-bCxTHQFXzrU3eU1LZnOZQ3s5LURxQPDlU3/upBzlWY77qOI1GZuGofazj3jtzjctMJeBEJhNwIFEgRPBX1kp/Q==}
+ '@opentelemetry/instrumentation-redis@0.59.0':
+ resolution: {integrity: sha512-JKv1KDDYA2chJ1PC3pLP+Q9ISMQk6h5ey+99mB57/ARk0vQPGZTTEb4h4/JlcEpy7AYT8HIGv7X6l+br03Neeg==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-tedious@0.27.0':
- resolution: {integrity: sha512-jRtyUJNZppPBjPae4ZjIQ2eqJbcRaRfJkr0lQLHFmOU/no5A6e9s1OHLd5XZyZoBJ/ymngZitanyRRA5cniseA==}
+ '@opentelemetry/instrumentation-tedious@0.30.0':
+ resolution: {integrity: sha512-bZy9Q8jFdycKQ2pAsyuHYUHNmCxCOGdG6eg1Mn75RvQDccq832sU5OWOBnc12EFUELI6icJkhR7+EQKMBam2GA==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
- '@opentelemetry/instrumentation-undici@0.19.0':
- resolution: {integrity: sha512-Pst/RhR61A2OoZQZkn6OLpdVpXp6qn3Y92wXa6umfJe9rV640r4bc6SWvw4pPN6DiQqPu2c8gnSSZPDtC6JlpQ==}
+ '@opentelemetry/instrumentation-undici@0.21.0':
+ resolution: {integrity: sha512-gok0LPUOTz2FQ1YJMZzaHcOzDFyT64XJ8M9rNkugk923/p6lDGms/cRW1cqgqp6N6qcd6K6YdVHwPEhnx9BWbw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.7.0
- '@opentelemetry/instrumentation@0.208.0':
- resolution: {integrity: sha512-Eju0L4qWcQS+oXxi6pgh7zvE2byogAkcsVv0OjHF/97iOz1N/aKE6etSGowYkie+YA1uo6DNwdSxaaNnLvcRlA==}
+ '@opentelemetry/instrumentation@0.207.0':
+ resolution: {integrity: sha512-y6eeli9+TLKnznrR8AZlQMSJT7wILpXH+6EYq5Vf/4Ao+huI7EedxQHwRgVUOMLFbe7VFDvHJrX9/f4lcwnJsA==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/instrumentation@0.211.0':
+ resolution: {integrity: sha512-h0nrZEC/zvI994nhg7EgQ8URIHt0uDTwN90r3qQUdZORS455bbx+YebnGeEuFghUT0HlJSrLF4iHw67f+odY+Q==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/otlp-exporter-base@0.208.0':
+ resolution: {integrity: sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': ^1.3.0
+
+ '@opentelemetry/otlp-transformer@0.208.0':
+ resolution: {integrity: sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': ^1.3.0
@@ -3059,16 +3129,44 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
+ '@opentelemetry/resources@2.5.0':
+ resolution: {integrity: sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
+
+ '@opentelemetry/sdk-logs@0.208.0':
+ resolution: {integrity: sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.4.0 <1.10.0'
+
+ '@opentelemetry/sdk-metrics@2.2.0':
+ resolution: {integrity: sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.9.0 <1.10.0'
+
'@opentelemetry/sdk-trace-base@2.2.0':
resolution: {integrity: sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==}
engines: {node: ^18.19.0 || >=20.6.0}
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
+ '@opentelemetry/sdk-trace-base@2.5.0':
+ resolution: {integrity: sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==}
+ engines: {node: ^18.19.0 || >=20.6.0}
+ peerDependencies:
+ '@opentelemetry/api': '>=1.3.0 <1.10.0'
+
'@opentelemetry/semantic-conventions@1.38.0':
resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==}
engines: {node: '>=14'}
+ '@opentelemetry/semantic-conventions@1.39.0':
+ resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==}
+ engines: {node: '>=14'}
+
'@opentelemetry/sql-common@0.41.2':
resolution: {integrity: sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ==}
engines: {node: ^18.19.0 || >=20.6.0}
@@ -3091,8 +3189,8 @@ packages:
resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==}
engines: {node: '>=12'}
- '@polar-sh/sdk@0.42.1':
- resolution: {integrity: sha512-4euyChnpZcjho2KhwnSXCBhJr5m8k+oaIicvwFHOZ/cXxKIKh7+EicJagSKg6jmuuq4YMOFhsxreHk3qqKXdWQ==}
+ '@polar-sh/sdk@0.42.5':
+ resolution: {integrity: sha512-GzC3/ElCtMO55+KeXwFTANlydZzw5qI3DU/F9vAFIsUKuegSmh+Xu03KCL+ct9/imJOvLUQucYhUSsNKqo2j2Q==}
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
@@ -3100,24 +3198,57 @@ packages:
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
- '@posthog/ai@7.3.0':
- resolution: {integrity: sha512-8AngpYfRklUoGnKbh3VocAvHR0tgRnk+wAB3s8AEsOUNn5DrCfCitloUW5vTLmFBUAj7UMULkMBBWbALD9MkrQ==}
- engines: {node: '>=20'}
+ '@posthog/ai@7.8.5':
+ resolution: {integrity: sha512-+nMtHDfN3BARsAbckN1yf7xBIere9Ef/f2RZvEa64OnMG4WygLg/r78mJsfGJCBXKy9SAe1vJM+KBKe43wCfxQ==}
+ engines: {node: ^20.20.0 || >=22.22.0}
peerDependencies:
- '@ai-sdk/provider': ^2.0.0 || ^3.0.0-beta.0
+ '@ai-sdk/provider': ^2.0.0 || ^3.0.0
posthog-node: ^5.0.0
peerDependenciesMeta:
'@ai-sdk/provider':
optional: true
- '@posthog/core@1.9.0':
- resolution: {integrity: sha512-j7KSWxJTUtNyKynLt/p0hfip/3I46dWU2dk+pt7dKRoz2l5CYueHuHK4EO7Wlgno5yo1HO4sc4s30MXMTICHJw==}
+ '@posthog/core@1.20.0':
+ resolution: {integrity: sha512-e/F20we0t6bPMuDOVOe53f908s23vuKEpFKNXmZcx4bSYsPkjRN49akIIHU621HBJdcsFx537vhJYKZxu8uS9w==}
- '@prisma/instrumentation@6.19.0':
- resolution: {integrity: sha512-QcuYy25pkXM8BJ37wVFBO7Zh34nyRV1GOb2n3lPkkbRYfl4hWl3PTcImP41P0KrzVXfa/45p6eVCos27x3exIg==}
+ '@posthog/types@1.341.0':
+ resolution: {integrity: sha512-lIQzaPzfxdhonj2nXI2Nh3z45wyfb/e48cyy/+GawNDeRnkzqyhifpyAimVafBJIP7RR1lQqEnM8Xk55H7SRgQ==}
+
+ '@prisma/instrumentation@7.2.0':
+ resolution: {integrity: sha512-Rh9Z4x5kEj1OdARd7U18AtVrnL6rmLSI0qYShaB4W7Wx5BKbgzndWF+QnuzMb7GLfVdlT5aYCXoPQVYuYtVu0g==}
peerDependencies:
'@opentelemetry/api': ^1.8
+ '@protobufjs/aspromise@1.1.2':
+ resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
+
+ '@protobufjs/base64@1.1.2':
+ resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
+
+ '@protobufjs/codegen@2.0.4':
+ resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
+
+ '@protobufjs/eventemitter@1.1.0':
+ resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
+
+ '@protobufjs/fetch@1.1.0':
+ resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
+
+ '@protobufjs/float@1.0.2':
+ resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
+
+ '@protobufjs/inquire@1.1.0':
+ resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
+
+ '@protobufjs/path@1.1.2':
+ resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
+
+ '@protobufjs/pool@1.1.0':
+ resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
+
+ '@protobufjs/utf8@1.1.0':
+ resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
+
'@radix-ui/number@1.1.1':
resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==}
@@ -3983,48 +4114,52 @@ packages:
resolution: {integrity: sha512-rPg1+JZlfp912pZONQAWZzbSaZ9L6R2VrMcCEa+2e2Gqk9um4b+LqF5RQWZsbt5Z0n0azSy/KQ6zAe/zTPXSOg==}
engines: {node: '>=18'}
- '@sentry-internal/browser-utils@10.32.1':
- resolution: {integrity: sha512-sjLLep1es3rTkbtAdTtdpc/a6g7v7bK5YJiZJsUigoJ4NTiFeMI5uIDCxbH/tjJ1q23YE1LzVn7T96I+qBRjHA==}
+ '@sentry-internal/browser-utils@10.38.0':
+ resolution: {integrity: sha512-UOJtYmdcxHCcV0NPfXFff/a95iXl/E0EhuQ1y0uE0BuZDMupWSF5t2BgC4HaE5Aw3RTjDF3XkSHWoIF6ohy7eA==}
engines: {node: '>=18'}
'@sentry-internal/feedback@10.26.0':
resolution: {integrity: sha512-0vk9eQP0CXD7Y2WkcCIWHaAqnXOAi18/GupgWLnbB2kuQVYVtStWxtW+OWRe8W/XwSnZ5m6JBTVeokuk/O16DQ==}
engines: {node: '>=18'}
- '@sentry-internal/feedback@10.32.1':
- resolution: {integrity: sha512-O24G8jxbfBY1RE/v2qFikPJISVMOrd/zk8FKyl+oUVYdOxU2Ucjk2cR3EQruBFlc7irnL6rT3GPfRZ/kBgLkmQ==}
+ '@sentry-internal/feedback@10.38.0':
+ resolution: {integrity: sha512-JXneg9zRftyfy1Fyfc39bBlF/Qd8g4UDublFFkVvdc1S6JQPlK+P6q22DKz3Pc8w3ySby+xlIq/eTu9Pzqi4KA==}
engines: {node: '>=18'}
'@sentry-internal/replay-canvas@10.26.0':
resolution: {integrity: sha512-vs7d/P+8M1L1JVAhhJx2wo15QDhqAipnEQvuRZ6PV7LUcS1un9/Vx49FMxpIkx6JcKADJVwtXrS1sX2hoNT/kw==}
engines: {node: '>=18'}
- '@sentry-internal/replay-canvas@10.32.1':
- resolution: {integrity: sha512-/XGTzWNWVc+B691fIVekV2KeoHFEDA5KftrLFAhEAW7uWOwk/xy3aQX4TYM0LcPm2PBKvoumlAD+Sd/aXk63oA==}
+ '@sentry-internal/replay-canvas@10.38.0':
+ resolution: {integrity: sha512-OXWM9jEqNYh4VTvrMu7v+z1anz+QKQ/fZXIZdsO7JTT2lGNZe58UUMeoq386M+Saxen8F9SUH7yTORy/8KI5qw==}
engines: {node: '>=18'}
'@sentry-internal/replay@10.26.0':
resolution: {integrity: sha512-FMySQnY2/p0dVtFUBgUO+aMdK2ovqnd7Q/AkvMQUsN/5ulyj6KZx3JX3CqOqRtAr1izoCe4Kh2pi5t//sQmvsg==}
engines: {node: '>=18'}
- '@sentry-internal/replay@10.32.1':
- resolution: {integrity: sha512-KKmLUgIaLRM0VjrMA1ByQTawZyRDYSkG2evvEOVpEtR9F0sumidAQdi7UY71QEKE1RYe/Jcp/3WoaqsMh8tbnQ==}
+ '@sentry-internal/replay@10.38.0':
+ resolution: {integrity: sha512-YWIkL6/dnaiQyFiZXJ/nN+NXGv/15z45ia86bE/TMq01CubX/DUOilgsFz0pk2v/pg3tp/U2MskLO9Hz0cnqeg==}
engines: {node: '>=18'}
'@sentry/babel-plugin-component-annotate@4.6.1':
resolution: {integrity: sha512-aSIk0vgBqv7PhX6/Eov+vlI4puCE0bRXzUG5HdCsHBpAfeMkI8Hva6kSOusnzKqs8bf04hU7s3Sf0XxGTj/1AA==}
engines: {node: '>= 14'}
+ '@sentry/babel-plugin-component-annotate@4.9.0':
+ resolution: {integrity: sha512-TJ7sVoa2Bf36lpJjBAzpNDC5Hg+evjsQnqUPeDx9Nz/YFw0u9rK1cwvi95gVWpx7PJSDCkljIv3aw0m4RatHpQ==}
+ engines: {node: '>= 14'}
+
'@sentry/browser@10.26.0':
resolution: {integrity: sha512-uvV4hnkt8bh8yP0disJ0fszy8FdnkyGtzyIVKdeQZbNUefwbDhd3H0KJrAHhJ5ocULMH3B+dipdPmw2QXbEflg==}
engines: {node: '>=18'}
- '@sentry/browser@10.32.1':
- resolution: {integrity: sha512-NPNCXTZ05ZGTFyJdKNqjykpFm+urem0ebosILQiw3C4BxNVNGH4vfYZexyl6prRhmg91oB6GjVNiVDuJiap1gg==}
+ '@sentry/browser@10.38.0':
+ resolution: {integrity: sha512-3phzp1YX4wcQr9mocGWKbjv0jwtuoDBv7+Y6Yfrys/kwyaL84mDLjjQhRf4gL5SX7JdYkhBp4WaiNlR0UC4kTA==}
engines: {node: '>=18'}
- '@sentry/bundler-plugin-core@4.6.1':
- resolution: {integrity: sha512-WPeRbnMXm927m4Kr69NTArPfI+p5/34FHftdCRI3LFPMyhZDzz6J3wLy4hzaVUgmMf10eLzmq2HGEMvpQmdynA==}
+ '@sentry/bundler-plugin-core@4.9.0':
+ resolution: {integrity: sha512-gOVgHG5BrxCFmZow1XovlDr1FH/gO/LfD8OKci1rryeqHVBLr3+S4yS4ACl+E5lfQPym8Ve1BKh793d1rZ0dyA==}
engines: {node: '>= 14'}
'@sentry/cli-darwin@2.58.2':
@@ -4135,41 +4270,41 @@ packages:
resolution: {integrity: sha512-TjDe5QI37SLuV0q3nMOH8JcPZhv2e85FALaQMIhRILH9Ce6G7xW5GSjmH91NUVq8yc3XtiqYlz/EenEZActc4Q==}
engines: {node: '>=18'}
- '@sentry/core@10.32.1':
- resolution: {integrity: sha512-PH2ldpSJlhqsMj2vCTyU0BI2Fx1oIDhm7Izo5xFALvjVCS0gmlqHt1udu6YlKn8BtpGH6bGzssvv5APrk+OdPQ==}
+ '@sentry/core@10.38.0':
+ resolution: {integrity: sha512-1pubWDZE5y5HZEPMAZERP4fVl2NH3Ihp1A+vMoVkb3Qc66Diqj1WierAnStlZP7tCx0TBa0dK85GTW/ZFYyB9g==}
engines: {node: '>=18'}
- '@sentry/nextjs@10.32.1':
- resolution: {integrity: sha512-MlgQiKg9P2clKeyH+ZLdmNiMNfTMs/2DBK9V/enLZvYJd1sy5hmrkAV/NiLxVP0uXAeMEVtrgFMIb64cH7ZcXQ==}
+ '@sentry/nextjs@10.38.0':
+ resolution: {integrity: sha512-MW2f6mK54jFyS/lmJxT7GWr5d12E+3qvIhR5EdjdyzMX8udSOCGyFJaFIwUfMyEMuggPEvNQVFFpjIrvWXCSGA==}
engines: {node: '>=18'}
peerDependencies:
next: ^13.2.0 || ^14.0 || ^15.0.0-rc.0 || ^16.0.0-0
- '@sentry/node-core@10.32.1':
- resolution: {integrity: sha512-w56rxdBanBKc832zuwnE+zNzUQ19fPxfHEtOhK8JGPu3aSwQYcIxwz9z52lOx3HN7k/8Fj5694qlT3x/PokhRw==}
+ '@sentry/node-core@10.38.0':
+ resolution: {integrity: sha512-ErXtpedrY1HghgwM6AliilZPcUCoNNP1NThdO4YpeMq04wMX9/GMmFCu46TnCcg6b7IFIOSr2S4yD086PxLlHQ==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
- '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0
- '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0
+ '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0
+ '@opentelemetry/core': ^1.30.1 || ^2.1.0
'@opentelemetry/instrumentation': '>=0.57.1 <1'
- '@opentelemetry/resources': ^1.30.1 || ^2.1.0 || ^2.2.0
- '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0
- '@opentelemetry/semantic-conventions': ^1.37.0
+ '@opentelemetry/resources': ^1.30.1 || ^2.1.0
+ '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
+ '@opentelemetry/semantic-conventions': ^1.39.0
- '@sentry/node@10.32.1':
- resolution: {integrity: sha512-oxlybzt8QW0lx/QaEj1DcvZDRXkgouewFelu/10dyUwv5So3YvipfvWInda+yMLmn25OggbloDQ0gyScA2jU3g==}
+ '@sentry/node@10.38.0':
+ resolution: {integrity: sha512-wriyDtWDAoatn8EhOj0U4PJR1WufiijTsCGALqakOHbFiadtBJANLe6aSkXoXT4tegw59cz1wY4NlzHjYksaPw==}
engines: {node: '>=18'}
- '@sentry/opentelemetry@10.32.1':
- resolution: {integrity: sha512-YLssSz5Y+qPvufrh2cDaTXDoXU8aceOhB+YTjT8/DLF6SOj7Tzen52aAcjNaifawaxEsLCC8O+B+A2iA+BllvA==}
+ '@sentry/opentelemetry@10.38.0':
+ resolution: {integrity: sha512-YPVhWfYmC7nD3EJqEHGtjp4fp5LwtAbE5rt9egQ4hqJlYFvr8YEz9sdoqSZxO0cZzgs2v97HFl/nmWAXe52G2Q==}
engines: {node: '>=18'}
peerDependencies:
'@opentelemetry/api': ^1.9.0
- '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0 || ^2.2.0
- '@opentelemetry/core': ^1.30.1 || ^2.1.0 || ^2.2.0
- '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0 || ^2.2.0
- '@opentelemetry/semantic-conventions': ^1.37.0
+ '@opentelemetry/context-async-hooks': ^1.30.1 || ^2.1.0
+ '@opentelemetry/core': ^1.30.1 || ^2.1.0
+ '@opentelemetry/sdk-trace-base': ^1.30.1 || ^2.1.0
+ '@opentelemetry/semantic-conventions': ^1.39.0
'@sentry/react-native@7.7.0':
resolution: {integrity: sha512-D+gqiw88mOnouY+Pd8A3wcUDOilPOIcypBPw7WL9v+K1jM12Snf6sosEG4xgFFMXoK+GSsYAeC5MR0skD/b+Zg==}
@@ -4188,8 +4323,8 @@ packages:
peerDependencies:
react: ^16.14.0 || 17.x || 18.x || 19.x
- '@sentry/react@10.32.1':
- resolution: {integrity: sha512-/tX0HeACbAmVP57x8txTrGk/U3fa9pDBaoAtlOrnPv5VS/aC5SGkehXWeTGSAa+ahlOWwp3IF8ILVXRiOoG/Vg==}
+ '@sentry/react@10.38.0':
+ resolution: {integrity: sha512-3UiKo6QsqTyPGUt0XWRY9KLaxc/cs6Kz4vlldBSOXEL6qPDL/EfpwNJT61osRo81VFWu8pKu7ZY2bvLPryrnBQ==}
engines: {node: '>=18'}
peerDependencies:
react: ^16.14.0 || 17.x || 18.x || 19.x
@@ -4198,36 +4333,36 @@ packages:
resolution: {integrity: sha512-mDpG7lnOJppbk9iKrnuvkuiCTbh3aBAlUK4NZxZNLOSI0SeefYXHRAcri89BqWZ/MT98sQLU+Hf+rlwrwq38/A==}
engines: {node: '>=18'}
- '@sentry/vercel-edge@10.32.1':
- resolution: {integrity: sha512-3hrc7TVs4ZeYSCOZdgmv9D1Bke2osnImfupceW8THecNv3uEUjYbrC2UkS/TFMiVHc9qpYzUnKbsGezMp3Bcaw==}
+ '@sentry/vercel-edge@10.38.0':
+ resolution: {integrity: sha512-lElDFktj/PyRC/LDHejPFhQmHVMCB9Celj+IHi36aw96a/LekqF6/7vmp26hDtH58QtuiPO3h5voqEAMUOkSlw==}
engines: {node: '>=18'}
- '@sentry/webpack-plugin@4.6.1':
- resolution: {integrity: sha512-CJgT/t2pQWsPsMx9VJ86goU/orCQhL2HhDj5ZYBol6fPPoEGeTqKOPCnv/xsbCAfGSp1uHpyRLTA/Gx96u7VVA==}
+ '@sentry/webpack-plugin@4.9.0':
+ resolution: {integrity: sha512-2usiAS8vVBb24DXMYHtHsuCasnxo5uJMO6tpGPCMpyLYVooq5ypNvV+egiwlO6Dmyp9/BFK2hcK1vPRL5K5Trw==}
engines: {node: '>= 14'}
peerDependencies:
webpack: '>=4.40.0'
- '@shikijs/core@3.20.0':
- resolution: {integrity: sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==}
+ '@shikijs/core@3.22.0':
+ resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==}
- '@shikijs/engine-javascript@3.20.0':
- resolution: {integrity: sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==}
+ '@shikijs/engine-javascript@3.22.0':
+ resolution: {integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==}
- '@shikijs/engine-oniguruma@3.20.0':
- resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==}
+ '@shikijs/engine-oniguruma@3.22.0':
+ resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==}
- '@shikijs/langs@3.20.0':
- resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==}
+ '@shikijs/langs@3.22.0':
+ resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==}
- '@shikijs/rehype@3.20.0':
- resolution: {integrity: sha512-/sqob3V/lJK0m2mZ64nkcWPN88im0D9atkI3S3PUBvtJZTHnJXVwZhHQFRDyObgEIa37IpHYHR3CuFtXB5bT2g==}
+ '@shikijs/rehype@3.22.0':
+ resolution: {integrity: sha512-69b2VPc6XBy/VmAJlpBU5By+bJSBdE2nvgRCZXav7zujbrjXuT0F60DIrjKuutjPqNufuizE+E8tIZr2Yn8Z+g==}
- '@shikijs/themes@3.20.0':
- resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==}
+ '@shikijs/themes@3.22.0':
+ resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==}
- '@shikijs/types@3.20.0':
- resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==}
+ '@shikijs/types@3.22.0':
+ resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -4410,6 +4545,9 @@ packages:
'@tanstack/query-core@5.90.16':
resolution: {integrity: sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==}
+ '@tanstack/query-core@5.90.20':
+ resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==}
+
'@tanstack/react-query@5.90.12':
resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==}
peerDependencies:
@@ -4420,6 +4558,11 @@ packages:
peerDependencies:
react: ^18 || ^19
+ '@tanstack/react-query@5.90.20':
+ resolution: {integrity: sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==}
+ peerDependencies:
+ react: ^18 || ^19
+
'@tanstack/react-table@8.21.3':
resolution: {integrity: sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==}
engines: {node: '>=12'}
@@ -4435,8 +4578,8 @@ packages:
resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
engines: {node: '>=18'}
- '@testing-library/react@16.3.1':
- resolution: {integrity: sha512-gr4KtAWqIOQoucWYD/f6ki+j5chXfcPc74Col/6poTyqTmn7zRmodWahWRCp8tYd+GMqBonw6hstNzqjbs6gjw==}
+ '@testing-library/react@16.3.2':
+ resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==}
engines: {node: '>=18'}
peerDependencies:
'@testing-library/dom': ^10.0.0
@@ -4676,14 +4819,17 @@ packages:
'@types/node@22.19.3':
resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==}
+ '@types/node@24.10.10':
+ resolution: {integrity: sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow==}
+
'@types/node@25.0.2':
resolution: {integrity: sha512-gWEkeiyYE4vqjON/+Obqcoeffmk0NF15WSBwSs7zwVA2bAbTaE0SJ7P0WNGoJn8uE7fiaV5a7dKYIJriEqOrmA==}
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
- '@types/pg-pool@2.0.6':
- resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==}
+ '@types/pg-pool@2.0.7':
+ resolution: {integrity: sha512-U4CwmGVQcbEuqpyju8/ptOKg6gEC+Tqsvj2xS9o1g71bUh8twxnC6ZL5rZKCsGN0iyH0CwgUyc9VR5owNQF9Ng==}
'@types/pg@8.15.6':
resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==}
@@ -4715,9 +4861,6 @@ packages:
'@types/react@19.2.3':
resolution: {integrity: sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==}
- '@types/retry@0.12.0':
- resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==}
-
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
@@ -4733,6 +4876,9 @@ packages:
'@types/tough-cookie@4.0.5':
resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==}
+ '@types/trusted-types@2.0.7':
+ resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -4745,8 +4891,8 @@ packages:
'@types/uuid@10.0.0':
resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==}
- '@types/web@0.0.312':
- resolution: {integrity: sha512-dh5IM+N4QS9Nkoq6ZLaTx8vaqUUfC9j8yIGhmYvlc/V19hfAvMjE+LjBHlWCf92nYIz4ZE352I7GrVWh5NBRuw==}
+ '@types/web@0.0.323':
+ resolution: {integrity: sha512-2/3r+jdsu0UdRRIsjOeIALbbC315SjAW/k8TKIJDRMz0BY5/EbBXnXaCV7ZLkN4wDk7RXCaYRW9TA0HJuJ2jWw==}
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
@@ -4947,6 +5093,9 @@ packages:
'@vitest/expect@3.2.4':
resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
+ '@vitest/expect@4.0.18':
+ resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==}
+
'@vitest/mocker@2.1.9':
resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==}
peerDependencies:
@@ -4969,30 +5118,53 @@ packages:
vite:
optional: true
+ '@vitest/mocker@4.0.18':
+ resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^6.0.0 || ^7.0.0-0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
'@vitest/pretty-format@2.1.9':
resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==}
'@vitest/pretty-format@3.2.4':
resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==}
+ '@vitest/pretty-format@4.0.18':
+ resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==}
+
'@vitest/runner@2.1.9':
resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==}
'@vitest/runner@3.2.4':
resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==}
+ '@vitest/runner@4.0.18':
+ resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==}
+
'@vitest/snapshot@2.1.9':
resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==}
'@vitest/snapshot@3.2.4':
resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==}
+ '@vitest/snapshot@4.0.18':
+ resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==}
+
'@vitest/spy@2.1.9':
resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==}
'@vitest/spy@3.2.4':
resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==}
+ '@vitest/spy@4.0.18':
+ resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==}
+
'@vitest/ui@3.2.4':
resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==}
peerDependencies:
@@ -5004,6 +5176,9 @@ packages:
'@vitest/utils@3.2.4':
resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==}
+ '@vitest/utils@4.0.18':
+ resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==}
+
'@vscode/sudo-prompt@9.3.1':
resolution: {integrity: sha512-9ORTwwS74VaTn38tNbQhsA5U44zkJfcb0BdTSyyG6frP4e8KMtHuTXYmwefe5dpL8XB1aGSIVTaLjD3BbWb5iA==}
@@ -5551,6 +5726,10 @@ packages:
resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==}
engines: {node: '>=18'}
+ chai@6.2.2:
+ resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
+ engines: {node: '>=18'}
+
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
@@ -5627,6 +5806,9 @@ packages:
cjs-module-lexer@1.4.3:
resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
+ cjs-module-lexer@2.2.0:
+ resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==}
+
class-variance-authority@0.7.1:
resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
@@ -5829,8 +6011,8 @@ packages:
countries-list@3.2.2:
resolution: {integrity: sha512-ABJ/RWQBrPWy+hRuZoW+0ooK8p65Eo3WmUZwHm6v4wmfSPznNAKzjy3+UUYrJK2v3182BVsgWxdB6ROidj39kw==}
- crawler-user-agents@1.24.0:
- resolution: {integrity: sha512-ZySEdg5TZf9TbLY+sEesqrTMs1afScmGCdyqMQ8mWUzhFA54zsXLtDgUpnOt0dwrOOAb7zRE1obL7J9yA34Emw==}
+ crawler-user-agents@1.27.0:
+ resolution: {integrity: sha512-PNvzLBEEDVuOk9xpBt3FzDhy6TZT59quplFYZsvtrmZoRH5z+AdMoxhBIIN3f/sSXgEJ9JcWeMTNgbqV0/dvXw==}
create-jest@29.7.0:
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
@@ -6176,6 +6358,9 @@ packages:
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
engines: {node: '>= 4'}
+ dompurify@3.3.1:
+ resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==}
+
domutils@3.2.2:
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
@@ -6541,8 +6726,8 @@ packages:
eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
- eventemitter3@5.0.1:
- resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
+ eventemitter3@5.0.4:
+ resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==}
events@3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
@@ -6835,8 +7020,8 @@ packages:
exponential-backoff@3.1.3:
resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==}
- express-rate-limit@7.5.1:
- resolution: {integrity: sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==}
+ express-rate-limit@8.2.1:
+ resolution: {integrity: sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==}
engines: {node: '>= 16'}
peerDependencies:
express: '>= 4.11'
@@ -7022,8 +7207,8 @@ packages:
fraction.js@5.3.4:
resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
- framer-motion@12.23.26:
- resolution: {integrity: sha512-cPcIhgR42xBn1Uj+PzOyheMtZ73H927+uWPDVhUMqxy8UHt6Okavb6xIz9J/phFUHUj0OncR6UvMfJTXoc/LKA==}
+ framer-motion@12.31.0:
+ resolution: {integrity: sha512-Tnd0FU05zGRFI3JJmBegXonF1rfuzYeuXd1QSdQ99Ysnppk0yWBWSW2wUsqzRpS5nv0zPNx+y0wtDj4kf0q5RQ==}
peerDependencies:
'@emotion/is-prop-valid': '*'
react: ^18.0.0 || ^19.0.0
@@ -7300,8 +7485,8 @@ packages:
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
- hono@4.11.1:
- resolution: {integrity: sha512-KsFcH0xxHes0J4zaQgWbYwmz3UPOOskdqZmItstUG93+Wk1ePBLkLGwbP9zlmh1BFUiL8Qp+Xfu9P7feJWpGNg==}
+ hono@4.11.7:
+ resolution: {integrity: sha512-l7qMiNee7t82bH3SeyUCt9UF15EVmaBvsppY2zQtrbIhl/yzBTny+YUxsVjSjQ6gaqaeVtZmGocom8TzBlA4Yw==}
engines: {node: '>=16.9.0'}
hosted-git-info@7.0.2:
@@ -7407,8 +7592,8 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
- import-in-the-middle@2.0.1:
- resolution: {integrity: sha512-bruMpJ7xz+9jwGzrwEhWgvRrlKRYCRDBrfU+ur3FcasYXLJDxTruJ//8g2Noj+QFyRBeqbpj8Bhn4Fbw6HjvhA==}
+ import-in-the-middle@2.0.6:
+ resolution: {integrity: sha512-3vZV3jX0XRFW3EJDTwzWoZa+RH1b8eTTx6YOCjglrLyPuepwoBti1k3L2dKwdCUrnVEfc5CuRuGstaC/uQJJaw==}
import-local@3.2.0:
resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
@@ -7456,6 +7641,10 @@ packages:
invariant@2.2.4:
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
+ ip-address@10.0.1:
+ resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==}
+ engines: {node: '>= 12'}
+
ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
@@ -7574,6 +7763,10 @@ packages:
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
engines: {node: '>= 0.4'}
+ is-network-error@1.3.0:
+ resolution: {integrity: sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==}
+ engines: {node: '>=16'}
+
is-node-process@1.2.0:
resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==}
@@ -8031,14 +8224,14 @@ packages:
resolution: {integrity: sha512-mnIlAEMu4OyEvUNdzco9xpuB9YVcPkQec+QsgycBCtPZvEqWPCDPfbAE4OJMdBBWpZWtpCn1xw9jJYlwjWI5zQ==}
hasBin: true
- langchain@1.2.0:
- resolution: {integrity: sha512-HC+5zN1RPenV/QU9pbo4V0Hv7R8rP4ZBXnnqhkBrSYqfvhcQ644dZQIcB3vryjqLhi82xZE2oNSplQLjnhX6xw==}
+ langchain@1.2.17:
+ resolution: {integrity: sha512-qiBvupKnPa/eKyv4Kzd1KeanSV7vfPuLZcaW/2upXQ9nesxrNp3sZNEpf9auQPg+XZgItwxaFi5euWqjXXnakA==}
engines: {node: '>=20'}
peerDependencies:
- '@langchain/core': 1.1.5
+ '@langchain/core': 1.1.19
- langsmith@0.3.87:
- resolution: {integrity: sha512-XXR1+9INH8YX96FKWc5tie0QixWz6tOqAsAKfcJyPkE0xPep+NDz0IQLR32q4bn10QK3LqD2HN6T3n6z1YLW7Q==}
+ langsmith@0.4.12:
+ resolution: {integrity: sha512-YWt0jcGvKqjUgIvd78rd4QcdMss0lUkeUaqp0UpVRq7H2yNDx8H5jOUO/laWUmaPtWGgcip0qturykXe1g9Gqw==}
peerDependencies:
'@opentelemetry/api': '*'
'@opentelemetry/exporter-trace-otlp-proto': '*'
@@ -8260,6 +8453,9 @@ packages:
resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==}
hasBin: true
+ long@5.3.2:
+ resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==}
+
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
@@ -8280,8 +8476,8 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
- lucide-react@0.562.0:
- resolution: {integrity: sha512-82hOAu7y0dbVuFfmO4bYF1XEwYk/mEbM5E+b1jgci/udUBEE/R7LF5Ip0CCEmXe8AybRM8L+04eP+LGZeDvkiw==}
+ lucide-react@0.563.0:
+ resolution: {integrity: sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==}
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -8723,11 +8919,11 @@ packages:
module-details-from-path@1.0.4:
resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==}
- motion-dom@12.23.23:
- resolution: {integrity: sha512-n5yolOs0TQQBRUFImrRfs/+6X4p3Q4n1dUEqt/H58Vx7OW6RF+foWEgmTVDhIWJIMXOuNNL0apKH2S16en9eiA==}
+ motion-dom@12.30.1:
+ resolution: {integrity: sha512-QXB+iFJRzZTqL+Am4a1CRoHdH+0Nq12wLdqQQZZsfHlp9AMt6PA098L/61oVZsDA+Ep3QSGudzpViyRrhYhGcQ==}
- motion-utils@12.23.6:
- resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==}
+ motion-utils@12.29.2:
+ resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==}
mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
@@ -8818,8 +9014,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.1.1:
- resolution: {integrity: sha512-QI+T7xrxt1pF6SQ/JYFz95ro/mg/1Znk5vBebsWwbpejj1T0A23hO7GYEaVac9QUOT2BIMiuzm0L99ooq7k0/w==}
+ next@16.1.6:
+ resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -8968,6 +9164,9 @@ packages:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
ofetch@1.5.1:
resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==}
@@ -9028,8 +9227,8 @@ packages:
zod:
optional: true
- openai@6.13.0:
- resolution: {integrity: sha512-yHbMo+EpNGPG3sRrXvmo0LhUPFN4bAURJw3G17bE+ax1G4tcTFCa9ZjvCWh3cvni0aHY0uWlk2IxcsPH4NR9Ow==}
+ openai@6.17.0:
+ resolution: {integrity: sha512-NHRpPEUPzAvFOAFs9+9pC6+HCw/iWsYsKCMPXH5Kw7BpMxqd8g/A07/1o7Gx2TWtCnzevVRyKMRFqyiHyAlqcA==}
hasBin: true
peerDependencies:
ws: ^8.18.0
@@ -9114,14 +9313,22 @@ packages:
resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==}
engines: {node: '>=8'}
- p-retry@4.6.2:
- resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==}
- engines: {node: '>=8'}
+ p-queue@9.1.0:
+ resolution: {integrity: sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==}
+ engines: {node: '>=20'}
+
+ p-retry@7.1.1:
+ resolution: {integrity: sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==}
+ engines: {node: '>=20'}
p-timeout@3.2.0:
resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
engines: {node: '>=8'}
+ p-timeout@7.0.1:
+ resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==}
+ engines: {node: '>=20'}
+
p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
@@ -9369,15 +9576,15 @@ packages:
resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
engines: {node: '>=0.10.0'}
- posthog-js@1.313.0:
- resolution: {integrity: sha512-CL8RkC7m9BTZrix86w0fdnSCVqC/gxrfs6c4Wfkz/CldFD7f2912S2KqnWFmwRVDGIwm9IR82YhublQ88gdDKw==}
+ posthog-js@1.341.0:
+ resolution: {integrity: sha512-sWa/84yi93ar/SJrG0do5QshCGWqUH39cNLrngN/GqC8kA5JLxyUEBmFaK65aAxrSKJ1muGP11ofIKDCwQn98Q==}
- posthog-node@5.18.1:
- resolution: {integrity: sha512-Hi7cRqAlvuEitdiurXJFdMip+BxcwYoX66at5RErMVP91V+Ph9BspGiawC3mJx/4znjwUjF29kAhf8oZQ2uJ5Q==}
- engines: {node: '>=20'}
+ posthog-node@5.24.10:
+ resolution: {integrity: sha512-C4ueZUrifTJMDFngybSWQ+GthcqCqPiCcGg5qnjoh+f6ie3+tdhFROqqshjttpQ6Q4DPM40USPTmU/UBYqgsbA==}
+ engines: {node: ^20.20.0 || >=22.22.0}
- preact@10.28.0:
- resolution: {integrity: sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA==}
+ preact@10.28.3:
+ resolution: {integrity: sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==}
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
@@ -9458,6 +9665,11 @@ packages:
engines: {node: '>=14'}
hasBin: true
+ prettier@3.8.1:
+ resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
+ engines: {node: '>=14'}
+ hasBin: true
+
pretty-bytes@5.6.0:
resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
engines: {node: '>=6'}
@@ -9497,6 +9709,10 @@ packages:
proto-list@1.2.4:
resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
+ protobufjs@7.5.4:
+ resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==}
+ engines: {node: '>=12.0.0'}
+
proxy-addr@2.0.7:
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
engines: {node: '>= 0.10'}
@@ -9530,6 +9746,9 @@ packages:
quansync@0.2.11:
resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
+ query-selector-shadow-dom@1.0.1:
+ resolution: {integrity: sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==}
+
query-string@7.1.3:
resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
engines: {node: '>=6'}
@@ -9581,10 +9800,10 @@ packages:
peerDependencies:
react: ^19.1.0
- react-dom@19.2.3:
- resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
+ react-dom@19.2.4:
+ resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
peerDependencies:
- react: ^19.2.3
+ react: ^19.2.4
react-dropzone@14.3.8:
resolution: {integrity: sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==}
@@ -9621,8 +9840,8 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17 || ^18 || ^19
- react-hook-form@7.70.0:
- resolution: {integrity: sha512-COOMajS4FI3Wuwrs3GPpi/Jeef/5W1DRR84Yl5/ShlT3dKVFUfoGiEZ/QE6Uw8P4T2/CLJdcTVYKvWBMQTEpvw==}
+ react-hook-form@7.71.1:
+ resolution: {integrity: sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==}
engines: {node: '>=18.0.0'}
peerDependencies:
react: ^16.8.0 || ^17 || ^18 || ^19
@@ -9825,6 +10044,10 @@ packages:
resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
engines: {node: '>=0.10.0'}
+ react@19.2.4:
+ resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
+ engines: {node: '>=0.10.0'}
+
read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
@@ -9844,8 +10067,8 @@ packages:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
- recharts@3.6.0:
- resolution: {integrity: sha512-L5bjxvQRAe26RlToBAziKUB7whaGKEwD3znoM6fz3DrTowCIC/FnJYnuq1GEzB8Zv2kdTfaxQfi5GoH0tBinyg==}
+ recharts@3.7.0:
+ resolution: {integrity: sha512-l2VCsy3XXeraxIID9fx23eCb6iCBsxUQDnE8tWm6DFdszVAO7WVY/ChAD9wVit01y6B2PMupYiMmQwhgPHc9Ew==}
engines: {node: '>=18'}
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -10009,10 +10232,6 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
- resolve@1.22.8:
- resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
- hasBin: true
-
resolve@1.7.1:
resolution: {integrity: sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==}
@@ -10216,8 +10435,8 @@ packages:
resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
engines: {node: '>= 0.4'}
- shiki@3.20.0:
- resolution: {integrity: sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==}
+ shiki@3.22.0:
+ resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==}
side-channel-list@1.0.0:
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -10583,8 +10802,8 @@ packages:
uglify-js:
optional: true
- terser@5.44.1:
- resolution: {integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==}
+ terser@5.46.0:
+ resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==}
engines: {node: '>=10'}
hasBin: true
@@ -10645,6 +10864,10 @@ packages:
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
engines: {node: '>=14.0.0'}
+ tinyrainbow@3.0.3:
+ resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==}
+ engines: {node: '>=14.0.0'}
+
tinyspy@3.0.2:
resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
engines: {node: '>=14.0.0'}
@@ -10798,38 +11021,38 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
- turbo-darwin-64@2.7.2:
- resolution: {integrity: sha512-dxY3X6ezcT5vm3coK6VGixbrhplbQMwgNsCsvZamS/+/6JiebqW9DKt4NwpgYXhDY2HdH00I7FWs3wkVuan4rA==}
+ turbo-darwin-64@2.8.3:
+ resolution: {integrity: sha512-4kXRLfcygLOeNcP6JquqRLmGB/ATjjfehiojL2dJkL7GFm3SPSXbq7oNj8UbD8XriYQ5hPaSuz59iF1ijPHkTw==}
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@2.7.2:
- resolution: {integrity: sha512-1bXmuwPLqNFt3mzrtYcVx1sdJ8UYb124Bf48nIgcpMCGZy3kDhgxNv1503kmuK/37OGOZbsWSQFU4I08feIuSg==}
+ turbo-darwin-arm64@2.8.3:
+ resolution: {integrity: sha512-xF7uCeC0UY0Hrv/tqax0BMbFlVP1J/aRyeGQPZT4NjvIPj8gSPDgFhfkfz06DhUwDg5NgMo04uiSkAWE8WB/QQ==}
cpu: [arm64]
os: [darwin]
- turbo-linux-64@2.7.2:
- resolution: {integrity: sha512-kP+TiiMaiPugbRlv57VGLfcjFNsFbo8H64wMBCPV2270Or2TpDCBULMzZrvEsvWFjT3pBFvToYbdp8/Kw0jAQg==}
+ turbo-linux-64@2.8.3:
+ resolution: {integrity: sha512-vxMDXwaOjweW/4etY7BxrXCSkvtwh0PbwVafyfT1Ww659SedUxd5rM3V2ZCmbwG8NiCfY7d6VtxyHx3Wh1GoZA==}
cpu: [x64]
os: [linux]
- turbo-linux-arm64@2.7.2:
- resolution: {integrity: sha512-VDJwQ0+8zjAfbyY6boNaWfP6RIez4ypKHxwkuB6SrWbOSk+vxTyW5/hEjytTwK8w/TsbKVcMDyvpora8tEsRFw==}
+ turbo-linux-arm64@2.8.3:
+ resolution: {integrity: sha512-mQX7uYBZFkuPLLlKaNe9IjR1JIef4YvY8f21xFocvttXvdPebnq3PK1Zjzl9A1zun2BEuWNUwQIL8lgvN9Pm3Q==}
cpu: [arm64]
os: [linux]
- turbo-windows-64@2.7.2:
- resolution: {integrity: sha512-rPjqQXVnI6A6oxgzNEE8DNb6Vdj2Wwyhfv3oDc+YM3U9P7CAcBIlKv/868mKl4vsBtz4ouWpTQNXG8vljgJO+w==}
+ turbo-windows-64@2.8.3:
+ resolution: {integrity: sha512-YLGEfppGxZj3VWcNOVa08h6ISsVKiG85aCAWosOKNUjb6yErWEuydv6/qImRJUI+tDLvDvW7BxopAkujRnWCrw==}
cpu: [x64]
os: [win32]
- turbo-windows-arm64@2.7.2:
- resolution: {integrity: sha512-tcnHvBhO515OheIFWdxA+qUvZzNqqcHbLVFc1+n+TJ1rrp8prYicQtbtmsiKgMvr/54jb9jOabU62URAobnB7g==}
+ turbo-windows-arm64@2.8.3:
+ resolution: {integrity: sha512-afTUGKBRmOJU1smQSBnFGcbq0iabAPwh1uXu2BVk7BREg30/1gMnJh9DFEQTah+UD3n3ru8V55J83RQNFfqoyw==}
cpu: [arm64]
os: [win32]
- turbo@2.7.2:
- resolution: {integrity: sha512-5JIA5aYBAJSAhrhbyag1ZuMSgUZnHtI+Sq3H8D3an4fL8PeF+L1yYvbEJg47akP1PFfATMf5ehkqFnxfkmuwZQ==}
+ turbo@2.8.3:
+ resolution: {integrity: sha512-8Osxz5Tu/Dw2kb31EAY+nhq/YZ3wzmQSmYa1nIArqxgCAldxv9TPlrAiaBUDVnKA4aiPn0OFBD1ACcpc5VFOAQ==}
hasBin: true
tw-animate-css@1.4.0:
@@ -10969,8 +11192,8 @@ packages:
unist-util-visit-parents@6.0.2:
resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
- unist-util-visit@5.0.0:
- resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+ unist-util-visit@5.1.0:
+ resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
universalify@0.1.2:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
@@ -11060,6 +11283,10 @@ packages:
resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
hasBin: true
+ uuid@13.0.0:
+ resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==}
+ hasBin: true
+
uuid@7.0.3:
resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==}
hasBin: true
@@ -11257,6 +11484,40 @@ packages:
jsdom:
optional: true
+ vitest@4.0.18:
+ resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==}
+ engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@opentelemetry/api': ^1.9.0
+ '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
+ '@vitest/browser-playwright': 4.0.18
+ '@vitest/browser-preview': 4.0.18
+ '@vitest/browser-webdriverio': 4.0.18
+ '@vitest/ui': 4.0.18
+ happy-dom: '*'
+ jsdom: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@opentelemetry/api':
+ optional: true
+ '@types/node':
+ optional: true
+ '@vitest/browser-playwright':
+ optional: true
+ '@vitest/browser-preview':
+ optional: true
+ '@vitest/browser-webdriverio':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+
vlq@1.0.1:
resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==}
@@ -11289,8 +11550,8 @@ packages:
resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}
engines: {node: '>= 14'}
- web-vitals@4.2.4:
- resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==}
+ web-vitals@5.1.0:
+ resolution: {integrity: sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==}
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
@@ -11555,8 +11816,8 @@ packages:
resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==}
engines: {node: '>=18'}
- zod-to-json-schema@3.25.0:
- resolution: {integrity: sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==}
+ zod-to-json-schema@3.25.1:
+ resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==}
peerDependencies:
zod: ^3.25 || ^4
@@ -11566,8 +11827,8 @@ packages:
peerDependencies:
zod: ^3.25.0 || ^4.0.0
- zod@4.3.5:
- resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==}
+ zod@4.3.6:
+ resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -11580,67 +11841,67 @@ snapshots:
'@acemir/cssom@0.9.29': {}
- '@ai-sdk/anthropic@2.0.56(zod@4.3.5)':
+ '@ai-sdk/anthropic@2.0.56(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
- zod: 4.3.5
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
+ zod: 4.3.6
- '@ai-sdk/gateway@2.0.21(zod@4.3.5)':
+ '@ai-sdk/gateway@2.0.21(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
'@vercel/oidc': 3.0.5
- zod: 4.3.5
+ zod: 4.3.6
- '@ai-sdk/google@2.0.46(zod@4.3.5)':
+ '@ai-sdk/google@2.0.46(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
- zod: 4.3.5
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
+ zod: 4.3.6
- '@ai-sdk/mcp@0.0.11(zod@4.3.5)':
+ '@ai-sdk/mcp@0.0.11(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.18(zod@4.3.5)
+ '@ai-sdk/provider-utils': 3.0.18(zod@4.3.6)
pkce-challenge: 5.0.1
- zod: 4.3.5
+ zod: 4.3.6
- '@ai-sdk/provider-utils@3.0.18(zod@4.3.5)':
+ '@ai-sdk/provider-utils@3.0.18(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 2.0.0
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
- zod: 4.3.5
+ zod: 4.3.6
- '@ai-sdk/provider-utils@3.0.19(zod@4.3.5)':
+ '@ai-sdk/provider-utils@3.0.19(zod@4.3.6)':
dependencies:
'@ai-sdk/provider': 2.0.0
'@standard-schema/spec': 1.1.0
eventsource-parser: 3.0.6
- zod: 4.3.5
+ zod: 4.3.6
'@ai-sdk/provider@2.0.0':
dependencies:
json-schema: 0.4.0
- '@ai-sdk/react@2.0.115(react@19.2.3)(zod@4.3.5)':
+ '@ai-sdk/react@2.0.115(react@19.2.4)(zod@4.3.6)':
dependencies:
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
- ai: 5.0.113(zod@4.3.5)
- react: 19.2.3
- swr: 2.3.8(react@19.2.3)
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
+ ai: 5.0.113(zod@4.3.6)
+ react: 19.2.4
+ swr: 2.3.8(react@19.2.4)
throttleit: 2.1.0
optionalDependencies:
- zod: 4.3.5
+ zod: 4.3.6
'@alloc/quick-lru@5.2.0': {}
- '@anthropic-ai/sdk@0.71.2(zod@4.3.5)':
+ '@anthropic-ai/sdk@0.72.1(zod@4.3.6)':
dependencies:
json-schema-to-ts: 3.1.1
optionalDependencies:
- zod: 4.3.5
+ zod: 4.3.6
'@apm-js-collab/code-transformer@0.8.2': {}
@@ -12453,9 +12714,9 @@ snapshots:
human-id: 4.1.3
prettier: 2.8.8
- '@cloudflare/stream-react@1.9.3(react@19.2.3)':
+ '@cloudflare/stream-react@1.9.3(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
'@cspotcode/source-map-support@0.8.1':
dependencies:
@@ -12506,29 +12767,29 @@ snapshots:
'@discoveryjs/json-ext@0.5.7': {}
- '@dnd-kit/accessibility@3.1.1(react@19.2.3)':
+ '@dnd-kit/accessibility@3.1.1(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
tslib: 2.8.1
- '@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@dnd-kit/core@6.3.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@dnd-kit/accessibility': 3.1.1(react@19.2.3)
- '@dnd-kit/utilities': 3.2.2(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@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)
tslib: 2.8.1
- '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)':
+ '@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)':
dependencies:
- '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@dnd-kit/utilities': 3.2.2(react@19.2.3)
- react: 19.2.3
+ '@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
tslib: 2.8.1
- '@dnd-kit/utilities@3.2.2(react@19.2.3)':
+ '@dnd-kit/utilities@3.2.2(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
tslib: 2.8.1
'@egjs/hammerjs@2.0.17':
@@ -12583,17 +12844,17 @@ snapshots:
'@emotion/memoize@0.9.0': {}
- '@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3)':
+ '@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
'@emotion/cache': 11.14.0
'@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
'@emotion/utils': 1.4.2
'@emotion/weak-memoize': 0.4.0
hoist-non-react-statics: 3.3.2
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
transitivePeerDependencies:
@@ -12609,16 +12870,16 @@ snapshots:
'@emotion/sheet@1.4.0': {}
- '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)':
+ '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
'@emotion/is-prop-valid': 1.4.0
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.3)
+ '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
'@emotion/serialize': 1.3.3
- '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.3)
+ '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
'@emotion/utils': 1.4.2
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
transitivePeerDependencies:
@@ -12626,9 +12887,9 @@ snapshots:
'@emotion/unitless@0.10.0': {}
- '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.3)':
+ '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
'@emotion/utils@1.4.2': {}
@@ -13159,20 +13420,21 @@ snapshots:
'@floating-ui/core': 1.7.3
'@floating-ui/utils': 0.2.10
- '@floating-ui/react-dom@2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@floating-ui/react-dom@2.1.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@floating-ui/dom': 1.7.4
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
'@floating-ui/utils@0.2.10': {}
- '@google/genai@1.33.0(@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5))':
+ '@google/genai@1.40.0(@modelcontextprotocol/sdk@1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))':
dependencies:
google-auth-library: 10.5.0
+ protobufjs: 7.5.4
ws: 8.18.3
optionalDependencies:
- '@modelcontextprotocol/sdk': 1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5)
+ '@modelcontextprotocol/sdk': 1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -13201,15 +13463,15 @@ snapshots:
dependencies:
'@hapi/hoek': 9.3.0
- '@hono/node-server@1.19.7(hono@4.11.1)':
+ '@hono/node-server@1.19.9(hono@4.11.7)':
dependencies:
- hono: 4.11.1
+ hono: 4.11.7
- '@hookform/error-message@2.0.1(react-dom@19.2.3(react@19.2.3))(react-hook-form@7.70.0(react@19.2.3))(react@19.2.3)':
+ '@hookform/error-message@2.0.1(react-dom@19.2.4(react@19.2.4))(react-hook-form@7.71.1(react@19.2.4))(react@19.2.4)':
dependencies:
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- react-hook-form: 7.70.0(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-hook-form: 7.71.1(react@19.2.4)
'@humanfs/core@0.19.1': {}
@@ -13309,6 +13571,14 @@ snapshots:
'@types/node': 22.19.3
optional: true
+ '@inquirer/confirm@5.1.21(@types/node@24.10.10)':
+ dependencies:
+ '@inquirer/core': 10.3.2(@types/node@24.10.10)
+ '@inquirer/type': 3.0.10(@types/node@24.10.10)
+ optionalDependencies:
+ '@types/node': 24.10.10
+ optional: true
+
'@inquirer/confirm@5.1.21(@types/node@25.0.2)':
dependencies:
'@inquirer/core': 10.3.2(@types/node@25.0.2)
@@ -13330,6 +13600,20 @@ snapshots:
'@types/node': 22.19.3
optional: true
+ '@inquirer/core@10.3.2(@types/node@24.10.10)':
+ dependencies:
+ '@inquirer/ansi': 1.0.2
+ '@inquirer/figures': 1.0.15
+ '@inquirer/type': 3.0.10(@types/node@24.10.10)
+ cli-width: 4.1.0
+ mute-stream: 2.0.0
+ signal-exit: 4.1.0
+ wrap-ansi: 6.2.0
+ yoctocolors-cjs: 2.1.3
+ optionalDependencies:
+ '@types/node': 24.10.10
+ optional: true
+
'@inquirer/core@10.3.2(@types/node@25.0.2)':
dependencies:
'@inquirer/ansi': 1.0.2
@@ -13357,6 +13641,11 @@ snapshots:
'@types/node': 22.19.3
optional: true
+ '@inquirer/type@3.0.10(@types/node@24.10.10)':
+ optionalDependencies:
+ '@types/node': 24.10.10
+ optional: true
+
'@inquirer/type@3.0.10(@types/node@25.0.2)':
optionalDependencies:
'@types/node': 25.0.2
@@ -13587,48 +13876,49 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
- '@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))':
+ '@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))':
dependencies:
'@cfworker/json-schema': 4.1.1
ansi-styles: 5.2.0
camelcase: 6.3.0
decamelize: 1.2.0
js-tiktoken: 1.0.21
- langsmith: 0.3.87(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
+ langsmith: 0.4.12(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))
mustache: 4.2.0
p-queue: 6.6.2
uuid: 10.0.0
- zod: 4.3.5
+ zod: 4.3.6
transitivePeerDependencies:
- '@opentelemetry/api'
- '@opentelemetry/exporter-trace-otlp-proto'
- '@opentelemetry/sdk-trace-base'
- openai
- '@langchain/langgraph-checkpoint@1.0.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))':
+ '@langchain/langgraph-checkpoint@1.0.0(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))':
dependencies:
- '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
+ '@langchain/core': 1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))
uuid: 10.0.0
- '@langchain/langgraph-sdk@1.3.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@langchain/langgraph-sdk@1.5.6(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- p-queue: 6.6.2
- p-retry: 4.6.2
- uuid: 9.0.1
+ p-queue: 9.1.0
+ p-retry: 7.1.1
+ uuid: 13.0.0
optionalDependencies:
- '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@langchain/core': 1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
- '@langchain/langgraph@1.0.5(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod-to-json-schema@3.25.0(zod@4.3.5))(zod@4.3.5)':
+ '@langchain/langgraph@1.1.3(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6)':
dependencies:
- '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
- '@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))
- '@langchain/langgraph-sdk': 1.3.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@langchain/core': 1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))
+ '@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))
+ '@langchain/langgraph-sdk': 1.5.6(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@standard-schema/spec': 1.1.0
uuid: 10.0.0
- zod: 4.3.5
+ zod: 4.3.6
optionalDependencies:
- zod-to-json-schema: 3.25.0(zod@4.3.5)
+ zod-to-json-schema: 3.25.1(zod@4.3.6)
transitivePeerDependencies:
- react
- react-dom
@@ -13712,20 +14002,20 @@ snapshots:
unified: 11.0.5
unist-util-position-from-estree: 2.0.0
unist-util-stringify-position: 4.0.0
- unist-util-visit: 5.0.0
+ unist-util-visit: 5.1.0
vfile: 6.0.3
transitivePeerDependencies:
- supports-color
- '@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
'@types/mdx': 2.0.13
'@types/react': 19.2.3
- react: 19.2.3
+ react: 19.2.4
- '@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5)':
+ '@modelcontextprotocol/sdk@1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)':
dependencies:
- '@hono/node-server': 1.19.7(hono@4.11.1)
+ '@hono/node-server': 1.19.9(hono@4.11.7)
ajv: 8.17.1
ajv-formats: 3.0.1(ajv@8.17.1)
content-type: 1.0.5
@@ -13734,17 +14024,17 @@ snapshots:
eventsource: 3.0.7
eventsource-parser: 3.0.6
express: 5.2.1
- express-rate-limit: 7.5.1(express@5.2.1)
+ express-rate-limit: 8.2.1(express@5.2.1)
+ hono: 4.11.7
jose: 6.1.3
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
raw-body: 3.0.2
- zod: 4.3.5
- zod-to-json-schema: 3.25.0(zod@4.3.5)
+ zod: 4.3.6
+ zod-to-json-schema: 3.25.1(zod@4.3.6)
optionalDependencies:
'@cfworker/json-schema': 4.1.1
transitivePeerDependencies:
- - hono
- supports-color
'@mswjs/interceptors@0.40.0':
@@ -13756,47 +14046,47 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
- '@mui/core-downloads-tracker@7.3.6': {}
+ '@mui/core-downloads-tracker@7.3.7': {}
- '@mui/icons-material@7.3.6(@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)':
+ '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/material': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
+ '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/core-downloads-tracker': 7.3.6
- '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
- '@mui/types': 7.4.9(@types/react@19.2.3)
- '@mui/utils': 7.3.6(@types/react@19.2.3)(react@19.2.3)
+ '@mui/core-downloads-tracker': 7.3.7
+ '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ '@mui/types': 7.4.10(@types/react@19.2.3)
+ '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
'@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.12(@types/react@19.2.3)
clsx: 2.1.1
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
react-is: 19.2.3
- react-transition-group: 4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.3)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
+ '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
'@types/react': 19.2.3
- '@mui/private-theming@7.3.6(@types/react@19.2.3)(react@19.2.3)':
+ '@mui/private-theming@7.3.7(@types/react@19.2.3)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/utils': 7.3.6(@types/react@19.2.3)(react@19.2.3)
+ '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
prop-types: 15.8.1
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@mui/styled-engine@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(react@19.2.3)':
+ '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/cache': 11.14.0
@@ -13804,41 +14094,41 @@ snapshots:
'@emotion/sheet': 1.4.0
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.3)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
+ '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
- '@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)':
+ '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/private-theming': 7.3.6(@types/react@19.2.3)(react@19.2.3)
- '@mui/styled-engine': 7.3.6(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3))(react@19.2.3)
- '@mui/types': 7.4.9(@types/react@19.2.3)
- '@mui/utils': 7.3.6(@types/react@19.2.3)(react@19.2.3)
+ '@mui/private-theming': 7.3.7(@types/react@19.2.3)(react@19.2.4)
+ '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(react@19.2.4)
+ '@mui/types': 7.4.10(@types/react@19.2.3)
+ '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
clsx: 2.1.1
csstype: 3.2.3
prop-types: 15.8.1
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.3)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.3))(@types/react@19.2.3)(react@19.2.3)
+ '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
'@types/react': 19.2.3
- '@mui/types@7.4.9(@types/react@19.2.3)':
+ '@mui/types@7.4.10(@types/react@19.2.3)':
dependencies:
'@babel/runtime': 7.28.4
optionalDependencies:
'@types/react': 19.2.3
- '@mui/utils@7.3.6(@types/react@19.2.3)(react@19.2.3)':
+ '@mui/utils@7.3.7(@types/react@19.2.3)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/types': 7.4.9(@types/react@19.2.3)
+ '@mui/types': 7.4.10(@types/react@19.2.3)
'@types/prop-types': 15.7.15
clsx: 2.1.1
prop-types: 15.8.1
- react: 19.2.3
+ react: 19.2.4
react-is: 19.2.3
optionalDependencies:
'@types/react': 19.2.3
@@ -13850,54 +14140,54 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
- '@next/bundle-analyzer@16.1.1':
+ '@next/bundle-analyzer@16.1.6':
dependencies:
webpack-bundle-analyzer: 4.10.1
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- '@next/env@16.1.1': {}
+ '@next/env@16.1.6': {}
'@next/eslint-plugin-next@16.0.10':
dependencies:
fast-glob: 3.3.1
- '@next/mdx@16.1.1(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.3))':
+ '@next/mdx@16.1.6(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4))':
dependencies:
source-map: 0.7.6
optionalDependencies:
'@mdx-js/loader': 3.1.1(webpack@5.102.1)
- '@mdx-js/react': 3.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@mdx-js/react': 3.1.1(@types/react@19.2.3)(react@19.2.4)
- '@next/swc-darwin-arm64@16.1.1':
+ '@next/swc-darwin-arm64@16.1.6':
optional: true
- '@next/swc-darwin-x64@16.1.1':
+ '@next/swc-darwin-x64@16.1.6':
optional: true
- '@next/swc-linux-arm64-gnu@16.1.1':
+ '@next/swc-linux-arm64-gnu@16.1.6':
optional: true
- '@next/swc-linux-arm64-musl@16.1.1':
+ '@next/swc-linux-arm64-musl@16.1.6':
optional: true
- '@next/swc-linux-x64-gnu@16.1.1':
+ '@next/swc-linux-x64-gnu@16.1.6':
optional: true
- '@next/swc-linux-x64-musl@16.1.1':
+ '@next/swc-linux-x64-musl@16.1.6':
optional: true
- '@next/swc-win32-arm64-msvc@16.1.1':
+ '@next/swc-win32-arm64-msvc@16.1.6':
optional: true
- '@next/swc-win32-x64-msvc@16.1.1':
+ '@next/swc-win32-x64-msvc@16.1.6':
optional: true
- '@next/third-parties@16.1.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)':
+ '@next/third-parties@16.1.6(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4)':
dependencies:
- next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
+ next: 16.1.6(@babel/core@7.28.5)(@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)
+ react: 19.2.4
third-party-capital: 1.0.20
'@nodelib/fs.scandir@2.1.5':
@@ -13923,13 +14213,21 @@ snapshots:
'@open-draft/until@2.1.0': {}
+ '@opentelemetry/api-logs@0.207.0':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+
'@opentelemetry/api-logs@0.208.0':
dependencies:
'@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs@0.211.0':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+
'@opentelemetry/api@1.9.0': {}
- '@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -13938,221 +14236,295 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/semantic-conventions': 1.38.0
- '@opentelemetry/instrumentation-amqplib@0.55.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/semantic-conventions': 1.39.0
+
+ '@opentelemetry/exporter-logs-otlp-http@0.208.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.208.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-exporter-base': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0)
+
+ '@opentelemetry/instrumentation-amqplib@0.58.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-connect@0.52.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-connect@0.54.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
'@types/connect': 3.4.38
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-dataloader@0.26.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-dataloader@0.28.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-express@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-express@0.59.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-fs@0.28.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-fs@0.30.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-generic-pool@0.52.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-generic-pool@0.54.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-graphql@0.56.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-graphql@0.58.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-hapi@0.55.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-hapi@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-http@0.208.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-http@0.211.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
forwarded-parse: 2.1.2
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-ioredis@0.56.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-ioredis@0.59.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.38.2
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-kafkajs@0.18.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-kafkajs@0.20.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-knex@0.53.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-knex@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-koa@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-koa@0.59.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-lru-memoizer@0.53.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-lru-memoizer@0.55.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mongodb@0.61.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mongodb@0.64.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mongoose@0.55.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mongoose@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mysql2@0.55.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mysql2@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
'@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-mysql@0.54.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-mysql@0.57.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
'@types/mysql': 2.15.27
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-pg@0.61.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-pg@0.63.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
'@opentelemetry/sql-common': 0.41.2(@opentelemetry/api@1.9.0)
'@types/pg': 8.15.6
- '@types/pg-pool': 2.0.6
+ '@types/pg-pool': 2.0.7
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-redis@0.57.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-redis@0.59.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
'@opentelemetry/redis-common': 0.38.2
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-tedious@0.27.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-tedious@0.30.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
'@types/tedious': 4.0.14
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation-undici@0.19.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation-undici@0.21.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
transitivePeerDependencies:
- supports-color
- '@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/instrumentation@0.207.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/api-logs': 0.208.0
- import-in-the-middle: 2.0.1
+ '@opentelemetry/api-logs': 0.207.0
+ import-in-the-middle: 2.0.6
require-in-the-middle: 8.0.1
transitivePeerDependencies:
- supports-color
- '@opentelemetry/redis-common@0.38.2': {}
+ '@opentelemetry/instrumentation@0.211.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.211.0
+ import-in-the-middle: 2.0.6
+ require-in-the-middle: 8.0.1
+ transitivePeerDependencies:
+ - supports-color
- '@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/otlp-exporter-base@0.208.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/otlp-transformer': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0)':
+ '@opentelemetry/otlp-transformer@0.208.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.208.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-metrics': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
+ protobufjs: 7.5.4
+
+ '@opentelemetry/redis-common@0.38.2': {}
+
+ '@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
+
+ '@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
+
+ '@opentelemetry/sdk-logs@0.208.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.208.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+
+ '@opentelemetry/sdk-metrics@2.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+
+ '@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.38.0
+
+ '@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
'@opentelemetry/semantic-conventions@1.38.0': {}
+ '@opentelemetry/semantic-conventions@1.39.0': {}
+
'@opentelemetry/sql-common@0.41.2(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
'@pkgjs/parseargs@0.11.0':
optional: true
@@ -14169,25 +14541,26 @@ snapshots:
'@pnpm/network.ca-file': 1.0.2
config-chain: 1.1.13
- '@polar-sh/sdk@0.42.1':
+ '@polar-sh/sdk@0.42.5':
dependencies:
standardwebhooks: 1.0.0
- zod: 4.3.5
+ zod: 4.3.6
'@polka/url@1.0.0-next.29': {}
'@popperjs/core@2.11.8': {}
- '@posthog/ai@7.3.0(@ai-sdk/provider@2.0.0)(@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(posthog-node@5.18.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(ws@8.18.3)(zod-to-json-schema@3.25.0(zod@4.3.5))':
+ '@posthog/ai@7.8.5(@ai-sdk/provider@2.0.0)(@modelcontextprotocol/sdk@1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(posthog-node@5.24.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(ws@8.18.3)(zod-to-json-schema@3.25.1(zod@4.3.6))':
dependencies:
- '@anthropic-ai/sdk': 0.71.2(zod@4.3.5)
- '@google/genai': 1.33.0(@modelcontextprotocol/sdk@1.25.1(@cfworker/json-schema@4.1.1)(hono@4.11.1)(zod@4.3.5))
- '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
- langchain: 1.2.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod-to-json-schema@3.25.0(zod@4.3.5))
- openai: 6.13.0(ws@8.18.3)(zod@4.3.5)
- posthog-node: 5.18.1
+ '@anthropic-ai/sdk': 0.72.1(zod@4.3.6)
+ '@google/genai': 1.40.0(@modelcontextprotocol/sdk@1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))
+ '@langchain/core': 1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))
+ '@posthog/core': 1.20.0
+ langchain: 1.2.17(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod-to-json-schema@3.25.1(zod@4.3.6))
+ openai: 6.17.0(ws@8.18.3)(zod@4.3.6)
+ posthog-node: 5.24.10
uuid: 11.1.0
- zod: 4.3.5
+ zod: 4.3.6
optionalDependencies:
'@ai-sdk/provider': 2.0.0
transitivePeerDependencies:
@@ -14203,89 +14576,114 @@ snapshots:
- ws
- zod-to-json-schema
- '@posthog/core@1.9.0':
+ '@posthog/core@1.20.0':
dependencies:
cross-spawn: 7.0.6
- '@prisma/instrumentation@6.19.0(@opentelemetry/api@1.9.0)':
+ '@posthog/types@1.341.0': {}
+
+ '@prisma/instrumentation@7.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.207.0(@opentelemetry/api@1.9.0)
transitivePeerDependencies:
- supports-color
+ '@protobufjs/aspromise@1.1.2': {}
+
+ '@protobufjs/base64@1.1.2': {}
+
+ '@protobufjs/codegen@2.0.4': {}
+
+ '@protobufjs/eventemitter@1.1.0': {}
+
+ '@protobufjs/fetch@1.1.0':
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/inquire': 1.1.0
+
+ '@protobufjs/float@1.0.2': {}
+
+ '@protobufjs/inquire@1.1.0': {}
+
+ '@protobufjs/path@1.1.2': {}
+
+ '@protobufjs/pool@1.1.0': {}
+
+ '@protobufjs/utf8@1.1.0': {}
+
'@radix-ui/number@1.1.1': {}
'@radix-ui/primitive@1.1.3': {}
- '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14302,14 +14700,14 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14320,9 +14718,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
@@ -14332,9 +14730,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-context@1.1.2(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-context@1.1.2(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
@@ -14360,24 +14758,24 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
aria-hidden: 1.2.6
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14388,9 +14786,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-direction@1.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-direction@1.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
@@ -14407,30 +14805,30 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14441,9 +14839,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
@@ -14458,13 +14856,13 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14476,85 +14874,85 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-id@1.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-id@1.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
aria-hidden: 1.2.6
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
aria-hidden: 1.2.6
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
- dependencies:
- '@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.3)
+ '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.6(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
'@radix-ui/rect': 1.1.1
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14569,12 +14967,12 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14589,12 +14987,12 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14608,38 +15006,38 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-slot': 1.2.4(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14661,57 +15059,57 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
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.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
aria-hidden: 1.2.6
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14730,31 +15128,31 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-slot@1.2.3(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-slot@1.2.3(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-slot@1.2.4(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-slot@1.2.4(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14775,84 +15173,84 @@ snapshots:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
- '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -14863,9 +15261,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
@@ -14877,11 +15275,11 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
@@ -14892,10 +15290,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
@@ -14906,10 +15304,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
@@ -14919,37 +15317,37 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
'@radix-ui/rect': 1.1.1
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-use-size@1.1.1(@types/react@19.2.3)(react@19.2.3)':
+ '@radix-ui/react-use-size@1.1.1(@types/react@19.2.3)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- react: 19.2.3
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ react: 19.2.4
optionalDependencies:
'@types/react': 19.2.3
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -15312,7 +15710,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.3)(react@19.2.3)(redux@5.0.1))(react@19.2.3)':
+ '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1))(react@19.2.4)':
dependencies:
'@standard-schema/spec': 1.1.0
'@standard-schema/utils': 0.3.0
@@ -15321,8 +15719,8 @@ snapshots:
redux-thunk: 3.1.0(redux@5.0.1)
reselect: 5.1.1
optionalDependencies:
- react: 19.2.3
- react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.3)(redux@5.0.1)
+ react: 19.2.4
+ react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1)
'@rolldown/pluginutils@1.0.0-beta.53': {}
@@ -15418,40 +15816,42 @@ snapshots:
dependencies:
'@sentry/core': 10.26.0
- '@sentry-internal/browser-utils@10.32.1':
+ '@sentry-internal/browser-utils@10.38.0':
dependencies:
- '@sentry/core': 10.32.1
+ '@sentry/core': 10.38.0
'@sentry-internal/feedback@10.26.0':
dependencies:
'@sentry/core': 10.26.0
- '@sentry-internal/feedback@10.32.1':
+ '@sentry-internal/feedback@10.38.0':
dependencies:
- '@sentry/core': 10.32.1
+ '@sentry/core': 10.38.0
'@sentry-internal/replay-canvas@10.26.0':
dependencies:
'@sentry-internal/replay': 10.26.0
'@sentry/core': 10.26.0
- '@sentry-internal/replay-canvas@10.32.1':
+ '@sentry-internal/replay-canvas@10.38.0':
dependencies:
- '@sentry-internal/replay': 10.32.1
- '@sentry/core': 10.32.1
+ '@sentry-internal/replay': 10.38.0
+ '@sentry/core': 10.38.0
'@sentry-internal/replay@10.26.0':
dependencies:
'@sentry-internal/browser-utils': 10.26.0
'@sentry/core': 10.26.0
- '@sentry-internal/replay@10.32.1':
+ '@sentry-internal/replay@10.38.0':
dependencies:
- '@sentry-internal/browser-utils': 10.32.1
- '@sentry/core': 10.32.1
+ '@sentry-internal/browser-utils': 10.38.0
+ '@sentry/core': 10.38.0
'@sentry/babel-plugin-component-annotate@4.6.1': {}
+ '@sentry/babel-plugin-component-annotate@4.9.0': {}
+
'@sentry/browser@10.26.0':
dependencies:
'@sentry-internal/browser-utils': 10.26.0
@@ -15460,18 +15860,18 @@ snapshots:
'@sentry-internal/replay-canvas': 10.26.0
'@sentry/core': 10.26.0
- '@sentry/browser@10.32.1':
+ '@sentry/browser@10.38.0':
dependencies:
- '@sentry-internal/browser-utils': 10.32.1
- '@sentry-internal/feedback': 10.32.1
- '@sentry-internal/replay': 10.32.1
- '@sentry-internal/replay-canvas': 10.32.1
- '@sentry/core': 10.32.1
+ '@sentry-internal/browser-utils': 10.38.0
+ '@sentry-internal/feedback': 10.38.0
+ '@sentry-internal/replay': 10.38.0
+ '@sentry-internal/replay-canvas': 10.38.0
+ '@sentry/core': 10.38.0
- '@sentry/bundler-plugin-core@4.6.1':
+ '@sentry/bundler-plugin-core@4.9.0':
dependencies:
'@babel/core': 7.28.5
- '@sentry/babel-plugin-component-annotate': 4.6.1
+ '@sentry/babel-plugin-component-annotate': 4.9.0
'@sentry/cli': 2.58.4
dotenv: 16.6.1
find-up: 5.0.0
@@ -15572,23 +15972,22 @@ snapshots:
'@sentry/core@10.26.0': {}
- '@sentry/core@10.32.1': {}
+ '@sentry/core@10.38.0': {}
- '@sentry/nextjs@10.32.1(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(webpack@5.102.1)':
+ '@sentry/nextjs@10.38.0(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4)(webpack@5.102.1)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/semantic-conventions': 1.38.0
'@rollup/plugin-commonjs': 28.0.1(rollup@4.53.5)
- '@sentry-internal/browser-utils': 10.32.1
- '@sentry/bundler-plugin-core': 4.6.1
- '@sentry/core': 10.32.1
- '@sentry/node': 10.32.1
- '@sentry/opentelemetry': 10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
- '@sentry/react': 10.32.1(react@19.2.3)
- '@sentry/vercel-edge': 10.32.1
- '@sentry/webpack-plugin': 4.6.1(webpack@5.102.1)
- next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- resolve: 1.22.8
+ '@sentry-internal/browser-utils': 10.38.0
+ '@sentry/bundler-plugin-core': 4.9.0
+ '@sentry/core': 10.38.0
+ '@sentry/node': 10.38.0
+ '@sentry/opentelemetry': 10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ '@sentry/react': 10.38.0(react@19.2.4)
+ '@sentry/vercel-edge': 10.38.0
+ '@sentry/webpack-plugin': 4.9.0(webpack@5.102.1)
+ next: 16.1.6(@babel/core@7.28.5)(@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)
rollup: 4.53.5
stacktrace-parser: 0.1.11
transitivePeerDependencies:
@@ -15600,70 +15999,79 @@ snapshots:
- supports-color
- webpack
- '@sentry/node-core@10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
+ '@sentry/node-core@10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.211.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)':
dependencies:
'@apm-js-collab/tracing-hooks': 0.3.1
'@opentelemetry/api': 1.9.0
- '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
- '@sentry/core': 10.32.1
- '@sentry/opentelemetry': 10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
- import-in-the-middle: 2.0.1
+ '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
+ '@sentry/core': 10.38.0
+ '@sentry/opentelemetry': 10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)
+ import-in-the-middle: 2.0.6
transitivePeerDependencies:
- supports-color
- '@sentry/node@10.32.1':
+ '@sentry/node@10.38.0':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-amqplib': 0.55.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-connect': 0.52.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-dataloader': 0.26.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-express': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-fs': 0.28.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-generic-pool': 0.52.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-graphql': 0.56.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-hapi': 0.55.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-http': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-ioredis': 0.56.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-kafkajs': 0.18.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-knex': 0.53.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-koa': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-lru-memoizer': 0.53.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mongodb': 0.61.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mongoose': 0.55.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mysql': 0.54.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-mysql2': 0.55.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-pg': 0.61.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-redis': 0.57.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-tedious': 0.27.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/instrumentation-undici': 0.19.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
- '@prisma/instrumentation': 6.19.0(@opentelemetry/api@1.9.0)
- '@sentry/core': 10.32.1
- '@sentry/node-core': 10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.208.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
- '@sentry/opentelemetry': 10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
- import-in-the-middle: 2.0.1
+ '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-amqplib': 0.58.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-connect': 0.54.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-dataloader': 0.28.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-express': 0.59.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-fs': 0.30.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-generic-pool': 0.54.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-graphql': 0.58.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-hapi': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-http': 0.211.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-ioredis': 0.59.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-kafkajs': 0.20.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-knex': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-koa': 0.59.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-lru-memoizer': 0.55.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongodb': 0.64.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mongoose': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-mysql2': 0.57.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-pg': 0.63.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-redis': 0.59.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-tedious': 0.30.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/instrumentation-undici': 0.21.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
+ '@prisma/instrumentation': 7.2.0(@opentelemetry/api@1.9.0)
+ '@sentry/core': 10.38.0
+ '@sentry/node-core': 10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.211.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)
+ '@sentry/opentelemetry': 10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)
+ import-in-the-middle: 2.0.6
minimatch: 9.0.5
transitivePeerDependencies:
- supports-color
- '@sentry/opentelemetry@10.32.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
+ '@sentry/opentelemetry@10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/context-async-hooks': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.38.0
- '@sentry/core': 10.32.1
+ '@sentry/core': 10.38.0
+
+ '@sentry/opentelemetry@10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)':
+ dependencies:
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/semantic-conventions': 1.39.0
+ '@sentry/core': 10.38.0
'@sentry/react-native@7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
dependencies:
@@ -15688,26 +16096,25 @@ snapshots:
hoist-non-react-statics: 3.3.2
react: 19.1.0
- '@sentry/react@10.32.1(react@19.2.3)':
+ '@sentry/react@10.38.0(react@19.2.4)':
dependencies:
- '@sentry/browser': 10.32.1
- '@sentry/core': 10.32.1
- hoist-non-react-statics: 3.3.2
- react: 19.2.3
+ '@sentry/browser': 10.38.0
+ '@sentry/core': 10.38.0
+ react: 19.2.4
'@sentry/types@10.26.0':
dependencies:
'@sentry/core': 10.26.0
- '@sentry/vercel-edge@10.32.1':
+ '@sentry/vercel-edge@10.38.0':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
- '@sentry/core': 10.32.1
+ '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
+ '@sentry/core': 10.38.0
- '@sentry/webpack-plugin@4.6.1(webpack@5.102.1)':
+ '@sentry/webpack-plugin@4.9.0(webpack@5.102.1)':
dependencies:
- '@sentry/bundler-plugin-core': 4.6.1
+ '@sentry/bundler-plugin-core': 4.9.0
unplugin: 1.0.1
uuid: 9.0.1
webpack: 5.102.1
@@ -15715,42 +16122,42 @@ snapshots:
- encoding
- supports-color
- '@shikijs/core@3.20.0':
+ '@shikijs/core@3.22.0':
dependencies:
- '@shikijs/types': 3.20.0
+ '@shikijs/types': 3.22.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
- '@shikijs/engine-javascript@3.20.0':
+ '@shikijs/engine-javascript@3.22.0':
dependencies:
- '@shikijs/types': 3.20.0
+ '@shikijs/types': 3.22.0
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 4.3.4
- '@shikijs/engine-oniguruma@3.20.0':
+ '@shikijs/engine-oniguruma@3.22.0':
dependencies:
- '@shikijs/types': 3.20.0
+ '@shikijs/types': 3.22.0
'@shikijs/vscode-textmate': 10.0.2
- '@shikijs/langs@3.20.0':
+ '@shikijs/langs@3.22.0':
dependencies:
- '@shikijs/types': 3.20.0
+ '@shikijs/types': 3.22.0
- '@shikijs/rehype@3.20.0':
+ '@shikijs/rehype@3.22.0':
dependencies:
- '@shikijs/types': 3.20.0
+ '@shikijs/types': 3.22.0
'@types/hast': 3.0.4
hast-util-to-string: 3.0.1
- shiki: 3.20.0
+ shiki: 3.22.0
unified: 11.0.5
- unist-util-visit: 5.0.0
+ unist-util-visit: 5.1.0
- '@shikijs/themes@3.20.0':
+ '@shikijs/themes@3.22.0':
dependencies:
- '@shikijs/types': 3.20.0
+ '@shikijs/types': 3.22.0
- '@shikijs/types@3.20.0':
+ '@shikijs/types@3.22.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -15804,12 +16211,12 @@ snapshots:
'@standard-schema/utils@0.3.0': {}
- '@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@stripe/stripe-js': 7.9.0
prop-types: 15.8.1
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
'@stripe/stripe-js@7.9.0': {}
@@ -15900,6 +16307,8 @@ snapshots:
'@tanstack/query-core@5.90.16': {}
+ '@tanstack/query-core@5.90.20': {}
+
'@tanstack/react-query@5.90.12(react@19.1.0)':
dependencies:
'@tanstack/query-core': 5.90.12
@@ -15910,11 +16319,16 @@ snapshots:
'@tanstack/query-core': 5.90.16
react: 19.2.3
- '@tanstack/react-table@8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@tanstack/react-query@5.90.20(react@19.2.4)':
+ dependencies:
+ '@tanstack/query-core': 5.90.20
+ react: 19.2.4
+
+ '@tanstack/react-table@8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@tanstack/table-core': 8.21.3
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
'@tanstack/table-core@8.21.3': {}
@@ -15929,12 +16343,12 @@ snapshots:
picocolors: 1.1.1
pretty-format: 27.5.1
- '@testing-library/react@16.3.1(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.3))(react@19.2.3)':
dependencies:
'@babel/runtime': 7.28.4
'@testing-library/dom': 10.4.1
react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react-dom: 19.2.4(react@19.2.3)
optionalDependencies:
'@types/react': 19.2.3
'@types/react-dom': 19.2.3(@types/react@19.2.3)
@@ -15986,7 +16400,7 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
'@types/d3-array@3.2.2': {}
@@ -16186,7 +16600,7 @@ snapshots:
'@types/mysql@2.15.27':
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
'@types/node-fetch@2.6.13':
dependencies:
@@ -16203,6 +16617,10 @@ snapshots:
dependencies:
undici-types: 6.21.0
+ '@types/node@24.10.10':
+ dependencies:
+ undici-types: 7.16.0
+
'@types/node@25.0.2':
dependencies:
undici-types: 7.16.0
@@ -16210,13 +16628,13 @@ snapshots:
'@types/parse-json@4.0.2': {}
- '@types/pg-pool@2.0.6':
+ '@types/pg-pool@2.0.7':
dependencies:
'@types/pg': 8.15.6
'@types/pg@8.15.6':
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
pg-protocol: 1.10.3
pg-types: 2.2.0
@@ -16224,7 +16642,7 @@ snapshots:
'@types/qrcode@1.5.6':
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
'@types/react-dom@19.2.3(@types/react@19.2.3)':
dependencies:
@@ -16246,20 +16664,21 @@ snapshots:
dependencies:
csstype: 3.2.3
- '@types/retry@0.12.0': {}
-
'@types/stack-utils@2.0.3': {}
'@types/statuses@2.0.6': {}
'@types/tedious@4.0.14':
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
'@types/tinycolor2@1.4.6': {}
'@types/tough-cookie@4.0.5': {}
+ '@types/trusted-types@2.0.7':
+ optional: true
+
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
@@ -16268,7 +16687,7 @@ snapshots:
'@types/uuid@10.0.0': {}
- '@types/web@0.0.312': {}
+ '@types/web@0.0.323': {}
'@types/yargs-parser@21.0.3': {}
@@ -16501,7 +16920,7 @@ snapshots:
'@vercel/oidc@3.0.5': {}
- '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))':
+ '@vitejs/plugin-react@5.1.2(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@babel/core': 7.28.5
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
@@ -16509,7 +16928,7 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-beta.53
'@types/babel__core': 7.20.5
react-refresh: 0.18.0
- vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
@@ -16528,23 +16947,50 @@ snapshots:
chai: 5.3.3
tinyrainbow: 2.0.0
- '@vitest/mocker@2.1.9(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1))':
+ '@vitest/expect@4.0.18':
+ dependencies:
+ '@standard-schema/spec': 1.1.0
+ '@types/chai': 5.2.3
+ '@vitest/spy': 4.0.18
+ '@vitest/utils': 4.0.18
+ chai: 6.2.2
+ tinyrainbow: 3.0.3
+
+ '@vitest/mocker@2.1.9(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0))':
dependencies:
'@vitest/spy': 2.1.9
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
msw: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
- vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1)
+ vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
- '@vitest/mocker@3.2.4(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))':
+ '@vitest/mocker@3.2.4(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
msw: 2.12.7(@types/node@22.19.3)(typescript@5.9.3)
- vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+
+ '@vitest/mocker@3.2.4(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ dependencies:
+ '@vitest/spy': 3.2.4
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ msw: 2.12.7(@types/node@24.10.10)(typescript@5.9.3)
+ vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+
+ '@vitest/mocker@4.0.18(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ dependencies:
+ '@vitest/spy': 4.0.18
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ msw: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
+ vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/pretty-format@2.1.9':
dependencies:
@@ -16554,6 +17000,10 @@ snapshots:
dependencies:
tinyrainbow: 2.0.0
+ '@vitest/pretty-format@4.0.18':
+ dependencies:
+ tinyrainbow: 3.0.3
+
'@vitest/runner@2.1.9':
dependencies:
'@vitest/utils': 2.1.9
@@ -16565,6 +17015,11 @@ snapshots:
pathe: 2.0.3
strip-literal: 3.1.0
+ '@vitest/runner@4.0.18':
+ dependencies:
+ '@vitest/utils': 4.0.18
+ pathe: 2.0.3
+
'@vitest/snapshot@2.1.9':
dependencies:
'@vitest/pretty-format': 2.1.9
@@ -16577,6 +17032,12 @@ snapshots:
magic-string: 0.30.21
pathe: 2.0.3
+ '@vitest/snapshot@4.0.18':
+ dependencies:
+ '@vitest/pretty-format': 4.0.18
+ magic-string: 0.30.21
+ pathe: 2.0.3
+
'@vitest/spy@2.1.9':
dependencies:
tinyspy: 3.0.2
@@ -16585,6 +17046,8 @@ snapshots:
dependencies:
tinyspy: 4.0.4
+ '@vitest/spy@4.0.18': {}
+
'@vitest/ui@3.2.4(vitest@3.2.4)':
dependencies:
'@vitest/utils': 3.2.4
@@ -16594,7 +17057,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.15
tinyrainbow: 2.0.0
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.10)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/utils@2.1.9':
dependencies:
@@ -16608,6 +17071,11 @@ snapshots:
loupe: 3.2.1
tinyrainbow: 2.0.0
+ '@vitest/utils@4.0.18':
+ dependencies:
+ '@vitest/pretty-format': 4.0.18
+ tinyrainbow: 3.0.3
+
'@vscode/sudo-prompt@9.3.1': {}
'@webassemblyjs/ast@1.14.1':
@@ -16751,13 +17219,13 @@ snapshots:
dependencies:
humanize-ms: 1.2.1
- ai@5.0.113(zod@4.3.5):
+ ai@5.0.113(zod@4.3.6):
dependencies:
- '@ai-sdk/gateway': 2.0.21(zod@4.3.5)
+ '@ai-sdk/gateway': 2.0.21(zod@4.3.6)
'@ai-sdk/provider': 2.0.0
- '@ai-sdk/provider-utils': 3.0.19(zod@4.3.5)
+ '@ai-sdk/provider-utils': 3.0.19(zod@4.3.6)
'@opentelemetry/api': 1.9.0
- zod: 4.3.5
+ zod: 4.3.6
ajv-formats@2.1.1(ajv@8.17.1):
optionalDependencies:
@@ -17265,6 +17733,8 @@ snapshots:
loupe: 3.2.1
pathval: 2.0.1
+ chai@6.2.2: {}
+
chalk@2.4.2:
dependencies:
ansi-styles: 3.2.1
@@ -17345,6 +17815,8 @@ snapshots:
cjs-module-lexer@1.4.3: {}
+ cjs-module-lexer@2.2.0: {}
+
class-variance-authority@0.7.1:
dependencies:
clsx: 2.1.1
@@ -17379,14 +17851,14 @@ snapshots:
clsx@2.1.1: {}
- cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.3)
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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)
transitivePeerDependencies:
- '@types/react'
- '@types/react-dom'
@@ -17539,7 +18011,7 @@ snapshots:
countries-list@3.2.2: {}
- crawler-user-agents@1.24.0: {}
+ crawler-user-agents@1.27.0: {}
create-jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
dependencies:
@@ -17854,6 +18326,10 @@ snapshots:
dependencies:
domelementtype: 2.3.0
+ dompurify@3.3.1:
+ optionalDependencies:
+ '@types/trusted-types': 2.0.7
+
domutils@3.2.2:
dependencies:
dom-serializer: 2.0.0
@@ -18230,8 +18706,8 @@ snapshots:
'@babel/parser': 7.28.5
eslint: 9.39.2(jiti@2.6.1)
hermes-parser: 0.25.1
- zod: 4.3.5
- zod-validation-error: 4.0.2(zod@4.3.5)
+ zod: 4.3.6
+ zod-validation-error: 4.0.2(zod@4.3.6)
transitivePeerDependencies:
- supports-color
@@ -18279,11 +18755,11 @@ snapshots:
string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
- eslint-plugin-turbo@2.6.3(eslint@9.39.2(jiti@2.6.1))(turbo@2.7.2):
+ eslint-plugin-turbo@2.6.3(eslint@9.39.2(jiti@2.6.1))(turbo@2.8.3):
dependencies:
dotenv: 16.0.3
eslint: 9.39.2(jiti@2.6.1)
- turbo: 2.7.2
+ turbo: 2.8.3
eslint-scope@5.1.1:
dependencies:
@@ -18452,7 +18928,7 @@ snapshots:
eventemitter3@4.0.7: {}
- eventemitter3@5.0.1: {}
+ eventemitter3@5.0.4: {}
events@3.3.0: {}
@@ -18816,9 +19292,10 @@ snapshots:
exponential-backoff@3.1.3: {}
- express-rate-limit@7.5.1(express@5.2.1):
+ express-rate-limit@8.2.1(express@5.2.1):
dependencies:
express: 5.2.1
+ ip-address: 10.0.1
express@5.2.1:
dependencies:
@@ -19042,15 +19519,15 @@ snapshots:
fraction.js@5.3.4: {}
- framer-motion@12.23.26(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ framer-motion@12.31.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
- motion-dom: 12.23.23
- motion-utils: 12.23.6
+ motion-dom: 12.30.1
+ motion-utils: 12.29.2
tslib: 2.8.1
optionalDependencies:
'@emotion/is-prop-valid': 1.4.0
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
freeport-async@2.0.0: {}
@@ -19111,9 +19588,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- geist@1.5.1(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)):
+ geist@1.5.1(next@16.1.6(@babel/core@7.28.5)(@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)):
dependencies:
- next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ next: 16.1.6(@babel/core@7.28.5)(@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)
generator-function@2.0.1: {}
@@ -19386,7 +19863,7 @@ snapshots:
dependencies:
react-is: 16.13.1
- hono@4.11.1: {}
+ hono@4.11.7: {}
hosted-git-info@7.0.2:
dependencies:
@@ -19515,11 +19992,11 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
- import-in-the-middle@2.0.1:
+ import-in-the-middle@2.0.6:
dependencies:
acorn: 8.15.0
acorn-import-attributes: 1.9.5(acorn@8.15.0)
- cjs-module-lexer: 1.4.3
+ cjs-module-lexer: 2.2.0
module-details-from-path: 1.0.4
import-local@3.2.0:
@@ -19546,10 +20023,10 @@ snapshots:
dependencies:
css-in-js-utils: 3.1.0
- input-otp@1.4.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ input-otp@1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
internal-slot@1.1.0:
dependencies:
@@ -19563,6 +20040,8 @@ snapshots:
dependencies:
loose-envify: 1.4.0
+ ip-address@10.0.1: {}
+
ipaddr.js@1.9.1: {}
is-alphabetical@2.0.1: {}
@@ -19672,6 +20151,8 @@ snapshots:
is-negative-zero@2.0.3: {}
+ is-network-error@1.3.0: {}
+
is-node-process@1.2.0: {}
is-number-object@1.1.1:
@@ -20407,14 +20888,14 @@ snapshots:
lan-network@0.1.7: {}
- langchain@1.2.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod-to-json-schema@3.25.0(zod@4.3.5)):
+ langchain@1.2.17(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod-to-json-schema@3.25.1(zod@4.3.6)):
dependencies:
- '@langchain/core': 1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
- '@langchain/langgraph': 1.0.5(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod-to-json-schema@3.25.0(zod@4.3.5))(zod@4.3.5)
- '@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.5(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)))
- langsmith: 0.3.87(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5))
+ '@langchain/core': 1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))
+ '@langchain/langgraph': 1.1.3(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod-to-json-schema@3.25.1(zod@4.3.6))(zod@4.3.6)
+ '@langchain/langgraph-checkpoint': 1.0.0(@langchain/core@1.1.19(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)))
+ langsmith: 0.4.12(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6))
uuid: 10.0.0
- zod: 4.3.5
+ zod: 4.3.6
transitivePeerDependencies:
- '@opentelemetry/api'
- '@opentelemetry/exporter-trace-otlp-proto'
@@ -20424,7 +20905,7 @@ snapshots:
- react-dom
- zod-to-json-schema
- langsmith@0.3.87(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(openai@6.13.0(ws@8.18.3)(zod@4.3.5)):
+ langsmith@0.4.12(@opentelemetry/api@1.9.0)(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(openai@6.17.0(ws@8.18.3)(zod@4.3.6)):
dependencies:
'@types/uuid': 10.0.0
chalk: 4.1.2
@@ -20434,8 +20915,8 @@ snapshots:
uuid: 10.0.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/sdk-trace-base': 2.2.0(@opentelemetry/api@1.9.0)
- openai: 6.13.0(ws@8.18.3)(zod@4.3.5)
+ '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
+ openai: 6.17.0(ws@8.18.3)(zod@4.3.6)
launch-editor@2.12.0:
dependencies:
@@ -20591,6 +21072,8 @@ snapshots:
dayjs: 1.11.19
yargs: 15.4.1
+ long@5.3.2: {}
+
longest-streak@3.1.0: {}
loose-envify@1.4.0:
@@ -20607,9 +21090,9 @@ snapshots:
dependencies:
yallist: 3.1.1
- lucide-react@0.562.0(react@19.2.3):
+ lucide-react@0.563.0(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
lz-string@1.5.0: {}
@@ -20635,9 +21118,9 @@ snapshots:
markdown-table@3.0.4: {}
- markdown-to-jsx@8.0.0(react@19.2.3):
+ markdown-to-jsx@8.0.0(react@19.2.4):
optionalDependencies:
- react: 19.2.3
+ react: 19.2.4
marky@1.3.0: {}
@@ -20798,7 +21281,7 @@ snapshots:
micromark-util-sanitize-uri: 2.0.1
trim-lines: 3.0.1
unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
+ unist-util-visit: 5.1.0
vfile: 6.0.3
mdast-util-to-markdown@2.1.2:
@@ -20810,7 +21293,7 @@ snapshots:
mdast-util-to-string: 4.0.0
micromark-util-classify-character: 2.0.1
micromark-util-decode-string: 2.0.1
- unist-util-visit: 5.0.0
+ unist-util-visit: 5.1.0
zwitch: 2.0.4
mdast-util-to-string@4.0.0:
@@ -20956,12 +21439,12 @@ snapshots:
metro-minify-terser@0.83.2:
dependencies:
flow-enums-runtime: 0.0.6
- terser: 5.44.1
+ terser: 5.46.0
metro-minify-terser@0.83.3:
dependencies:
flow-enums-runtime: 0.0.6
- terser: 5.44.1
+ terser: 5.46.0
metro-resolver@0.83.2:
dependencies:
@@ -21524,11 +22007,11 @@ snapshots:
module-details-from-path@1.0.4: {}
- motion-dom@12.23.23:
+ motion-dom@12.30.1:
dependencies:
- motion-utils: 12.23.6
+ motion-utils: 12.29.2
- motion-utils@12.23.6: {}
+ motion-utils@12.29.2: {}
mri@1.2.0: {}
@@ -21564,6 +22047,32 @@ snapshots:
- '@types/node'
optional: true
+ msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3):
+ dependencies:
+ '@inquirer/confirm': 5.1.21(@types/node@24.10.10)
+ '@mswjs/interceptors': 0.40.0
+ '@open-draft/deferred-promise': 2.2.0
+ '@types/statuses': 2.0.6
+ cookie: 1.1.1
+ graphql: 16.12.0
+ headers-polyfill: 4.0.3
+ is-node-process: 1.2.0
+ outvariant: 1.4.3
+ path-to-regexp: 6.3.0
+ picocolors: 1.1.1
+ rettime: 0.7.0
+ statuses: 2.0.2
+ strict-event-emitter: 0.5.1
+ tough-cookie: 6.0.0
+ type-fest: 5.3.1
+ until-async: 3.0.2
+ yargs: 17.7.2
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - '@types/node'
+ optional: true
+
msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3):
dependencies:
'@inquirer/confirm': 5.1.21(@types/node@25.0.2)
@@ -21599,15 +22108,15 @@ snapshots:
object-assign: 4.1.1
thenify-all: 1.6.0
- nano-css@5.6.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ nano-css@5.6.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
css-tree: 1.1.3
csstype: 3.2.3
fastest-stable-stringify: 2.0.2
inline-style-prefixer: 7.0.1
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
rtl-css-js: 1.16.1
stacktrace-js: 2.0.2
stylis: 4.3.6
@@ -21644,30 +22153,30 @@ snapshots:
nested-error-stacks@2.0.1: {}
- next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
- next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ next@16.1.6(@babel/core@7.28.5)(@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):
dependencies:
- '@next/env': 16.1.1
+ '@next/env': 16.1.6
'@swc/helpers': 0.5.15
baseline-browser-mapping: 2.9.7
caniuse-lite: 1.0.30001760
postcss: 8.4.31
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.4)
optionalDependencies:
- '@next/swc-darwin-arm64': 16.1.1
- '@next/swc-darwin-x64': 16.1.1
- '@next/swc-linux-arm64-gnu': 16.1.1
- '@next/swc-linux-arm64-musl': 16.1.1
- '@next/swc-linux-x64-gnu': 16.1.1
- '@next/swc-linux-x64-musl': 16.1.1
- '@next/swc-win32-arm64-msvc': 16.1.1
- '@next/swc-win32-x64-msvc': 16.1.1
+ '@next/swc-darwin-arm64': 16.1.6
+ '@next/swc-darwin-x64': 16.1.6
+ '@next/swc-linux-arm64-gnu': 16.1.6
+ '@next/swc-linux-arm64-musl': 16.1.6
+ '@next/swc-linux-x64-gnu': 16.1.6
+ '@next/swc-linux-x64-musl': 16.1.6
+ '@next/swc-win32-arm64-msvc': 16.1.6
+ '@next/swc-win32-x64-msvc': 16.1.6
'@opentelemetry/api': 1.9.0
babel-plugin-react-compiler: 1.0.0
sharp: 0.33.3
@@ -21718,12 +22227,12 @@ snapshots:
nullthrows@1.1.1: {}
- nuqs@2.8.6(next@16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3):
+ nuqs@2.8.6(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4):
dependencies:
'@standard-schema/spec': 1.0.0
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
- next: 16.1.1(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ next: 16.1.6(@babel/core@7.28.5)(@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)
nwsapi@2.2.23: {}
@@ -21784,6 +22293,8 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
+ obug@2.1.1: {}
+
ofetch@1.5.1:
dependencies:
destr: 2.0.5
@@ -21853,10 +22364,10 @@ snapshots:
transitivePeerDependencies:
- encoding
- openai@6.13.0(ws@8.18.3)(zod@4.3.5):
+ openai@6.17.0(ws@8.18.3)(zod@4.3.6):
optionalDependencies:
ws: 8.18.3
- zod: 4.3.5
+ zod: 4.3.6
openapi-fetch@0.15.0:
dependencies:
@@ -21864,7 +22375,7 @@ snapshots:
openapi-typescript-helpers@0.0.15: {}
- openapi-typescript@7.10.1(typescript@5.9.3):
+ openapi-typescript@7.10.1(patch_hash=d5d81a1091dd25eaff66014508c84e42c721bcbe3f7693dcf58aa2c28132735b)(typescript@5.9.3):
dependencies:
'@redocly/openapi-core': 1.34.6(supports-color@10.2.2)
ansi-colors: 4.1.3
@@ -21949,15 +22460,21 @@ snapshots:
eventemitter3: 4.0.7
p-timeout: 3.2.0
- p-retry@4.6.2:
+ p-queue@9.1.0:
dependencies:
- '@types/retry': 0.12.0
- retry: 0.13.1
+ eventemitter3: 5.0.4
+ p-timeout: 7.0.1
+
+ p-retry@7.1.1:
+ dependencies:
+ is-network-error: 1.3.0
p-timeout@3.2.0:
dependencies:
p-finally: 1.0.0
+ p-timeout@7.0.1: {}
+
p-try@2.2.0: {}
package-json-from-dist@1.0.1: {}
@@ -22199,37 +22716,47 @@ snapshots:
dependencies:
xtend: 4.0.2
- posthog-js@1.313.0:
+ posthog-js@1.341.0:
dependencies:
- '@posthog/core': 1.9.0
+ '@opentelemetry/api': 1.9.0
+ '@opentelemetry/api-logs': 0.208.0
+ '@opentelemetry/exporter-logs-otlp-http': 0.208.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0)
+ '@posthog/core': 1.20.0
+ '@posthog/types': 1.341.0
core-js: 3.47.0
+ dompurify: 3.3.1
fflate: 0.4.8
- preact: 10.28.0
- web-vitals: 4.2.4
+ preact: 10.28.3
+ query-selector-shadow-dom: 1.0.1
+ web-vitals: 5.1.0
- posthog-node@5.18.1:
+ posthog-node@5.24.10:
dependencies:
- '@posthog/core': 1.9.0
+ '@posthog/core': 1.20.0
- preact@10.28.0: {}
+ preact@10.28.3: {}
prelude-ls@1.2.1: {}
- prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3):
+ prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3):
dependencies:
- prettier: 3.7.4
+ prettier: 3.8.1
typescript: 5.9.3
- prettier-plugin-tailwindcss@0.7.2(prettier-plugin-organize-imports@4.3.0(prettier@3.7.4)(typescript@5.9.3))(prettier@3.7.4):
+ prettier-plugin-tailwindcss@0.7.2(prettier-plugin-organize-imports@4.3.0(prettier@3.8.1)(typescript@5.9.3))(prettier@3.8.1):
dependencies:
- prettier: 3.7.4
+ prettier: 3.8.1
optionalDependencies:
- prettier-plugin-organize-imports: 4.3.0(prettier@3.7.4)(typescript@5.9.3)
+ prettier-plugin-organize-imports: 4.3.0(prettier@3.8.1)(typescript@5.9.3)
prettier@2.8.8: {}
prettier@3.7.4: {}
+ prettier@3.8.1: {}
+
pretty-bytes@5.6.0: {}
pretty-format@27.5.1:
@@ -22271,6 +22798,21 @@ snapshots:
proto-list@1.2.4: {}
+ protobufjs@7.5.4:
+ dependencies:
+ '@protobufjs/aspromise': 1.1.2
+ '@protobufjs/base64': 1.1.2
+ '@protobufjs/codegen': 2.0.4
+ '@protobufjs/eventemitter': 1.1.0
+ '@protobufjs/fetch': 1.1.0
+ '@protobufjs/float': 1.0.2
+ '@protobufjs/inquire': 1.1.0
+ '@protobufjs/path': 1.1.2
+ '@protobufjs/pool': 1.1.0
+ '@protobufjs/utf8': 1.1.0
+ '@types/node': 24.10.10
+ long: 5.3.2
+
proxy-addr@2.0.7:
dependencies:
forwarded: 0.2.0
@@ -22300,6 +22842,8 @@ snapshots:
quansync@0.2.11: {}
+ query-selector-shadow-dom@1.0.1: {}
+
query-string@7.1.3:
dependencies:
decode-uri-component: 0.2.2
@@ -22342,17 +22886,17 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
- react-clientside-effect@1.2.8(react@19.2.3):
+ react-clientside-effect@1.2.8(react@19.2.4):
dependencies:
'@babel/runtime': 7.28.4
- react: 19.2.3
+ react: 19.2.4
- react-day-picker@9.13.0(react@19.2.3):
+ react-day-picker@9.13.0(react@19.2.4):
dependencies:
'@date-fns/tz': 1.4.1
date-fns: 4.1.0
date-fns-jalali: 4.1.0-0
- react: 19.2.3
+ react: 19.2.4
react-devtools-core@6.1.5:
dependencies:
@@ -22367,17 +22911,22 @@ snapshots:
react: 19.1.0
scheduler: 0.26.0
- react-dom@19.2.3(react@19.2.3):
+ react-dom@19.2.4(react@19.2.3):
dependencies:
react: 19.2.3
scheduler: 0.27.0
- react-dropzone@14.3.8(react@19.2.3):
+ react-dom@19.2.4(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+ scheduler: 0.27.0
+
+ react-dropzone@14.3.8(react@19.2.4):
dependencies:
attr-accept: 2.2.5
file-selector: 2.1.2
prop-types: 15.8.1
- react: 19.2.3
+ react: 19.2.4
react-error-boundary@6.0.0(react@19.1.0):
dependencies:
@@ -22386,15 +22935,15 @@ snapshots:
react-fast-compare@3.2.2: {}
- react-focus-lock@2.13.7(@types/react@19.2.3)(react@19.2.3):
+ react-focus-lock@2.13.7(@types/react@19.2.3)(react@19.2.4):
dependencies:
'@babel/runtime': 7.28.4
focus-lock: 1.3.6
prop-types: 15.8.1
- react: 19.2.3
- react-clientside-effect: 1.2.8(react@19.2.3)
- use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.3)
- use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.4
+ react-clientside-effect: 1.2.8(react@19.2.4)
+ use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.4)
+ use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
@@ -22406,9 +22955,9 @@ snapshots:
dependencies:
react: 19.1.0
- react-hook-form@7.70.0(react@19.2.3):
+ react-hook-form@7.71.1(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
react-is@16.13.1: {}
@@ -22572,11 +23121,11 @@ snapshots:
react: 19.1.0
scheduler: 0.25.0
- react-redux@9.2.0(@types/react@19.2.3)(react@19.2.3)(redux@5.0.1):
+ react-redux@9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1):
dependencies:
'@types/use-sync-external-store': 0.0.6
- react: 19.2.3
- use-sync-external-store: 1.6.0(react@19.2.3)
+ react: 19.2.4
+ use-sync-external-store: 1.6.0(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
redux: 5.0.1
@@ -22593,10 +23142,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- react-remove-scroll-bar@2.3.8(@types/react@19.2.3)(react@19.2.3):
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.3)(react@19.2.4):
dependencies:
- react: 19.2.3
- react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.4
+ react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.4)
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.3
@@ -22612,14 +23161,14 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- react-remove-scroll@2.7.2(@types/react@19.2.3)(react@19.2.3):
+ react-remove-scroll@2.7.2(@types/react@19.2.3)(react@19.2.4):
dependencies:
- react: 19.2.3
- react-remove-scroll-bar: 2.3.8(@types/react@19.2.3)(react@19.2.3)
- react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.3)
+ react: 19.2.4
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.3)(react@19.2.4)
+ react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.4)
tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.3)
- use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.3)
+ use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.4)
+ use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.3
@@ -22637,10 +23186,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- react-style-singleton@2.2.3(@types/react@19.2.3)(react@19.2.3):
+ react-style-singleton@2.2.3(@types/react@19.2.3)(react@19.2.4):
dependencies:
get-nonce: 1.0.1
- react: 19.2.3
+ react: 19.2.4
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.3
@@ -22658,25 +23207,25 @@ snapshots:
react-is: 19.2.3
scheduler: 0.26.0
- react-timeago@8.3.0(react@19.2.3):
+ react-timeago@8.3.0(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
- react-transition-group@4.4.5(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
'@babel/runtime': 7.28.4
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
- react-universal-interface@0.6.2(react@19.2.3)(tslib@2.8.1):
+ react-universal-interface@0.6.2(react@19.2.4)(tslib@2.8.1):
dependencies:
- react: 19.2.3
+ react: 19.2.4
tslib: 2.8.1
- react-use@17.6.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ react-use@17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
'@types/js-cookie': 2.2.7
'@xobotyi/scrollbar-width': 1.9.5
@@ -22684,10 +23233,10 @@ snapshots:
fast-deep-equal: 3.1.3
fast-shallow-equal: 1.0.0
js-cookie: 2.2.1
- nano-css: 5.6.2(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- react-universal-interface: 0.6.2(react@19.2.3)(tslib@2.8.1)
+ nano-css: 5.6.2(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)
+ react-universal-interface: 0.6.2(react@19.2.4)(tslib@2.8.1)
resize-observer-polyfill: 1.5.1
screenfull: 5.2.0
set-harmonic-interval: 1.0.1
@@ -22699,6 +23248,8 @@ snapshots:
react@19.2.3: {}
+ react@19.2.4: {}
+
read-cache@1.0.0:
dependencies:
pify: 2.3.0
@@ -22722,21 +23273,21 @@ snapshots:
readdirp@4.1.2: {}
- recharts@3.6.0(@types/react@19.2.3)(react-dom@19.2.3(react@19.2.3))(react-is@19.2.3)(react@19.2.3)(redux@5.0.1):
+ recharts@3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1):
dependencies:
- '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.3)(react@19.2.3)(redux@5.0.1))(react@19.2.3)
+ '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1))(react@19.2.4)
clsx: 2.1.1
decimal.js-light: 2.5.1
es-toolkit: 1.43.0
- eventemitter3: 5.0.1
+ eventemitter3: 5.0.4
immer: 10.2.0
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
react-is: 19.2.3
- react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.3)(redux@5.0.1)
+ react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1)
reselect: 5.1.1
tiny-invariant: 1.3.3
- use-sync-external-store: 1.6.0(react@19.2.3)
+ use-sync-external-store: 1.6.0(react@19.2.4)
victory-vendor: 37.3.6
transitivePeerDependencies:
- '@types/react'
@@ -22844,7 +23395,7 @@ snapshots:
hast-util-properties-to-mdx-jsx-attributes: 1.0.1
parse-srcset: 1.0.2
unified: 11.0.5
- unist-util-visit: 5.0.0
+ unist-util-visit: 5.1.0
transitivePeerDependencies:
- supports-color
@@ -22862,7 +23413,7 @@ snapshots:
github-slugger: 2.0.0
hast-util-heading-rank: 3.0.0
hast-util-to-string: 3.0.1
- unist-util-visit: 5.0.0
+ unist-util-visit: 5.1.0
remark-frontmatter@5.0.0:
dependencies:
@@ -22972,12 +23523,6 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- resolve@1.22.8:
- dependencies:
- is-core-module: 2.16.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
resolve@1.7.1:
dependencies:
path-parse: 1.0.7
@@ -23255,14 +23800,14 @@ snapshots:
shell-quote@1.8.3: {}
- shiki@3.20.0:
+ shiki@3.22.0:
dependencies:
- '@shikijs/core': 3.20.0
- '@shikijs/engine-javascript': 3.20.0
- '@shikijs/engine-oniguruma': 3.20.0
- '@shikijs/langs': 3.20.0
- '@shikijs/themes': 3.20.0
- '@shikijs/types': 3.20.0
+ '@shikijs/core': 3.22.0
+ '@shikijs/engine-javascript': 3.22.0
+ '@shikijs/engine-oniguruma': 3.22.0
+ '@shikijs/langs': 3.22.0
+ '@shikijs/themes': 3.22.0
+ '@shikijs/types': 3.22.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@@ -23535,10 +24080,10 @@ snapshots:
dependencies:
inline-style-parser: 0.2.7
- styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.3):
+ styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.4):
dependencies:
client-only: 0.0.1
- react: 19.2.3
+ react: 19.2.4
optionalDependencies:
'@babel/core': 7.28.5
@@ -23579,11 +24124,11 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- swr@2.3.8(react@19.2.3):
+ swr@2.3.8(react@19.2.4):
dependencies:
dequal: 2.0.3
- react: 19.2.3
- use-sync-external-store: 1.6.0(react@19.2.3)
+ react: 19.2.4
+ use-sync-external-store: 1.6.0(react@19.2.4)
symbol-tree@3.2.4: {}
@@ -23650,10 +24195,10 @@ snapshots:
jest-worker: 27.5.1
schema-utils: 4.3.3
serialize-javascript: 6.0.2
- terser: 5.44.1
+ terser: 5.46.0
webpack: 5.102.1
- terser@5.44.1:
+ terser@5.46.0:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.15.0
@@ -23703,6 +24248,8 @@ snapshots:
tinyrainbow@2.0.0: {}
+ tinyrainbow@3.0.3: {}
+
tinyspy@3.0.2: {}
tinyspy@4.0.4: {}
@@ -23797,6 +24344,25 @@ snapshots:
typescript: 5.9.3
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
+ optional: true
+
+ ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3):
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.12
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 24.10.10
+ acorn: 8.15.0
+ acorn-walk: 8.3.4
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 5.9.3
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
tsconfck@3.1.6(typescript@5.9.3):
optionalDependencies:
@@ -23846,32 +24412,32 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
- turbo-darwin-64@2.7.2:
+ turbo-darwin-64@2.8.3:
optional: true
- turbo-darwin-arm64@2.7.2:
+ turbo-darwin-arm64@2.8.3:
optional: true
- turbo-linux-64@2.7.2:
+ turbo-linux-64@2.8.3:
optional: true
- turbo-linux-arm64@2.7.2:
+ turbo-linux-arm64@2.8.3:
optional: true
- turbo-windows-64@2.7.2:
+ turbo-windows-64@2.8.3:
optional: true
- turbo-windows-arm64@2.7.2:
+ turbo-windows-arm64@2.8.3:
optional: true
- turbo@2.7.2:
+ turbo@2.8.3:
optionalDependencies:
- turbo-darwin-64: 2.7.2
- turbo-darwin-arm64: 2.7.2
- turbo-linux-64: 2.7.2
- turbo-linux-arm64: 2.7.2
- turbo-windows-64: 2.7.2
- turbo-windows-arm64: 2.7.2
+ turbo-darwin-64: 2.8.3
+ turbo-darwin-arm64: 2.8.3
+ turbo-linux-64: 2.8.3
+ turbo-linux-arm64: 2.8.3
+ turbo-windows-64: 2.8.3
+ turbo-windows-arm64: 2.8.3
tw-animate-css@1.4.0: {}
@@ -23965,8 +24531,7 @@ snapshots:
undici-types@6.21.0: {}
- undici-types@7.16.0:
- optional: true
+ undici-types@7.16.0: {}
undici@5.29.0:
dependencies:
@@ -24024,7 +24589,7 @@ snapshots:
'@types/unist': 3.0.3
unist-util-is: 6.0.1
- unist-util-visit@5.0.0:
+ unist-util-visit@5.1.0:
dependencies:
'@types/unist': 3.0.3
unist-util-is: 6.0.1
@@ -24095,9 +24660,9 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- use-callback-ref@1.3.3(@types/react@19.2.3)(react@19.2.3):
+ use-callback-ref@1.3.3(@types/react@19.2.3)(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.3
@@ -24114,10 +24679,10 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.3
- use-sidecar@1.1.3(@types/react@19.2.3)(react@19.2.3):
+ use-sidecar@1.1.3(@types/react@19.2.3)(react@19.2.4):
dependencies:
detect-node-es: 1.1.0
- react: 19.2.3
+ react: 19.2.4
tslib: 2.8.1
optionalDependencies:
'@types/react': 19.2.3
@@ -24126,9 +24691,9 @@ snapshots:
dependencies:
react: 19.1.0
- use-sync-external-store@1.6.0(react@19.2.3):
+ use-sync-external-store@1.6.0(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
util-deprecate@1.0.2: {}
@@ -24146,6 +24711,8 @@ snapshots:
uuid@11.1.0: {}
+ uuid@13.0.0: {}
+
uuid@7.0.3: {}
uuid@8.3.2: {}
@@ -24217,13 +24784,13 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
- vite-node@2.1.9(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1):
+ vite-node@2.1.9(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0):
dependencies:
cac: 6.7.14
debug: 4.4.3(supports-color@10.2.2)
es-module-lexer: 1.7.0
pathe: 1.1.2
- vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1)
+ vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
transitivePeerDependencies:
- '@types/node'
- less
@@ -24235,13 +24802,13 @@ snapshots:
- supports-color
- terser
- vite-node@3.2.4(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2):
+ vite-node@3.2.4(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
cac: 6.7.14
debug: 4.4.3(supports-color@10.2.2)
es-module-lexer: 1.7.0
pathe: 2.0.3
- vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -24256,18 +24823,39 @@ snapshots:
- tsx
- yaml
- vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)):
+ vite-node@3.2.4(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.3(supports-color@10.2.2)
+ es-module-lexer: 1.7.0
+ pathe: 2.0.3
+ vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ transitivePeerDependencies:
+ - '@types/node'
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
+ vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
debug: 4.4.3(supports-color@10.2.2)
globrex: 0.1.2
tsconfck: 3.1.6(typescript@5.9.3)
optionalDependencies:
- vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
- typescript
- vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1):
+ vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0):
dependencies:
esbuild: 0.21.5
postcss: 8.5.6
@@ -24276,9 +24864,9 @@ snapshots:
'@types/node': 25.0.2
fsevents: 2.3.3
lightningcss: 1.30.2
- terser: 5.44.1
+ terser: 5.46.0
- vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2):
+ vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
esbuild: 0.27.1
fdir: 6.5.0(picomatch@4.0.3)
@@ -24291,14 +24879,48 @@ snapshots:
fsevents: 2.3.3
jiti: 2.6.1
lightningcss: 1.30.2
- terser: 5.44.1
+ terser: 5.46.0
+ tsx: 4.21.0
+ yaml: 2.8.2
+
+ vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ esbuild: 0.27.1
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.53.5
+ tinyglobby: 0.2.15
+ optionalDependencies:
+ '@types/node': 24.10.10
+ fsevents: 2.3.3
+ jiti: 2.6.1
+ lightningcss: 1.30.2
+ terser: 5.46.0
tsx: 4.21.0
yaml: 2.8.2
- vitest@2.1.9(@types/node@25.0.2)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.44.1):
+ vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ esbuild: 0.27.1
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.53.5
+ tinyglobby: 0.2.15
+ optionalDependencies:
+ '@types/node': 25.0.2
+ fsevents: 2.3.3
+ jiti: 2.6.1
+ lightningcss: 1.30.2
+ terser: 5.46.0
+ tsx: 4.21.0
+ yaml: 2.8.2
+
+ vitest@2.1.9(@types/node@25.0.2)(jsdom@25.0.1)(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0):
dependencies:
'@vitest/expect': 2.1.9
- '@vitest/mocker': 2.1.9(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1))
+ '@vitest/mocker': 2.1.9(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0))
'@vitest/pretty-format': 2.1.9
'@vitest/runner': 2.1.9
'@vitest/snapshot': 2.1.9
@@ -24314,8 +24936,8 @@ snapshots:
tinyexec: 0.3.2
tinypool: 1.1.1
tinyrainbow: 1.2.0
- vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1)
- vite-node: 2.1.9(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.44.1)
+ vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
+ vite-node: 2.1.9(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 25.0.2
@@ -24331,11 +24953,11 @@ snapshots:
- supports-color
- terser
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2):
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@types/chai': 5.2.3
'@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))
+ '@vitest/mocker': 3.2.4(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@@ -24353,8 +24975,8 @@ snapshots:
tinyglobby: 0.2.15
tinypool: 1.1.1
tinyrainbow: 2.0.0
- vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
- vite-node: 3.2.4(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite-node: 3.2.4(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12
@@ -24375,6 +24997,89 @@ snapshots:
- tsx
- yaml
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.10)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ '@types/chai': 5.2.3
+ '@vitest/expect': 3.2.4
+ '@vitest/mocker': 3.2.4(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@vitest/pretty-format': 3.2.4
+ '@vitest/runner': 3.2.4
+ '@vitest/snapshot': 3.2.4
+ '@vitest/spy': 3.2.4
+ '@vitest/utils': 3.2.4
+ chai: 5.3.3
+ debug: 4.4.3(supports-color@10.2.2)
+ expect-type: 1.3.0
+ magic-string: 0.30.21
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ std-env: 3.10.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.2
+ tinyglobby: 0.2.15
+ tinypool: 1.1.1
+ tinyrainbow: 2.0.0
+ vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite-node: 3.2.4(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/debug': 4.1.12
+ '@types/node': 24.10.10
+ '@vitest/ui': 3.2.4(vitest@3.2.4)
+ jsdom: 27.4.0(postcss@8.5.6)
+ transitivePeerDependencies:
+ - jiti
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
+ vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.0.2)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ '@vitest/expect': 4.0.18
+ '@vitest/mocker': 4.0.18(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@vitest/pretty-format': 4.0.18
+ '@vitest/runner': 4.0.18
+ '@vitest/snapshot': 4.0.18
+ '@vitest/spy': 4.0.18
+ '@vitest/utils': 4.0.18
+ es-module-lexer: 1.7.0
+ expect-type: 1.3.0
+ magic-string: 0.30.21
+ obug: 2.1.1
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ std-env: 3.10.0
+ tinybench: 2.9.0
+ tinyexec: 1.0.2
+ tinyglobby: 0.2.15
+ tinyrainbow: 3.0.3
+ vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@opentelemetry/api': 1.9.0
+ '@types/node': 25.0.2
+ jsdom: 27.4.0(postcss@8.5.6)
+ transitivePeerDependencies:
+ - jiti
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - terser
+ - tsx
+ - yaml
+
vlq@1.0.1: {}
w3c-xmlserializer@4.0.0:
@@ -24404,7 +25109,7 @@ snapshots:
web-streams-polyfill@4.0.0-beta.3: {}
- web-vitals@4.2.4: {}
+ web-vitals@5.1.0: {}
webidl-conversions@3.0.1: {}
@@ -24677,14 +25382,14 @@ snapshots:
yoctocolors-cjs@2.1.3: {}
- zod-to-json-schema@3.25.0(zod@4.3.5):
+ zod-to-json-schema@3.25.1(zod@4.3.6):
dependencies:
- zod: 4.3.5
+ zod: 4.3.6
- zod-validation-error@4.0.2(zod@4.3.5):
+ zod-validation-error@4.0.2(zod@4.3.6):
dependencies:
- zod: 4.3.5
+ zod: 4.3.6
- zod@4.3.5: {}
+ zod@4.3.6: {}
zwitch@2.0.4: {}
From e81c745f93c1f5ab7bd226a9adffba581a043914 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 08:56:21 +0100
Subject: [PATCH 06/69] Remove unused experiment props
---
clients/packages/checkout/src/components/CheckoutForm.tsx | 4 ----
1 file changed, 4 deletions(-)
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 1149bbfcf4..fbd0899032 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -95,8 +95,6 @@ interface BaseCheckoutFormProps {
disabled?: boolean
isUpdatePending?: boolean
themePreset: ThemingPresetProps
- subscribeNowButtonExperiment?: boolean
- payNowButtonExperiment?: boolean
locale?: SupportedLocale
}
@@ -111,8 +109,6 @@ const BaseCheckoutForm = ({
isUpdatePending,
children,
themePreset: themePresetProps,
- subscribeNowButtonExperiment,
- payNowButtonExperiment,
locale: localeProp,
}: React.PropsWithChildren) => {
const interval = hasProductCheckout(checkout)
From 1a76330247e5ce304c398c140efc206603062843 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 09:15:39 +0100
Subject: [PATCH 07/69] Translate `CheckoutForm` completely
---
.../checkout/src/components/CheckoutForm.tsx | 122 +++++++++---------
clients/packages/i18n/src/locales/en.ts | 79 +++++++++++-
2 files changed, 140 insertions(+), 61 deletions(-)
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index fbd0899032..1fde76e011 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -291,13 +291,17 @@ const BaseCheckoutForm = ({
return ''
}
+ const tDiscountDuration = (count: number) =>
+ interval === 'year'
+ ? t('checkout.pricing.discount.duration.years', { count })
+ : t('checkout.pricing.discount.duration.months', { count })
+
if (checkout.discount.duration === 'once') {
// For "once" with an interval count > 1, describe the actual billing period
if (intervalCount && intervalCount > 1) {
- const pluralInterval = `${interval}${intervalCount > 1 ? 's' : ''}`
- return `for the first ${intervalCount} ${pluralInterval}`
+ return tDiscountDuration(intervalCount)
}
- return `for the first ${interval}`
+ return tDiscountDuration(1)
}
const durationInMonths =
@@ -316,35 +320,34 @@ const BaseCheckoutForm = ({
if (calculatedDuration <= 1) {
// For single period with interval count > 1, describe the actual billing period
if (intervalCount && intervalCount > 1) {
- const pluralInterval = `${interval}${intervalCount > 1 ? 's' : ''}`
- return `for the first ${intervalCount} ${pluralInterval}`
+ return tDiscountDuration(intervalCount)
}
- return `for the first ${interval}`
+ return tDiscountDuration(1)
}
- return `for the first ${calculatedDuration} ${interval === 'year' ? 'years' : 'months'}`
- }, [checkout.discount, interval, intervalCount])
+ return tDiscountDuration(calculatedDuration)
+ }, [checkout.discount, interval, intervalCount, t])
const totalLabel = useMemo(() => {
if (interval) {
const formatted = formatRecurringInterval(interval, intervalCount, 'long')
- return `Every ${formatted}`
+ return t('checkout.pricing.everyInterval', { interval: formatted })
}
- return 'Total'
- }, [interval, intervalCount])
+ return t('checkout.pricing.total')
+ }, [interval, intervalCount, t])
const checkoutLabel = useMemo(() => {
if (checkout.activeTrialInterval) {
- return `Start Trial`
+ return t('checkout.cta.startTrial')
}
if (checkout.isPaymentFormRequired) {
- return interval ? 'Subscribe now' : 'Pay now'
+ return interval ? t('checkout.cta.subscribeNow') : t('checkout.cta.payNow')
}
- return 'Submit'
- }, [checkout, interval])
+ return t('checkout.cta.getFree')
+ }, [checkout, interval, t])
return (
@@ -359,11 +362,11 @@ const BaseCheckoutForm = ({
control={control}
name="customerEmail"
rules={{
- required: 'This field is required',
+ required: t('checkout.form.fieldRequired'),
}}
render={({ field }) => (
- Email
+ {t('checkout.form.email')}
(
- Cardholder name
+ {t('checkout.form.cardholderName')}
- I'm purchasing as a business
+ {t('checkout.form.purchasingAsBusiness')}
@@ -440,11 +443,11 @@ const BaseCheckoutForm = ({
control={control}
name="customerBillingName"
rules={{
- required: 'This field is required',
+ required: t('checkout.form.fieldRequired'),
}}
render={({ field }) => (
- Business name
+ {t('checkout.form.businessName')}
- Billing address
+ {t('checkout.form.billingAddress.label')}
{isDisplayedField(checkout.billingAddressFields.line1) && (
(
@@ -478,7 +481,7 @@ const BaseCheckoutForm = ({
@@ -497,7 +500,7 @@ const BaseCheckoutForm = ({
required: isRequiredField(
checkout.billingAddressFields.line2,
)
- ? 'This field is required'
+ ? t('checkout.form.fieldRequired')
: false,
}}
render={({ field }) => (
@@ -505,7 +508,7 @@ const BaseCheckoutForm = ({
@@ -531,7 +534,7 @@ const BaseCheckoutForm = ({
required: isRequiredField(
checkout.billingAddressFields.postalCode,
)
- ? 'This field is required'
+ ? t('checkout.form.fieldRequired')
: false,
}}
render={({ field }) => (
@@ -539,7 +542,7 @@ const BaseCheckoutForm = ({
@@ -560,7 +563,7 @@ const BaseCheckoutForm = ({
required: isRequiredField(
checkout.billingAddressFields.city,
)
- ? 'This field is required'
+ ? t('checkout.form.fieldRequired')
: false,
}}
render={({ field }) => (
@@ -568,7 +571,7 @@ const BaseCheckoutForm = ({
@@ -589,7 +592,7 @@ const BaseCheckoutForm = ({
required: isRequiredField(
checkout.billingAddressFields.state,
)
- ? 'This field is required'
+ ? t('checkout.form.fieldRequired')
: false,
}}
render={({ field }) => (
@@ -620,7 +623,7 @@ const BaseCheckoutForm = ({
required: isRequiredField(
checkout.billingAddressFields.country,
)
- ? 'This field is required'
+ ? t('checkout.form.fieldRequired')
: false,
}}
render={({ field }) => (
@@ -653,9 +656,9 @@ const BaseCheckoutForm = ({
render={({ field }) => (
- Tax ID
+ {t('checkout.form.taxId')}
- Optional
+ {t('checkout.form.optional')}
@@ -675,7 +678,7 @@ const BaseCheckoutForm = ({
size="sm"
onClick={addTaxID}
>
- Apply
+ {t('checkout.form.apply')}
)}
{validTaxID && (
@@ -705,9 +708,9 @@ const BaseCheckoutForm = ({
render={({ field }) => (
- Discount code
+ {t('checkout.form.discountCode')}
- Optional
+ {t('checkout.form.optional')}
@@ -733,7 +736,7 @@ const BaseCheckoutForm = ({
size="sm"
onClick={addDiscountCode}
>
- Apply
+ {t('checkout.form.apply')}
)}
{checkoutDiscounted && (
@@ -763,7 +766,7 @@ const BaseCheckoutForm = ({
name={`customFieldData.${customField.slug}`}
rules={{
required: required
- ? 'This field is required'
+ ? t('checkout.form.fieldRequired')
: undefined,
}}
render={({ field }) => (
@@ -782,7 +785,7 @@ const BaseCheckoutForm = ({
{checkout.currency ? (
<>
-
+
-
+
{formatCurrency('standard')(
checkout.netAmount,
checkout.currency,
@@ -811,7 +814,7 @@ const BaseCheckoutForm = ({
>
)}
-
+
{checkout.taxAmount !== null
? formatCurrency('standard')(
checkout.taxAmount,
@@ -837,7 +840,7 @@ const BaseCheckoutForm = ({
{meteredPrices.length > 0 && (
-
+
)}
{meteredPrices.map((meteredPrice) => (
) : (
- Free
+ {t('checkout.pricing.free')}
)}
{(checkout.trialEnd ||
(checkout.activeTrialInterval &&
@@ -859,14 +862,22 @@ const BaseCheckoutForm = ({
checkout.activeTrialIntervalCount && (
1 ? 's' : ''} trial`}
+ title={
+ checkout.activeTrialInterval === 'year'
+ ? t('checkout.trial.duration.years', { count: checkout.activeTrialIntervalCount })
+ : checkout.activeTrialInterval === 'month'
+ ? t('checkout.trial.duration.months', { count: checkout.activeTrialIntervalCount })
+ : checkout.activeTrialInterval === 'week'
+ ? t('checkout.trial.duration.weeks', { count: checkout.activeTrialIntervalCount })
+ : t('checkout.trial.duration.days', { count: checkout.activeTrialIntervalCount })
+ }
>
- Free
+ {t('checkout.pricing.free')}
)}
{checkout.trialEnd && (
- Trial ends{' '}
+ {t('checkout.trial.ends')}{' '}
- Payments are currently unavailable
+ {t('checkout.cta.paymentsUnavailable')}
)}
{errors.root && (
@@ -907,8 +918,7 @@ const BaseCheckoutForm = ({
- This order is processed by our online reseller & Merchant of Record,
- Polar, who also handles order-related inquiries and returns.
+ {t('checkout.footer.merchantOfRecord')}
- {t('checkout.poweredBy')}
- {t('playground.interpolation', { test: 123 })}
- {t('playground.plurals', { count: 4 })}
-
- {t('playground.pluralsWithInterpolation', {
- count: 4,
- query: 'test',
- })}
-
+ {t('checkout.footer.poweredBy')}
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index dd722f77d9..69100064a7 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -1,6 +1,83 @@
export const en = {
checkout: {
- poweredBy: 'Powered by',
+ footer: {
+ poweredBy: 'Powered by',
+ merchantOfRecord:
+ 'This order is processed by our online reseller & Merchant of Record, Polar, who also handles order-related inquiries and returns.',
+ },
+ form: {
+ email: 'Email',
+ cardholderName: 'Cardholder name',
+ purchasingAsBusiness: "I'm purchasing as a business",
+ businessName: 'Business name',
+ billingAddress: {
+ label: 'Billing address',
+ line1: 'Line 1',
+ line2: 'Line 2',
+ postalCode: 'Postal code',
+ city: 'City',
+ },
+ taxId: 'Tax ID',
+ discountCode: 'Discount code',
+ optional: 'Optional',
+ apply: 'Apply',
+ fieldRequired: 'This field is required',
+ },
+ pricing: {
+ subtotal: 'Subtotal',
+ taxableAmount: 'Taxable amount',
+ taxes: 'Taxes',
+ free: 'Free',
+ total: 'Total',
+ everyInterval: 'Every {interval}',
+ additionalMeteredUsage: 'Additional metered usage',
+ discount: {
+ duration: {
+ months: {
+ _mode: 'plural',
+ '=1': 'for the first month',
+ other: 'for the first # months',
+ },
+ years: {
+ _mode: 'plural',
+ '=1': 'for the first year',
+ other: 'for the first # years',
+ },
+ },
+ },
+ },
+ trial: {
+ ends: 'Trial ends',
+ duration: {
+ days: {
+ _mode: 'plural',
+ '=1': '# day trial',
+ other: '# days trial',
+ },
+ weeks: {
+ _mode: 'plural',
+ '=1': '# week trial',
+ other: '# weeks trial',
+ },
+ months: {
+ _mode: 'plural',
+ '=1': '# month trial',
+ other: '# months trial',
+ },
+ years: {
+ _mode: 'plural',
+ '=1': '# year trial',
+ other: '# years trial',
+ },
+ },
+ },
+ cta: {
+ startTrial: 'Start Trial',
+ subscribeNow: 'Subscribe now',
+ payNow: 'Pay now',
+ getFree: 'Submit',
+ paymentsUnavailable: 'Payments are currently unavailable',
+ },
},
playground: {
interpolation: 'This is a {test}',
From 4363d94f17d00552bc667c01efd3e2f1b5c0e0cb Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 09:47:13 +0100
Subject: [PATCH 08/69] WIP derived themes
---
.../web/src/components/Checkout/Checkout.tsx | 1 +
clients/packages/i18n/src/index.ts | 44 +++++++--
clients/packages/i18n/src/locales/nl.ts | 97 +++++++++++++++++++
3 files changed, 136 insertions(+), 6 deletions(-)
create mode 100644 clients/packages/i18n/src/locales/nl.ts
diff --git a/clients/apps/web/src/components/Checkout/Checkout.tsx b/clients/apps/web/src/components/Checkout/Checkout.tsx
index 7e03da6d11..ed8df9616f 100644
--- a/clients/apps/web/src/components/Checkout/Checkout.tsx
+++ b/clients/apps/web/src/components/Checkout/Checkout.tsx
@@ -233,6 +233,7 @@ const Checkout = ({
themePreset={themePreset}
disabled={shouldBlockCheckout}
isUpdatePending={isUpdatePending}
+ locale={locale}
/>
)
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index b165ec9272..39a9b0b7af 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -1,6 +1,6 @@
import { useCallback } from 'react'
-export const SUPPORTED_LOCALES = ['en'] as const
+export const SUPPORTED_LOCALES = ['en', 'nl'] as const
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
export const DEFAULT_LOCALE = 'en'
@@ -9,6 +9,7 @@ export function isSupportedLocale(locale: string): locale is SupportedLocale {
}
import { en } from './locales/en'
+import { nl } from './locales/nl'
export type Translations = typeof en
@@ -44,6 +45,39 @@ type ExtractPlaceholders =
? Key | ExtractPlaceholders
: never
+type UnionToIntersection = (
+ U extends unknown ? (k: U) => void : never
+) extends (k: infer I) => void
+ ? I
+ : never
+
+type StringShape =
+ ExtractPlaceholders extends never
+ ? string
+ : UnionToIntersection<
+ ExtractPlaceholders extends infer P extends string
+ ? `${string}{${P}}${string}`
+ : never
+ >
+
+type PluralShape = {
+ [K in keyof T]: K extends '_mode'
+ ? T[K]
+ : T[K] extends string
+ ? StringShape
+ : T[K]
+}
+
+type LocaleShape = {
+ [K in keyof T]: T[K] extends { _mode: string }
+ ? PluralShape
+ : T[K] extends string
+ ? StringShape
+ : T[K] extends object
+ ? LocaleShape
+ : T[K]
+}
+
// Get all required interpolation keys for a translation key
// Plurals always require 'count' + any {placeholders} in the templates
type InterpolationKeys =
@@ -69,14 +103,15 @@ type TranslateFn = (
: [interpolations: InterpolationsRecord>]
) => string
-const translations: Record = {
+const translations: Record> = {
en,
+ nl,
}
export function getTranslations(
locale: SupportedLocale = DEFAULT_LOCALE,
): Translations {
- return translations[locale] ?? translations[DEFAULT_LOCALE]
+ return (translations[locale] ?? translations[DEFAULT_LOCALE]) as Translations
}
export const useTranslations = (locale: SupportedLocale): TranslateFn => {
@@ -133,6 +168,3 @@ export const useTranslations = (locale: SupportedLocale): TranslateFn => {
)
}
-type _DebugValue = ValueAtPath
-type _DebugExtract = ExtractPlaceholders<'This is a {test}'>
-type _DebugDirect = Translations['playground']['interpolation']
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
new file mode 100644
index 0000000000..8cebf7689a
--- /dev/null
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -0,0 +1,97 @@
+export const nl = {
+ checkout: {
+ footer: {
+ poweredBy: 'Mogelijk gemaakt door',
+ merchantOfRecord:
+ 'Deze bestelling wordt verwerkt door onze online reseller & Merchant of Record, Polar, die ook vragen en retourzendingen met betrekking tot bestellingen afhandelt.',
+ },
+ form: {
+ email: 'E-mail',
+ cardholderName: 'Naam kaarthouder',
+ purchasingAsBusiness: 'Ik koop als bedrijf',
+ businessName: 'Bedrijfsnaam',
+ billingAddress: {
+ label: 'Factuuradres',
+ line1: 'Regel 1',
+ line2: 'Regel 2',
+ postalCode: 'Postcode',
+ city: 'Stad',
+ },
+ taxId: 'Btw-nummer',
+ discountCode: 'Kortingscode',
+ optional: 'Optioneel',
+ apply: 'Toepassen',
+ fieldRequired: 'Dit veld is verplicht',
+ },
+ pricing: {
+ subtotal: 'Subtotaal',
+ taxableAmount: 'Belastbaar bedrag',
+ taxes: 'Belasting',
+ free: 'Gratis',
+ total: 'Totaal',
+ everyInterval: 'Elke {interval}',
+ additionalMeteredUsage: 'Extra verbruik op basis van gebruik',
+ discount: {
+ duration: {
+ months: {
+ _mode: 'plural',
+ '=1': 'voor de eerste maand',
+ other: 'voor de eerste # maanden',
+ },
+ years: {
+ _mode: 'plural',
+ '=1': 'voor het eerste jaar',
+ other: 'voor de eerste # jaar',
+ },
+ },
+ },
+ },
+ trial: {
+ ends: 'Proefperiode eindigt',
+ duration: {
+ days: {
+ _mode: 'plural',
+ '=1': '# dag proefperiode',
+ other: '# dagen proefperiode',
+ },
+ weeks: {
+ _mode: 'plural',
+ '=1': '# week proefperiode',
+ other: '# weken proefperiode',
+ },
+ months: {
+ _mode: 'plural',
+ '=1': '# maand proefperiode',
+ other: '# maanden proefperiode',
+ },
+ years: {
+ _mode: 'plural',
+ '=1': '# jaar proefperiode',
+ other: '# jaar proefperiode',
+ },
+ },
+ },
+ cta: {
+ startTrial: 'Proefperiode starten',
+ subscribeNow: 'Nu abonneren',
+ payNow: 'Nu betalen',
+ getFree: 'Verzenden',
+ paymentsUnavailable: 'Betalingen zijn momenteel niet beschikbaar',
+ },
+ },
+ playground: {
+ interpolation: 'Dit is een {test}',
+ plurals: {
+ _mode: 'plural',
+ '=0': 'Geen berichten',
+ '=1': 'Eén bericht',
+ other: '# berichten',
+ },
+ pluralsWithInterpolation: {
+ _mode: 'plural',
+ '=0': 'Geen resultaten gevonden voor {query}',
+ '=1': 'Eén resultaat gevonden voor {query}',
+ other: '# resultaten gevonden voor {query}',
+ },
+ },
+} as const
From b206f48889f1b4e8966d9f2c4e10ae04b6c6f25c Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 10:58:32 +0100
Subject: [PATCH 09/69] Properly pass locale
---
clients/apps/web/src/components/Checkout/Checkout.tsx | 1 +
clients/packages/checkout/src/components/CheckoutForm.tsx | 4 +++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/clients/apps/web/src/components/Checkout/Checkout.tsx b/clients/apps/web/src/components/Checkout/Checkout.tsx
index ed8df9616f..f9b212a57c 100644
--- a/clients/apps/web/src/components/Checkout/Checkout.tsx
+++ b/clients/apps/web/src/components/Checkout/Checkout.tsx
@@ -299,6 +299,7 @@ const Checkout = ({
themePreset={themePreset}
disabled={shouldBlockCheckout}
isUpdatePending={isUpdatePending}
+ locale={locale}
/>
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 1fde76e011..8684c64a2b 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -948,6 +948,7 @@ interface CheckoutFormProps {
isUpdatePending?: boolean
theme?: 'light' | 'dark'
themePreset: ThemingPresetProps
+ locale?: SupportedLocale
}
const StripeCheckoutForm = (props: CheckoutFormProps) => {
@@ -960,6 +961,7 @@ const StripeCheckoutForm = (props: CheckoutFormProps) => {
disabled,
isUpdatePending,
themePreset: themePresetProps,
+ locale,
} = props
const {
paymentProcessorMetadata: { publishable_key },
@@ -1004,7 +1006,7 @@ const StripeCheckoutForm = (props: CheckoutFormProps) => {
stripe={stripePromise}
options={{
...elementsOptions,
- locale: 'en',
+ locale,
customerSessionClientSecret: (
checkout.paymentProcessorMetadata as {
customer_session_client_secret?: string
From 23483f291935e03e5ec0ea42829b891261f890cb Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 10:59:03 +0100
Subject: [PATCH 10/69] Formatting
---
.../checkout/src/components/CheckoutForm.tsx | 49 ++++++++++++++-----
1 file changed, 37 insertions(+), 12 deletions(-)
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 8684c64a2b..1e1abdab19 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -343,7 +343,9 @@ const BaseCheckoutForm = ({
}
if (checkout.isPaymentFormRequired) {
- return interval ? t('checkout.cta.subscribeNow') : t('checkout.cta.payNow')
+ return interval
+ ? t('checkout.cta.subscribeNow')
+ : t('checkout.cta.payNow')
}
return t('checkout.cta.getFree')
@@ -447,7 +449,9 @@ const BaseCheckoutForm = ({
}}
render={({ field }) => (
- {t('checkout.form.businessName')}
+
+ {t('checkout.form.businessName')}
+
- {t('checkout.form.billingAddress.label')}
+
+ {t('checkout.form.billingAddress.label')}
+
{isDisplayedField(checkout.billingAddressFields.line1) && (
@@ -508,7 +516,9 @@ const BaseCheckoutForm = ({
@@ -542,7 +552,9 @@ const BaseCheckoutForm = ({
@@ -571,7 +583,9 @@ const BaseCheckoutForm = ({
@@ -840,7 +854,10 @@ const BaseCheckoutForm = ({
{meteredPrices.length > 0 && (
-
+
)}
{meteredPrices.map((meteredPrice) => (
{t('checkout.pricing.free')}
From f9ff708770985b39451fd9e51f459e6133f89526 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 11:58:04 +0100
Subject: [PATCH 11/69] Translate intervals correctly
---
.../web/src/components/Checkout/Checkout.tsx | 3 +
.../src/components/Checkout/CheckoutCard.tsx | 4 ++
.../checkout/src/components/AmountLabel.tsx | 7 +-
.../checkout/src/components/CheckoutForm.tsx | 4 +-
.../src/components/CheckoutPricing.tsx | 12 +++-
.../components/CheckoutProductSwitcher.tsx | 8 ++-
.../src/components/ProductPriceLabel.tsx | 4 ++
.../packages/checkout/src/utils/product.ts | 69 +++++++++----------
clients/packages/i18n/src/locales/en.ts | 21 ++++++
clients/packages/i18n/src/locales/nl.ts | 21 ++++++
10 files changed, 107 insertions(+), 46 deletions(-)
diff --git a/clients/apps/web/src/components/Checkout/Checkout.tsx b/clients/apps/web/src/components/Checkout/Checkout.tsx
index f9b212a57c..acaa393e34 100644
--- a/clients/apps/web/src/components/Checkout/Checkout.tsx
+++ b/clients/apps/web/src/components/Checkout/Checkout.tsx
@@ -211,6 +211,7 @@ const Checkout = ({
) => Promise
}
themePreset={themePreset}
+ locale={locale}
/>
{checkout.productPrice.amountType === 'custom' && (
Promise
}
themePreset={themePreset}
+ locale={locale}
/>
{checkout.productPrice.amountType === 'custom' && (
Promise
}
+ locale={locale}
/>
>
)}
diff --git a/clients/apps/web/src/components/Checkout/CheckoutCard.tsx b/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
index b635533d84..349d3f5dd5 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
@@ -6,18 +6,21 @@ import {
CheckoutSeatSelector,
} from '@polar-sh/checkout/components'
import type { ProductCheckoutPublic } from '@polar-sh/checkout/guards'
+import type { SupportedLocale } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
export interface CheckoutCardProps {
checkout: ProductCheckoutPublic
update?: (body: CheckoutUpdatePublic) => Promise
disabled?: boolean
+ locale?: SupportedLocale
}
export const CheckoutCard = ({
checkout,
update,
disabled,
+ locale,
}: CheckoutCardProps) => {
const { product, productPrice } = checkout
const isSeatBased = productPrice && productPrice.amountType === 'seat_based'
@@ -31,6 +34,7 @@ export const CheckoutCard = ({
checkout={checkout}
update={update}
disabled={disabled}
+ locale={locale}
/>
)}
diff --git a/clients/packages/checkout/src/components/AmountLabel.tsx b/clients/packages/checkout/src/components/AmountLabel.tsx
index f01ff1236c..b35192779f 100644
--- a/clients/packages/checkout/src/components/AmountLabel.tsx
+++ b/clients/packages/checkout/src/components/AmountLabel.tsx
@@ -1,4 +1,5 @@
import { formatCurrency } from '@polar-sh/currency'
+import type { SupportedLocale } from '@polar-sh/i18n'
import type { SubscriptionRecurringInterval } from '@polar-sh/sdk/models/components/subscriptionrecurringinterval'
import { useMemo } from 'react'
import { formatRecurringInterval } from '../utils/product'
@@ -9,6 +10,7 @@ interface AmountLabelProps {
mode: 'compact' | 'standard'
interval?: SubscriptionRecurringInterval | null
intervalCount?: number | null
+ locale?: SupportedLocale
}
const AmountLabel: React.FC = ({
@@ -17,14 +19,15 @@ const AmountLabel: React.FC = ({
interval,
intervalCount,
mode,
+ locale,
}) => {
const intervalDisplay = useMemo(() => {
if (!interval) {
return ''
}
- const formatted = formatRecurringInterval(interval, intervalCount, 'short')
+ const formatted = formatRecurringInterval(interval, intervalCount, 'short', locale)
return formatted ? ` / ${formatted}` : ''
- }, [interval, intervalCount])
+ }, [interval, intervalCount, locale])
return (
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 1e1abdab19..6795247976 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -330,7 +330,7 @@ const BaseCheckoutForm = ({
const totalLabel = useMemo(() => {
if (interval) {
- const formatted = formatRecurringInterval(interval, intervalCount, 'long')
+ const formatted = formatRecurringInterval(interval, intervalCount, 'long', locale)
return t('checkout.pricing.everyInterval', { interval: formatted })
}
@@ -806,6 +806,7 @@ const BaseCheckoutForm = ({
interval={interval}
intervalCount={intervalCount}
mode="standard"
+ locale={locale}
/>
@@ -845,6 +846,7 @@ const BaseCheckoutForm = ({
interval={interval}
intervalCount={intervalCount}
mode="standard"
+ locale={locale}
/>
{formattedDiscountDuration && (
diff --git a/clients/packages/checkout/src/components/CheckoutPricing.tsx b/clients/packages/checkout/src/components/CheckoutPricing.tsx
index c47816612a..6d38d23a19 100644
--- a/clients/packages/checkout/src/components/CheckoutPricing.tsx
+++ b/clients/packages/checkout/src/components/CheckoutPricing.tsx
@@ -1,6 +1,7 @@
'use client'
import { formatCurrency } from '@polar-sh/currency'
+import type { SupportedLocale } from '@polar-sh/i18n'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { ProductCheckoutPublic } from '../guards'
@@ -13,13 +14,15 @@ import ProductPriceLabel from './ProductPriceLabel'
const CheckoutProductAmountLabel = ({
checkout,
layout = 'default',
+ locale,
}: {
checkout: ProductCheckoutPublic
layout?: 'default' | 'stacked'
+ locale?: SupportedLocale
}) => {
const { product, productPrice, discount } = checkout
if (!discount || productPrice.amountType !== 'fixed') {
- return
+ return
}
return (
@@ -40,10 +43,11 @@ const CheckoutProductAmountLabel = ({
}
intervalCount={product.recurringIntervalCount}
mode="compact"
+ locale={locale}
/>
@@ -62,6 +66,7 @@ interface CheckoutPricingProps {
update?: (data: CheckoutUpdatePublic) => Promise
disabled?: boolean
layout?: 'default' | 'stacked'
+ locale?: SupportedLocale
}
const CheckoutPricing = ({
@@ -69,6 +74,7 @@ const CheckoutPricing = ({
update,
disabled,
layout = 'default',
+ locale,
}: CheckoutPricingProps) => {
const { product, productPrice, amount } = checkout
@@ -77,7 +83,7 @@ const CheckoutPricing = ({
{productPrice.amountType !== 'custom' ? (
-
+
) : (
formatCurrency('compact')(amount, productPrice.priceCurrency)
)}
diff --git a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
index d2bddec8c0..f0269fcf1e 100644
--- a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
+++ b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
@@ -1,5 +1,6 @@
'use client'
+import type { SupportedLocale } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice.js'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice.js'
@@ -22,12 +23,14 @@ interface CheckoutProductSwitcherProps {
update?: (data: CheckoutUpdatePublic) => Promise
disabled?: boolean
themePreset: ThemingPresetProps
+ locale?: SupportedLocale
}
const CheckoutProductSwitcher = ({
checkout,
update,
themePreset,
+ locale,
}: CheckoutProductSwitcherProps) => {
const {
product: selectedProduct,
@@ -71,7 +74,7 @@ const CheckoutProductSwitcher = ({
const intervalCount = product.recurringIntervalCount
if (interval) {
- const recurringLabel = formatRecurringFrequency(interval, intervalCount)
+ const recurringLabel = formatRecurringFrequency(interval, intervalCount, locale)
return `Billed ${recurringLabel}`
}
@@ -105,7 +108,7 @@ const CheckoutProductSwitcher = ({
/>
@@ -137,6 +140,7 @@ const CheckoutProductSwitcher = ({
diff --git a/clients/packages/checkout/src/components/ProductPriceLabel.tsx b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
index 94f3909060..2eacf05a5e 100644
--- a/clients/packages/checkout/src/components/ProductPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
@@ -1,3 +1,4 @@
+import type { SupportedLocale } from '@polar-sh/i18n'
import type { CheckoutProduct } from '@polar-sh/sdk/models/components/checkoutproduct'
import type { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
@@ -8,11 +9,13 @@ import MeteredPriceLabel from './MeteredPriceLabel'
interface ProductPriceLabelProps {
product: CheckoutProduct
price: ProductPrice | LegacyRecurringProductPrice
+ locale?: SupportedLocale
}
const ProductPriceLabel: React.FC
= ({
product,
price,
+ locale,
}) => {
if (price.amountType === 'fixed') {
return (
@@ -26,6 +29,7 @@ const ProductPriceLabel: React.FC = ({
}
intervalCount={product.recurringIntervalCount}
mode="compact"
+ locale={locale}
/>
)
} else if (price.amountType === 'custom') {
diff --git a/clients/packages/checkout/src/utils/product.ts b/clients/packages/checkout/src/utils/product.ts
index 1506261c1d..cf4a609a64 100644
--- a/clients/packages/checkout/src/utils/product.ts
+++ b/clients/packages/checkout/src/utils/product.ts
@@ -1,23 +1,31 @@
+import {
+ getTranslations,
+ type SupportedLocale,
+} from '@polar-sh/i18n'
import type { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
import type { ProductPriceMeteredUnit } from '@polar-sh/sdk/models/components/productpricemeteredunit'
import type { SubscriptionRecurringInterval } from '@polar-sh/sdk/models/components/subscriptionrecurringinterval'
-const ordinalRules = new Intl.PluralRules('en', { type: 'ordinal' })
-
-const suffixes = {
+const enSuffixes: Record = {
zero: '',
one: 'st',
two: 'nd',
few: 'rd',
many: '',
other: 'th',
-} as const
+}
+
+const ordinal = (number: number, locale: SupportedLocale = 'en'): string => {
+ const rules = new Intl.PluralRules(locale, { type: 'ordinal' })
+ const category = rules.select(number)
+
+ if (locale === 'nl') {
+ return `${number}e`
+ }
-const ordinal = (number: number): string => {
- const category = ordinalRules.select(number)
- const suffix = suffixes[category]
- return number + suffix
+ const suffix = enSuffixes[category] ?? ''
+ return `${number}${suffix}`
}
/**
@@ -25,70 +33,55 @@ const ordinal = (number: number): string => {
* @param interval - The recurring interval (day, week, month, year)
* @param intervalCount - The number of intervals (e.g., 2 for "2nd month")
* @param format - Display format: 'short' (mo, yr) or 'long' (month, year)
+ * @param locale - The locale to use for translations
* @returns Formatted string like "month", "2nd month", "mo", "3rd wk"
*/
export const formatRecurringInterval = (
interval: SubscriptionRecurringInterval | null | undefined,
intervalCount?: number | null,
format: 'short' | 'long' = 'long',
+ locale: SupportedLocale = 'en',
): string => {
if (!interval) {
return ''
}
+ const t = getTranslations(locale)
const count = intervalCount && intervalCount > 1 ? intervalCount : null
- const prefix = count ? `${ordinal(count)} ` : ''
-
- if (format === 'short') {
- switch (interval) {
- case 'day':
- return `${prefix}dy`
- case 'week':
- return `${prefix}wk`
- case 'month':
- return `${prefix}mo`
- case 'year':
- return `${prefix}yr`
- default:
- return ''
- }
- }
+ const prefix = count ? `${ordinal(count, locale)} ` : ''
+ const label = format === 'short'
+ ? t.intervals.short[interval]
+ : t.intervals.long[interval]
- return `${prefix}${interval}`
+ return `${prefix}${label}`
}
/**
* Format a recurring frequency for display in billing descriptions
* @param interval - The recurring interval (day, week, month, year)
* @param intervalCount - The number of intervals (e.g., 2 for "every 2nd month")
+ * @param locale - The locale to use for translations
* @returns Formatted string like "monthly", "every 2nd month", "yearly", "every 3rd week"
*/
export const formatRecurringFrequency = (
interval: SubscriptionRecurringInterval | null | undefined,
intervalCount?: number | null,
+ locale: SupportedLocale = 'en',
): string => {
if (!interval) {
return ''
}
+ const t = getTranslations(locale)
const count = intervalCount && intervalCount > 1 ? intervalCount : null
if (count) {
- return `every ${ordinal(count)} ${interval}`
+ return t.intervals.frequency.everyOrdinalInterval
+ .replace('{ordinal}', ordinal(count, locale))
+ .replace('{interval}', t.intervals.long[interval])
}
- switch (interval) {
- case 'day':
- return 'daily'
- case 'week':
- return 'weekly'
- case 'month':
- return 'monthly'
- case 'year':
- return 'yearly'
- default:
- return interval
- }
+ return t.intervals.frequency[interval]
}
export const isLegacyRecurringPrice = (
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index 69100064a7..d1fa73580b 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -79,6 +79,27 @@ export const en = {
paymentsUnavailable: 'Payments are currently unavailable',
},
},
+ intervals: {
+ short: {
+ day: 'dy',
+ week: 'wk',
+ month: 'mo',
+ year: 'yr',
+ },
+ long: {
+ day: 'day',
+ week: 'week',
+ month: 'month',
+ year: 'year',
+ },
+ frequency: {
+ day: 'daily',
+ week: 'weekly',
+ month: 'monthly',
+ year: 'yearly',
+ everyOrdinalInterval: 'every {ordinal} {interval}',
+ },
+ },
playground: {
interpolation: 'This is a {test}',
plurals: {
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index 8cebf7689a..a08c2e2a5e 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -79,6 +79,27 @@ export const nl = {
paymentsUnavailable: 'Betalingen zijn momenteel niet beschikbaar',
},
},
+ intervals: {
+ short: {
+ day: 'dag',
+ week: 'wk',
+ month: 'mnd',
+ year: 'jr',
+ },
+ long: {
+ day: 'dag',
+ week: 'week',
+ month: 'maand',
+ year: 'jaar',
+ },
+ frequency: {
+ day: 'dagelijks',
+ week: 'wekelijks',
+ month: 'maandelijks',
+ year: 'jaarlijks',
+ everyOrdinalInterval: 'elke {ordinal} {interval}',
+ },
+ },
playground: {
interpolation: 'Dit is een {test}',
plurals: {
From d88430ce703caf57c61a189d1bcc7570ba10ceb5 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 13:12:21 +0100
Subject: [PATCH 12/69] Translate State / Province / Country placeholders
---
.../packages/checkout/src/components/CheckoutForm.tsx | 10 +++++++++-
clients/packages/i18n/src/locales/en.ts | 4 ++++
clients/packages/i18n/src/locales/nl.ts | 4 ++++
.../ui/src/components/atoms/CountryStatePicker.tsx | 4 +++-
4 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 6795247976..6322e0cf53 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -617,8 +617,13 @@ const BaseCheckoutForm = ({
value={field.value || ''}
onChange={field.onChange}
placeholder={
- country === 'US' ? 'State' : 'Province'
+ country === 'US'
+ ? t('checkout.form.billingAddress.state')
+ : t('checkout.form.billingAddress.province')
}
+ fallbackPlaceholder={t(
+ 'checkout.form.billingAddress.stateProvince',
+ )}
/>
>
@@ -649,6 +654,9 @@ const BaseCheckoutForm = ({
autoComplete="billing country"
value={field.value || undefined}
onChange={field.onChange}
+ placeholder={t(
+ 'checkout.form.billingAddress.country',
+ )}
/>
>
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index d1fa73580b..686dfe53c2 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -16,6 +16,10 @@ export const en = {
line2: 'Line 2',
postalCode: 'Postal code',
city: 'City',
+ country: 'Country',
+ state: 'State',
+ province: 'Province',
+ stateProvince: 'State / Province',
},
taxId: 'Tax ID',
discountCode: 'Discount code',
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index a08c2e2a5e..8bb3d030a3 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -16,6 +16,10 @@ export const nl = {
line2: 'Regel 2',
postalCode: 'Postcode',
city: 'Stad',
+ country: 'Land',
+ state: 'Staat',
+ province: 'Provincie',
+ stateProvince: 'Staat / Provincie',
},
taxId: 'Btw-nummer',
discountCode: 'Kortingscode',
diff --git a/clients/packages/ui/src/components/atoms/CountryStatePicker.tsx b/clients/packages/ui/src/components/atoms/CountryStatePicker.tsx
index f797251403..93d88df7a1 100644
--- a/clients/packages/ui/src/components/atoms/CountryStatePicker.tsx
+++ b/clients/packages/ui/src/components/atoms/CountryStatePicker.tsx
@@ -86,6 +86,7 @@ const CountryStatePicker = ({
contentClassName,
disabled,
placeholder = 'State',
+ fallbackPlaceholder = 'State / Province',
}: {
className?: string
contentClassName?: string
@@ -96,6 +97,7 @@ const CountryStatePicker = ({
autoComplete?: string
disabled?: boolean
placeholder?: string
+ fallbackPlaceholder?: string
}) => {
if (country === 'US' || country === 'CA') {
const states = country === 'US' ? US_STATES : CA_PROVINCES
@@ -135,7 +137,7 @@ const CountryStatePicker = ({
return (
onChange(e.target.value)}
disabled={disabled}
From 98d8786b62c66a47a4609328e695012301f3235a Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 16:32:46 +0100
Subject: [PATCH 13/69] Update some missing translations
---
.../web/src/components/Checkout/Checkout.tsx | 2 ++
.../src/components/Checkout/CheckoutCard.tsx | 9 +++---
.../src/components/Products/BenefitList.tsx | 10 ++++--
.../checkout/src/components/CheckoutForm.tsx | 12 +++++--
.../src/components/CheckoutPWYWForm.tsx | 18 ++++++++---
.../src/components/CheckoutPricing.tsx | 2 +-
.../components/CheckoutProductSwitcher.tsx | 11 ++++---
.../src/components/CheckoutSeatSelector.tsx | 5 ++-
.../src/components/MeteredPriceLabel.tsx | 11 +++++--
.../src/components/MeteredPricesDisplay.tsx | 9 ++++--
.../src/components/ProductPriceLabel.tsx | 10 +++---
.../packages/checkout/src/utils/product.ts | 3 ++
clients/packages/i18n/src/locales/en.ts | 30 ++++++++++++++++-
clients/packages/i18n/src/locales/nl.ts | 32 +++++++++++++++++--
14 files changed, 133 insertions(+), 31 deletions(-)
diff --git a/clients/apps/web/src/components/Checkout/Checkout.tsx b/clients/apps/web/src/components/Checkout/Checkout.tsx
index acaa393e34..91a307dfb1 100644
--- a/clients/apps/web/src/components/Checkout/Checkout.tsx
+++ b/clients/apps/web/src/components/Checkout/Checkout.tsx
@@ -219,6 +219,7 @@ const Checkout = ({
update={update}
productPrice={checkout.productPrice as ProductPriceCustom}
themePreset={themePreset}
+ locale={locale}
/>
)}
>
@@ -275,6 +276,7 @@ const Checkout = ({
update={update}
productPrice={checkout.productPrice as ProductPriceCustom}
themePreset={themePreset}
+ locale={locale}
/>
)}
{
+ const t = useTranslations(locale ?? 'en')
const { product, productPrice } = checkout
const isSeatBased = productPrice && productPrice.amountType === 'seat_based'
return (
{isSeatBased && update ? (
-
+
) : (
0 ? (
-
Included
+
{t('checkout.card.included')}
-
+
) : (
diff --git a/clients/apps/web/src/components/Products/BenefitList.tsx b/clients/apps/web/src/components/Products/BenefitList.tsx
index 488c8e8c34..02d10a0034 100644
--- a/clients/apps/web/src/components/Products/BenefitList.tsx
+++ b/clients/apps/web/src/components/Products/BenefitList.tsx
@@ -1,4 +1,5 @@
import { schemas } from '@polar-sh/client'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import { ChevronDown, ChevronUp, Plus } from 'lucide-react'
import React, { ReactNode, useState } from 'react'
import { resolveBenefitIcon } from '../Benefit/utils'
@@ -25,6 +26,7 @@ const BenefitRow = ({
export const BenefitList = ({
benefits,
toggle = false,
+ locale,
}: {
benefits:
| {
@@ -34,7 +36,9 @@ export const BenefitList = ({
}[]
| undefined
toggle?: boolean
+ locale?: SupportedLocale
}) => {
+ const t = useTranslations(locale ?? 'en')
const [showAll, setShowAll] = useState(false)
if (!benefits) return <>>
@@ -71,7 +75,7 @@ export const BenefitList = ({
{!toggle && (
}>
- {toggled.length} more benefits
+ {t('checkout.benefits.moreBenefits', { count: toggled.length })}
)}
@@ -79,7 +83,7 @@ export const BenefitList = ({
{showAll && (
}>
- Show less
+ {t('checkout.benefits.showLess')}
)}
{!showAll && (
@@ -87,7 +91,7 @@ export const BenefitList = ({
key="show"
icon={ }
>
- Show {toggled.length} more benefits
+ {t('checkout.benefits.showMoreBenefits', { count: toggled.length })}
)}
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 6322e0cf53..2678011e46 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -330,7 +330,12 @@ const BaseCheckoutForm = ({
const totalLabel = useMemo(() => {
if (interval) {
- const formatted = formatRecurringInterval(interval, intervalCount, 'long', locale)
+ const formatted = formatRecurringInterval(
+ interval,
+ intervalCount,
+ 'long',
+ locale,
+ )
return t('checkout.pricing.everyInterval', { interval: formatted })
}
@@ -874,7 +879,10 @@ const BaseCheckoutForm = ({
title={meteredPrice.meter.name}
key={meteredPrice.id}
>
-
+
))}
>
diff --git a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
index 952ef56a2d..264b405591 100644
--- a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
@@ -1,4 +1,5 @@
import { formatCurrency } from '@polar-sh/currency'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic.js'
import { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic.js'
import { ProductPriceCustom } from '@polar-sh/sdk/models/components/productpricecustom.js'
@@ -20,6 +21,7 @@ export interface CheckoutPWYWFormProps {
checkout: CheckoutPublic
productPrice: ProductPriceCustom
themePreset: ThemingPresetProps
+ locale?: SupportedLocale
}
export const CheckoutPWYWForm = ({
@@ -27,7 +29,9 @@ export const CheckoutPWYWForm = ({
checkout,
productPrice,
themePreset,
+ locale,
}: CheckoutPWYWFormProps) => {
+ const t = useTranslations(locale ?? 'en')
const { amount } = checkout
const form = useForm<{ amount: number }>({
@@ -41,11 +45,15 @@ export const CheckoutPWYWForm = ({
(value: number): string | true => {
// Handle gap validation when free is allowed (minimumAmount = 0)
if (minimumAmount === 0 && value > 0 && value < 50) {
- return `Amount must be $0 or at least ${formatCurrency('compact')(50, checkout.currency)}`
+ return t('checkout.pwywForm.amountFreeOrMinimum', {
+ min: formatCurrency('compact')(50, checkout.currency),
+ })
}
if (value < minimumAmount) {
- return `Amount must be at least ${formatCurrency('compact')(minimumAmount, checkout.currency)}`
+ return t('checkout.pwywForm.amountMinimum', {
+ min: formatCurrency('compact')(minimumAmount, checkout.currency),
+ })
}
return true
@@ -80,13 +88,15 @@ export const CheckoutPWYWForm = ({
const minLabelText =
minimumAmount === 0
? null
- : `${formatCurrency('compact')(minimumAmount, checkout.currency)} minimum`
+ : t('checkout.pwywForm.minimum', {
+ amount: formatCurrency('compact')(minimumAmount, checkout.currency),
+ })
return (
)
diff --git a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
index f0269fcf1e..7b4b63b2e6 100644
--- a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
+++ b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
@@ -1,6 +1,6 @@
'use client'
-import type { SupportedLocale } from '@polar-sh/i18n'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice.js'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice.js'
@@ -13,6 +13,7 @@ import { cn } from '@polar-sh/ui/lib/utils'
import { Fragment, useCallback } from 'react'
import type { ProductCheckoutPublic } from '../guards'
import {
+ capitalize,
formatRecurringFrequency,
hasLegacyRecurringPrices,
} from '../utils/product'
@@ -32,6 +33,8 @@ const CheckoutProductSwitcher = ({
themePreset,
locale,
}: CheckoutProductSwitcherProps) => {
+ const t = useTranslations(locale ?? 'en')
+
const {
product: selectedProduct,
productPrice: selectedPrice,
@@ -74,11 +77,11 @@ const CheckoutProductSwitcher = ({
const intervalCount = product.recurringIntervalCount
if (interval) {
- const recurringLabel = formatRecurringFrequency(interval, intervalCount, locale)
- return `Billed ${recurringLabel}`
+ const frequency = capitalize(formatRecurringFrequency(interval, intervalCount, locale))
+ return t('checkout.productSwitcher.billedRecurring', { frequency })
}
- return `One-time purchase`
+ return t('checkout.productSwitcher.oneTimePurchase')
}
return (
diff --git a/clients/packages/checkout/src/components/CheckoutSeatSelector.tsx b/clients/packages/checkout/src/components/CheckoutSeatSelector.tsx
index 4f89e0b443..cb26ff9ef9 100644
--- a/clients/packages/checkout/src/components/CheckoutSeatSelector.tsx
+++ b/clients/packages/checkout/src/components/CheckoutSeatSelector.tsx
@@ -1,6 +1,7 @@
'use client'
import { formatCurrency } from '@polar-sh/currency'
+import type { SupportedLocale } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { HTTPValidationError } from '@polar-sh/sdk/models/errors/httpvalidationerror'
import Button from '@polar-sh/ui/components/atoms/Button'
@@ -12,11 +13,13 @@ import MeteredPricesDisplay from './MeteredPricesDisplay'
export interface CheckoutSeatSelectorProps {
checkout: ProductCheckoutPublic
update: (body: CheckoutUpdatePublic) => Promise
+ locale?: SupportedLocale
}
const CheckoutSeatSelector = ({
checkout,
update,
+ locale,
}: CheckoutSeatSelectorProps) => {
const [isUpdating, setIsUpdating] = useState(false)
const [isEditing, setIsEditing] = useState(false)
@@ -237,7 +240,7 @@ const CheckoutSeatSelector = ({
)}
-
+
)
}
diff --git a/clients/packages/checkout/src/components/MeteredPriceLabel.tsx b/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
index c470828a81..3d4a648665 100644
--- a/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
@@ -1,11 +1,18 @@
import { formatCurrency } from '@polar-sh/currency'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import type { ProductPriceMeteredUnit } from '@polar-sh/sdk/models/components/productpricemeteredunit.js'
interface MeteredPriceLabelProps {
price: ProductPriceMeteredUnit
+ locale?: SupportedLocale
}
-const MeteredPriceLabel: React.FC = ({ price }) => {
+const MeteredPriceLabel: React.FC = ({
+ price,
+ locale,
+}) => {
+ const t = useTranslations(locale ?? 'en')
+
return (
{formatCurrency('subcent')(
@@ -13,7 +20,7 @@ const MeteredPriceLabel: React.FC = ({ price }) => {
price.priceCurrency,
)}
- / unit
+ {t('checkout.pricing.perUnit')}
)
diff --git a/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx b/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
index c6fee3a575..77cbac6593 100644
--- a/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
+++ b/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
@@ -1,5 +1,6 @@
'use client'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
import { useMemo } from 'react'
import { ProductCheckoutPublic } from '../guards'
@@ -28,9 +29,11 @@ const GaugeIcon = ({ className }: { className?: string }) => {
interface MeteredPricesDisplayProps {
checkout: ProductCheckoutPublic
+ locale?: SupportedLocale
}
-const MeteredPricesDisplay = ({ checkout }: MeteredPricesDisplayProps) => {
+const MeteredPricesDisplay = ({ checkout, locale }: MeteredPricesDisplayProps) => {
+ const t = useTranslations(locale ?? 'en')
const { product, prices, productPrice } = checkout
// Get the metered prices, minus the currently selected one, in case there are only metered prices
@@ -48,14 +51,14 @@ const MeteredPricesDisplay = ({ checkout }: MeteredPricesDisplayProps) => {
return (
-
+ Additional metered usage
+
+ {t('checkout.pricing.additionalMeteredUsage')}
{meteredPrices.map((price) => (
))}
diff --git a/clients/packages/checkout/src/components/ProductPriceLabel.tsx b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
index 2eacf05a5e..28580301a3 100644
--- a/clients/packages/checkout/src/components/ProductPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
@@ -1,4 +1,4 @@
-import type { SupportedLocale } from '@polar-sh/i18n'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import type { CheckoutProduct } from '@polar-sh/sdk/models/components/checkoutproduct'
import type { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
@@ -17,6 +17,8 @@ const ProductPriceLabel: React.FC = ({
price,
locale,
}) => {
+ const t = useTranslations(locale ?? 'en')
+
if (price.amountType === 'fixed') {
return (
= ({
/>
)
} else if (price.amountType === 'custom') {
- return Pay what you want
+ return {t('checkout.pricing.payWhatYouWant')}
} else if (price.amountType === 'free') {
- return Free
+ return {t('checkout.pricing.free')}
} else if (price.amountType === 'metered_unit') {
return (
{price.meter.name}
{' — '}
-
+
)
}
diff --git a/clients/packages/checkout/src/utils/product.ts b/clients/packages/checkout/src/utils/product.ts
index cf4a609a64..354f00047c 100644
--- a/clients/packages/checkout/src/utils/product.ts
+++ b/clients/packages/checkout/src/utils/product.ts
@@ -84,6 +84,9 @@ export const formatRecurringFrequency = (
return t.intervals.frequency[interval]
}
+export const capitalize = (s: string): string =>
+ s.charAt(0).toUpperCase() + s.slice(1)
+
export const isLegacyRecurringPrice = (
price: ProductPrice | LegacyRecurringProductPrice,
): price is LegacyRecurringProductPrice => 'legacy' in price
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index 686dfe53c2..08caf81d4f 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -32,9 +32,11 @@ export const en = {
taxableAmount: 'Taxable amount',
taxes: 'Taxes',
free: 'Free',
+ payWhatYouWant: 'Pay what you want',
total: 'Total',
everyInterval: 'Every {interval}',
additionalMeteredUsage: 'Additional metered usage',
+ perUnit: '/ unit',
discount: {
duration: {
months: {
@@ -75,11 +77,37 @@ export const en = {
},
},
},
+ pwywForm: {
+ label: 'Name a fair price',
+ minimum: '{amount} minimum',
+ amountMinimum: 'Amount must be at least {min}',
+ amountFreeOrMinimum: 'Amount must be $0 or at least {min}',
+ },
+ productSwitcher: {
+ billedRecurring: 'Billed {frequency}',
+ oneTimePurchase: 'One-time purchase',
+ },
+ card: {
+ included: 'Included',
+ },
+ benefits: {
+ moreBenefits: {
+ _mode: 'plural',
+ '=1': '# more benefit',
+ other: '# more benefits',
+ },
+ showMoreBenefits: {
+ _mode: 'plural',
+ '=1': 'Show # more benefit',
+ other: 'Show # more benefits',
+ },
+ showLess: 'Show less',
+ },
cta: {
startTrial: 'Start Trial',
subscribeNow: 'Subscribe now',
payNow: 'Pay now',
- getFree: 'Submit',
+ getFree: 'Get for free',
paymentsUnavailable: 'Payments are currently unavailable',
},
},
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index 8bb3d030a3..25e13f8a4b 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -30,11 +30,13 @@ export const nl = {
pricing: {
subtotal: 'Subtotaal',
taxableAmount: 'Belastbaar bedrag',
- taxes: 'Belasting',
+ taxes: 'BTW',
free: 'Gratis',
+ payWhatYouWant: 'Betaal wat je wilt',
total: 'Totaal',
everyInterval: 'Elke {interval}',
additionalMeteredUsage: 'Extra verbruik op basis van gebruik',
+ perUnit: '/ eenheid',
discount: {
duration: {
months: {
@@ -75,11 +77,37 @@ export const nl = {
},
},
},
+ pwywForm: {
+ label: 'Noem een eerlijke prijs',
+ minimum: '{amount} minimum',
+ amountMinimum: 'Bedrag moet minimaal {min} zijn',
+ amountFreeOrMinimum: 'Bedrag moet $0 of minimaal {min} zijn',
+ },
+ productSwitcher: {
+ billedRecurring: '{frequency} gefactureerd',
+ oneTimePurchase: 'Eenmalige aankoop',
+ },
+ card: {
+ included: 'Inbegrepen',
+ },
+ benefits: {
+ moreBenefits: {
+ _mode: 'plural',
+ '=1': '# extra voordeel',
+ other: '# extra voordelen',
+ },
+ showMoreBenefits: {
+ _mode: 'plural',
+ '=1': 'Toon # extra voordeel',
+ other: 'Toon # extra voordelen',
+ },
+ showLess: 'Toon minder',
+ },
cta: {
startTrial: 'Proefperiode starten',
subscribeNow: 'Nu abonneren',
payNow: 'Nu betalen',
- getFree: 'Verzenden',
+ getFree: 'Gratis verkrijgen',
paymentsUnavailable: 'Betalingen zijn momenteel niet beschikbaar',
},
},
From dcf4c80e348fffededccaa0f50c7541795502edb Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Fri, 6 Feb 2026 17:33:08 +0100
Subject: [PATCH 14/69] Translate checkout confirmation
---
.../[clientSecret]/confirmation/page.tsx | 7 +-
.../src/app/checkout/[clientSecret]/page.tsx | 2 +-
.../src/components/Benefit/BenefitGrant.tsx | 45 ++++++++----
.../LicenseKeys/LicenseKeyActivations.tsx | 16 +++--
.../LicenseKeys/LicenseKeyBenefitGrant.tsx | 21 ++++--
.../Benefit/LicenseKeys/LicenseKeyDetails.tsx | 21 +++---
.../components/Checkout/CheckoutBenefits.tsx | 14 +++-
.../Checkout/CheckoutConfirmation.tsx | 34 +++++----
.../src/providers/CheckoutFormProvider.tsx | 24 ++++---
clients/packages/i18n/src/locales/en.ts | 64 +++++++++++++++++
clients/packages/i18n/src/locales/nl.ts | 70 ++++++++++++++++++-
11 files changed, 254 insertions(+), 64 deletions(-)
diff --git a/clients/apps/web/src/app/checkout/[clientSecret]/confirmation/page.tsx b/clients/apps/web/src/app/checkout/[clientSecret]/confirmation/page.tsx
index 1801bcb7b5..f7568d6680 100644
--- a/clients/apps/web/src/app/checkout/[clientSecret]/confirmation/page.tsx
+++ b/clients/apps/web/src/app/checkout/[clientSecret]/confirmation/page.tsx
@@ -1,6 +1,7 @@
import { CheckoutConfirmation } from '@/components/Checkout/CheckoutConfirmation'
import CheckoutLayout from '@/components/Checkout/CheckoutLayout'
import { getServerURL } from '@/utils/api'
+import { resolveLocale } from '@/utils/i18n'
import { PolarCore } from '@polar-sh/sdk/core'
import { checkoutsClientGet } from '@polar-sh/sdk/funcs/checkoutsClientGet'
import { ExpiredCheckoutError } from '@polar-sh/sdk/models/errors/expiredcheckouterror'
@@ -12,12 +13,15 @@ export default async function Page(props: {
searchParams: Promise<{
embed?: string
theme?: 'light' | 'dark'
+ locale?: string
customer_session_token?: string
}>
}) {
const searchParams = await props.searchParams
- const { embed, theme, customer_session_token } = searchParams
+ const { embed, theme, locale: _locale, customer_session_token } = searchParams
+
+ const locale = await resolveLocale(_locale)
const params = await props.params
@@ -67,6 +71,7 @@ export default async function Page(props: {
checkout={checkout}
embed={embed === 'true'}
theme={theme}
+ locale={locale}
customerSessionToken={customer_session_token}
/>
diff --git a/clients/apps/web/src/app/checkout/[clientSecret]/page.tsx b/clients/apps/web/src/app/checkout/[clientSecret]/page.tsx
index 6726212017..d7c4f2a328 100644
--- a/clients/apps/web/src/app/checkout/[clientSecret]/page.tsx
+++ b/clients/apps/web/src/app/checkout/[clientSecret]/page.tsx
@@ -87,7 +87,7 @@ export default async function Page(props: {
clientSecret={checkout.clientSecret}
serverURL={getPublicServerURL()}
>
-
+
diff --git a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
index 84551f1f40..f3967cbf6c 100644
--- a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
+++ b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
@@ -1,6 +1,7 @@
import { useCustomerBenefitGrantUpdate } from '@/hooks/queries'
import { markdownOptions } from '@/utils/markdown'
import { Client, schemas } from '@polar-sh/client'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import Button from '@polar-sh/ui/components/atoms/Button'
import {
Select,
@@ -15,11 +16,12 @@ import { usePathname, useSearchParams } from 'next/navigation'
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
import DownloadablesBenefitGrant from './Downloadables/DownloadablesBenefitGrant'
import { LicenseKeyBenefitGrant } from './LicenseKeys/LicenseKeyBenefitGrant'
-import { benefitsDisplayNames, resolveBenefitIcon } from './utils'
+import { resolveBenefitIcon } from './utils'
interface BenefitGrantProps {
api: Client
benefitGrant: schemas['CustomerBenefitGrant']
+ locale?: SupportedLocale
}
const BenefitGrantCustom = ({
@@ -48,6 +50,7 @@ const BenefitGrantOAuth = ({
api,
benefitGrant,
platform,
+ locale,
connectButtonText,
openButtonUrl,
openButtonText,
@@ -58,11 +61,13 @@ const BenefitGrantOAuth = ({
| schemas['CustomerBenefitGrantGitHubRepository']
| schemas['CustomerBenefitGrantDiscord']
platform: 'github' | 'discord'
+ locale?: SupportedLocale
openButtonText: string
openButtonUrl: string
connectButtonText: string
selectPlaceholder: string
}) => {
+ const t = useTranslations(locale ?? 'en')
const pathname = usePathname()
const searchParams = useSearchParams()
const {
@@ -199,7 +204,7 @@ const BenefitGrantOAuth = ({
variant="secondary"
className="grow"
>
- Request new invite
+ {t('checkout.benefits.requestNewInvite')}
>
)}
@@ -214,7 +219,7 @@ const BenefitGrantOAuth = ({
disabled={retryCountdown > 0}
>
{retryCountdown > 0
- ? `Try again in ${retryCountdown} second${retryCountdown === 1 ? '' : 's'}`
+ ? t('checkout.benefits.retryIn', { count: retryCountdown })
: connectButtonText}
) : (
@@ -240,7 +245,7 @@ const BenefitGrantOAuth = ({
{account.account_username}
))}
- Connect new account
+ {t('checkout.benefits.connectNewAccount')}
- Request my invite
+ {t('checkout.benefits.requestMyInvite')}
>
)}
@@ -268,10 +273,13 @@ const BenefitGrantOAuth = ({
const BenefitGrantGitHubRepository = ({
api,
benefitGrant,
+ locale,
}: {
api: Client
benefitGrant: schemas['CustomerBenefitGrantGitHubRepository']
+ locale?: SupportedLocale
}) => {
+ const t = useTranslations(locale ?? 'en')
const {
benefit: {
properties: { repository_owner, repository_name },
@@ -282,10 +290,13 @@ const BenefitGrantGitHubRepository = ({
api={api}
benefitGrant={benefitGrant}
platform="github"
- connectButtonText="Connect GitHub account"
- openButtonText={`Go to ${repository_owner}/${repository_name}`}
+ locale={locale}
+ connectButtonText={t('checkout.benefits.github.connect')}
+ openButtonText={t('checkout.benefits.github.goTo', {
+ repository: `${repository_owner}/${repository_name}`,
+ })}
openButtonUrl={`https://github.com/${repository_owner}/${repository_name}/invitations`}
- selectPlaceholder="Select a GitHub account"
+ selectPlaceholder={t('checkout.benefits.github.selectAccount')}
/>
)
}
@@ -293,10 +304,13 @@ const BenefitGrantGitHubRepository = ({
const BenefitGrantDiscord = ({
api,
benefitGrant,
+ locale,
}: {
api: Client
benefitGrant: schemas['CustomerBenefitGrantDiscord']
+ locale?: SupportedLocale
}) => {
+ const t = useTranslations(locale ?? 'en')
const {
benefit: {
properties: { guild_id },
@@ -307,15 +321,17 @@ const BenefitGrantDiscord = ({
api={api}
benefitGrant={benefitGrant}
platform="discord"
- connectButtonText="Connect Discord account"
- openButtonText="Open Discord"
+ locale={locale}
+ connectButtonText={t('checkout.benefits.discord.connect')}
+ openButtonText={t('checkout.benefits.discord.open')}
openButtonUrl={`https://www.discord.com/channels/${guild_id}`}
- selectPlaceholder="Select a Discord account"
+ selectPlaceholder={t('checkout.benefits.discord.selectAccount')}
/>
)
}
-export const BenefitGrant = ({ api, benefitGrant }: BenefitGrantProps) => {
+export const BenefitGrant = ({ api, benefitGrant, locale }: BenefitGrantProps) => {
+ const t = useTranslations(locale ?? 'en')
const { benefit } = benefitGrant
return (
@@ -329,7 +345,7 @@ export const BenefitGrant = ({ api, benefitGrant }: BenefitGrantProps) => {
{benefit.description}
- {benefitsDisplayNames[benefit.type]}
+ {t(`benefitTypes.${benefit.type}.displayName`)}
@@ -352,6 +368,7 @@ export const BenefitGrant = ({ api, benefitGrant }: BenefitGrantProps) => {
benefitGrant={
benefitGrant as schemas['CustomerBenefitGrantLicenseKeys']
}
+ locale={locale}
/>
)}
{benefit.type === 'github_repository' && (
@@ -360,12 +377,14 @@ export const BenefitGrant = ({ api, benefitGrant }: BenefitGrantProps) => {
benefitGrant={
benefitGrant as schemas['CustomerBenefitGrantGitHubRepository']
}
+ locale={locale}
/>
)}
{benefit.type === 'discord' && (
)}
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
index 32fd62a294..307d98b38e 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
@@ -2,6 +2,7 @@ import { toast } from '@/components/Toast/use-toast'
import { useCustomerLicenseKeyDeactivate } from '@/hooks/queries'
import CloseOutlined from '@mui/icons-material/CloseOutlined'
import { Client, schemas } from '@polar-sh/client'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import Button from '@polar-sh/ui/components/atoms/Button'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import { List, ListItem } from '@polar-sh/ui/components/atoms/List'
@@ -10,12 +11,15 @@ import { useCallback } from 'react'
interface LicenseKeyActivationsProps {
api: Client
licenseKey: schemas['LicenseKeyWithActivations']
+ locale?: SupportedLocale
}
export const LicenseKeyActivations = ({
api,
licenseKey,
+ locale,
}: LicenseKeyActivationsProps) => {
+ const t = useTranslations(locale ?? 'en')
const onDeactivate = useCustomerLicenseKeyDeactivate(api, licenseKey.id)
const handleDeactivateActivation = useCallback(
@@ -28,18 +32,18 @@ export const LicenseKeyActivations = ({
})
.then(() => {
toast({
- title: 'License Key Activation Deleted',
- description: `Activation deleted successfully`,
+ title: t('checkout.benefits.licenseKey.activationDeleted'),
+ description: t('checkout.benefits.licenseKey.activationDeletedDescription'),
})
})
.catch((error) => {
toast({
- title: 'Activation Deactivation Failed',
- description: `Error deactivating activation ${activationId}: ${error.message}`,
+ title: t('checkout.benefits.licenseKey.activationDeactivationFailed'),
+ description: `${error.message}`,
})
})
},
- [onDeactivate, licenseKey],
+ [onDeactivate, licenseKey, t],
)
const hasActivations = (licenseKey?.activations?.length ?? 0) > 0
@@ -50,7 +54,7 @@ export const LicenseKeyActivations = ({
return (
-
Activations
+
{t('checkout.benefits.licenseKey.activations')}
{licenseKey?.activations.map((activation) => (
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
index b108359c6e..ebc9ff289e 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
@@ -1,6 +1,7 @@
import { toast } from '@/components/Toast/use-toast'
import { useCustomerLicenseKey } from '@/hooks/queries'
import { Client, schemas } from '@polar-sh/client'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import CopyToClipboardInput from '@polar-sh/ui/components/atoms/CopyToClipboardInput'
import { LicenseKeyActivations } from './LicenseKeyActivations'
import { LicenseKeyDetails } from './LicenseKeyDetails'
@@ -8,10 +9,14 @@ import { LicenseKeyDetails } from './LicenseKeyDetails'
const LicenseKey = ({
api,
licenseKey,
+ locale,
}: {
api: Client
licenseKey: schemas['LicenseKeyWithActivations']
+ locale?: SupportedLocale
}) => {
+ const t = useTranslations(locale ?? 'en')
+
if (!licenseKey) {
return <>>
}
@@ -20,15 +25,16 @@ const LicenseKey = ({
<>
{
toast({
- title: 'Copied To Clipboard',
- description: `License Key was copied to clipboard`,
+ title: t('checkout.benefits.licenseKey.copiedToClipboard'),
+ description: t('checkout.benefits.licenseKey.copiedToClipboardDescription'),
})
}}
/>
-
-
+
+
>
)
}
@@ -36,10 +42,13 @@ const LicenseKey = ({
export const LicenseKeyBenefitGrant = ({
api,
benefitGrant,
+ locale,
}: {
api: Client
benefitGrant: schemas['CustomerBenefitGrantLicenseKeys']
+ locale?: SupportedLocale
}) => {
+ const t = useTranslations(locale ?? 'en')
const { data: licenseKey, isLoading } = useCustomerLicenseKey(
api,
benefitGrant.properties.license_key_id as string,
@@ -47,7 +56,7 @@ export const LicenseKeyBenefitGrant = ({
if (isLoading) {
// TODO: Style me
- return Loading...
+ return {t('checkout.benefits.licenseKey.loading')}
}
if (!licenseKey) {
@@ -56,7 +65,7 @@ export const LicenseKeyBenefitGrant = ({
return (
-
+
)
}
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
index 41c1d0a75d..df633ec4ab 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
@@ -1,4 +1,5 @@
import { schemas } from '@polar-sh/client'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
import { twMerge } from 'tailwind-merge'
@@ -6,12 +7,16 @@ import { twMerge } from 'tailwind-merge'
export interface LicenseKeyDetails {
className?: string
licenseKey: schemas['LicenseKeyRead']
+ locale?: SupportedLocale
}
export const LicenseKeyDetails = ({
className,
licenseKey,
+ locale,
}: LicenseKeyDetails) => {
+ const t = useTranslations(locale ?? 'en')
+
return (
- Status
- {licenseKey.status}
+ {t('checkout.benefits.licenseKey.status')}
+ {t(`checkout.benefits.licenseKey.status${licenseKey.status.charAt(0).toUpperCase()}${licenseKey.status.slice(1)}`)}
{licenseKey.limit_usage && (
-
Usage
+
{t('checkout.benefits.licenseKey.usage')}
{licenseKey.usage} / {licenseKey.limit_usage}
@@ -35,13 +40,13 @@ export const LicenseKeyDetails = ({
)}
- Validations
+ {t('checkout.benefits.licenseKey.validations')}
{licenseKey.validations}
- Validated At
+ {t('checkout.benefits.licenseKey.validatedAt')}
{licenseKey.last_validated_at ? (
@@ -49,19 +54,19 @@ export const LicenseKeyDetails = ({
datetime={licenseKey.last_validated_at ?? ''}
/>
) : (
- Never Validated
+ {t('checkout.benefits.licenseKey.neverValidated')}
)}
- Expiry Date
+ {t('checkout.benefits.licenseKey.expiryDate')}
{licenseKey.expires_at ? (
) : (
- No Expiry
+ {t('checkout.benefits.licenseKey.noExpiry')}
)}
diff --git a/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx b/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
index 9df84d7032..d9b57c014a 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
@@ -2,6 +2,7 @@ import { useCustomerBenefitGrants } from '@/hooks/queries/customerPortal'
import { useCustomerSSE } from '@/hooks/sse'
import { createClientSideAPI } from '@/utils/client'
import type { ProductCheckoutPublic } from '@polar-sh/checkout/guards'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import { List, ListItem } from '@polar-sh/ui/components/atoms/List'
import { useEffect } from 'react'
import { BenefitGrant } from '../Benefit/BenefitGrant'
@@ -9,15 +10,18 @@ import { SpinnerNoMargin } from '../Shared/Spinner'
interface CheckoutBenefitsProps {
checkout: ProductCheckoutPublic
+ locale?: SupportedLocale
customerSessionToken?: string
maxWaitingTimeMs?: number
}
const CheckoutBenefits = ({
checkout,
+ locale,
customerSessionToken,
maxWaitingTimeMs = 15000,
}: CheckoutBenefitsProps) => {
+ const t = useTranslations(locale ?? 'en')
const api = createClientSideAPI(customerSessionToken)
const { data: benefitGrants, refetch } = useCustomerBenefitGrants(api, {
checkout_id: checkout.id,
@@ -44,21 +48,25 @@ const CheckoutBenefits = ({
return (
<>
-
+
{benefitGrants?.items.map((benefitGrant) => (
-
+
))}
{benefitGrants && benefitGrants.items.length < expectedBenefits && (
- Granting benefits...
+ {t('checkout.benefits.granting')}
)}
diff --git a/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx b/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
index a987d0e6dd..bf2c3a2ea2 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
@@ -4,6 +4,7 @@ import { useCheckoutConfirmedRedirect } from '@/hooks/checkout'
import { useCheckoutClientSSE } from '@/hooks/sse'
import { getServerURL } from '@/utils/api'
import { hasProductCheckout } from '@polar-sh/checkout/guards'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import { PolarCore } from '@polar-sh/sdk/core'
import { checkoutsClientGet } from '@polar-sh/sdk/funcs/checkoutsClientGet'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
@@ -29,10 +30,13 @@ const isIntegrationError = (
const StripeRequiresAction = ({
stripe,
checkout,
+ locale,
}: {
stripe: Stripe | null
checkout: CheckoutPublic
+ locale?: SupportedLocale
}) => {
+ const t = useTranslations(locale ?? 'en')
const [pendingHandling, setPendingHandling] = useState(false)
const [success, setSuccess] = useState(false)
const { intent_status, intent_client_secret } =
@@ -83,7 +87,7 @@ const StripeRequiresAction = ({
onClick={() => handleNextAction(stripe)}
loading={pendingHandling}
>
- Confirm payment
+ {t('checkout.confirmation.confirmPayment')}
)
}
@@ -95,6 +99,7 @@ export interface CheckoutConfirmationProps {
checkout: CheckoutPublic
embed: boolean
theme?: 'light' | 'dark'
+ locale?: SupportedLocale
customerSessionToken?: string
disabled?: boolean
maxWaitingTimeMs?: number
@@ -104,10 +109,12 @@ export const CheckoutConfirmation = ({
checkout: _checkout,
embed,
theme,
+ locale,
customerSessionToken,
disabled,
maxWaitingTimeMs = 15000,
}: CheckoutConfirmationProps) => {
+ const t = useTranslations(locale ?? 'en')
const router = useRouter()
const client = useMemo(() => new PolarCore({ serverURL: getServerURL() }), [])
const [checkout, setCheckout] = useState(_checkout)
@@ -172,21 +179,23 @@ export const CheckoutConfirmation = ({
name={organization.name}
/>
- {status === 'confirmed' && 'We are processing your order'}
- {status === 'succeeded' && 'Your order was successful!'}
- {status === 'failed' &&
- 'A problem occurred while processing your order'}
+ {status === 'confirmed' && t('checkout.confirmation.processingTitle')}
+ {status === 'succeeded' && t('checkout.confirmation.successTitle')}
+ {status === 'failed' && t('checkout.confirmation.failedTitle')}
{status === 'confirmed' &&
- 'Please wait while we confirm your payment.'}
+ t('checkout.confirmation.processingDescription')}
{status === 'succeeded' && (
<>
{hasProductCheckout(checkout) &&
- `You're now eligible for the benefits of ${checkout.product.name}.`}
+ t('checkout.confirmation.successDescription', {
+ product: checkout.product.name,
+ })}
>
)}
- {status === 'failed' && 'Please try again or contact support.'}
+ {status === 'failed' &&
+ t('checkout.confirmation.failedDescription')}
{status === 'confirmed' && (
@@ -194,7 +203,7 @@ export const CheckoutConfirmation = ({
{({ stripe }) => (
-
+
)}
@@ -210,20 +219,19 @@ export const CheckoutConfirmation = ({
checkout.productPrice.amountType !== 'seat_based' && (
)}
- This order was processed by our online reseller & Merchant of
- Record, Polar, who also handles order-related inquiries and
- returns.
+ {t('checkout.footer.merchantOfRecord')}
>
)}
- Powered by
+ {t('checkout.footer.poweredBy')}
diff --git a/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx b/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
index 709690a3a8..2c0b9dbb7a 100644
--- a/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
+++ b/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
@@ -11,6 +11,7 @@ import { NotOpenCheckout } from '@polar-sh/sdk/models/errors/notopencheckout.js'
import { PaymentError } from '@polar-sh/sdk/models/errors/paymenterror.js'
import { PaymentNotReady } from '@polar-sh/sdk/models/errors/paymentnotready.js'
import { TrialAlreadyRedeemed } from '@polar-sh/sdk/models/errors/trialalreadyredeemed'
+import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
import type {
ConfirmationToken,
Stripe,
@@ -46,8 +47,12 @@ export interface CheckoutFormContextProps {
// @ts-ignore
export const CheckoutFormContext = createContext(stub)
-export const CheckoutFormProvider = ({ children }: React.PropsWithChildren) => {
+export const CheckoutFormProvider = ({
+ children,
+ locale,
+}: React.PropsWithChildren<{ locale?: SupportedLocale }>) => {
const { checkout, update: updateOuter, confirm: confirmOuter } = useCheckout()
+ const t = useTranslations(locale ?? 'en')
const [loading, setLoading] = useState(false)
const [loadingLabel, setLoadingLabel] = useState()
const [isUpdatePending, setIsUpdatePending] = useState(false)
@@ -129,7 +134,7 @@ export const CheckoutFormProvider = ({ children }: React.PropsWithChildren) => {
setLoading(true)
if (!checkout.isPaymentFormRequired) {
- setLoadingLabel('Processing order...')
+ setLoadingLabel(t('checkout.loading.processingOrder'))
try {
const checkoutConfirmed = await _confirm(data)
return checkoutConfirmed
@@ -145,7 +150,7 @@ export const CheckoutFormProvider = ({ children }: React.PropsWithChildren) => {
throw new Error('Stripe elements not provided')
}
- setLoadingLabel('Processing payment')
+ setLoadingLabel(t('checkout.loading.processingPayment'))
const { error: submitError } = await elements.submit()
if (submitError) {
@@ -189,15 +194,12 @@ export const CheckoutFormProvider = ({ children }: React.PropsWithChildren) => {
}
if (!confirmationToken || error) {
+ const fallbackMessage = t('checkout.loading.confirmationTokenFailed')
setError('root', {
- message:
- error?.message ||
- 'Failed to create confirmation token, please try again later.',
+ message: error?.message || fallbackMessage,
})
setLoading(false)
- throw new Error(
- 'Failed to create confirmation token, please try again later.',
- )
+ throw new Error(error?.message || fallbackMessage)
}
let updatedCheckout: CheckoutPublicConfirmed
@@ -211,7 +213,7 @@ export const CheckoutFormProvider = ({ children }: React.PropsWithChildren) => {
throw e
}
- setLoadingLabel('Payment successful! Getting your products ready...')
+ setLoadingLabel(t('checkout.loading.paymentSuccessful'))
const { intent_status, intent_client_secret } =
updatedCheckout.paymentProcessorMetadata as Record
@@ -230,7 +232,7 @@ export const CheckoutFormProvider = ({ children }: React.PropsWithChildren) => {
setLoading(false)
return updatedCheckout
},
- [checkout, setError, _confirm],
+ [checkout, setError, _confirm, t],
)
return (
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index 08caf81d4f..a807ab6c35 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -102,6 +102,61 @@ export const en = {
other: 'Show # more benefits',
},
showLess: 'Show less',
+ granting: 'Granting benefits...',
+ requestNewInvite: 'Request new invite',
+ retryIn: {
+ _mode: 'plural',
+ '=1': 'Try again in # second',
+ other: 'Try again in # seconds',
+ },
+ connectNewAccount: 'Connect new account',
+ requestMyInvite: 'Request my invite',
+ github: {
+ connect: 'Connect GitHub account',
+ goTo: 'Go to {repository}',
+ selectAccount: 'Select a GitHub account',
+ },
+ discord: {
+ connect: 'Connect Discord account',
+ open: 'Open Discord',
+ selectAccount: 'Select a Discord account',
+ },
+ licenseKey: {
+ copy: 'Copy',
+ copiedToClipboard: 'Copied To Clipboard',
+ copiedToClipboardDescription: 'License Key was copied to clipboard',
+ loading: 'Loading...',
+ status: 'Status',
+ statusGranted: 'Granted',
+ statusRevoked: 'Revoked',
+ statusDisabled: 'Disabled',
+ usage: 'Usage',
+ validations: 'Validations',
+ validatedAt: 'Validated At',
+ neverValidated: 'Never Validated',
+ expiryDate: 'Expiry Date',
+ noExpiry: 'No Expiry',
+ activations: 'Activations',
+ activationDeleted: 'License Key Activation Deleted',
+ activationDeletedDescription: 'Activation deleted successfully',
+ activationDeactivationFailed: 'Activation Deactivation Failed',
+ },
+ },
+ confirmation: {
+ confirmPayment: 'Confirm payment',
+ processingTitle: 'We are processing your order',
+ successTitle: 'Your order was successful!',
+ failedTitle: 'A problem occurred while processing your order',
+ processingDescription: 'Please wait while we confirm your payment.',
+ successDescription: "You're now eligible for the benefits of {product}.",
+ failedDescription: 'Please try again or contact support.',
+ },
+ loading: {
+ processingOrder: 'Processing order...',
+ processingPayment: 'Processing payment',
+ paymentSuccessful: 'Payment successful! Getting your products ready...',
+ confirmationTokenFailed:
+ 'Failed to create confirmation token, please try again later.',
},
cta: {
startTrial: 'Start Trial',
@@ -132,6 +187,15 @@ export const en = {
everyOrdinalInterval: 'every {ordinal} {interval}',
},
},
+ benefitTypes: {
+ usage: { displayName: 'Usage' },
+ license_keys: { displayName: 'License Keys' },
+ github_repository: { displayName: 'GitHub Repository Access' },
+ discord: { displayName: 'Discord Invite' },
+ downloadables: { displayName: 'File Downloads' },
+ custom: { displayName: 'Custom' },
+ meter_credit: { displayName: 'Meter Credits' },
+ },
playground: {
interpolation: 'This is a {test}',
plurals: {
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index 25e13f8a4b..d9138dbc54 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -3,7 +3,7 @@ export const nl = {
footer: {
poweredBy: 'Mogelijk gemaakt door',
merchantOfRecord:
- 'Deze bestelling wordt verwerkt door onze online reseller & Merchant of Record, Polar, die ook vragen en retourzendingen met betrekking tot bestellingen afhandelt.',
+ 'Deze bestelling wordt verwerkt door onze online reseller & Merchant of Record, Polar, die ook vragen over bestellingen en terugbetalingen afhandelt.',
},
form: {
email: 'E-mail',
@@ -35,7 +35,7 @@ export const nl = {
payWhatYouWant: 'Betaal wat je wilt',
total: 'Totaal',
everyInterval: 'Elke {interval}',
- additionalMeteredUsage: 'Extra verbruik op basis van gebruik',
+ additionalMeteredUsage: 'Extra verbruikskosten',
perUnit: '/ eenheid',
discount: {
duration: {
@@ -102,6 +102,63 @@ export const nl = {
other: 'Toon # extra voordelen',
},
showLess: 'Toon minder',
+ granting: 'Voordelen worden toegekend...',
+ requestNewInvite: 'Nieuwe uitnodiging aanvragen',
+ retryIn: {
+ _mode: 'plural',
+ '=1': 'Probeer opnieuw over # seconde',
+ other: 'Probeer opnieuw over # seconden',
+ },
+ connectNewAccount: 'Nieuw account koppelen',
+ requestMyInvite: 'Mijn uitnodiging aanvragen',
+ github: {
+ connect: 'GitHub-account koppelen',
+ goTo: 'Ga naar {repository}',
+ selectAccount: 'Selecteer een GitHub-account',
+ },
+ discord: {
+ connect: 'Discord-account koppelen',
+ open: 'Open Discord',
+ selectAccount: 'Selecteer een Discord-account',
+ },
+ licenseKey: {
+ copy: 'Kopiëren',
+ copiedToClipboard: 'Gekopieerd naar klembord',
+ copiedToClipboardDescription:
+ 'Licentiesleutel is gekopieerd naar het klembord',
+ loading: 'Laden...',
+ status: 'Status',
+ statusGranted: 'Toegekend',
+ statusRevoked: 'Ingetrokken',
+ statusDisabled: 'Uitgeschakeld',
+ usage: 'Gebruik',
+ validations: 'Validaties',
+ validatedAt: 'Gevalideerd op',
+ neverValidated: 'Nooit gevalideerd',
+ expiryDate: 'Vervaldatum',
+ noExpiry: 'Geen vervaldatum',
+ activations: 'Activaties',
+ activationDeleted: 'Licentiesleutelactivatie verwijderd',
+ activationDeletedDescription: 'Activatie succesvol verwijderd',
+ activationDeactivationFailed: 'Deactivatie mislukt',
+ },
+ },
+ confirmation: {
+ confirmPayment: 'Betaling bevestigen',
+ processingTitle: 'We verwerken je bestelling',
+ successTitle: 'Je bestelling is geslaagd!',
+ failedTitle:
+ 'Er is een probleem opgetreden bij het verwerken van je bestelling',
+ processingDescription: 'Even geduld terwijl we je betaling bevestigen.',
+ successDescription: 'Je hebt nu recht op de voordelen van {product}.',
+ failedDescription: 'Probeer het opnieuw of neem contact op met support.',
+ },
+ loading: {
+ processingOrder: 'Bestelling verwerken...',
+ processingPayment: 'Betaling verwerken',
+ paymentSuccessful: 'Betaling geslaagd! Je producten worden klaargezet...',
+ confirmationTokenFailed:
+ 'Bevestigingstoken aanmaken mislukt, probeer het later opnieuw.',
},
cta: {
startTrial: 'Proefperiode starten',
@@ -132,6 +189,15 @@ export const nl = {
everyOrdinalInterval: 'elke {ordinal} {interval}',
},
},
+ benefitTypes: {
+ usage: { displayName: 'Gebruik' },
+ license_keys: { displayName: 'Licentiesleutels' },
+ github_repository: { displayName: 'Toegang tot GitHub-repository' },
+ discord: { displayName: 'Discord-uitnodiging' },
+ downloadables: { displayName: 'Downloads' },
+ custom: { displayName: 'Custom' },
+ meter_credit: { displayName: 'Verbruikstegoed' },
+ },
playground: {
interpolation: 'Dit is een {test}',
plurals: {
From e1da8ad19051e619cf2f0c15e1a7eafd78084229 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Mon, 9 Feb 2026 09:13:06 +0100
Subject: [PATCH 15/69] Fix date formatting
---
.../LicenseKeys/LicenseKeyActivations.tsx | 5 ++-
.../Benefit/LicenseKeys/LicenseKeyDetails.tsx | 6 ++-
.../checkout/src/components/CheckoutForm.tsx | 11 ++----
clients/packages/i18n/src/index.ts | 38 +++++++++++++++++++
clients/packages/i18n/src/locales/en.ts | 2 +-
clients/packages/i18n/src/locales/nl.ts | 2 +-
6 files changed, 51 insertions(+), 13 deletions(-)
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
index 307d98b38e..74e508bf4f 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
@@ -19,7 +19,8 @@ export const LicenseKeyActivations = ({
licenseKey,
locale,
}: LicenseKeyActivationsProps) => {
- const t = useTranslations(locale ?? 'en')
+ const resolvedLocale = locale ?? 'en'
+ const t = useTranslations(resolvedLocale)
const onDeactivate = useCustomerLicenseKeyDeactivate(api, licenseKey.id)
const handleDeactivateActivation = useCallback(
@@ -61,7 +62,7 @@ export const LicenseKeyActivations = ({
{activation.label}
-
+
{
- const t = useTranslations(locale ?? 'en')
+ const resolvedLocale = locale ?? 'en'
+ const t = useTranslations(resolvedLocale)
return (
) : (
{t('checkout.benefits.licenseKey.neverValidated')}
@@ -64,7 +66,7 @@ export const LicenseKeyDetails = ({
{licenseKey.expires_at ? (
-
+
) : (
{t('checkout.benefits.licenseKey.noExpiry')}
)}
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 2678011e46..185ad4d31f 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -1,7 +1,7 @@
'use client'
import { formatCurrency } from '@polar-sh/currency'
-import { SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { SupportedLocale, formatDate, useTranslations } from '@polar-sh/i18n'
import { CountryAlpha2Input } from '@polar-sh/sdk/models/components/addressinput'
import type { CheckoutConfirmStripe } from '@polar-sh/sdk/models/components/checkoutconfirmstripe'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
@@ -10,7 +10,6 @@ import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/check
import Button from '@polar-sh/ui/components/atoms/Button'
import CountryPicker from '@polar-sh/ui/components/atoms/CountryPicker'
import CountryStatePicker from '@polar-sh/ui/components/atoms/CountryStatePicker'
-import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import Input from '@polar-sh/ui/components/atoms/Input'
import { Checkbox } from '@polar-sh/ui/components/ui/checkbox'
import {
@@ -920,11 +919,9 @@ const BaseCheckoutForm = ({
)}
{checkout.trialEnd && (
- {t('checkout.trial.ends')}{' '}
-
+ {t('checkout.trial.ends', {
+ endDate: formatDate(checkout.trialEnd, locale),
+ })}
)}
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index 39a9b0b7af..a1d1c66682 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -4,6 +4,44 @@ export const SUPPORTED_LOCALES = ['en', 'nl'] as const
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
export const DEFAULT_LOCALE = 'en'
+const formatterCache = new Map()
+
+function formatCacheKey(
+ locale: SupportedLocale,
+ options: Intl.DateTimeFormatOptions,
+): string {
+ const sorted = Object.keys(options)
+ .sort()
+ .reduce>((acc, k) => {
+ acc[k] = options[k as keyof typeof options]
+ return acc
+ }, {})
+ return `${locale}:${JSON.stringify(sorted)}`
+}
+
+function getDateFormatter(
+ locale: SupportedLocale,
+ options?: Intl.DateTimeFormatOptions,
+): Intl.DateTimeFormat {
+ const opts = options ?? { dateStyle: 'medium' as const }
+ const key = formatCacheKey(locale, opts)
+ let fmt = formatterCache.get(key)
+ if (!fmt) {
+ fmt = new Intl.DateTimeFormat(locale, opts)
+ formatterCache.set(key, fmt)
+ }
+ return fmt
+}
+
+export function formatDate(
+ date: Date | string,
+ locale: SupportedLocale = DEFAULT_LOCALE,
+ options?: Intl.DateTimeFormatOptions,
+): string {
+ const d = typeof date === 'string' ? new Date(date) : date
+ return getDateFormatter(locale, options).format(d)
+}
+
export function isSupportedLocale(locale: string): locale is SupportedLocale {
return SUPPORTED_LOCALES.includes(locale as SupportedLocale)
}
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index a807ab6c35..4ebddb1a48 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -53,7 +53,7 @@ export const en = {
},
},
trial: {
- ends: 'Trial ends',
+ ends: 'Trial ends {endDate}',
duration: {
days: {
_mode: 'plural',
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index d9138dbc54..d2c30840a2 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -53,7 +53,7 @@ export const nl = {
},
},
trial: {
- ends: 'Proefperiode eindigt',
+ ends: 'Proefperiode eindigt op {endDate}',
duration: {
days: {
_mode: 'plural',
From 9de55c755529727f626e222dad506e28d0d6a970 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Mon, 9 Feb 2026 10:23:13 +0100
Subject: [PATCH 16/69] Support BCP 47
---
.../checkout/[clientSecret]/CheckoutPage.tsx | 4 +-
.../src/components/Benefit/BenefitGrant.tsx | 10 ++---
.../LicenseKeys/LicenseKeyActivations.tsx | 4 +-
.../LicenseKeys/LicenseKeyBenefitGrant.tsx | 6 +--
.../Benefit/LicenseKeys/LicenseKeyDetails.tsx | 4 +-
.../web/src/components/Checkout/Checkout.tsx | 6 +--
.../components/Checkout/CheckoutBenefits.tsx | 4 +-
.../src/components/Checkout/CheckoutCard.tsx | 4 +-
.../Checkout/CheckoutConfirmation.tsx | 6 +--
.../src/components/Products/BenefitList.tsx | 4 +-
clients/apps/web/src/utils/i18n/hooks.ts | 4 +-
clients/apps/web/src/utils/i18n/index.ts | 17 ++++----
.../checkout/src/components/AmountLabel.tsx | 6 +--
.../checkout/src/components/CheckoutForm.tsx | 18 ++++----
.../src/components/CheckoutPWYWForm.tsx | 12 +++---
.../src/components/CheckoutPricing.tsx | 10 ++---
.../components/CheckoutProductSwitcher.tsx | 4 +-
.../src/components/CheckoutSeatSelector.tsx | 8 ++--
.../src/components/MeteredPriceLabel.tsx | 6 +--
.../src/components/MeteredPricesDisplay.tsx | 4 +-
.../src/components/ProductPriceLabel.tsx | 4 +-
.../src/providers/CheckoutFormProvider.tsx | 4 +-
.../packages/checkout/src/utils/discount.ts | 14 +++----
.../packages/checkout/src/utils/product.ts | 11 ++---
clients/packages/i18n/src/index.ts | 41 ++++++++++++++++---
25 files changed, 122 insertions(+), 93 deletions(-)
diff --git a/clients/apps/web/src/app/checkout/[clientSecret]/CheckoutPage.tsx b/clients/apps/web/src/app/checkout/[clientSecret]/CheckoutPage.tsx
index 0e5aa98886..440f82460e 100644
--- a/clients/apps/web/src/app/checkout/[clientSecret]/CheckoutPage.tsx
+++ b/clients/apps/web/src/app/checkout/[clientSecret]/CheckoutPage.tsx
@@ -3,7 +3,7 @@
import Checkout from '@/components/Checkout/Checkout'
import CheckoutLayout from '@/components/Checkout/CheckoutLayout'
import { useCheckout } from '@polar-sh/checkout/providers'
-import { SupportedLocale } from '@polar-sh/i18n'
+import { AcceptedLocale } from '@polar-sh/i18n'
const ClientPage = ({
embed,
@@ -12,7 +12,7 @@ const ClientPage = ({
}: {
embed: boolean
theme?: 'light' | 'dark'
- locale: SupportedLocale
+ locale: AcceptedLocale
}) => {
const { checkout } = useCheckout()
diff --git a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
index f3967cbf6c..d3dca58fad 100644
--- a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
+++ b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
@@ -1,7 +1,7 @@
import { useCustomerBenefitGrantUpdate } from '@/hooks/queries'
import { markdownOptions } from '@/utils/markdown'
import { Client, schemas } from '@polar-sh/client'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import Button from '@polar-sh/ui/components/atoms/Button'
import {
Select,
@@ -21,7 +21,7 @@ import { resolveBenefitIcon } from './utils'
interface BenefitGrantProps {
api: Client
benefitGrant: schemas['CustomerBenefitGrant']
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const BenefitGrantCustom = ({
@@ -61,7 +61,7 @@ const BenefitGrantOAuth = ({
| schemas['CustomerBenefitGrantGitHubRepository']
| schemas['CustomerBenefitGrantDiscord']
platform: 'github' | 'discord'
- locale?: SupportedLocale
+ locale?: AcceptedLocale
openButtonText: string
openButtonUrl: string
connectButtonText: string
@@ -277,7 +277,7 @@ const BenefitGrantGitHubRepository = ({
}: {
api: Client
benefitGrant: schemas['CustomerBenefitGrantGitHubRepository']
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}) => {
const t = useTranslations(locale ?? 'en')
const {
@@ -308,7 +308,7 @@ const BenefitGrantDiscord = ({
}: {
api: Client
benefitGrant: schemas['CustomerBenefitGrantDiscord']
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}) => {
const t = useTranslations(locale ?? 'en')
const {
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
index 74e508bf4f..cd6872f282 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
@@ -2,7 +2,7 @@ import { toast } from '@/components/Toast/use-toast'
import { useCustomerLicenseKeyDeactivate } from '@/hooks/queries'
import CloseOutlined from '@mui/icons-material/CloseOutlined'
import { Client, schemas } from '@polar-sh/client'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import Button from '@polar-sh/ui/components/atoms/Button'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import { List, ListItem } from '@polar-sh/ui/components/atoms/List'
@@ -11,7 +11,7 @@ import { useCallback } from 'react'
interface LicenseKeyActivationsProps {
api: Client
licenseKey: schemas['LicenseKeyWithActivations']
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
export const LicenseKeyActivations = ({
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
index ebc9ff289e..8ac293c6aa 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
@@ -1,7 +1,7 @@
import { toast } from '@/components/Toast/use-toast'
import { useCustomerLicenseKey } from '@/hooks/queries'
import { Client, schemas } from '@polar-sh/client'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import CopyToClipboardInput from '@polar-sh/ui/components/atoms/CopyToClipboardInput'
import { LicenseKeyActivations } from './LicenseKeyActivations'
import { LicenseKeyDetails } from './LicenseKeyDetails'
@@ -13,7 +13,7 @@ const LicenseKey = ({
}: {
api: Client
licenseKey: schemas['LicenseKeyWithActivations']
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}) => {
const t = useTranslations(locale ?? 'en')
@@ -46,7 +46,7 @@ export const LicenseKeyBenefitGrant = ({
}: {
api: Client
benefitGrant: schemas['CustomerBenefitGrantLicenseKeys']
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}) => {
const t = useTranslations(locale ?? 'en')
const { data: licenseKey, isLoading } = useCustomerLicenseKey(
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
index 28ec296535..b98e602a3b 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
@@ -1,5 +1,5 @@
import { schemas } from '@polar-sh/client'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
import { twMerge } from 'tailwind-merge'
@@ -7,7 +7,7 @@ import { twMerge } from 'tailwind-merge'
export interface LicenseKeyDetails {
className?: string
licenseKey: schemas['LicenseKeyRead']
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
export const LicenseKeyDetails = ({
diff --git a/clients/apps/web/src/components/Checkout/Checkout.tsx b/clients/apps/web/src/components/Checkout/Checkout.tsx
index 91a307dfb1..f1bf3dfd10 100644
--- a/clients/apps/web/src/components/Checkout/Checkout.tsx
+++ b/clients/apps/web/src/components/Checkout/Checkout.tsx
@@ -16,7 +16,7 @@ import {
} from '@polar-sh/checkout/guards'
import { useCheckoutFulfillmentListener } from '@polar-sh/checkout/hooks'
import { useCheckout, useCheckoutForm } from '@polar-sh/checkout/providers'
-import { SupportedLocale } from '@polar-sh/i18n'
+import { AcceptedLocale } from '@polar-sh/i18n'
import type { CheckoutConfirmStripe } from '@polar-sh/sdk/models/components/checkoutconfirmstripe'
import type { CheckoutPublicConfirmed } from '@polar-sh/sdk/models/components/checkoutpublicconfirmed'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
@@ -37,7 +37,7 @@ import CheckoutProductInfo from './CheckoutProductInfo'
export interface CheckoutProps {
embed?: boolean
theme?: 'light' | 'dark'
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const Checkout = ({
@@ -58,7 +58,7 @@ const Checkout = ({
const embed = _embed === true
const { resolvedTheme } = useTheme()
const theme = _theme || (resolvedTheme as 'light' | 'dark')
- const locale: SupportedLocale = _locale || 'en'
+ const locale: AcceptedLocale = _locale || 'en'
const posthog = usePostHog()
const openedTrackedRef = useRef(false)
diff --git a/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx b/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
index d9b57c014a..ff725bfb9a 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
@@ -2,7 +2,7 @@ import { useCustomerBenefitGrants } from '@/hooks/queries/customerPortal'
import { useCustomerSSE } from '@/hooks/sse'
import { createClientSideAPI } from '@/utils/client'
import type { ProductCheckoutPublic } from '@polar-sh/checkout/guards'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import { List, ListItem } from '@polar-sh/ui/components/atoms/List'
import { useEffect } from 'react'
import { BenefitGrant } from '../Benefit/BenefitGrant'
@@ -10,7 +10,7 @@ import { SpinnerNoMargin } from '../Shared/Spinner'
interface CheckoutBenefitsProps {
checkout: ProductCheckoutPublic
- locale?: SupportedLocale
+ locale?: AcceptedLocale
customerSessionToken?: string
maxWaitingTimeMs?: number
}
diff --git a/clients/apps/web/src/components/Checkout/CheckoutCard.tsx b/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
index 4d7aeb1538..6c5097dabd 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
@@ -6,14 +6,14 @@ import {
CheckoutSeatSelector,
} from '@polar-sh/checkout/components'
import type { ProductCheckoutPublic } from '@polar-sh/checkout/guards'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
export interface CheckoutCardProps {
checkout: ProductCheckoutPublic
update?: (body: CheckoutUpdatePublic) => Promise
disabled?: boolean
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
export const CheckoutCard = ({
diff --git a/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx b/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
index bf2c3a2ea2..2f2bcb8e76 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
@@ -4,7 +4,7 @@ import { useCheckoutConfirmedRedirect } from '@/hooks/checkout'
import { useCheckoutClientSSE } from '@/hooks/sse'
import { getServerURL } from '@/utils/api'
import { hasProductCheckout } from '@polar-sh/checkout/guards'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import { PolarCore } from '@polar-sh/sdk/core'
import { checkoutsClientGet } from '@polar-sh/sdk/funcs/checkoutsClientGet'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
@@ -34,7 +34,7 @@ const StripeRequiresAction = ({
}: {
stripe: Stripe | null
checkout: CheckoutPublic
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}) => {
const t = useTranslations(locale ?? 'en')
const [pendingHandling, setPendingHandling] = useState(false)
@@ -99,7 +99,7 @@ export interface CheckoutConfirmationProps {
checkout: CheckoutPublic
embed: boolean
theme?: 'light' | 'dark'
- locale?: SupportedLocale
+ locale?: AcceptedLocale
customerSessionToken?: string
disabled?: boolean
maxWaitingTimeMs?: number
diff --git a/clients/apps/web/src/components/Products/BenefitList.tsx b/clients/apps/web/src/components/Products/BenefitList.tsx
index 02d10a0034..c227ea6357 100644
--- a/clients/apps/web/src/components/Products/BenefitList.tsx
+++ b/clients/apps/web/src/components/Products/BenefitList.tsx
@@ -1,5 +1,5 @@
import { schemas } from '@polar-sh/client'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import { ChevronDown, ChevronUp, Plus } from 'lucide-react'
import React, { ReactNode, useState } from 'react'
import { resolveBenefitIcon } from '../Benefit/utils'
@@ -36,7 +36,7 @@ export const BenefitList = ({
}[]
| undefined
toggle?: boolean
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}) => {
const t = useTranslations(locale ?? 'en')
const [showAll, setShowAll] = useState(false)
diff --git a/clients/apps/web/src/utils/i18n/hooks.ts b/clients/apps/web/src/utils/i18n/hooks.ts
index 1aee3e3728..8b6a79fe78 100644
--- a/clients/apps/web/src/utils/i18n/hooks.ts
+++ b/clients/apps/web/src/utils/i18n/hooks.ts
@@ -1,11 +1,11 @@
import {
- type SupportedLocale,
+ type AcceptedLocale,
type TranslationKey,
getTranslations,
} from '@polar-sh/i18n'
import { useCallback } from 'react'
-export const useTranslations = (locale: SupportedLocale) => {
+export const useTranslations = (locale: AcceptedLocale) => {
return useCallback(
(key: TranslationKey): string => {
const translations = getTranslations(locale)
diff --git a/clients/apps/web/src/utils/i18n/index.ts b/clients/apps/web/src/utils/i18n/index.ts
index 7edc0a8e91..156cb40435 100644
--- a/clients/apps/web/src/utils/i18n/index.ts
+++ b/clients/apps/web/src/utils/i18n/index.ts
@@ -1,14 +1,13 @@
import {
+ type AcceptedLocale,
DEFAULT_LOCALE,
- isSupportedLocale,
- SUPPORTED_LOCALES,
- type SupportedLocale,
+ isAcceptedLocale,
} from '@polar-sh/i18n'
import { headers } from 'next/headers'
function getLocaleFromAcceptLanguage(
acceptLanguage: string | null,
-): SupportedLocale {
+): AcceptedLocale {
if (!acceptLanguage) return DEFAULT_LOCALE
const languages = acceptLanguage
@@ -16,15 +15,15 @@ function getLocaleFromAcceptLanguage(
.map((lang) => {
const [code, qValue] = lang.trim().split(';q=')
return {
- code: code.split('-')[0].toLowerCase(),
+ code: code.trim(),
q: qValue ? parseFloat(qValue) : 1,
}
})
.sort((a, b) => b.q - a.q)
for (const { code } of languages) {
- if (SUPPORTED_LOCALES.includes(code as SupportedLocale)) {
- return code as SupportedLocale
+ if (isAcceptedLocale(code)) {
+ return code as AcceptedLocale
}
}
@@ -33,8 +32,8 @@ function getLocaleFromAcceptLanguage(
export async function resolveLocale(
searchParamLocale?: string,
-): Promise {
- if (searchParamLocale && isSupportedLocale(searchParamLocale)) {
+): Promise {
+ if (searchParamLocale && isAcceptedLocale(searchParamLocale)) {
return searchParamLocale
}
diff --git a/clients/packages/checkout/src/components/AmountLabel.tsx b/clients/packages/checkout/src/components/AmountLabel.tsx
index b35192779f..2cd25211f5 100644
--- a/clients/packages/checkout/src/components/AmountLabel.tsx
+++ b/clients/packages/checkout/src/components/AmountLabel.tsx
@@ -1,5 +1,5 @@
import { formatCurrency } from '@polar-sh/currency'
-import type { SupportedLocale } from '@polar-sh/i18n'
+import type { AcceptedLocale } from '@polar-sh/i18n'
import type { SubscriptionRecurringInterval } from '@polar-sh/sdk/models/components/subscriptionrecurringinterval'
import { useMemo } from 'react'
import { formatRecurringInterval } from '../utils/product'
@@ -10,7 +10,7 @@ interface AmountLabelProps {
mode: 'compact' | 'standard'
interval?: SubscriptionRecurringInterval | null
intervalCount?: number | null
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const AmountLabel: React.FC = ({
@@ -31,7 +31,7 @@ const AmountLabel: React.FC = ({
return (
- {formatCurrency(mode)(amount, currency)}
+ {formatCurrency(mode, locale)(amount, currency)}
{intervalDisplay ? (
{intervalDisplay}
) : null}
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 185ad4d31f..7bc0c97254 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -1,7 +1,7 @@
'use client'
import { formatCurrency } from '@polar-sh/currency'
-import { SupportedLocale, formatDate, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, formatDate, getTranslationLocale, useTranslations } from '@polar-sh/i18n'
import { CountryAlpha2Input } from '@polar-sh/sdk/models/components/addressinput'
import type { CheckoutConfirmStripe } from '@polar-sh/sdk/models/components/checkoutconfirmstripe'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
@@ -94,7 +94,7 @@ interface BaseCheckoutFormProps {
disabled?: boolean
isUpdatePending?: boolean
themePreset: ThemingPresetProps
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const BaseCheckoutForm = ({
@@ -137,7 +137,7 @@ const BaseCheckoutForm = ({
[product],
)
- const locale: SupportedLocale = localeProp || 'en'
+ const locale: AcceptedLocale = localeProp || 'en'
const t = useTranslations(locale)
@@ -825,15 +825,15 @@ const BaseCheckoutForm = ({
{checkout.discount && (
<>
- {formatCurrency('standard')(
+ {formatCurrency('standard', locale)(
-checkout.discountAmount,
checkout.currency,
)}
- {formatCurrency('standard')(
+ {formatCurrency('standard', locale)(
checkout.netAmount,
checkout.currency,
)}
@@ -843,7 +843,7 @@ const BaseCheckoutForm = ({
{checkout.taxAmount !== null
- ? formatCurrency('standard')(
+ ? formatCurrency('standard', locale)(
checkout.taxAmount,
checkout.currency,
)
@@ -988,7 +988,7 @@ interface CheckoutFormProps {
isUpdatePending?: boolean
theme?: 'light' | 'dark'
themePreset: ThemingPresetProps
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const StripeCheckoutForm = (props: CheckoutFormProps) => {
@@ -1046,7 +1046,7 @@ const StripeCheckoutForm = (props: CheckoutFormProps) => {
stripe={stripePromise}
options={{
...elementsOptions,
- locale,
+ locale: locale ? getTranslationLocale(locale) : undefined,
customerSessionClientSecret: (
checkout.paymentProcessorMetadata as {
customer_session_client_secret?: string
diff --git a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
index 264b405591..0e1b3d3c2f 100644
--- a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
@@ -1,5 +1,5 @@
import { formatCurrency } from '@polar-sh/currency'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic.js'
import { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic.js'
import { ProductPriceCustom } from '@polar-sh/sdk/models/components/productpricecustom.js'
@@ -21,7 +21,7 @@ export interface CheckoutPWYWFormProps {
checkout: CheckoutPublic
productPrice: ProductPriceCustom
themePreset: ThemingPresetProps
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
export const CheckoutPWYWForm = ({
@@ -46,19 +46,19 @@ export const CheckoutPWYWForm = ({
// Handle gap validation when free is allowed (minimumAmount = 0)
if (minimumAmount === 0 && value > 0 && value < 50) {
return t('checkout.pwywForm.amountFreeOrMinimum', {
- min: formatCurrency('compact')(50, checkout.currency),
+ min: formatCurrency('compact', locale)(50, checkout.currency),
})
}
if (value < minimumAmount) {
return t('checkout.pwywForm.amountMinimum', {
- min: formatCurrency('compact')(minimumAmount, checkout.currency),
+ min: formatCurrency('compact', locale)(minimumAmount, checkout.currency),
})
}
return true
},
- [minimumAmount, checkout.currency],
+ [minimumAmount, checkout.currency, locale],
)
const debouncedAmountUpdate = useDebouncedCallback(
@@ -89,7 +89,7 @@ export const CheckoutPWYWForm = ({
minimumAmount === 0
? null
: t('checkout.pwywForm.minimum', {
- amount: formatCurrency('compact')(minimumAmount, checkout.currency),
+ amount: formatCurrency('compact', locale)(minimumAmount, checkout.currency),
})
return (
diff --git a/clients/packages/checkout/src/components/CheckoutPricing.tsx b/clients/packages/checkout/src/components/CheckoutPricing.tsx
index 5296b53e90..aa62a2cbaa 100644
--- a/clients/packages/checkout/src/components/CheckoutPricing.tsx
+++ b/clients/packages/checkout/src/components/CheckoutPricing.tsx
@@ -1,7 +1,7 @@
'use client'
import { formatCurrency } from '@polar-sh/currency'
-import type { SupportedLocale } from '@polar-sh/i18n'
+import type { AcceptedLocale } from '@polar-sh/i18n'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { ProductCheckoutPublic } from '../guards'
@@ -18,7 +18,7 @@ const CheckoutProductAmountLabel = ({
}: {
checkout: ProductCheckoutPublic
layout?: 'default' | 'stacked'
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}) => {
const { product, productPrice, discount } = checkout
if (!discount || productPrice.amountType !== 'fixed') {
@@ -51,7 +51,7 @@ const CheckoutProductAmountLabel = ({
-
{getDiscountDisplay(discount)}
+
{getDiscountDisplay(discount, locale)}
@@ -66,7 +66,7 @@ interface CheckoutPricingProps {
update?: (data: CheckoutUpdatePublic) => Promise
disabled?: boolean
layout?: 'default' | 'stacked'
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const CheckoutPricing = ({
@@ -85,7 +85,7 @@ const CheckoutPricing = ({
{productPrice.amountType !== 'custom' ? (
) : (
- formatCurrency('compact')(amount, productPrice.priceCurrency)
+ formatCurrency('compact', locale)(amount, productPrice.priceCurrency)
)}
diff --git a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
index 7b4b63b2e6..f6718da7bc 100644
--- a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
+++ b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
@@ -1,6 +1,6 @@
'use client'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice.js'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice.js'
@@ -24,7 +24,7 @@ interface CheckoutProductSwitcherProps {
update?: (data: CheckoutUpdatePublic) => Promise
disabled?: boolean
themePreset: ThemingPresetProps
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const CheckoutProductSwitcher = ({
diff --git a/clients/packages/checkout/src/components/CheckoutSeatSelector.tsx b/clients/packages/checkout/src/components/CheckoutSeatSelector.tsx
index cb26ff9ef9..afbd5117e0 100644
--- a/clients/packages/checkout/src/components/CheckoutSeatSelector.tsx
+++ b/clients/packages/checkout/src/components/CheckoutSeatSelector.tsx
@@ -1,7 +1,7 @@
'use client'
import { formatCurrency } from '@polar-sh/currency'
-import type { SupportedLocale } from '@polar-sh/i18n'
+import type { AcceptedLocale } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { HTTPValidationError } from '@polar-sh/sdk/models/errors/httpvalidationerror'
import Button from '@polar-sh/ui/components/atoms/Button'
@@ -13,7 +13,7 @@ import MeteredPricesDisplay from './MeteredPricesDisplay'
export interface CheckoutSeatSelectorProps {
checkout: ProductCheckoutPublic
update: (body: CheckoutUpdatePublic) => Promise
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const CheckoutSeatSelector = ({
@@ -149,10 +149,10 @@ const CheckoutSeatSelector = ({
{/* Total Amount Display */}
- {formatCurrency('compact')(netAmount, currency)}
+ {formatCurrency('compact', locale)(netAmount, currency)}
- {formatCurrency('compact')(pricePerSeat, currency)} per seat
+ {formatCurrency('compact', locale)(pricePerSeat, currency)} per seat
diff --git a/clients/packages/checkout/src/components/MeteredPriceLabel.tsx b/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
index 3d4a648665..0bc562f48d 100644
--- a/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
@@ -1,10 +1,10 @@
import { formatCurrency } from '@polar-sh/currency'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { ProductPriceMeteredUnit } from '@polar-sh/sdk/models/components/productpricemeteredunit.js'
interface MeteredPriceLabelProps {
price: ProductPriceMeteredUnit
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const MeteredPriceLabel: React.FC = ({
@@ -15,7 +15,7 @@ const MeteredPriceLabel: React.FC = ({
return (
- {formatCurrency('subcent')(
+ {formatCurrency('subcent', locale)(
Number.parseFloat(price.unitAmount),
price.priceCurrency,
)}
diff --git a/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx b/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
index 77cbac6593..6554b647ea 100644
--- a/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
+++ b/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
@@ -1,6 +1,6 @@
'use client'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
import { useMemo } from 'react'
import { ProductCheckoutPublic } from '../guards'
@@ -29,7 +29,7 @@ const GaugeIcon = ({ className }: { className?: string }) => {
interface MeteredPricesDisplayProps {
checkout: ProductCheckoutPublic
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const MeteredPricesDisplay = ({ checkout, locale }: MeteredPricesDisplayProps) => {
diff --git a/clients/packages/checkout/src/components/ProductPriceLabel.tsx b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
index 28580301a3..18752ddd1d 100644
--- a/clients/packages/checkout/src/components/ProductPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
@@ -1,4 +1,4 @@
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { CheckoutProduct } from '@polar-sh/sdk/models/components/checkoutproduct'
import type { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
@@ -9,7 +9,7 @@ import MeteredPriceLabel from './MeteredPriceLabel'
interface ProductPriceLabelProps {
product: CheckoutProduct
price: ProductPrice | LegacyRecurringProductPrice
- locale?: SupportedLocale
+ locale?: AcceptedLocale
}
const ProductPriceLabel: React.FC
= ({
diff --git a/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx b/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
index 2c0b9dbb7a..88023e9a83 100644
--- a/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
+++ b/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
@@ -11,7 +11,7 @@ import { NotOpenCheckout } from '@polar-sh/sdk/models/errors/notopencheckout.js'
import { PaymentError } from '@polar-sh/sdk/models/errors/paymenterror.js'
import { PaymentNotReady } from '@polar-sh/sdk/models/errors/paymentnotready.js'
import { TrialAlreadyRedeemed } from '@polar-sh/sdk/models/errors/trialalreadyredeemed'
-import { type SupportedLocale, useTranslations } from '@polar-sh/i18n'
+import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type {
ConfirmationToken,
Stripe,
@@ -50,7 +50,7 @@ export const CheckoutFormContext = createContext(stub)
export const CheckoutFormProvider = ({
children,
locale,
-}: React.PropsWithChildren<{ locale?: SupportedLocale }>) => {
+}: React.PropsWithChildren<{ locale?: AcceptedLocale }>) => {
const { checkout, update: updateOuter, confirm: confirmOuter } = useCheckout()
const t = useTranslations(locale ?? 'en')
const [loading, setLoading] = useState(false)
diff --git a/clients/packages/checkout/src/utils/discount.ts b/clients/packages/checkout/src/utils/discount.ts
index 6bb68464f5..13005d4958 100644
--- a/clients/packages/checkout/src/utils/discount.ts
+++ b/clients/packages/checkout/src/utils/discount.ts
@@ -1,4 +1,5 @@
import { formatCurrency } from '@polar-sh/currency'
+import type { AcceptedLocale } from '@polar-sh/i18n'
import type { CheckoutDiscountFixedOnceForeverDuration } from '@polar-sh/sdk/models/components/checkoutdiscountfixedonceforeverduration'
import type { CheckoutDiscountFixedRepeatDuration } from '@polar-sh/sdk/models/components/checkoutdiscountfixedrepeatduration'
import type { CheckoutDiscountPercentageOnceForeverDuration } from '@polar-sh/sdk/models/components/checkoutdiscountpercentageonceforeverduration'
@@ -26,17 +27,16 @@ const isDiscountPercentage = (
return discount.type === 'percentage'
}
-const percentageFormatter = new Intl.NumberFormat('en-US', {
- style: 'percent',
- maximumFractionDigits: 2,
-})
-
-export const getDiscountDisplay = (discount: CheckoutDiscount): string => {
+export const getDiscountDisplay = (discount: CheckoutDiscount, locale?: AcceptedLocale): string => {
if (isDiscountPercentage(discount)) {
+ const percentageFormatter = new Intl.NumberFormat(locale, {
+ style: 'percent',
+ maximumFractionDigits: 2,
+ })
return percentageFormatter.format(-discount.basisPoints / 10000)
}
if (isDiscountFixed(discount)) {
- return formatCurrency('compact')(-discount.amount, discount.currency, 0)
+ return formatCurrency('compact', locale)(-discount.amount, discount.currency)
}
throw new Error('Unknown discount type')
}
diff --git a/clients/packages/checkout/src/utils/product.ts b/clients/packages/checkout/src/utils/product.ts
index 354f00047c..b8f3847a7c 100644
--- a/clients/packages/checkout/src/utils/product.ts
+++ b/clients/packages/checkout/src/utils/product.ts
@@ -1,6 +1,7 @@
import {
+ type AcceptedLocale,
+ getTranslationLocale,
getTranslations,
- type SupportedLocale,
} from '@polar-sh/i18n'
import type { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
@@ -16,11 +17,11 @@ const enSuffixes: Record = {
other: 'th',
}
-const ordinal = (number: number, locale: SupportedLocale = 'en'): string => {
+const ordinal = (number: number, locale: AcceptedLocale = 'en'): string => {
const rules = new Intl.PluralRules(locale, { type: 'ordinal' })
const category = rules.select(number)
- if (locale === 'nl') {
+ if (getTranslationLocale(locale) === 'nl') {
return `${number}e`
}
@@ -40,7 +41,7 @@ export const formatRecurringInterval = (
interval: SubscriptionRecurringInterval | null | undefined,
intervalCount?: number | null,
format: 'short' | 'long' = 'long',
- locale: SupportedLocale = 'en',
+ locale: AcceptedLocale = 'en',
): string => {
if (!interval) {
return ''
@@ -66,7 +67,7 @@ export const formatRecurringInterval = (
export const formatRecurringFrequency = (
interval: SubscriptionRecurringInterval | null | undefined,
intervalCount?: number | null,
- locale: SupportedLocale = 'en',
+ locale: AcceptedLocale = 'en',
): string => {
if (!interval) {
return ''
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index a1d1c66682..b0776fadc1 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -4,10 +4,38 @@ export const SUPPORTED_LOCALES = ['en', 'nl'] as const
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
export const DEFAULT_LOCALE = 'en'
+// Expand bare language codes to include region variants,
+// but keep region-specific codes (like future 'pt-BR') exact
+type Alpha =
+ | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M'
+ | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z'
+type ResolveBCP47 =
+ T extends `${string}-${string}`
+ ? T
+ : T | `${T}-${Alpha}${Alpha}`
+
+export type AcceptedLocale = ResolveBCP47
+
+export function getTranslationLocale(locale: AcceptedLocale): SupportedLocale {
+ if (SUPPORTED_LOCALES.includes(locale as SupportedLocale)) {
+ return locale as SupportedLocale
+ }
+ const language = locale.split('-')[0].toLowerCase()
+ if (SUPPORTED_LOCALES.includes(language as SupportedLocale)) {
+ return language as SupportedLocale
+ }
+ return DEFAULT_LOCALE
+}
+
+export function isAcceptedLocale(value: string): value is AcceptedLocale {
+ const language = value.split('-')[0].toLowerCase()
+ return SUPPORTED_LOCALES.includes(language as SupportedLocale)
+}
+
const formatterCache = new Map()
function formatCacheKey(
- locale: SupportedLocale,
+ locale: string,
options: Intl.DateTimeFormatOptions,
): string {
const sorted = Object.keys(options)
@@ -20,7 +48,7 @@ function formatCacheKey(
}
function getDateFormatter(
- locale: SupportedLocale,
+ locale: string,
options?: Intl.DateTimeFormatOptions,
): Intl.DateTimeFormat {
const opts = options ?? { dateStyle: 'medium' as const }
@@ -35,7 +63,7 @@ function getDateFormatter(
export function formatDate(
date: Date | string,
- locale: SupportedLocale = DEFAULT_LOCALE,
+ locale: AcceptedLocale = DEFAULT_LOCALE,
options?: Intl.DateTimeFormatOptions,
): string {
const d = typeof date === 'string' ? new Date(date) : date
@@ -147,12 +175,13 @@ const translations: Record> = {
}
export function getTranslations(
- locale: SupportedLocale = DEFAULT_LOCALE,
+ locale: AcceptedLocale = DEFAULT_LOCALE,
): Translations {
- return (translations[locale] ?? translations[DEFAULT_LOCALE]) as Translations
+ const translationLocale = getTranslationLocale(locale)
+ return (translations[translationLocale] ?? translations[DEFAULT_LOCALE]) as Translations
}
-export const useTranslations = (locale: SupportedLocale): TranslateFn => {
+export const useTranslations = (locale: AcceptedLocale): TranslateFn => {
return useCallback(
((key: string, interpolations?: Record) => {
const translations = getTranslations(locale)
From c1cd903f127582a3de9c7d75460ea1649d7daa79 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Mon, 9 Feb 2026 13:02:06 +0100
Subject: [PATCH 17/69] Fix types
---
.../Benefit/LicenseKeys/LicenseKeyDetails.tsx | 19 ++++++++++++++++++-
clients/apps/web/src/utils/unreachable.ts | 3 +++
2 files changed, 21 insertions(+), 1 deletion(-)
create mode 100644 clients/apps/web/src/utils/unreachable.ts
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
index b98e602a3b..665c20b92f 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
@@ -2,6 +2,7 @@ import { schemas } from '@polar-sh/client'
import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
+import { unreachable } from '@/utils/unreachable'
import { twMerge } from 'tailwind-merge'
export interface LicenseKeyDetails {
@@ -10,6 +11,22 @@ export interface LicenseKeyDetails {
locale?: AcceptedLocale
}
+const getLicenseKeyStatusLabel = (
+ status: schemas['LicenseKeyStatus'],
+ t: ReturnType,
+) => {
+ switch (status) {
+ case 'granted':
+ return t('checkout.benefits.licenseKey.statusGranted')
+ case 'revoked':
+ return t('checkout.benefits.licenseKey.statusRevoked')
+ case 'disabled':
+ return t('checkout.benefits.licenseKey.statusDisabled')
+ default:
+ unreachable(status)
+ }
+}
+
export const LicenseKeyDetails = ({
className,
licenseKey,
@@ -29,7 +46,7 @@ export const LicenseKeyDetails = ({
{t('checkout.benefits.licenseKey.status')}
- {t(`checkout.benefits.licenseKey.status${licenseKey.status.charAt(0).toUpperCase()}${licenseKey.status.slice(1)}`)}
+ {getLicenseKeyStatusLabel(licenseKey.status, t)}
{licenseKey.limit_usage && (
diff --git a/clients/apps/web/src/utils/unreachable.ts b/clients/apps/web/src/utils/unreachable.ts
new file mode 100644
index 0000000000..4a7181c69b
--- /dev/null
+++ b/clients/apps/web/src/utils/unreachable.ts
@@ -0,0 +1,3 @@
+export function unreachable(value: never): never {
+ throw new Error(`Unreachable: ${value}`)
+}
From c313870dfe325ea641b08d3e4ccda1b70bf77858 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Mon, 9 Feb 2026 13:57:32 +0100
Subject: [PATCH 18/69] Use constant `DEFAULT_LOCALE`
---
.../apps/web/src/components/Benefit/BenefitGrant.tsx | 10 +++++-----
.../Benefit/LicenseKeys/LicenseKeyActivations.tsx | 4 ++--
.../Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx | 6 +++---
.../Benefit/LicenseKeys/LicenseKeyDetails.tsx | 4 ++--
.../web/src/components/Checkout/CheckoutBenefits.tsx | 4 ++--
.../apps/web/src/components/Checkout/CheckoutCard.tsx | 4 ++--
.../src/components/Checkout/CheckoutConfirmation.tsx | 6 +++---
.../apps/web/src/components/Products/BenefitList.tsx | 4 ++--
.../checkout/src/components/CheckoutPWYWForm.tsx | 4 ++--
.../src/components/CheckoutProductSwitcher.tsx | 4 ++--
.../checkout/src/components/MeteredPriceLabel.tsx | 4 ++--
.../checkout/src/components/MeteredPricesDisplay.tsx | 4 ++--
.../checkout/src/components/ProductPriceLabel.tsx | 4 ++--
.../checkout/src/providers/CheckoutFormProvider.tsx | 4 ++--
14 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
index d3dca58fad..8896af040a 100644
--- a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
+++ b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
@@ -1,7 +1,7 @@
import { useCustomerBenefitGrantUpdate } from '@/hooks/queries'
import { markdownOptions } from '@/utils/markdown'
import { Client, schemas } from '@polar-sh/client'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import Button from '@polar-sh/ui/components/atoms/Button'
import {
Select,
@@ -67,7 +67,7 @@ const BenefitGrantOAuth = ({
connectButtonText: string
selectPlaceholder: string
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const pathname = usePathname()
const searchParams = useSearchParams()
const {
@@ -279,7 +279,7 @@ const BenefitGrantGitHubRepository = ({
benefitGrant: schemas['CustomerBenefitGrantGitHubRepository']
locale?: AcceptedLocale
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const {
benefit: {
properties: { repository_owner, repository_name },
@@ -310,7 +310,7 @@ const BenefitGrantDiscord = ({
benefitGrant: schemas['CustomerBenefitGrantDiscord']
locale?: AcceptedLocale
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const {
benefit: {
properties: { guild_id },
@@ -331,7 +331,7 @@ const BenefitGrantDiscord = ({
}
export const BenefitGrant = ({ api, benefitGrant, locale }: BenefitGrantProps) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const { benefit } = benefitGrant
return (
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
index cd6872f282..3f0e5d74e9 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
@@ -2,7 +2,7 @@ import { toast } from '@/components/Toast/use-toast'
import { useCustomerLicenseKeyDeactivate } from '@/hooks/queries'
import CloseOutlined from '@mui/icons-material/CloseOutlined'
import { Client, schemas } from '@polar-sh/client'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import Button from '@polar-sh/ui/components/atoms/Button'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import { List, ListItem } from '@polar-sh/ui/components/atoms/List'
@@ -19,7 +19,7 @@ export const LicenseKeyActivations = ({
licenseKey,
locale,
}: LicenseKeyActivationsProps) => {
- const resolvedLocale = locale ?? 'en'
+ const resolvedLocale = locale ?? DEFAULT_LOCALE
const t = useTranslations(resolvedLocale)
const onDeactivate = useCustomerLicenseKeyDeactivate(api, licenseKey.id)
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
index 8ac293c6aa..c5681e5224 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyBenefitGrant.tsx
@@ -1,7 +1,7 @@
import { toast } from '@/components/Toast/use-toast'
import { useCustomerLicenseKey } from '@/hooks/queries'
import { Client, schemas } from '@polar-sh/client'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import CopyToClipboardInput from '@polar-sh/ui/components/atoms/CopyToClipboardInput'
import { LicenseKeyActivations } from './LicenseKeyActivations'
import { LicenseKeyDetails } from './LicenseKeyDetails'
@@ -15,7 +15,7 @@ const LicenseKey = ({
licenseKey: schemas['LicenseKeyWithActivations']
locale?: AcceptedLocale
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
if (!licenseKey) {
return <>>
@@ -48,7 +48,7 @@ export const LicenseKeyBenefitGrant = ({
benefitGrant: schemas['CustomerBenefitGrantLicenseKeys']
locale?: AcceptedLocale
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const { data: licenseKey, isLoading } = useCustomerLicenseKey(
api,
benefitGrant.properties.license_key_id as string,
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
index 665c20b92f..983825ca68 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
@@ -1,5 +1,5 @@
import { schemas } from '@polar-sh/client'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
import { unreachable } from '@/utils/unreachable'
@@ -32,7 +32,7 @@ export const LicenseKeyDetails = ({
licenseKey,
locale,
}: LicenseKeyDetails) => {
- const resolvedLocale = locale ?? 'en'
+ const resolvedLocale = locale ?? DEFAULT_LOCALE
const t = useTranslations(resolvedLocale)
return (
diff --git a/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx b/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
index ff725bfb9a..f950aba19a 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
@@ -2,7 +2,7 @@ import { useCustomerBenefitGrants } from '@/hooks/queries/customerPortal'
import { useCustomerSSE } from '@/hooks/sse'
import { createClientSideAPI } from '@/utils/client'
import type { ProductCheckoutPublic } from '@polar-sh/checkout/guards'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import { List, ListItem } from '@polar-sh/ui/components/atoms/List'
import { useEffect } from 'react'
import { BenefitGrant } from '../Benefit/BenefitGrant'
@@ -21,7 +21,7 @@ const CheckoutBenefits = ({
customerSessionToken,
maxWaitingTimeMs = 15000,
}: CheckoutBenefitsProps) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const api = createClientSideAPI(customerSessionToken)
const { data: benefitGrants, refetch } = useCustomerBenefitGrants(api, {
checkout_id: checkout.id,
diff --git a/clients/apps/web/src/components/Checkout/CheckoutCard.tsx b/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
index 6c5097dabd..3170be6ccd 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
@@ -6,7 +6,7 @@ import {
CheckoutSeatSelector,
} from '@polar-sh/checkout/components'
import type { ProductCheckoutPublic } from '@polar-sh/checkout/guards'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
export interface CheckoutCardProps {
@@ -22,7 +22,7 @@ export const CheckoutCard = ({
disabled,
locale,
}: CheckoutCardProps) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const { product, productPrice } = checkout
const isSeatBased = productPrice && productPrice.amountType === 'seat_based'
diff --git a/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx b/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
index 2f2bcb8e76..a2698b50fa 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
@@ -4,7 +4,7 @@ import { useCheckoutConfirmedRedirect } from '@/hooks/checkout'
import { useCheckoutClientSSE } from '@/hooks/sse'
import { getServerURL } from '@/utils/api'
import { hasProductCheckout } from '@polar-sh/checkout/guards'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import { PolarCore } from '@polar-sh/sdk/core'
import { checkoutsClientGet } from '@polar-sh/sdk/funcs/checkoutsClientGet'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
@@ -36,7 +36,7 @@ const StripeRequiresAction = ({
checkout: CheckoutPublic
locale?: AcceptedLocale
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const [pendingHandling, setPendingHandling] = useState(false)
const [success, setSuccess] = useState(false)
const { intent_status, intent_client_secret } =
@@ -114,7 +114,7 @@ export const CheckoutConfirmation = ({
disabled,
maxWaitingTimeMs = 15000,
}: CheckoutConfirmationProps) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const router = useRouter()
const client = useMemo(() => new PolarCore({ serverURL: getServerURL() }), [])
const [checkout, setCheckout] = useState(_checkout)
diff --git a/clients/apps/web/src/components/Products/BenefitList.tsx b/clients/apps/web/src/components/Products/BenefitList.tsx
index c227ea6357..059b929e8f 100644
--- a/clients/apps/web/src/components/Products/BenefitList.tsx
+++ b/clients/apps/web/src/components/Products/BenefitList.tsx
@@ -1,5 +1,5 @@
import { schemas } from '@polar-sh/client'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import { ChevronDown, ChevronUp, Plus } from 'lucide-react'
import React, { ReactNode, useState } from 'react'
import { resolveBenefitIcon } from '../Benefit/utils'
@@ -38,7 +38,7 @@ export const BenefitList = ({
toggle?: boolean
locale?: AcceptedLocale
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const [showAll, setShowAll] = useState(false)
if (!benefits) return <>>
diff --git a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
index 0e1b3d3c2f..a6fdf92722 100644
--- a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
@@ -1,5 +1,5 @@
import { formatCurrency } from '@polar-sh/currency'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic.js'
import { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic.js'
import { ProductPriceCustom } from '@polar-sh/sdk/models/components/productpricecustom.js'
@@ -31,7 +31,7 @@ export const CheckoutPWYWForm = ({
themePreset,
locale,
}: CheckoutPWYWFormProps) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const { amount } = checkout
const form = useForm<{ amount: number }>({
diff --git a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
index f6718da7bc..717ce3ad7c 100644
--- a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
+++ b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
@@ -1,6 +1,6 @@
'use client'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice.js'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice.js'
@@ -33,7 +33,7 @@ const CheckoutProductSwitcher = ({
themePreset,
locale,
}: CheckoutProductSwitcherProps) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const {
product: selectedProduct,
diff --git a/clients/packages/checkout/src/components/MeteredPriceLabel.tsx b/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
index 0bc562f48d..ca52899988 100644
--- a/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
@@ -1,5 +1,5 @@
import { formatCurrency } from '@polar-sh/currency'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { ProductPriceMeteredUnit } from '@polar-sh/sdk/models/components/productpricemeteredunit.js'
interface MeteredPriceLabelProps {
@@ -11,7 +11,7 @@ const MeteredPriceLabel: React.FC = ({
price,
locale,
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
return (
diff --git a/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx b/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
index 6554b647ea..136409ed33 100644
--- a/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
+++ b/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
@@ -1,6 +1,6 @@
'use client'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
import { useMemo } from 'react'
import { ProductCheckoutPublic } from '../guards'
@@ -33,7 +33,7 @@ interface MeteredPricesDisplayProps {
}
const MeteredPricesDisplay = ({ checkout, locale }: MeteredPricesDisplayProps) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const { product, prices, productPrice } = checkout
// Get the metered prices, minus the currently selected one, in case there are only metered prices
diff --git a/clients/packages/checkout/src/components/ProductPriceLabel.tsx b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
index 18752ddd1d..0af4f2d70f 100644
--- a/clients/packages/checkout/src/components/ProductPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
@@ -1,4 +1,4 @@
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type { CheckoutProduct } from '@polar-sh/sdk/models/components/checkoutproduct'
import type { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
@@ -17,7 +17,7 @@ const ProductPriceLabel: React.FC
= ({
price,
locale,
}) => {
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
if (price.amountType === 'fixed') {
return (
diff --git a/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx b/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
index 88023e9a83..b340342c48 100644
--- a/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
+++ b/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
@@ -11,7 +11,7 @@ import { NotOpenCheckout } from '@polar-sh/sdk/models/errors/notopencheckout.js'
import { PaymentError } from '@polar-sh/sdk/models/errors/paymenterror.js'
import { PaymentNotReady } from '@polar-sh/sdk/models/errors/paymentnotready.js'
import { TrialAlreadyRedeemed } from '@polar-sh/sdk/models/errors/trialalreadyredeemed'
-import { type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type {
ConfirmationToken,
Stripe,
@@ -52,7 +52,7 @@ export const CheckoutFormProvider = ({
locale,
}: React.PropsWithChildren<{ locale?: AcceptedLocale }>) => {
const { checkout, update: updateOuter, confirm: confirmOuter } = useCheckout()
- const t = useTranslations(locale ?? 'en')
+ const t = useTranslations(locale ?? DEFAULT_LOCALE)
const [loading, setLoading] = useState(false)
const [loadingLabel, setLoadingLabel] = useState()
const [isUpdatePending, setIsUpdatePending] = useState(false)
From 9e9d5cc28e1d7cce60fe402cc90ff2769289d812 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Mon, 9 Feb 2026 15:51:50 +0100
Subject: [PATCH 19/69] Resolve `pnpm-lock.yaml`
---
clients/pnpm-lock.yaml | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index aca30daa18..233c89d294 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -919,9 +919,6 @@ importers:
cmdk:
specifier: ^1.1.1
version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- countries-list:
- specifier: ^3.2.2
- version: 3.2.2
date-fns:
specifier: ^4.1.0
version: 4.1.0
@@ -6008,9 +6005,6 @@ packages:
typescript:
optional: true
- countries-list@3.2.2:
- resolution: {integrity: sha512-ABJ/RWQBrPWy+hRuZoW+0ooK8p65Eo3WmUZwHm6v4wmfSPznNAKzjy3+UUYrJK2v3182BVsgWxdB6ROidj39kw==}
-
crawler-user-agents@1.27.0:
resolution: {integrity: sha512-PNvzLBEEDVuOk9xpBt3FzDhy6TZT59quplFYZsvtrmZoRH5z+AdMoxhBIIN3f/sSXgEJ9JcWeMTNgbqV0/dvXw==}
@@ -18009,8 +18003,6 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
- countries-list@3.2.2: {}
-
crawler-user-agents@1.27.0: {}
create-jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
@@ -20649,7 +20641,7 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
merge-stream: 2.0.0
supports-color: 8.1.1
From 7b9dc2d5a21b6787a167154ae848899010822328 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Mon, 9 Feb 2026 16:24:42 +0100
Subject: [PATCH 20/69] Fix static analysis
---
.../src/components/Benefit/BenefitGrant.tsx | 16 ++++++--
.../LicenseKeys/LicenseKeyActivations.tsx | 19 +++++++--
.../LicenseKeys/LicenseKeyBenefitGrant.tsx | 16 ++++++--
.../Benefit/LicenseKeys/LicenseKeyDetails.tsx | 21 +++++++---
.../components/Checkout/CheckoutBenefits.tsx | 6 ++-
.../src/components/Checkout/CheckoutCard.tsx | 22 +++++++++--
.../Checkout/CheckoutConfirmation.tsx | 15 +++++--
.../src/components/Products/BenefitList.tsx | 10 ++++-
.../checkout/src/components/AmountLabel.tsx | 7 +++-
.../checkout/src/components/CheckoutForm.tsx | 7 +++-
.../src/components/CheckoutPWYWForm.tsx | 16 ++++++--
.../src/components/CheckoutPricing.tsx | 25 ++++++++++--
.../components/CheckoutProductSwitcher.tsx | 16 ++++++--
.../src/components/MeteredPriceLabel.tsx | 6 ++-
.../src/components/MeteredPricesDisplay.tsx | 21 ++++++++--
.../src/components/ProductPriceLabel.tsx | 16 ++++++--
.../src/providers/CheckoutFormProvider.tsx | 6 ++-
.../packages/checkout/src/utils/discount.ts | 10 ++++-
.../packages/checkout/src/utils/product.ts | 7 ++--
clients/packages/i18n/src/index.ts | 39 +++++++++++++++----
20 files changed, 241 insertions(+), 60 deletions(-)
diff --git a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
index 8896af040a..27aea29dcd 100644
--- a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
+++ b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
@@ -1,7 +1,11 @@
import { useCustomerBenefitGrantUpdate } from '@/hooks/queries'
import { markdownOptions } from '@/utils/markdown'
import { Client, schemas } from '@polar-sh/client'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import Button from '@polar-sh/ui/components/atoms/Button'
import {
Select,
@@ -245,7 +249,9 @@ const BenefitGrantOAuth = ({
{account.account_username}
))}
- {t('checkout.benefits.connectNewAccount')}
+
+ {t('checkout.benefits.connectNewAccount')}
+
{
+export const BenefitGrant = ({
+ api,
+ benefitGrant,
+ locale,
+}: BenefitGrantProps) => {
const t = useTranslations(locale ?? DEFAULT_LOCALE)
const { benefit } = benefitGrant
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
index 3f0e5d74e9..02834c8494 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyActivations.tsx
@@ -2,7 +2,11 @@ import { toast } from '@/components/Toast/use-toast'
import { useCustomerLicenseKeyDeactivate } from '@/hooks/queries'
import CloseOutlined from '@mui/icons-material/CloseOutlined'
import { Client, schemas } from '@polar-sh/client'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import Button from '@polar-sh/ui/components/atoms/Button'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import { List, ListItem } from '@polar-sh/ui/components/atoms/List'
@@ -34,12 +38,16 @@ export const LicenseKeyActivations = ({
.then(() => {
toast({
title: t('checkout.benefits.licenseKey.activationDeleted'),
- description: t('checkout.benefits.licenseKey.activationDeletedDescription'),
+ description: t(
+ 'checkout.benefits.licenseKey.activationDeletedDescription',
+ ),
})
})
.catch((error) => {
toast({
- title: t('checkout.benefits.licenseKey.activationDeactivationFailed'),
+ title: t(
+ 'checkout.benefits.licenseKey.activationDeactivationFailed',
+ ),
description: `${error.message}`,
})
})
@@ -62,7 +70,10 @@ export const LicenseKeyActivations = ({
{activation.label}
-
+
{
toast({
title: t('checkout.benefits.licenseKey.copiedToClipboard'),
- description: t('checkout.benefits.licenseKey.copiedToClipboardDescription'),
+ description: t(
+ 'checkout.benefits.licenseKey.copiedToClipboardDescription',
+ ),
})
}}
/>
-
+
>
)
}
diff --git a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
index 983825ca68..e1e52bc5df 100644
--- a/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
+++ b/clients/apps/web/src/components/Benefit/LicenseKeys/LicenseKeyDetails.tsx
@@ -1,8 +1,12 @@
+import { unreachable } from '@/utils/unreachable'
import { schemas } from '@polar-sh/client'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import FormattedDateTime from '@polar-sh/ui/components/atoms/FormattedDateTime'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
-import { unreachable } from '@/utils/unreachable'
import { twMerge } from 'tailwind-merge'
export interface LicenseKeyDetails {
@@ -45,12 +49,16 @@ export const LicenseKeyDetails = ({
- {t('checkout.benefits.licenseKey.status')}
+
+ {t('checkout.benefits.licenseKey.status')}
+
{getLicenseKeyStatusLabel(licenseKey.status, t)}
{licenseKey.limit_usage && (
-
{t('checkout.benefits.licenseKey.usage')}
+
+ {t('checkout.benefits.licenseKey.usage')}
+
{licenseKey.usage} / {licenseKey.limit_usage}
@@ -83,7 +91,10 @@ export const LicenseKeyDetails = ({
{licenseKey.expires_at ? (
-
+
) : (
{t('checkout.benefits.licenseKey.noExpiry')}
)}
diff --git a/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx b/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
index f950aba19a..b511e4b0b9 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutBenefits.tsx
@@ -2,7 +2,11 @@ import { useCustomerBenefitGrants } from '@/hooks/queries/customerPortal'
import { useCustomerSSE } from '@/hooks/sse'
import { createClientSideAPI } from '@/utils/client'
import type { ProductCheckoutPublic } from '@polar-sh/checkout/guards'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import { List, ListItem } from '@polar-sh/ui/components/atoms/List'
import { useEffect } from 'react'
import { BenefitGrant } from '../Benefit/BenefitGrant'
diff --git a/clients/apps/web/src/components/Checkout/CheckoutCard.tsx b/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
index 3170be6ccd..543841a3f8 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutCard.tsx
@@ -6,7 +6,11 @@ import {
CheckoutSeatSelector,
} from '@polar-sh/checkout/components'
import type { ProductCheckoutPublic } from '@polar-sh/checkout/guards'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import ShadowBox from '@polar-sh/ui/components/atoms/ShadowBox'
export interface CheckoutCardProps {
@@ -29,7 +33,11 @@ export const CheckoutCard = ({
return (
{isSeatBased && update ? (
-
+
) : (
0 ? (
-
{t('checkout.card.included')}
+
+ {t('checkout.card.included')}
+
-
+
) : (
diff --git a/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx b/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
index a2698b50fa..1918de4775 100644
--- a/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
+++ b/clients/apps/web/src/components/Checkout/CheckoutConfirmation.tsx
@@ -4,7 +4,11 @@ import { useCheckoutConfirmedRedirect } from '@/hooks/checkout'
import { useCheckoutClientSSE } from '@/hooks/sse'
import { getServerURL } from '@/utils/api'
import { hasProductCheckout } from '@polar-sh/checkout/guards'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import { PolarCore } from '@polar-sh/sdk/core'
import { checkoutsClientGet } from '@polar-sh/sdk/funcs/checkoutsClientGet'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
@@ -194,8 +198,7 @@ export const CheckoutConfirmation = ({
})}
>
)}
- {status === 'failed' &&
- t('checkout.confirmation.failedDescription')}
+ {status === 'failed' && t('checkout.confirmation.failedDescription')}
{status === 'confirmed' && (
@@ -203,7 +206,11 @@ export const CheckoutConfirmation = ({
{({ stripe }) => (
-
+
)}
diff --git a/clients/apps/web/src/components/Products/BenefitList.tsx b/clients/apps/web/src/components/Products/BenefitList.tsx
index 059b929e8f..af70ba62dd 100644
--- a/clients/apps/web/src/components/Products/BenefitList.tsx
+++ b/clients/apps/web/src/components/Products/BenefitList.tsx
@@ -1,5 +1,9 @@
import { schemas } from '@polar-sh/client'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import { ChevronDown, ChevronUp, Plus } from 'lucide-react'
import React, { ReactNode, useState } from 'react'
import { resolveBenefitIcon } from '../Benefit/utils'
@@ -91,7 +95,9 @@ export const BenefitList = ({
key="show"
icon={
}
>
- {t('checkout.benefits.showMoreBenefits', { count: toggled.length })}
+ {t('checkout.benefits.showMoreBenefits', {
+ count: toggled.length,
+ })}
)}
diff --git a/clients/packages/checkout/src/components/AmountLabel.tsx b/clients/packages/checkout/src/components/AmountLabel.tsx
index 2cd25211f5..cdd51b4d89 100644
--- a/clients/packages/checkout/src/components/AmountLabel.tsx
+++ b/clients/packages/checkout/src/components/AmountLabel.tsx
@@ -25,7 +25,12 @@ const AmountLabel: React.FC
= ({
if (!interval) {
return ''
}
- const formatted = formatRecurringInterval(interval, intervalCount, 'short', locale)
+ const formatted = formatRecurringInterval(
+ interval,
+ intervalCount,
+ 'short',
+ locale,
+ )
return formatted ? ` / ${formatted}` : ''
}, [interval, intervalCount, locale])
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 7bc0c97254..8a51a2007e 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -1,7 +1,12 @@
'use client'
import { formatCurrency } from '@polar-sh/currency'
-import { type AcceptedLocale, formatDate, getTranslationLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ type AcceptedLocale,
+ formatDate,
+ getTranslationLocale,
+ useTranslations,
+} from '@polar-sh/i18n'
import { CountryAlpha2Input } from '@polar-sh/sdk/models/components/addressinput'
import type { CheckoutConfirmStripe } from '@polar-sh/sdk/models/components/checkoutconfirmstripe'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
diff --git a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
index a6fdf92722..f02f01f31b 100644
--- a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
@@ -1,5 +1,9 @@
import { formatCurrency } from '@polar-sh/currency'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic.js'
import { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic.js'
import { ProductPriceCustom } from '@polar-sh/sdk/models/components/productpricecustom.js'
@@ -52,7 +56,10 @@ export const CheckoutPWYWForm = ({
if (value < minimumAmount) {
return t('checkout.pwywForm.amountMinimum', {
- min: formatCurrency('compact', locale)(minimumAmount, checkout.currency),
+ min: formatCurrency('compact', locale)(
+ minimumAmount,
+ checkout.currency,
+ ),
})
}
@@ -89,7 +96,10 @@ export const CheckoutPWYWForm = ({
minimumAmount === 0
? null
: t('checkout.pwywForm.minimum', {
- amount: formatCurrency('compact', locale)(minimumAmount, checkout.currency),
+ amount: formatCurrency('compact', locale)(
+ minimumAmount,
+ checkout.currency,
+ ),
})
return (
diff --git a/clients/packages/checkout/src/components/CheckoutPricing.tsx b/clients/packages/checkout/src/components/CheckoutPricing.tsx
index aa62a2cbaa..879232082e 100644
--- a/clients/packages/checkout/src/components/CheckoutPricing.tsx
+++ b/clients/packages/checkout/src/components/CheckoutPricing.tsx
@@ -22,7 +22,13 @@ const CheckoutProductAmountLabel = ({
}) => {
const { product, productPrice, discount } = checkout
if (!discount || productPrice.amountType !== 'fixed') {
- return
+ return (
+
+ )
}
return (
@@ -47,7 +53,11 @@ const CheckoutProductAmountLabel = ({
/>
@@ -83,9 +93,16 @@ const CheckoutPricing = ({
{productPrice.amountType !== 'custom' ? (
-
+
) : (
- formatCurrency('compact', locale)(amount, productPrice.priceCurrency)
+ formatCurrency('compact', locale)(
+ amount,
+ productPrice.priceCurrency,
+ )
)}
diff --git a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
index 717ce3ad7c..92c965f64b 100644
--- a/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
+++ b/clients/packages/checkout/src/components/CheckoutProductSwitcher.tsx
@@ -1,6 +1,10 @@
'use client'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import type { CheckoutUpdatePublic } from '@polar-sh/sdk/models/components/checkoutupdatepublic'
import { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice.js'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice.js'
@@ -77,7 +81,9 @@ const CheckoutProductSwitcher = ({
const intervalCount = product.recurringIntervalCount
if (interval) {
- const frequency = capitalize(formatRecurringFrequency(interval, intervalCount, locale))
+ const frequency = capitalize(
+ formatRecurringFrequency(interval, intervalCount, locale),
+ )
return t('checkout.productSwitcher.billedRecurring', { frequency })
}
@@ -111,7 +117,11 @@ const CheckoutProductSwitcher = ({
/>
diff --git a/clients/packages/checkout/src/components/MeteredPriceLabel.tsx b/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
index ca52899988..87b99d5f04 100644
--- a/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/MeteredPriceLabel.tsx
@@ -1,5 +1,9 @@
import { formatCurrency } from '@polar-sh/currency'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import type { ProductPriceMeteredUnit } from '@polar-sh/sdk/models/components/productpricemeteredunit.js'
interface MeteredPriceLabelProps {
diff --git a/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx b/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
index 136409ed33..36dc3b15fd 100644
--- a/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
+++ b/clients/packages/checkout/src/components/MeteredPricesDisplay.tsx
@@ -1,6 +1,10 @@
'use client'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
import { useMemo } from 'react'
import { ProductCheckoutPublic } from '../guards'
@@ -32,7 +36,10 @@ interface MeteredPricesDisplayProps {
locale?: AcceptedLocale
}
-const MeteredPricesDisplay = ({ checkout, locale }: MeteredPricesDisplayProps) => {
+const MeteredPricesDisplay = ({
+ checkout,
+ locale,
+}: MeteredPricesDisplayProps) => {
const t = useTranslations(locale ?? DEFAULT_LOCALE)
const { product, prices, productPrice } = checkout
@@ -51,14 +58,20 @@ const MeteredPricesDisplay = ({ checkout, locale }: MeteredPricesDisplayProps) =
return (
-
+ {t('checkout.pricing.additionalMeteredUsage')}
+
+ + {t('checkout.pricing.additionalMeteredUsage')}
+
{meteredPrices.map((price) => (
))}
diff --git a/clients/packages/checkout/src/components/ProductPriceLabel.tsx b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
index 0af4f2d70f..b08d2993e4 100644
--- a/clients/packages/checkout/src/components/ProductPriceLabel.tsx
+++ b/clients/packages/checkout/src/components/ProductPriceLabel.tsx
@@ -1,4 +1,8 @@
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import type { CheckoutProduct } from '@polar-sh/sdk/models/components/checkoutproduct'
import type { LegacyRecurringProductPrice } from '@polar-sh/sdk/models/components/legacyrecurringproductprice'
import type { ProductPrice } from '@polar-sh/sdk/models/components/productprice'
@@ -35,9 +39,15 @@ const ProductPriceLabel: React.FC
= ({
/>
)
} else if (price.amountType === 'custom') {
- return {t('checkout.pricing.payWhatYouWant')}
+ return (
+
+ {t('checkout.pricing.payWhatYouWant')}
+
+ )
} else if (price.amountType === 'free') {
- return {t('checkout.pricing.free')}
+ return (
+ {t('checkout.pricing.free')}
+ )
} else if (price.amountType === 'metered_unit') {
return (
diff --git a/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx b/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
index b340342c48..3da8c80de9 100644
--- a/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
+++ b/clients/packages/checkout/src/providers/CheckoutFormProvider.tsx
@@ -1,5 +1,10 @@
'use client'
+import {
+ DEFAULT_LOCALE,
+ useTranslations,
+ type AcceptedLocale,
+} from '@polar-sh/i18n'
import type { AddressInput } from '@polar-sh/sdk/models/components/addressinput'
import type { CheckoutConfirmStripe } from '@polar-sh/sdk/models/components/checkoutconfirmstripe'
import type { CheckoutPublic } from '@polar-sh/sdk/models/components/checkoutpublic'
@@ -11,7 +16,6 @@ import { NotOpenCheckout } from '@polar-sh/sdk/models/errors/notopencheckout.js'
import { PaymentError } from '@polar-sh/sdk/models/errors/paymenterror.js'
import { PaymentNotReady } from '@polar-sh/sdk/models/errors/paymentnotready.js'
import { TrialAlreadyRedeemed } from '@polar-sh/sdk/models/errors/trialalreadyredeemed'
-import { DEFAULT_LOCALE, type AcceptedLocale, useTranslations } from '@polar-sh/i18n'
import type {
ConfirmationToken,
Stripe,
diff --git a/clients/packages/checkout/src/utils/discount.ts b/clients/packages/checkout/src/utils/discount.ts
index 13005d4958..87a9f84760 100644
--- a/clients/packages/checkout/src/utils/discount.ts
+++ b/clients/packages/checkout/src/utils/discount.ts
@@ -27,7 +27,10 @@ const isDiscountPercentage = (
return discount.type === 'percentage'
}
-export const getDiscountDisplay = (discount: CheckoutDiscount, locale?: AcceptedLocale): string => {
+export const getDiscountDisplay = (
+ discount: CheckoutDiscount,
+ locale?: AcceptedLocale,
+): string => {
if (isDiscountPercentage(discount)) {
const percentageFormatter = new Intl.NumberFormat(locale, {
style: 'percent',
@@ -36,7 +39,10 @@ export const getDiscountDisplay = (discount: CheckoutDiscount, locale?: Accepted
return percentageFormatter.format(-discount.basisPoints / 10000)
}
if (isDiscountFixed(discount)) {
- return formatCurrency('compact', locale)(-discount.amount, discount.currency)
+ return formatCurrency('compact', locale)(
+ -discount.amount,
+ discount.currency,
+ )
}
throw new Error('Unknown discount type')
}
diff --git a/clients/packages/checkout/src/utils/product.ts b/clients/packages/checkout/src/utils/product.ts
index b8f3847a7c..a0a111378a 100644
--- a/clients/packages/checkout/src/utils/product.ts
+++ b/clients/packages/checkout/src/utils/product.ts
@@ -50,9 +50,10 @@ export const formatRecurringInterval = (
const t = getTranslations(locale)
const count = intervalCount && intervalCount > 1 ? intervalCount : null
const prefix = count ? `${ordinal(count, locale)} ` : ''
- const label = format === 'short'
- ? t.intervals.short[interval]
- : t.intervals.long[interval]
+ const label =
+ format === 'short'
+ ? t.intervals.short[interval]
+ : t.intervals.long[interval]
return `${prefix}${label}`
}
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index b0776fadc1..eea8af9403 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -7,12 +7,35 @@ export const DEFAULT_LOCALE = 'en'
// Expand bare language codes to include region variants,
// but keep region-specific codes (like future 'pt-BR') exact
type Alpha =
- | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M'
- | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z'
-type ResolveBCP47
=
- T extends `${string}-${string}`
- ? T
- : T | `${T}-${Alpha}${Alpha}`
+ | 'A'
+ | 'B'
+ | 'C'
+ | 'D'
+ | 'E'
+ | 'F'
+ | 'G'
+ | 'H'
+ | 'I'
+ | 'J'
+ | 'K'
+ | 'L'
+ | 'M'
+ | 'N'
+ | 'O'
+ | 'P'
+ | 'Q'
+ | 'R'
+ | 'S'
+ | 'T'
+ | 'U'
+ | 'V'
+ | 'W'
+ | 'X'
+ | 'Y'
+ | 'Z'
+type ResolveBCP47 = T extends `${string}-${string}`
+ ? T
+ : T | `${T}-${Alpha}${Alpha}`
export type AcceptedLocale = ResolveBCP47
@@ -178,7 +201,8 @@ export function getTranslations(
locale: AcceptedLocale = DEFAULT_LOCALE,
): Translations {
const translationLocale = getTranslationLocale(locale)
- return (translations[translationLocale] ?? translations[DEFAULT_LOCALE]) as Translations
+ return (translations[translationLocale] ??
+ translations[DEFAULT_LOCALE]) as Translations
}
export const useTranslations = (locale: AcceptedLocale): TranslateFn => {
@@ -234,4 +258,3 @@ export const useTranslations = (locale: AcceptedLocale): TranslateFn => {
[locale],
)
}
-
From 27f05026dde07fd41f78e1bfe8e8867fee0bfbee Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Mon, 9 Feb 2026 20:47:35 +0100
Subject: [PATCH 21/69] Fix `.prettierignore`
---
clients/packages/i18n/.prettierignore | 1 +
1 file changed, 1 insertion(+)
create mode 100644 clients/packages/i18n/.prettierignore
diff --git a/clients/packages/i18n/.prettierignore b/clients/packages/i18n/.prettierignore
new file mode 100644
index 0000000000..849ddff3b7
--- /dev/null
+++ b/clients/packages/i18n/.prettierignore
@@ -0,0 +1 @@
+dist/
From 0ca420fbc9099ed4f563ee3377923e133ed7868e Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Tue, 10 Feb 2026 13:41:02 +0100
Subject: [PATCH 22/69] Use checkout/customer locale in checkout if available
---
clients/apps/web/package.json | 2 +-
.../checkout/[clientSecret]/confirmation/page.tsx | 4 ++--
.../web/src/app/checkout/[clientSecret]/page.tsx | 6 ++++--
clients/apps/web/src/utils/i18n/index.ts | 5 +++++
clients/packages/checkout/package.json | 2 +-
clients/pnpm-lock.yaml | 14 +++++++-------
server/polar/checkout/service.py | 3 +++
7 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/clients/apps/web/package.json b/clients/apps/web/package.json
index 8f386d835a..9607d22b09 100644
--- a/clients/apps/web/package.json
+++ b/clients/apps/web/package.json
@@ -44,7 +44,7 @@
"@polar-sh/customer-portal": "workspace:*",
"@polar-sh/i18n": "workspace:*",
"@polar-sh/mdx": "workspace:*",
- "@polar-sh/sdk": "^0.42.5",
+ "@polar-sh/sdk": "^0.43.0",
"@polar-sh/ui": "workspace:*",
"@posthog/ai": "^7.5.4",
"@posthog/core": "^1.14.0",
diff --git a/clients/apps/web/src/app/checkout/[clientSecret]/confirmation/page.tsx b/clients/apps/web/src/app/checkout/[clientSecret]/confirmation/page.tsx
index f7568d6680..039a48adb9 100644
--- a/clients/apps/web/src/app/checkout/[clientSecret]/confirmation/page.tsx
+++ b/clients/apps/web/src/app/checkout/[clientSecret]/confirmation/page.tsx
@@ -21,8 +21,6 @@ export default async function Page(props: {
const { embed, theme, locale: _locale, customer_session_token } = searchParams
- const locale = await resolveLocale(_locale)
-
const params = await props.params
const { clientSecret } = params
@@ -65,6 +63,8 @@ export default async function Page(props: {
redirect(checkout.url)
}
+ const locale = await resolveLocale(_locale, checkout.locale)
+
return (
{
if (searchParamLocale && isAcceptedLocale(searchParamLocale)) {
return searchParamLocale
}
+ if (checkoutLocale && isAcceptedLocale(checkoutLocale)) {
+ return checkoutLocale
+ }
+
const headersList = await headers()
const acceptLanguage = headersList.get('accept-language')
diff --git a/clients/packages/checkout/package.json b/clients/packages/checkout/package.json
index 5534e473ab..3905a8a06f 100644
--- a/clients/packages/checkout/package.json
+++ b/clients/packages/checkout/package.json
@@ -73,7 +73,7 @@
},
"dependencies": {
"@polar-sh/currency": "workspace:^",
- "@polar-sh/sdk": "^0.42.5",
+ "@polar-sh/sdk": "^0.43.0",
"@polar-sh/ui": "workspace:^",
"@polar-sh/i18n": "workspace:*",
"event-source-plus": "^0.1.15",
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index 233c89d294..36c85de278 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -344,8 +344,8 @@ importers:
specifier: workspace:*
version: link:../../packages/mdx
'@polar-sh/sdk':
- specifier: ^0.42.5
- version: 0.42.5
+ specifier: ^0.43.0
+ version: 0.43.0
'@polar-sh/ui':
specifier: workspace:*
version: link:../../packages/ui
@@ -639,8 +639,8 @@ importers:
specifier: workspace:*
version: link:../i18n
'@polar-sh/sdk':
- specifier: ^0.42.5
- version: 0.42.5
+ specifier: ^0.43.0
+ version: 0.43.0
'@polar-sh/ui':
specifier: workspace:^
version: link:../ui
@@ -3186,8 +3186,8 @@ packages:
resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==}
engines: {node: '>=12'}
- '@polar-sh/sdk@0.42.5':
- resolution: {integrity: sha512-GzC3/ElCtMO55+KeXwFTANlydZzw5qI3DU/F9vAFIsUKuegSmh+Xu03KCL+ct9/imJOvLUQucYhUSsNKqo2j2Q==}
+ '@polar-sh/sdk@0.43.0':
+ resolution: {integrity: sha512-LvbnPAo5h9wAOpq8sgzonip0PtzU2UZydqxUpWeOdHjaBWNgV36dPRY3oQA7XD4EzRsUJhVl3hVc6sp1GnTX8g==}
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
@@ -14535,7 +14535,7 @@ snapshots:
'@pnpm/network.ca-file': 1.0.2
config-chain: 1.1.13
- '@polar-sh/sdk@0.42.5':
+ '@polar-sh/sdk@0.43.0':
dependencies:
standardwebhooks: 1.0.0
zod: 4.3.6
diff --git a/server/polar/checkout/service.py b/server/polar/checkout/service.py
index c9916add15..7e9f6e6928 100644
--- a/server/polar/checkout/service.py
+++ b/server/polar/checkout/service.py
@@ -537,6 +537,9 @@ async def create(
getattr(checkout.customer, attribute),
)
+ if checkout.locale is None and checkout.customer.locale is not None:
+ checkout.locale = checkout.customer.locale
+
# Auto-select business customer if they have both a billing name (without the fallback to customer.name)
# and a billing address since that means they've previously checked the is_business_customer checkbox
# Only auto-select if is_business_customer wasn't explicitly set in the request
From fdf968f5e1c6244e2f402069616afb402c33767c Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Tue, 10 Feb 2026 15:05:05 +0100
Subject: [PATCH 23/69] Store accepted locale on checkout upon confirmation
---
clients/packages/checkout/src/components/CheckoutForm.tsx | 1 +
1 file changed, 1 insertion(+)
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 8a51a2007e..2f28247998 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -268,6 +268,7 @@ const BaseCheckoutForm = ({
await confirm({
...data,
+ locale: localeProp,
customFieldData: cleanedFieldData,
})
}
From 682a5f25d3102ceb6996ad9a9036fc61886cbd25 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Tue, 10 Feb 2026 15:16:07 +0100
Subject: [PATCH 24/69] Set customer locale from checkout locale
---
server/polar/checkout/service.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/server/polar/checkout/service.py b/server/polar/checkout/service.py
index 7e9f6e6928..78f87ea24b 100644
--- a/server/polar/checkout/service.py
+++ b/server/polar/checkout/service.py
@@ -2488,6 +2488,8 @@ async def _create_or_update_customer(
customer.billing_address = checkout.customer_billing_address
if checkout.customer_tax_id is not None:
customer.tax_id = checkout.customer_tax_id
+ if checkout.locale is not None:
+ customer.locale = checkout.locale
customer.stripe_customer_id = stripe_customer_id
customer.user_metadata = {
From 591595190d0d71b28a88697f10e1b981d83aa591 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Tue, 10 Feb 2026 15:37:33 +0100
Subject: [PATCH 25/69] Fix sudden Stripe type error
---
clients/packages/checkout/src/components/CheckoutForm.tsx | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 2f28247998..8bf0de9542 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -1062,7 +1062,13 @@ const StripeCheckoutForm = (props: CheckoutFormProps) => {
}}
>
- {({ stripe, elements }) => (
+ {({
+ stripe,
+ elements,
+ }: {
+ elements: StripeElements | null
+ stripe: Stripe | null
+ }) => (
Date: Tue, 10 Feb 2026 15:38:05 +0100
Subject: [PATCH 26/69] Pass `locale` to `CountryPicker`
---
clients/packages/checkout/src/components/CheckoutForm.tsx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/clients/packages/checkout/src/components/CheckoutForm.tsx b/clients/packages/checkout/src/components/CheckoutForm.tsx
index 8bf0de9542..a07784a07c 100644
--- a/clients/packages/checkout/src/components/CheckoutForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutForm.tsx
@@ -2,10 +2,10 @@
import { formatCurrency } from '@polar-sh/currency'
import {
- type AcceptedLocale,
formatDate,
getTranslationLocale,
useTranslations,
+ type AcceptedLocale,
} from '@polar-sh/i18n'
import { CountryAlpha2Input } from '@polar-sh/sdk/models/components/addressinput'
import type { CheckoutConfirmStripe } from '@polar-sh/sdk/models/components/checkoutconfirmstripe'
@@ -667,6 +667,7 @@ const BaseCheckoutForm = ({
placeholder={t(
'checkout.form.billingAddress.country',
)}
+ locale={locale}
/>
>
From 733fda15eb244311844c9302eec988704d749470 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Tue, 10 Feb 2026 19:29:31 +0100
Subject: [PATCH 27/69] Fix (unrelated) build error
---
clients/apps/web/package.json | 2 +-
clients/package.json | 2 +-
clients/packages/checkout/package.json | 2 +-
clients/packages/customer-portal/package.json | 2 +-
clients/packages/i18n/package.json | 6 +-
clients/packages/ui/package.json | 2 +-
.../src/components/atoms/PercentageInput.tsx | 14 +-
clients/pnpm-lock.yaml | 2074 ++++++++---------
8 files changed, 1018 insertions(+), 1086 deletions(-)
diff --git a/clients/apps/web/package.json b/clients/apps/web/package.json
index 9607d22b09..a86efc4920 100644
--- a/clients/apps/web/package.json
+++ b/clients/apps/web/package.json
@@ -116,7 +116,7 @@
"@types/mdx": "^2.0.13",
"@types/node": "^24.0.0",
"@types/qrcode": "^1.5.6",
- "@types/react": "19.2.10",
+ "@types/react": "19.2.13",
"@types/react-dom": "19.2.3",
"@types/tinycolor2": "^1.4.6",
"@types/web": "^0.0.323",
diff --git a/clients/package.json b/clients/package.json
index c3fe19f230..69a143efda 100644
--- a/clients/package.json
+++ b/clients/package.json
@@ -28,7 +28,7 @@
},
"pnpm": {
"overrides": {
- "@types/react": "19.2.3",
+ "@types/react": "19.2.13",
"@types/react-dom": "19.2.3"
},
"patchedDependencies": {
diff --git a/clients/packages/checkout/package.json b/clients/packages/checkout/package.json
index 3905a8a06f..db0cfe7150 100644
--- a/clients/packages/checkout/package.json
+++ b/clients/packages/checkout/package.json
@@ -65,7 +65,7 @@
"@polar-sh/typescript-config": "workspace:*",
"@stripe/react-stripe-js": "^4.0.2",
"@stripe/stripe-js": "^7.9.0",
- "@types/react": "19.2.10",
+ "@types/react": "19.2.13",
"react": "^19.2.4",
"terser": "^5.46.0",
"tsup": "^8.5.1",
diff --git a/clients/packages/customer-portal/package.json b/clients/packages/customer-portal/package.json
index 08855752f3..f34f4528a7 100644
--- a/clients/packages/customer-portal/package.json
+++ b/clients/packages/customer-portal/package.json
@@ -41,7 +41,7 @@
"@polar-sh/eslint-config": "workspace:*",
"@polar-sh/typescript-config": "workspace:*",
"@testing-library/react": "^16.3.2",
- "@types/react": "^19.2.10",
+ "@types/react": "^19.2.13",
"eslint": "^9.39.2",
"jsdom": "^25.0.0",
"msw": "^2.12.7",
diff --git a/clients/packages/i18n/package.json b/clients/packages/i18n/package.json
index c5e83da831..9ab46d4647 100644
--- a/clients/packages/i18n/package.json
+++ b/clients/packages/i18n/package.json
@@ -38,17 +38,17 @@
"devDependencies": {
"@polar-sh/typescript-config": "workspace:*",
"@types/node": "^22.16.1",
- "@types/react": "^19.2.9",
+ "@types/react": "^19.2.13",
"dotenv": "^16.4.5",
"openai": "^4.103.0",
"prettier": "^3.7.4",
- "react": "^19.2.3",
+ "react": "^19.2.4",
"tsx": "^4.19.0",
"tsup": "^8.5.1",
"typescript": "latest",
"vitest": "^3.2.4"
},
"peerDependencies": {
- "react": "^19.2.3"
+ "react": "^19.2.4"
}
}
diff --git a/clients/packages/ui/package.json b/clients/packages/ui/package.json
index f324b31b39..3b816804e0 100644
--- a/clients/packages/ui/package.json
+++ b/clients/packages/ui/package.json
@@ -64,7 +64,7 @@
},
"devDependencies": {
"@polar-sh/typescript-config": "workspace:*",
- "@types/react": "19.2.10",
+ "@types/react": "19.2.13",
"@types/react-dom": "19.2.3",
"prettier": "^3.8.1",
"react": "^19.2.4",
diff --git a/clients/packages/ui/src/components/atoms/PercentageInput.tsx b/clients/packages/ui/src/components/atoms/PercentageInput.tsx
index 6887d1a724..64bacf99d9 100644
--- a/clients/packages/ui/src/components/atoms/PercentageInput.tsx
+++ b/clients/packages/ui/src/components/atoms/PercentageInput.tsx
@@ -1,5 +1,11 @@
import { Percent } from 'lucide-react'
-import { ChangeEvent, FocusEvent, useCallback, useState } from 'react'
+import {
+ ChangeEvent,
+ FocusEvent,
+ InputEvent,
+ useCallback,
+ useState,
+} from 'react'
import { twMerge } from 'tailwind-merge'
import Input from './Input'
@@ -52,11 +58,11 @@ const PercentageInput = (props: Props) => {
[_onChange],
)
- const onInput = (e: ChangeEvent) => {
- const value = e.target.value
+ const onInput = (e: InputEvent) => {
+ const value = e.currentTarget.value
const regex = /^\d+([\.,]\d{0,2})?$/
if (!regex.test(value)) {
- e.target.value = Number.parseFloat(value).toFixed(2)
+ e.currentTarget.value = Number.parseFloat(value).toFixed(2)
}
}
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index 36c85de278..81fc658487 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -6,7 +6,7 @@ settings:
overrides:
sharp: 0.33.3
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
patchedDependencies:
@@ -50,22 +50,22 @@ importers:
version: 0.3.1(@react-navigation/core@7.13.6(react@19.1.0))(expo@54.0.29)(react@19.1.0)
'@dev-plugins/react-query':
specifier: ^0.1.0
- version: 0.1.0(@tanstack/react-query@5.90.12(react@19.1.0))(expo@54.0.29)
+ version: 0.1.0(@tanstack/react-query@5.90.20(react@19.1.0))(expo@54.0.29)
'@expo-google-fonts/instrument-serif':
specifier: ^0.4.1
version: 0.4.1
'@expo/metro-runtime':
specifier: ~6.1.2
- version: 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@expo/ui':
specifier: 0.2.0-beta.7
- version: 0.2.0-beta.7(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 0.2.0-beta.7(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@expo/vector-icons':
specifier: ^15.0.3
- version: 15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@gorhom/bottom-sheet':
specifier: ^5.2.8
- version: 5.2.8(@types/react@19.2.3)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 5.2.8(@types/react@19.2.13)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@polar-sh/client':
specifier: workspace:*
version: link:../../packages/client
@@ -74,55 +74,55 @@ importers:
version: link:../../packages/currency
'@react-native-async-storage/async-storage':
specifier: 2.2.0
- version: 2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
'@react-native-community/cli':
specifier: latest
- version: 20.0.2(typescript@5.9.3)
+ version: 20.1.1(typescript@5.9.3)
'@react-native-community/netinfo':
specifier: ^11.4.1
- version: 11.4.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 11.4.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
'@react-navigation/bottom-tabs':
specifier: ^7.8.12
- version: 7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@react-navigation/native':
specifier: ^7.1.25
- version: 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@sentry/react-native':
specifier: ^7.7.0
- version: 7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@shopify/flash-list':
specifier: 2.0.2
- version: 2.0.2(@babel/runtime@7.28.4)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 2.0.2(@babel/runtime@7.28.4)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@shopify/react-native-skia':
specifier: 2.2.12
- version: 2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@shopify/restyle':
specifier: ^2.4.5
- version: 2.4.5(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 2.4.5(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@tanstack/react-query':
specifier: ^5.90.12
- version: 5.90.12(react@19.1.0)
+ version: 5.90.20(react@19.1.0)
date-fns:
specifier: ^4.1.0
version: 4.1.0
expo:
specifier: ~54.0.29
- version: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-asset:
specifier: ~12.0.11
- version: 12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-auth-session:
specifier: ~7.0.10
- version: 7.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 7.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-blur:
specifier: ~15.0.8
- version: 15.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 15.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-clipboard:
specifier: ~8.0.8
- version: 8.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 8.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-constants:
specifier: ~18.0.12
- version: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
expo-crypto:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.29)
@@ -134,25 +134,25 @@ importers:
version: 8.0.10(expo@54.0.29)
expo-font:
specifier: ~14.0.10
- version: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-haptics:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.29)
expo-image:
specifier: ~3.0.11
- version: 3.0.11(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 3.0.11(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-insights:
specifier: ~0.10.8
version: 0.10.8(expo@54.0.29)
expo-linking:
specifier: ~8.0.10
- version: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-notifications:
specifier: ~0.32.15
- version: 0.32.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 0.32.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-router:
specifier: ~6.0.19
- version: 6.0.19(daa6e6378deabbbe32c786346aac9231)
+ version: 6.0.19(aa3baf8ebd5df0659b3f7f24f4fab4c5)
expo-secure-store:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.29)
@@ -161,25 +161,25 @@ importers:
version: 31.0.12(expo@54.0.29)
expo-status-bar:
specifier: ~3.0.9
- version: 3.0.9(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 3.0.9(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-store-review:
specifier: ^9.0.9
- version: 9.0.9(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 9.0.9(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
expo-symbols:
specifier: ~1.0.8
- version: 1.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 1.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
expo-system-ui:
specifier: ~6.0.9
- version: 6.0.9(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 6.0.9(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
expo-updates:
specifier: ~29.0.15
- version: 29.0.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 29.0.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-web-browser:
specifier: ~15.0.10
- version: 15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ version: 15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
nativewind:
specifier: ^4.2.1
- version: 4.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))
+ version: 4.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))
patch-package:
specifier: ^8.0.1
version: 8.0.1
@@ -194,34 +194,34 @@ importers:
version: 6.0.0(react@19.1.0)
react-hook-form:
specifier: ^7.68.0
- version: 7.68.0(react@19.1.0)
+ version: 7.71.1(react@19.1.0)
react-native:
specifier: 0.81.5
- version: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
react-native-gesture-handler:
specifier: ~2.28.0
- version: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react-native-reanimated:
specifier: ~4.1.6
- version: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react-native-safe-area-context:
specifier: ^5.6.2
- version: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react-native-screens:
specifier: ~4.16.0
- version: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react-native-svg:
specifier: 15.12.1
- version: 15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react-native-web:
specifier: ~0.21.2
version: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react-native-webview:
specifier: 13.15.0
- version: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react-native-worklets:
specifier: 0.5.1
- version: 0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
slugify:
specifier: ^1.6.6
version: 1.6.6
@@ -230,7 +230,7 @@ importers:
version: 3.4.19(tsx@4.21.0)(yaml@2.8.2)
victory-native:
specifier: ^41.20.2
- version: 41.20.2(304cb029cd54f6dc7590a1eb71d5c0a3)
+ version: 41.20.2(bdcba2c82d78fb08aa89c4ee71f9fe53)
devDependencies:
'@babel/core':
specifier: ^7.28.5
@@ -242,8 +242,8 @@ importers:
specifier: ^29.5.14
version: 29.5.14
'@types/react':
- specifier: 19.2.3
- version: 19.2.3
+ specifier: 19.2.13
+ version: 19.2.13
'@types/react-test-renderer':
specifier: ^18.3.1
version: 18.3.1
@@ -255,10 +255,10 @@ importers:
version: 10.0.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ version: 29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
jest-expo:
specifier: ~54.0.16
- version: 54.0.16(@babel/core@7.28.5)(expo@54.0.29)(jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ version: 54.0.16(@babel/core@7.28.5)(expo@54.0.29)(jest@29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react-test-renderer:
specifier: 18.3.1
version: 18.3.1(react@19.1.0)
@@ -297,10 +297,10 @@ importers:
version: 3.2.2(react@19.2.4)
'@emotion/react':
specifier: ^11.14.0
- version: 11.14.0(@types/react@19.2.3)(react@19.2.4)
+ version: 11.14.0(@types/react@19.2.13)(react@19.2.4)
'@emotion/styled':
specifier: ^11.14.1
- version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)
'@hookform/error-message':
specifier: ^2.0.1
version: 2.0.1(react-dom@19.2.4(react@19.2.4))(react-hook-form@7.71.1(react@19.2.4))(react@19.2.4)
@@ -309,19 +309,19 @@ importers:
version: 3.1.1(webpack@5.102.1)
'@mdx-js/react':
specifier: ^3.1.1
- version: 3.1.1(@types/react@19.2.3)(react@19.2.4)
+ version: 3.1.1(@types/react@19.2.13)(react@19.2.4)
'@modelcontextprotocol/sdk':
specifier: ^1.25.3
version: 1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)
'@mui/icons-material':
specifier: ^7.3.7
- version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ version: 7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)
'@mui/material':
specifier: ^7.3.7
- version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@next/mdx':
specifier: ^16.1.5
- version: 16.1.6(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4))
+ version: 16.1.6(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))
'@next/third-parties':
specifier: ^16.1.5
version: 16.1.6(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4)
@@ -357,13 +357,13 @@ importers:
version: 1.20.0
'@radix-ui/react-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.16
- version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-toast':
specifier: ^1.2.15
- version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@sentry/nextjs':
specifier: ^10.37.0
version: 10.38.0(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4)(webpack@5.102.1)
@@ -471,7 +471,7 @@ importers:
version: 14.3.8(react@19.2.4)
react-focus-lock:
specifier: ^2.13.7
- version: 2.13.7(@types/react@19.2.3)(react@19.2.4)
+ version: 2.13.7(@types/react@19.2.13)(react@19.2.4)
react-hook-form:
specifier: ~7.71.1
version: 7.71.1(react@19.2.4)
@@ -483,7 +483,7 @@ importers:
version: 17.6.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
recharts:
specifier: ^3.7.0
- version: 3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1)
+ version: 3.7.0(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1)
rehype-mdx-import-media:
specifier: ^1.2.0
version: 1.2.0
@@ -555,11 +555,11 @@ importers:
specifier: ^1.5.6
version: 1.5.6
'@types/react':
- specifier: 19.2.3
- version: 19.2.3
+ specifier: 19.2.13
+ version: 19.2.13
'@types/react-dom':
specifier: 19.2.3
- version: 19.2.3(@types/react@19.2.3)
+ version: 19.2.3(@types/react@19.2.13)
'@types/tinycolor2':
specifier: ^1.4.6
version: 1.4.6
@@ -667,8 +667,8 @@ importers:
specifier: ^7.9.0
version: 7.9.0
'@types/react':
- specifier: 19.2.3
- version: 19.2.3
+ specifier: 19.2.13
+ version: 19.2.13
react:
specifier: ^19.2.4
version: 19.2.4
@@ -726,10 +726,10 @@ importers:
version: link:../client
'@tanstack/react-query':
specifier: ^5.0.0
- version: 5.90.16(react@19.2.3)
+ version: 5.90.20(react@19.2.4)
react:
specifier: ^18.0.0 || ^19.0.0
- version: 19.2.3
+ version: 19.2.4
devDependencies:
'@polar-sh/eslint-config':
specifier: workspace:*
@@ -739,10 +739,10 @@ importers:
version: link:../typescript-config
'@testing-library/react':
specifier: ^16.3.2
- version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.3))(react@19.2.3)
+ version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@types/react':
- specifier: 19.2.3
- version: 19.2.3
+ specifier: 19.2.13
+ version: 19.2.13
eslint:
specifier: ^9.39.2
version: 9.39.2(jiti@2.6.1)
@@ -807,8 +807,8 @@ importers:
specifier: ^22.16.1
version: 22.19.3
'@types/react':
- specifier: 19.2.3
- version: 19.2.3
+ specifier: 19.2.13
+ version: 19.2.13
dotenv:
specifier: ^16.4.5
version: 16.6.1
@@ -817,10 +817,10 @@ importers:
version: 4.104.0(ws@8.18.3)
prettier:
specifier: ^3.7.4
- version: 3.7.4
+ version: 3.8.1
react:
- specifier: ^19.2.3
- version: 19.2.3
+ specifier: ^19.2.4
+ version: 19.2.4
tsup:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
@@ -858,55 +858,55 @@ importers:
version: link:../currency
'@radix-ui/react-accordion':
specifier: ^1.2.12
- version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-alert-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-checkbox':
specifier: ^1.3.3
- version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-dialog':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-dropdown-menu':
specifier: ^2.1.16
- version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-label':
specifier: ^2.1.8
- version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-popover':
specifier: ^1.1.15
- version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-radio-group':
specifier: ^1.3.8
- version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-select':
specifier: ^2.2.6
- version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-separator':
specifier: ^1.1.8
- version: 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-slot':
specifier: ^1.2.4
- version: 1.2.4(@types/react@19.2.3)(react@19.2.4)
+ version: 1.2.4(@types/react@19.2.13)(react@19.2.4)
'@radix-ui/react-switch':
specifier: ^1.2.6
- version: 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-tabs':
specifier: ^1.1.13
- version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-toast':
specifier: ^1.2.15
- version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-toggle':
specifier: ^1.1.10
- version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-toggle-group':
specifier: ^1.1.11
- version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@radix-ui/react-tooltip':
specifier: ^1.2.8
- version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@tanstack/react-table':
specifier: ^8.21.3
version: 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -918,7 +918,7 @@ importers:
version: 2.1.1
cmdk:
specifier: ^1.1.1
- version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
date-fns:
specifier: ^4.1.0
version: 4.1.0
@@ -939,7 +939,7 @@ importers:
version: 8.3.0(react@19.2.4)
recharts:
specifier: ^3.7.0
- version: 3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1)
+ version: 3.7.0(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1)
tailwind-merge:
specifier: ^3.4.0
version: 3.4.0
@@ -948,11 +948,11 @@ importers:
specifier: workspace:*
version: link:../typescript-config
'@types/react':
- specifier: 19.2.3
- version: 19.2.3
+ specifier: 19.2.13
+ version: 19.2.13
'@types/react-dom':
specifier: 19.2.3
- version: 19.2.3(@types/react@19.2.3)
+ version: 19.2.3(@types/react@19.2.13)
prettier:
specifier: ^3.8.1
version: 3.8.1
@@ -2289,7 +2289,7 @@ packages:
'@gorhom/bottom-sheet@5.2.8':
resolution: {integrity: sha512-+N27SMpbBxXZQ/IA2nlEV6RGxL/qSFHKfdFKcygvW+HqPG5jVNb1OqehLQsGfBP+Up42i0gW5ppI+DhpB7UCzA==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-native': '*'
react: '*'
react-native: '*'
@@ -2706,7 +2706,7 @@ packages:
'@mdx-js/react@3.1.1':
resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: '>=16'
'@modelcontextprotocol/sdk@1.26.0':
@@ -2731,7 +2731,7 @@ packages:
engines: {node: '>=14.0.0'}
peerDependencies:
'@mui/material': ^7.3.7
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
@@ -2744,7 +2744,7 @@ packages:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
'@mui/material-pigment-css': ^7.3.7
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
@@ -2761,7 +2761,7 @@ packages:
resolution: {integrity: sha512-w7r1+CYhG0syCAQUWAuV5zSaU2/67WA9JXUderdb7DzCIJdp/5RmJv6L85wRjgKCMsxFF0Kfn0kPgPbPgw/jdw==}
engines: {node: '>=14.0.0'}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
@@ -2786,7 +2786,7 @@ packages:
peerDependencies:
'@emotion/react': ^11.5.0
'@emotion/styled': ^11.3.0
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@emotion/react':
@@ -2799,7 +2799,7 @@ packages:
'@mui/types@7.4.10':
resolution: {integrity: sha512-0+4mSjknSu218GW3isRqoxKRTOrTLd/vHi/7UC4+wZcUrOAqD9kRk7UQRL1mcrzqRoe7s3UT6rsRpbLkW5mHpQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
peerDependenciesMeta:
'@types/react':
optional: true
@@ -2808,7 +2808,7 @@ packages:
resolution: {integrity: sha512-+YjnjMRnyeTkWnspzoxRdiSOgkrcpTikhNPoxOZW0APXx+urHtUoXJ9lbtCZRCA5a4dg5gSbd19alL1DvRs5fg==}
engines: {node: '>=14.0.0'}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
@@ -3156,10 +3156,6 @@ packages:
peerDependencies:
'@opentelemetry/api': '>=1.3.0 <1.10.0'
- '@opentelemetry/semantic-conventions@1.38.0':
- resolution: {integrity: sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==}
- engines: {node: '>=14'}
-
'@opentelemetry/semantic-conventions@1.39.0':
resolution: {integrity: sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==}
engines: {node: '>=14'}
@@ -3255,7 +3251,7 @@ packages:
'@radix-ui/react-accordion@1.2.12':
resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3268,7 +3264,7 @@ packages:
'@radix-ui/react-alert-dialog@1.1.15':
resolution: {integrity: sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3281,7 +3277,7 @@ packages:
'@radix-ui/react-arrow@1.1.7':
resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3294,7 +3290,7 @@ packages:
'@radix-ui/react-checkbox@1.3.3':
resolution: {integrity: sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3307,7 +3303,7 @@ packages:
'@radix-ui/react-collapsible@1.1.12':
resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3320,7 +3316,7 @@ packages:
'@radix-ui/react-collection@1.1.7':
resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3333,7 +3329,7 @@ packages:
'@radix-ui/react-compose-refs@1.1.2':
resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3342,7 +3338,7 @@ packages:
'@radix-ui/react-context@1.1.2':
resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3351,7 +3347,7 @@ packages:
'@radix-ui/react-dialog@1.1.15':
resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3364,7 +3360,7 @@ packages:
'@radix-ui/react-direction@1.1.1':
resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3373,7 +3369,7 @@ packages:
'@radix-ui/react-dismissable-layer@1.1.11':
resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3386,7 +3382,7 @@ packages:
'@radix-ui/react-dropdown-menu@2.1.16':
resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3399,7 +3395,7 @@ packages:
'@radix-ui/react-focus-guards@1.1.3':
resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3408,7 +3404,7 @@ packages:
'@radix-ui/react-focus-scope@1.1.7':
resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3421,7 +3417,7 @@ packages:
'@radix-ui/react-id@1.1.1':
resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3430,7 +3426,7 @@ packages:
'@radix-ui/react-label@2.1.8':
resolution: {integrity: sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3443,7 +3439,7 @@ packages:
'@radix-ui/react-menu@2.1.16':
resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3456,7 +3452,7 @@ packages:
'@radix-ui/react-popover@1.1.15':
resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3469,7 +3465,7 @@ packages:
'@radix-ui/react-popper@1.2.8':
resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3482,7 +3478,7 @@ packages:
'@radix-ui/react-portal@1.1.9':
resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3495,7 +3491,7 @@ packages:
'@radix-ui/react-presence@1.1.5':
resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3508,7 +3504,7 @@ packages:
'@radix-ui/react-primitive@2.1.3':
resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3521,7 +3517,7 @@ packages:
'@radix-ui/react-primitive@2.1.4':
resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3534,7 +3530,7 @@ packages:
'@radix-ui/react-radio-group@1.3.8':
resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3547,7 +3543,7 @@ packages:
'@radix-ui/react-roving-focus@1.1.11':
resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3560,7 +3556,7 @@ packages:
'@radix-ui/react-select@2.2.6':
resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3573,7 +3569,7 @@ packages:
'@radix-ui/react-separator@1.1.8':
resolution: {integrity: sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3586,7 +3582,7 @@ packages:
'@radix-ui/react-slot@1.2.0':
resolution: {integrity: sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3595,7 +3591,7 @@ packages:
'@radix-ui/react-slot@1.2.3':
resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3604,7 +3600,7 @@ packages:
'@radix-ui/react-slot@1.2.4':
resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3613,7 +3609,7 @@ packages:
'@radix-ui/react-switch@1.2.6':
resolution: {integrity: sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3626,7 +3622,7 @@ packages:
'@radix-ui/react-tabs@1.1.13':
resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3639,7 +3635,7 @@ packages:
'@radix-ui/react-toast@1.2.15':
resolution: {integrity: sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3652,7 +3648,7 @@ packages:
'@radix-ui/react-toggle-group@1.1.11':
resolution: {integrity: sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3665,7 +3661,7 @@ packages:
'@radix-ui/react-toggle@1.1.10':
resolution: {integrity: sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3678,7 +3674,7 @@ packages:
'@radix-ui/react-tooltip@1.2.8':
resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3691,7 +3687,7 @@ packages:
'@radix-ui/react-use-callback-ref@1.1.1':
resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3700,7 +3696,7 @@ packages:
'@radix-ui/react-use-controllable-state@1.2.2':
resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3709,7 +3705,7 @@ packages:
'@radix-ui/react-use-effect-event@0.0.2':
resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3718,7 +3714,7 @@ packages:
'@radix-ui/react-use-escape-keydown@1.1.1':
resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3727,7 +3723,7 @@ packages:
'@radix-ui/react-use-layout-effect@1.1.1':
resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3736,7 +3732,7 @@ packages:
'@radix-ui/react-use-previous@1.1.1':
resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3745,7 +3741,7 @@ packages:
'@radix-ui/react-use-rect@1.1.1':
resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3754,7 +3750,7 @@ packages:
'@radix-ui/react-use-size@1.1.1':
resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3763,7 +3759,7 @@ packages:
'@radix-ui/react-visually-hidden@1.2.3':
resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
@@ -3781,41 +3777,41 @@ packages:
peerDependencies:
react-native: ^0.0.0-0 || >=0.65 <1.0
- '@react-native-community/cli-clean@20.0.2':
- resolution: {integrity: sha512-hfbC69fTD0fqZCCep8aqnVztBXUhAckNhi76lEV7USENtgBRwNq2s1wATgKAzOhxKuAL9TEkf5TZ/Dhp/YLhCQ==}
+ '@react-native-community/cli-clean@20.1.1':
+ resolution: {integrity: sha512-6nGQ08w2+EcDwTFC4JFiW/wI2pLwzMrk9thz4um7tKRNW8sADX0IyCsfM2F4rHS720C0UNKYBZE9nAsfp8Vkcw==}
- '@react-native-community/cli-config-android@20.0.2':
- resolution: {integrity: sha512-5yZ2Grr89omnMptV36ilV4EIrRLrIYQAsTTVU/hNI2vL7lz6WB8rPhP5QuovXk3TIjl1Wz2r9A6ZNO2SNJ8nig==}
+ '@react-native-community/cli-config-android@20.1.1':
+ resolution: {integrity: sha512-1iUV2rPAyoWPo8EceAFC2vZTF+pEd9YqS87c0aqpbGOFE0gs1rHEB+auVR8CdjzftR4U9sq6m2jrdst0rvpIkg==}
- '@react-native-community/cli-config-apple@20.0.2':
- resolution: {integrity: sha512-6MLL9Duu/JytqI6XfYuc78LSkRGfJoCqTSfqTJzBNSnz6S7XJps9spGBlgvrGh/j0howBpQlFH0J8Ws4N4mCxA==}
+ '@react-native-community/cli-config-apple@20.1.1':
+ resolution: {integrity: sha512-doepJgLJVqeJb5tNoP9hyFIcoZ1OMGO7QN/YMuCCIjbThUQe/J87XdwPol3Qrjr58KRt9xeBVz+kHeW5mtSutw==}
- '@react-native-community/cli-config@20.0.2':
- resolution: {integrity: sha512-OuSAyqTv0MBbRqSyO+80IKasHnwLESydZBTrLjIGwGhDokMH07mZo8Io2H8X300WWa57LC2L8vQf73TzGS3ikQ==}
+ '@react-native-community/cli-config@20.1.1':
+ resolution: {integrity: sha512-ajs2i56MANie/v0bMQ1BmRcrOb6MEvLT2rh/I1CA62NXGqF1Rxv6QwsN84LrADMXHRg8QiEMAIADkyDeQHt7Kg==}
- '@react-native-community/cli-doctor@20.0.2':
- resolution: {integrity: sha512-PQ8BdoNDE2OaMGLH66HZE7FV4qj0iWBHi0lkPUTb8eJJ+vlvzUtBf0N9QSv2TAzFjA59a2FElk6jBWnDC/ql1A==}
+ '@react-native-community/cli-doctor@20.1.1':
+ resolution: {integrity: sha512-eFpg5wWnV7uGqvLemshpgj2trPD8cckqxBuI4nT7sxKF/YpA/e3nnnyytHxPP5EnYfWbMcqfaq8hDJoOnJinGQ==}
- '@react-native-community/cli-platform-android@20.0.2':
- resolution: {integrity: sha512-Wo2AIkdv3PMEMT4k7QiNm3smNpWK6rd+glVH4Nm6Hco1EgLQ4I9x+gwcS1yN53UHYtq9YnguDCXk2L8duUESDQ==}
+ '@react-native-community/cli-platform-android@20.1.1':
+ resolution: {integrity: sha512-KPheizJQI0tVvBLy9owzpo+A9qDsDAa87e7a8xNaHnwqGpExnIzFPrbdvrltiZjstU2eB/+/UgNQxYIEd4Oc+g==}
- '@react-native-community/cli-platform-apple@20.0.2':
- resolution: {integrity: sha512-PdsQVFLY+wGnAN1kZ38XzzWiUlqaG1cXdpkQ1rYaiiNu3PVTc2/KtteLcPG/wbApbfoPggQ/ffh+JGg7NL+HNw==}
+ '@react-native-community/cli-platform-apple@20.1.1':
+ resolution: {integrity: sha512-mQEjOzRFCcQTrCt73Q/+5WWTfUg6U2vLZv5rPuFiNrLbrwRqxVH3OLaXg5gilJkDTJC80z8iOSsdd8MRxONOig==}
- '@react-native-community/cli-platform-ios@20.0.2':
- resolution: {integrity: sha512-bVOqLsBztT+xVV65uztJ7R/dtjj4vaPXJU1RLi35zLtr1APAxzf+2ydiixxtBjNFylM3AZlF8iL5WXjeWVqrmA==}
+ '@react-native-community/cli-platform-ios@20.1.1':
+ resolution: {integrity: sha512-6vr10/oSjKkZO/BBgfFJNQTC/0CDF4WrN8iW9ss+Kt6ZL2QrBXLYz7fobrrboOlHwqqs5EyQadlEaNii7gKRJg==}
- '@react-native-community/cli-server-api@20.0.2':
- resolution: {integrity: sha512-u4tUzWnc+qthaDvd1NxdCqCNMY7Px6dAH1ODAXMtt+N27llGMJOl0J3slMx03dScftOWbGM61KA5cCpaxphYVQ==}
+ '@react-native-community/cli-server-api@20.1.1':
+ resolution: {integrity: sha512-phHfiCa4WqfKfaoV2vGVR3ZrYQDQTpI1k+C+i6rXAxFGxPuy8IgFFVOSL543qjKPpHBVwLcA+/xAJCVpdyCtVQ==}
- '@react-native-community/cli-tools@20.0.2':
- resolution: {integrity: sha512-bPYhRYggW9IIM8pvrZF/0r6HaxCyEWDn6zfPQPMWlkQUwkzFZ8GBY/M7yiHgDzozWKPT4DqZPumrq806Vcksow==}
+ '@react-native-community/cli-tools@20.1.1':
+ resolution: {integrity: sha512-j+zX/H2X+6ZGneIDj56tZ1Hbnip5nSfnq7yGlMyF/zm3U1hKp3G1jN5v0YEfnz/zEmjr7zruh4Y06KmZrF1lrA==}
- '@react-native-community/cli-types@20.0.2':
- resolution: {integrity: sha512-OZzy6U4M8Szg8iiF459OoTjRKggxLrdhZVHKfRhrAUfojhjRiWbJNkkPxJtOIPeNSgsB0heizgpE4QwCgnYeuQ==}
+ '@react-native-community/cli-types@20.1.1':
+ resolution: {integrity: sha512-Tp+s27I/RDONrGvWVj4IzEmga2HhJhXi8ZlZTfycMMyAcv4LG/CTPira+BUZs8nzLAJNrlJ79pVVPJPqQAe+aw==}
- '@react-native-community/cli@20.0.2':
- resolution: {integrity: sha512-ocgRFKRLX8b5rEK38SJfpr0AMl6SqseWljk6c5LxCG/zpCfPPNQdXq1OsDvmEwsqO4OEQ6tmOaSm9OgTm6FhbQ==}
+ '@react-native-community/cli@20.1.1':
+ resolution: {integrity: sha512-aLPUx43+WSeTOaUepR2FBD5a1V0OAZ1QB2DOlRlW4fOEjtBXgv40eM/ho8g3WCvAOKfPvTvx4fZdcuovTyV81Q==}
engines: {node: '>=20.19.4'}
hasBin: true
@@ -3885,7 +3881,7 @@ packages:
resolution: {integrity: sha512-UVXgV/db25OPIvwZySeToXD/9sKKhOdkcWmmf4Jh8iBZuyfML+/5CasaZ1E7Lqg6g3uqVQq75NqIwkYmORJMPw==}
engines: {node: '>= 20.19.4'}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: '*'
react-native: '*'
peerDependenciesMeta:
@@ -4536,25 +4532,9 @@ packages:
peerDependencies:
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
- '@tanstack/query-core@5.90.12':
- resolution: {integrity: sha512-T1/8t5DhV/SisWjDnaiU2drl6ySvsHj1bHBCWNXd+/T+Hh1cf6JodyEYMd5sgwm+b/mETT4EV3H+zCVczCU5hg==}
-
- '@tanstack/query-core@5.90.16':
- resolution: {integrity: sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==}
-
'@tanstack/query-core@5.90.20':
resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==}
- '@tanstack/react-query@5.90.12':
- resolution: {integrity: sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==}
- peerDependencies:
- react: ^18 || ^19
-
- '@tanstack/react-query@5.90.16':
- resolution: {integrity: sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==}
- peerDependencies:
- react: ^18 || ^19
-
'@tanstack/react-query@5.90.20':
resolution: {integrity: sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==}
peerDependencies:
@@ -4580,7 +4560,7 @@ packages:
engines: {node: '>=18'}
peerDependencies:
'@testing-library/dom': ^10.0.0
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-dom': 19.2.3
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
@@ -4840,12 +4820,12 @@ packages:
'@types/react-dom@19.2.3':
resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-reconciler@0.28.9':
resolution: {integrity: sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-test-renderer@18.3.1':
resolution: {integrity: sha512-vAhnk0tG2eGa37lkU9+s5SoroCsRI08xnsWFiAXOuPH2jqzMbcXvKExXViPi1P5fIklDeCvXqyrdmipFaSkZrA==}
@@ -4853,10 +4833,10 @@ packages:
'@types/react-transition-group@4.4.12':
resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@types/react@19.2.3':
- resolution: {integrity: sha512-k5dJVszUiNr1DSe8Cs+knKR6IrqhqdhpUwzqhkS8ecQTSf3THNtbfIp/umqHMpX2bv+9dkx3fwDv/86LcSfvSg==}
+ '@types/react@19.2.13':
+ resolution: {integrity: sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==}
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
@@ -7329,6 +7309,7 @@ packages:
glob@10.5.0:
resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
hasBin: true
glob@13.0.0:
@@ -7337,7 +7318,7 @@ packages:
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
+ deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
global-dirs@0.1.1:
resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==}
@@ -9654,11 +9635,6 @@ packages:
engines: {node: '>=10.13.0'}
hasBin: true
- prettier@3.7.4:
- resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
- engines: {node: '>=14'}
- hasBin: true
-
prettier@3.8.1:
resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
engines: {node: '>=14'}
@@ -9816,7 +9792,7 @@ packages:
react-focus-lock@2.13.7:
resolution: {integrity: sha512-20lpZHEQrXPb+pp1tzd4ULL6DyO5D2KnR0G69tTDdydrmNhU7pdFmbQUYVyHUgp+xN29IuFR0PVuhOmvaZL9Og==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -9828,12 +9804,6 @@ packages:
peerDependencies:
react: '>=17.0.0'
- react-hook-form@7.68.0:
- resolution: {integrity: sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==}
- engines: {node: '>=18.0.0'}
- peerDependencies:
- react: ^16.8.0 || ^17 || ^18 || ^19
-
react-hook-form@7.71.1:
resolution: {integrity: sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==}
engines: {node: '>=18.0.0'}
@@ -9930,7 +9900,7 @@ packages:
engines: {node: '>= 20.19.4'}
hasBin: true
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^19.1.0
peerDependenciesMeta:
'@types/react':
@@ -9945,7 +9915,7 @@ packages:
react-redux@9.2.0:
resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^18.0 || ^19
redux: ^5.0.0
peerDependenciesMeta:
@@ -9966,7 +9936,7 @@ packages:
resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
@@ -9976,7 +9946,7 @@ packages:
resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -9991,7 +9961,7 @@ packages:
resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -10034,10 +10004,6 @@ packages:
resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==}
engines: {node: '>=0.10.0'}
- react@19.2.3:
- resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
- engines: {node: '>=0.10.0'}
-
react@19.2.4:
resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
engines: {node: '>=0.10.0'}
@@ -10592,6 +10558,9 @@ packages:
resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
engines: {node: '>=4'}
+ strict-url-sanitise@0.0.1:
+ resolution: {integrity: sha512-nuFtF539K8jZg3FjaWH/L8eocCR6gegz5RDOsaWxfdbF5Jqr2VXWxZayjTwUzsWJDC91k2EbnJXp6FuWW+Z4hg==}
+
string-length@4.0.2:
resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
engines: {node: '>=10'}
@@ -10767,6 +10736,7 @@ packages:
tar@7.5.2:
resolution: {integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==}
engines: {node: '>=18'}
+ deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
temp-dir@2.0.0:
resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==}
@@ -11233,7 +11203,7 @@ packages:
resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -11248,7 +11218,7 @@ packages:
resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -11587,6 +11557,7 @@ packages:
whatwg-encoding@2.0.0:
resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
engines: {node: '>=12'}
+ deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation
whatwg-encoding@3.1.1:
resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
@@ -12748,15 +12719,15 @@ snapshots:
dependencies:
'@react-navigation/core': 7.13.6(react@19.1.0)
'@react-navigation/devtools': 7.0.45(react@19.1.0)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
nanoid: 5.1.6
transitivePeerDependencies:
- react
- '@dev-plugins/react-query@0.1.0(@tanstack/react-query@5.90.12(react@19.1.0))(expo@54.0.29)':
+ '@dev-plugins/react-query@0.1.0(@tanstack/react-query@5.90.20(react@19.1.0))(expo@54.0.29)':
dependencies:
- '@tanstack/react-query': 5.90.12(react@19.1.0)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@tanstack/react-query': 5.90.20(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
flatted: 3.3.3
'@discoveryjs/json-ext@0.5.7': {}
@@ -12838,7 +12809,7 @@ snapshots:
'@emotion/memoize@0.9.0': {}
- '@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4)':
+ '@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
@@ -12850,7 +12821,7 @@ snapshots:
hoist-non-react-statics: 3.3.2
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
transitivePeerDependencies:
- supports-color
@@ -12864,18 +12835,18 @@ snapshots:
'@emotion/sheet@1.4.0': {}
- '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
+ '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5
'@emotion/is-prop-valid': 1.4.0
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4)
'@emotion/serialize': 1.3.3
'@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4)
'@emotion/utils': 1.4.2
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
transitivePeerDependencies:
- supports-color
@@ -13091,7 +13062,7 @@ snapshots:
'@expo-google-fonts/instrument-serif@0.4.1': {}
- '@expo/cli@54.0.19(expo-router@6.0.19)(expo@54.0.29)(graphql@16.12.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
+ '@expo/cli@54.0.19(expo-router@6.0.19)(expo@54.0.29)(graphql@16.12.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))':
dependencies:
'@0no-co/graphql.web': 1.2.0(graphql@16.12.0)
'@expo/code-signing-certificates': 0.0.5
@@ -13125,7 +13096,7 @@ snapshots:
connect: 3.7.0
debug: 4.4.3(supports-color@10.2.2)
env-editor: 0.4.2
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-server: 1.0.5
freeport-async: 2.0.0
getenv: 2.0.0
@@ -13158,8 +13129,8 @@ snapshots:
wrap-ansi: 7.0.0
ws: 8.18.3
optionalDependencies:
- expo-router: 6.0.19(daa6e6378deabbbe32c786346aac9231)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo-router: 6.0.19(aa3baf8ebd5df0659b3f7f24f4fab4c5)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
transitivePeerDependencies:
- bufferutil
- graphql
@@ -13217,12 +13188,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
chalk: 4.1.2
optionalDependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
'@expo/env@2.0.8':
dependencies:
@@ -13292,19 +13263,19 @@ snapshots:
postcss: 8.4.49
resolve-from: 5.0.0
optionalDependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@expo/metro-runtime@6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@expo/metro-runtime@6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
anser: 1.4.10
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
stacktrace-parser: 0.1.11
whatwg-fetch: 3.6.20
optionalDependencies:
@@ -13364,7 +13335,7 @@ snapshots:
'@expo/json-file': 10.0.8
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3(supports-color@10.2.2)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
resolve-from: 5.0.0
semver: 7.7.3
xml2js: 0.6.0
@@ -13381,18 +13352,18 @@ snapshots:
'@expo/sudo-prompt@9.3.2': {}
- '@expo/ui@0.2.0-beta.7(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@expo/ui@0.2.0-beta.7(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
sf-symbols-typescript: 2.2.0
- '@expo/vector-icons@15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@expo/vector-icons@15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
- expo-font: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-font: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
'@expo/ws-tunnel@1.0.6': {}
@@ -13434,22 +13405,22 @@ snapshots:
- supports-color
- utf-8-validate
- '@gorhom/bottom-sheet@5.2.8(@types/react@19.2.3)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@gorhom/bottom-sheet@5.2.8(@types/react@19.2.13)(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@gorhom/portal': 1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@gorhom/portal': 1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@gorhom/portal@1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@gorhom/portal@1.0.14(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
nanoid: 3.3.11
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
'@hapi/hoek@9.3.0': {}
@@ -13678,27 +13649,27 @@ snapshots:
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
chalk: 4.1.2
jest-message-util: 29.7.0
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))':
+ '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 3.9.0
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ jest-config: 29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -13727,7 +13698,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
jest-mock: 29.7.0
'@jest/expect-utils@29.7.0':
@@ -13745,7 +13716,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
jest-message-util: 29.7.0
jest-mock: 29.7.0
jest-util: 29.7.0
@@ -13767,7 +13738,7 @@ snapshots:
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.31
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
chalk: 4.1.2
collect-v8-coverage: 1.0.3
exit: 0.1.2
@@ -13837,7 +13808,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
'@types/yargs': 17.0.35
chalk: 4.1.2
@@ -14001,10 +13972,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
'@types/mdx': 2.0.13
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react: 19.2.4
'@modelcontextprotocol/sdk@1.26.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)':
@@ -14042,23 +14013,23 @@ snapshots:
'@mui/core-downloads-tracker@7.3.7': {}
- '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
+ '@mui/icons-material@7.3.7(@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@mui/material': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ '@mui/material@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
'@mui/core-downloads-tracker': 7.3.7
- '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
- '@mui/types': 7.4.10(@types/react@19.2.3)
- '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
+ '@mui/system': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)
+ '@mui/types': 7.4.10(@types/react@19.2.13)
+ '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4)
'@popperjs/core': 2.11.8
- '@types/react-transition-group': 4.4.12(@types/react@19.2.3)
+ '@types/react-transition-group': 4.4.12(@types/react@19.2.13)
clsx: 2.1.1
csstype: 3.2.3
prop-types: 15.8.1
@@ -14067,20 +14038,20 @@ snapshots:
react-is: 19.2.3
react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
- '@types/react': 19.2.3
+ '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)
+ '@types/react': 19.2.13
- '@mui/private-theming@7.3.7(@types/react@19.2.3)(react@19.2.4)':
+ '@mui/private-theming@7.3.7(@types/react@19.2.13)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
+ '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4)
prop-types: 15.8.1
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(react@19.2.4)':
+ '@mui/styled-engine@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
'@emotion/cache': 11.14.0
@@ -14090,42 +14061,42 @@ snapshots:
prop-types: 15.8.1
react: 19.2.4
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
+ '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)
- '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)':
+ '@mui/system@7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/private-theming': 7.3.7(@types/react@19.2.3)(react@19.2.4)
- '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4))(react@19.2.4)
- '@mui/types': 7.4.10(@types/react@19.2.3)
- '@mui/utils': 7.3.7(@types/react@19.2.3)(react@19.2.4)
+ '@mui/private-theming': 7.3.7(@types/react@19.2.13)(react@19.2.4)
+ '@mui/styled-engine': 7.3.7(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4))(react@19.2.4)
+ '@mui/types': 7.4.10(@types/react@19.2.13)
+ '@mui/utils': 7.3.7(@types/react@19.2.13)(react@19.2.4)
clsx: 2.1.1
csstype: 3.2.3
prop-types: 15.8.1
react: 19.2.4
optionalDependencies:
- '@emotion/react': 11.14.0(@types/react@19.2.3)(react@19.2.4)
- '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.3)(react@19.2.4))(@types/react@19.2.3)(react@19.2.4)
- '@types/react': 19.2.3
+ '@emotion/react': 11.14.0(@types/react@19.2.13)(react@19.2.4)
+ '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.13)(react@19.2.4))(@types/react@19.2.13)(react@19.2.4)
+ '@types/react': 19.2.13
- '@mui/types@7.4.10(@types/react@19.2.3)':
+ '@mui/types@7.4.10(@types/react@19.2.13)':
dependencies:
'@babel/runtime': 7.28.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@mui/utils@7.3.7(@types/react@19.2.3)(react@19.2.4)':
+ '@mui/utils@7.3.7(@types/react@19.2.13)(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
- '@mui/types': 7.4.10(@types/react@19.2.3)
+ '@mui/types': 7.4.10(@types/react@19.2.13)
'@types/prop-types': 15.7.15
clsx: 2.1.1
prop-types: 15.8.1
react: 19.2.4
react-is: 19.2.3
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@napi-rs/wasm-runtime@0.2.12':
dependencies:
@@ -14147,12 +14118,12 @@ snapshots:
dependencies:
fast-glob: 3.3.1
- '@next/mdx@16.1.6(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.3)(react@19.2.4))':
+ '@next/mdx@16.1.6(@mdx-js/loader@3.1.1(webpack@5.102.1))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))':
dependencies:
source-map: 0.7.6
optionalDependencies:
'@mdx-js/loader': 3.1.1(webpack@5.102.1)
- '@mdx-js/react': 3.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@mdx-js/react': 3.1.1(@types/react@19.2.13)(react@19.2.4)
'@next/swc-darwin-arm64@16.1.6':
optional: true
@@ -14228,7 +14199,7 @@ snapshots:
'@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/semantic-conventions': 1.39.0
'@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0)':
dependencies:
@@ -14476,13 +14447,13 @@ snapshots:
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/semantic-conventions': 1.39.0
'@opentelemetry/resources@2.5.0(@opentelemetry/api@1.9.0)':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/semantic-conventions': 1.39.0
'@opentelemetry/sdk-logs@0.208.0(@opentelemetry/api@1.9.0)':
dependencies:
@@ -14502,7 +14473,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.0)
'@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/semantic-conventions': 1.39.0
'@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0)':
dependencies:
@@ -14511,8 +14482,6 @@ snapshots:
'@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.39.0
- '@opentelemetry/semantic-conventions@1.38.0': {}
-
'@opentelemetry/semantic-conventions@1.39.0': {}
'@opentelemetry/sql-common@0.41.2(@opentelemetry/api@1.9.0)':
@@ -14610,824 +14579,824 @@ snapshots:
'@radix-ui/primitive@1.1.3': {}
- '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(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)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.13)(react@19.1.0)':
dependencies:
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.13)(react@19.2.4)':
dependencies:
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-context@1.1.2(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-context@1.1.2(@types/react@19.2.13)(react@19.1.0)':
dependencies:
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-context@1.1.2(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-context@1.1.2(@types/react@19.2.13)(react@19.2.4)':
dependencies:
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.1.0)
aria-hidden: 1.2.6
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
- react-remove-scroll: 2.7.2(@types/react@19.2.3)(react@19.1.0)
+ react-remove-scroll: 2.7.2(@types/react@19.2.13)(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.2.4)
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.3)(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.13)(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-direction@1.1.1(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-direction@1.1.1(@types/react@19.2.13)(react@19.1.0)':
dependencies:
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-direction@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-direction@1.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.13)(react@19.1.0)':
dependencies:
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.13)(react@19.2.4)':
dependencies:
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-id@1.1.1(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-id@1.1.1(@types/react@19.2.13)(react@19.1.0)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-id@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-id@1.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(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)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.2.4)
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.3)(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.13)(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.2.4)
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.3)(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.13)(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@floating-ui/react-dom': 2.1.6(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.13)(react@19.2.4)
'@radix-ui/rect': 1.1.1
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-slot': 1.2.4(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
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.3)(react@19.2.4)
+ react-remove-scroll: 2.7.2(@types/react@19.2.13)(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(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)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-slot@1.2.0(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-slot@1.2.0(@types/react@19.2.13)(react@19.1.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-slot@1.2.3(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-slot@1.2.3(@types/react@19.2.13)(react@19.1.0)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-slot@1.2.3(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-slot@1.2.3(@types/react@19.2.13)(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-slot@1.2.4(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-slot@1.2.4(@types/react@19.2.13)(react@19.2.4)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
+ '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-direction': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13)(react@19.2.4)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(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.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13)(react@19.2.4)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.13)(react@19.1.0)':
dependencies:
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.13)(react@19.1.0)':
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.13)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.13)(react@19.1.0)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.13)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.13)(react@19.1.0)':
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.1.0)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.3)(react@19.1.0)':
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.13)(react@19.1.0)':
dependencies:
react: 19.1.0
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
'@radix-ui/rect': 1.1.1
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-use-size@1.1.1(@types/react@19.2.3)(react@19.2.4)':
+ '@radix-ui/react-use-size@1.1.1(@types/react@19.2.13)(react@19.2.4)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.3)(react@19.2.4)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4)
react: 19.2.4
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(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)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
'@radix-ui/rect@1.1.1': {}
- '@react-native-async-storage/async-storage@2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
+ '@react-native-async-storage/async-storage@2.2.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))':
dependencies:
merge-options: 3.0.4
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- '@react-native-community/cli-clean@20.0.2':
+ '@react-native-community/cli-clean@20.1.1':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-tools': 20.1.1
execa: 5.1.1
fast-glob: 3.3.3
+ picocolors: 1.1.1
- '@react-native-community/cli-config-android@20.0.2':
+ '@react-native-community/cli-config-android@20.1.1':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-tools': 20.1.1
fast-glob: 3.3.3
fast-xml-parser: 4.5.3
+ picocolors: 1.1.1
- '@react-native-community/cli-config-apple@20.0.2':
+ '@react-native-community/cli-config-apple@20.1.1':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-tools': 20.1.1
execa: 5.1.1
fast-glob: 3.3.3
+ picocolors: 1.1.1
- '@react-native-community/cli-config@20.0.2(typescript@5.9.3)':
+ '@react-native-community/cli-config@20.1.1(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-tools': 20.1.1
cosmiconfig: 9.0.0(typescript@5.9.3)
deepmerge: 4.3.1
fast-glob: 3.3.3
joi: 17.13.3
+ picocolors: 1.1.1
transitivePeerDependencies:
- typescript
- '@react-native-community/cli-doctor@20.0.2(typescript@5.9.3)':
+ '@react-native-community/cli-doctor@20.1.1(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-config': 20.0.2(typescript@5.9.3)
- '@react-native-community/cli-platform-android': 20.0.2
- '@react-native-community/cli-platform-apple': 20.0.2
- '@react-native-community/cli-platform-ios': 20.0.2
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-config': 20.1.1(typescript@5.9.3)
+ '@react-native-community/cli-platform-android': 20.1.1
+ '@react-native-community/cli-platform-apple': 20.1.1
+ '@react-native-community/cli-platform-ios': 20.1.1
+ '@react-native-community/cli-tools': 20.1.1
command-exists: 1.2.9
deepmerge: 4.3.1
envinfo: 7.21.0
execa: 5.1.1
node-stream-zip: 1.15.0
ora: 5.4.1
+ picocolors: 1.1.1
semver: 7.7.3
wcwidth: 1.0.1
yaml: 2.8.2
transitivePeerDependencies:
- typescript
- '@react-native-community/cli-platform-android@20.0.2':
+ '@react-native-community/cli-platform-android@20.1.1':
dependencies:
- '@react-native-community/cli-config-android': 20.0.2
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-config-android': 20.1.1
+ '@react-native-community/cli-tools': 20.1.1
execa: 5.1.1
logkitty: 0.7.1
+ picocolors: 1.1.1
- '@react-native-community/cli-platform-apple@20.0.2':
+ '@react-native-community/cli-platform-apple@20.1.1':
dependencies:
- '@react-native-community/cli-config-apple': 20.0.2
- '@react-native-community/cli-tools': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-config-apple': 20.1.1
+ '@react-native-community/cli-tools': 20.1.1
execa: 5.1.1
fast-xml-parser: 4.5.3
+ picocolors: 1.1.1
- '@react-native-community/cli-platform-ios@20.0.2':
+ '@react-native-community/cli-platform-ios@20.1.1':
dependencies:
- '@react-native-community/cli-platform-apple': 20.0.2
+ '@react-native-community/cli-platform-apple': 20.1.1
- '@react-native-community/cli-server-api@20.0.2':
+ '@react-native-community/cli-server-api@20.1.1':
dependencies:
- '@react-native-community/cli-tools': 20.0.2
+ '@react-native-community/cli-tools': 20.1.1
body-parser: 1.20.4
compression: 1.8.1
connect: 3.7.0
@@ -15436,44 +15405,45 @@ snapshots:
open: 6.4.0
pretty-format: 29.7.0
serve-static: 1.16.3
+ strict-url-sanitise: 0.0.1
ws: 6.2.3
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@react-native-community/cli-tools@20.0.2':
+ '@react-native-community/cli-tools@20.1.1':
dependencies:
'@vscode/sudo-prompt': 9.3.1
appdirsjs: 1.2.7
- chalk: 4.1.2
execa: 5.1.1
find-up: 5.0.0
launch-editor: 2.12.0
mime: 2.6.0
ora: 5.4.1
+ picocolors: 1.1.1
prompts: 2.4.2
semver: 7.7.3
- '@react-native-community/cli-types@20.0.2':
+ '@react-native-community/cli-types@20.1.1':
dependencies:
joi: 17.13.3
- '@react-native-community/cli@20.0.2(typescript@5.9.3)':
+ '@react-native-community/cli@20.1.1(typescript@5.9.3)':
dependencies:
- '@react-native-community/cli-clean': 20.0.2
- '@react-native-community/cli-config': 20.0.2(typescript@5.9.3)
- '@react-native-community/cli-doctor': 20.0.2(typescript@5.9.3)
- '@react-native-community/cli-server-api': 20.0.2
- '@react-native-community/cli-tools': 20.0.2
- '@react-native-community/cli-types': 20.0.2
- chalk: 4.1.2
+ '@react-native-community/cli-clean': 20.1.1
+ '@react-native-community/cli-config': 20.1.1(typescript@5.9.3)
+ '@react-native-community/cli-doctor': 20.1.1(typescript@5.9.3)
+ '@react-native-community/cli-server-api': 20.1.1
+ '@react-native-community/cli-tools': 20.1.1
+ '@react-native-community/cli-types': 20.1.1
commander: 9.5.0
deepmerge: 4.3.1
execa: 5.1.1
find-up: 5.0.0
fs-extra: 8.1.0
graceful-fs: 4.2.11
+ picocolors: 1.1.1
prompts: 2.4.2
semver: 7.7.3
transitivePeerDependencies:
@@ -15482,9 +15452,9 @@ snapshots:
- typescript
- utf-8-validate
- '@react-native-community/netinfo@11.4.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))':
+ '@react-native-community/netinfo@11.4.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))':
dependencies:
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
'@react-native/assets-registry@0.81.5': {}
@@ -15556,7 +15526,7 @@ snapshots:
nullthrows: 1.1.1
yargs: 17.7.2
- '@react-native/community-cli-plugin@0.81.5(@react-native-community/cli@20.0.2(typescript@5.9.3))':
+ '@react-native/community-cli-plugin@0.81.5(@react-native-community/cli@20.1.1(typescript@5.9.3))':
dependencies:
'@react-native/dev-middleware': 0.81.5
debug: 4.4.3(supports-color@10.2.2)
@@ -15566,7 +15536,7 @@ snapshots:
metro-core: 0.83.3
semver: 7.7.3
optionalDependencies:
- '@react-native-community/cli': 20.0.2(typescript@5.9.3)
+ '@react-native-community/cli': 20.1.1(typescript@5.9.3)
transitivePeerDependencies:
- bufferutil
- supports-color
@@ -15602,24 +15572,24 @@ snapshots:
'@react-native/normalize-colors@0.81.5': {}
- '@react-native/virtualized-lists@0.81.5(@types/react@19.2.3)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-native/virtualized-lists@0.81.5(@types/react@19.2.13)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
invariant: 2.2.4
nullthrows: 1.1.1
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@react-navigation/bottom-tabs@7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/bottom-tabs@7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/elements': 2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -15643,38 +15613,38 @@ snapshots:
react: 19.1.0
stacktrace-parser: 0.1.11
- '@react-navigation/elements@2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/elements@2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
use-latest-callback: 0.2.6(react@19.1.0)
use-sync-external-store: 1.6.0(react@19.1.0)
- '@react-navigation/native-stack@7.8.6(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native-stack@7.8.6(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/elements': 2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.2(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
warn-once: 0.1.1
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
'@react-navigation/core': 7.13.6(react@19.1.0)
escape-string-regexp: 4.0.0
fast-deep-equal: 3.1.3
nanoid: 3.3.11
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
use-latest-callback: 0.2.6(react@19.1.0)
'@react-navigation/routers@7.5.2':
@@ -15704,7 +15674,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.3)(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.13)(react@19.2.4)(redux@5.0.1))(react@19.2.4)':
dependencies:
'@standard-schema/spec': 1.1.0
'@standard-schema/utils': 0.3.0
@@ -15714,7 +15684,7 @@ snapshots:
reselect: 5.1.1
optionalDependencies:
react: 19.2.4
- react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1)
+ react-redux: 9.2.0(@types/react@19.2.13)(react@19.2.4)(redux@5.0.1)
'@rolldown/pluginutils@1.0.0-beta.53': {}
@@ -15971,13 +15941,13 @@ snapshots:
'@sentry/nextjs@10.38.0(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(next@16.1.6(@babel/core@7.28.5)(@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))(react@19.2.4)(webpack@5.102.1)':
dependencies:
'@opentelemetry/api': 1.9.0
- '@opentelemetry/semantic-conventions': 1.38.0
+ '@opentelemetry/semantic-conventions': 1.39.0
'@rollup/plugin-commonjs': 28.0.1(rollup@4.53.5)
'@sentry-internal/browser-utils': 10.38.0
'@sentry/bundler-plugin-core': 4.9.0
'@sentry/core': 10.38.0
'@sentry/node': 10.38.0
- '@sentry/opentelemetry': 10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)
+ '@sentry/opentelemetry': 10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)
'@sentry/react': 10.38.0(react@19.2.4)
'@sentry/vercel-edge': 10.38.0
'@sentry/webpack-plugin': 4.9.0(webpack@5.102.1)
@@ -16049,15 +16019,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@sentry/opentelemetry@10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.38.0)':
- dependencies:
- '@opentelemetry/api': 1.9.0
- '@opentelemetry/context-async-hooks': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/core': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/sdk-trace-base': 2.5.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/semantic-conventions': 1.38.0
- '@sentry/core': 10.38.0
-
'@sentry/opentelemetry@10.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.5.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.39.0)':
dependencies:
'@opentelemetry/api': 1.9.0
@@ -16067,7 +16028,7 @@ snapshots:
'@opentelemetry/semantic-conventions': 1.39.0
'@sentry/core': 10.38.0
- '@sentry/react-native@7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@sentry/react-native@7.7.0(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
'@sentry/babel-plugin-component-annotate': 4.6.1
'@sentry/browser': 10.26.0
@@ -16076,9 +16037,9 @@ snapshots:
'@sentry/react': 10.26.0(react@19.1.0)
'@sentry/types': 10.26.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
optionalDependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- encoding
- supports-color
@@ -16158,26 +16119,26 @@ snapshots:
'@shikijs/vscode-textmate@10.0.2': {}
- '@shopify/flash-list@2.0.2(@babel/runtime@7.28.4)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@shopify/flash-list@2.0.2(@babel/runtime@7.28.4)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
'@babel/runtime': 7.28.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
tslib: 2.8.1
- '@shopify/react-native-skia@2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@shopify/react-native-skia@2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
canvaskit-wasm: 0.40.0
react: 19.1.0
react-reconciler: 0.31.0(react@19.1.0)
optionalDependencies:
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
- '@shopify/restyle@2.4.5(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)':
+ '@shopify/restyle@2.4.5(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)':
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
'@sideway/address@4.1.5':
dependencies:
@@ -16297,22 +16258,13 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 4.1.18
- '@tanstack/query-core@5.90.12': {}
-
- '@tanstack/query-core@5.90.16': {}
-
'@tanstack/query-core@5.90.20': {}
- '@tanstack/react-query@5.90.12(react@19.1.0)':
+ '@tanstack/react-query@5.90.20(react@19.1.0)':
dependencies:
- '@tanstack/query-core': 5.90.12
+ '@tanstack/query-core': 5.90.20
react: 19.1.0
- '@tanstack/react-query@5.90.16(react@19.2.3)':
- dependencies:
- '@tanstack/query-core': 5.90.16
- react: 19.2.3
-
'@tanstack/react-query@5.90.20(react@19.2.4)':
dependencies:
'@tanstack/query-core': 5.90.20
@@ -16337,15 +16289,15 @@ snapshots:
picocolors: 1.1.1
pretty-format: 27.5.1
- '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.3))(react@19.2.3)':
+ '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.4
'@testing-library/dom': 10.4.1
- react: 19.2.3
- react-dom: 19.2.4(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
- '@types/react-dom': 19.2.3(@types/react@19.2.3)
+ '@types/react': 19.2.13
+ '@types/react-dom': 19.2.3(@types/react@19.2.13)
'@tootallnate/once@2.0.0': {}
@@ -16541,7 +16493,7 @@ snapshots:
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
'@types/hammerjs@2.0.46': {}
@@ -16568,7 +16520,7 @@ snapshots:
'@types/jsdom@20.0.1':
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
'@types/tough-cookie': 4.0.5
parse5: 7.3.0
@@ -16598,7 +16550,7 @@ snapshots:
'@types/node-fetch@2.6.13':
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
form-data: 4.0.5
'@types/node@12.20.55': {}
@@ -16638,23 +16590,23 @@ snapshots:
dependencies:
'@types/node': 24.10.10
- '@types/react-dom@19.2.3(@types/react@19.2.3)':
+ '@types/react-dom@19.2.3(@types/react@19.2.13)':
dependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@types/react-reconciler@0.28.9(@types/react@19.2.3)':
+ '@types/react-reconciler@0.28.9(@types/react@19.2.13)':
dependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
'@types/react-test-renderer@18.3.1':
dependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@types/react-transition-group@4.4.12(@types/react@19.2.3)':
+ '@types/react-transition-group@4.4.12(@types/react@19.2.13)':
dependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- '@types/react@19.2.3':
+ '@types/react@19.2.13':
dependencies:
csstype: 3.2.3
@@ -17547,7 +17499,7 @@ snapshots:
resolve-from: 5.0.0
optionalDependencies:
'@babel/runtime': 7.28.4
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@babel/core'
- supports-color
@@ -17783,7 +17735,7 @@ snapshots:
chrome-launcher@0.15.2:
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -17794,7 +17746,7 @@ snapshots:
chromium-edge-launcher@0.2.0:
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -17845,12 +17797,12 @@ snapshots:
clsx@2.1.1: {}
- cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@radix-ui/react-id': 1.1.1(@types/react@19.2.3)(react@19.2.4)
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(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.13)(react@19.2.4)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(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)
transitivePeerDependencies:
@@ -18005,13 +17957,13 @@ snapshots:
crawler-user-agents@1.27.0: {}
- create-jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
+ create-jest@29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ jest-config: 29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -18958,61 +18910,61 @@ snapshots:
expo-application@7.0.8(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
- expo-asset@12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-asset@12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/image-utils': 0.8.8
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
transitivePeerDependencies:
- supports-color
- expo-auth-session@7.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-auth-session@7.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
expo-application: 7.0.8(expo@54.0.29)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
expo-crypto: 15.0.8(expo@54.0.29)
- expo-linking: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-web-browser: 15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-linking: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ expo-web-browser: 15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
transitivePeerDependencies:
- expo
- supports-color
- expo-blur@15.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-blur@15.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- expo-clipboard@8.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-clipboard@8.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- expo-constants@18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-constants@18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)):
dependencies:
'@expo/config': 12.0.12
'@expo/env': 2.0.8
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
transitivePeerDependencies:
- supports-color
expo-crypto@15.0.8(expo@54.0.29):
dependencies:
base64-js: 1.5.1
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-dev-client@6.0.20(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-dev-launcher: 6.0.20(expo@54.0.29)
expo-dev-menu: 7.0.18(expo@54.0.29)
expo-dev-menu-interface: 2.0.0(expo@54.0.29)
@@ -19024,7 +18976,7 @@ snapshots:
expo-dev-launcher@6.0.20(expo@54.0.29):
dependencies:
ajv: 8.17.1
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-dev-menu: 7.0.18(expo@54.0.29)
expo-manifests: 1.0.10(expo@54.0.29)
transitivePeerDependencies:
@@ -19032,62 +18984,62 @@ snapshots:
expo-dev-menu-interface@2.0.0(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-dev-menu@7.0.18(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-dev-menu-interface: 2.0.0(expo@54.0.29)
expo-device@8.0.10(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
ua-parser-js: 0.7.41
expo-eas-client@1.0.8: {}
- expo-file-system@19.0.21(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-file-system@19.0.21(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
fontfaceobserver: 2.3.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
expo-haptics@15.0.8(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
- expo-image@3.0.11(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-image@3.0.11(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
optionalDependencies:
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
expo-insights@0.10.8(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-eas-client: 1.0.8
expo-json-utils@0.15.0: {}
expo-keep-awake@15.0.8(expo@54.0.29)(react@19.1.0):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- expo-linking@8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-linking@8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
transitivePeerDependencies:
- expo
- supports-color
@@ -19095,7 +19047,7 @@ snapshots:
expo-manifests@1.0.10(expo@54.0.29):
dependencies:
'@expo/config': 12.0.12
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-json-utils: 0.15.0
transitivePeerDependencies:
- supports-color
@@ -19108,42 +19060,42 @@ snapshots:
require-from-string: 2.0.2
resolve-from: 5.0.0
- expo-modules-core@3.0.29(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-modules-core@3.0.29(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- expo-notifications@0.32.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-notifications@0.32.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/image-utils': 0.8.8
'@ide/backoff': 1.0.0
abort-controller: 3.0.0
assert: 2.1.0
badgin: 1.2.3
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-application: 7.0.8(expo@54.0.29)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
transitivePeerDependencies:
- supports-color
- expo-router@6.0.19(daa6e6378deabbbe32c786346aac9231):
+ expo-router@6.0.19(aa3baf8ebd5df0659b3f7f24f4fab4c5):
dependencies:
- '@expo/metro-runtime': 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@expo/metro-runtime': 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@expo/schema-utils': 0.1.8
- '@radix-ui/react-slot': 1.2.0(@types/react@19.2.3)(react@19.1.0)
- '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@react-navigation/bottom-tabs': 7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native-stack': 7.8.6(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-slot': 1.2.0(@types/react@19.2.13)(react@19.1.0)
+ '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@react-navigation/bottom-tabs': 7.8.12(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native-stack': 7.8.6(@react-navigation/native@7.1.25(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
client-only: 0.0.1
debug: 4.4.3(supports-color@10.2.2)
escape-string-regexp: 4.0.0
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
- expo-linking: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
+ expo-linking: 8.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-server: 1.0.5
fast-deep-equal: 3.1.3
invariant: 2.2.4
@@ -19151,20 +19103,20 @@ snapshots:
query-string: 7.1.3
react: 19.1.0
react-fast-compare: 3.2.2
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
semver: 7.6.3
server-only: 0.0.1
sf-symbols-typescript: 2.2.0
shallowequal: 1.1.0
use-latest-callback: 0.2.6(react@19.1.0)
- vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
optionalDependencies:
react-dom: 19.1.0(react@19.1.0)
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -19174,42 +19126,42 @@ snapshots:
expo-secure-store@15.0.8(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-server@1.0.5: {}
expo-splash-screen@31.0.12(expo@54.0.29):
dependencies:
'@expo/prebuild-config': 54.0.7(expo@54.0.29)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- supports-color
- expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
- expo-store-review@9.0.9(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-store-review@9.0.9(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
expo-structured-headers@5.0.0: {}
- expo-symbols@1.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-symbols@1.0.8(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
sf-symbols-typescript: 2.2.0
- expo-system-ui@6.0.9(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-system-ui@6.0.9(expo@54.0.29)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)):
dependencies:
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3(supports-color@10.2.2)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
optionalDependencies:
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
@@ -19217,9 +19169,9 @@ snapshots:
expo-updates-interface@2.0.0(expo@54.0.29):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
- expo-updates@29.0.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo-updates@29.0.15(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/code-signing-certificates': 0.0.5
'@expo/plist': 0.4.8
@@ -19227,7 +19179,7 @@ snapshots:
arg: 4.1.0
chalk: 4.1.2
debug: 4.4.3(supports-color@10.2.2)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-eas-client: 1.0.8
expo-manifests: 1.0.10(expo@54.0.29)
expo-structured-headers: 5.0.0
@@ -19236,44 +19188,44 @@ snapshots:
glob: 13.0.0
ignore: 5.3.2
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
resolve-from: 5.0.0
transitivePeerDependencies:
- supports-color
- expo-web-browser@15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)):
+ expo-web-browser@15.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)):
dependencies:
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- expo@54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ expo@54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
'@babel/runtime': 7.28.4
- '@expo/cli': 54.0.19(expo-router@6.0.19)(expo@54.0.29)(graphql@16.12.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
+ '@expo/cli': 54.0.19(expo-router@6.0.19)(expo@54.0.29)(graphql@16.12.0)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
'@expo/config': 12.0.12
'@expo/config-plugins': 54.0.4
- '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@expo/fingerprint': 0.15.4
'@expo/metro': 54.1.0
'@expo/metro-config': 54.0.11(expo@54.0.29)
- '@expo/vector-icons': 15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@expo/vector-icons': 15.0.3(expo-font@14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
'@ungap/structured-clone': 1.3.0
babel-preset-expo: 54.0.8(@babel/core@7.28.5)(@babel/runtime@7.28.4)(expo@54.0.29)(react-refresh@0.14.2)
- expo-asset: 12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
- expo-file-system: 19.0.21(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))
- expo-font: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-asset: 12.0.11(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ expo-constants: 18.0.12(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
+ expo-file-system: 19.0.21(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))
+ expo-font: 14.0.10(expo@54.0.29)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
expo-keep-awake: 15.0.8(expo@54.0.29)(react@19.1.0)
expo-modules-autolinking: 3.0.23
- expo-modules-core: 3.0.29(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo-modules-core: 3.0.29(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
react-refresh: 0.14.2
whatwg-url-without-unicode: 8.0.0-3
optionalDependencies:
- '@expo/metro-runtime': 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-webview: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@expo/metro-runtime': 6.1.2(expo@54.0.29)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-webview: 13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@babel/core'
- bufferutil
@@ -20277,9 +20229,9 @@ snapshots:
has-symbols: 1.1.0
set-function-name: 2.0.2
- its-fine@1.2.5(@types/react@19.2.3)(react@19.1.0):
+ its-fine@1.2.5(@types/react@19.2.13)(react@19.1.0):
dependencies:
- '@types/react-reconciler': 0.28.9(@types/react@19.2.3)
+ '@types/react-reconciler': 0.28.9(@types/react@19.2.13)
react: 19.1.0
transitivePeerDependencies:
- '@types/react'
@@ -20302,7 +20254,7 @@ snapshots:
'@jest/expect': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
chalk: 4.1.2
co: 4.6.0
dedent: 1.7.0(babel-plugin-macros@3.1.0)
@@ -20322,16 +20274,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
+ jest-cli@29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ create-jest: 29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ jest-config: 29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -20341,7 +20293,7 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
+ jest-config@29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)):
dependencies:
'@babel/core': 7.28.5
'@jest/test-sequencer': 29.7.0
@@ -20366,8 +20318,8 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.19.3
- ts-node: 10.9.2(@types/node@22.19.3)(typescript@5.9.3)
+ '@types/node': 24.10.10
+ ts-node: 10.9.2(@types/node@24.10.10)(typescript@5.9.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -20397,7 +20349,7 @@ snapshots:
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
'@types/jsdom': 20.0.1
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
jest-mock: 29.7.0
jest-util: 29.7.0
jsdom: 20.0.3
@@ -20411,25 +20363,25 @@ snapshots:
'@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
jest-mock: 29.7.0
jest-util: 29.7.0
- jest-expo@54.0.16(@babel/core@7.28.5)(expo@54.0.29)(jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ jest-expo@54.0.16(@babel/core@7.28.5)(expo@54.0.29)(jest@29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
'@expo/config': 12.0.12
'@expo/json-file': 10.0.8
'@jest/create-cache-key-function': 29.7.0
'@jest/globals': 29.7.0
babel-jest: 29.7.0(@babel/core@7.28.5)
- expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.29(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.19)(graphql@16.12.0)(react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
jest-environment-jsdom: 29.7.0
jest-snapshot: 29.7.0
jest-watch-select-projects: 2.0.0
- jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)))
+ jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)))
json5: 2.2.3
lodash: 4.17.21
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
react-test-renderer: 19.1.0(react@19.1.0)
server-only: 0.0.1
stacktrace-js: 2.0.2
@@ -20448,7 +20400,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -20487,7 +20439,7 @@ snapshots:
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
@@ -20522,7 +20474,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
chalk: 4.1.2
emittery: 0.13.1
graceful-fs: 4.2.11
@@ -20550,7 +20502,7 @@ snapshots:
'@jest/test-result': 29.7.0
'@jest/transform': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
chalk: 4.1.2
cjs-module-lexer: 1.4.3
collect-v8-coverage: 1.0.3
@@ -20596,7 +20548,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -20617,11 +20569,11 @@ snapshots:
chalk: 3.0.0
prompts: 2.4.2
- jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))):
+ jest-watch-typeahead@2.2.1(jest@29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))):
dependencies:
ansi-escapes: 6.2.1
chalk: 4.1.2
- jest: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ jest: 29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
jest-regex-util: 29.6.3
jest-watcher: 29.7.0
slash: 5.1.0
@@ -20632,7 +20584,7 @@ snapshots:
dependencies:
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -20647,17 +20599,17 @@ snapshots:
jest-worker@29.7.0:
dependencies:
- '@types/node': 22.19.3
+ '@types/node': 24.10.10
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3)):
+ jest@29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3)):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@22.19.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3))
+ jest-cli: 29.7.0(@types/node@24.10.10)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -22119,11 +22071,11 @@ snapshots:
napi-postinstall@0.3.4: {}
- nativewind@4.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)):
+ nativewind@4.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
comment-json: 4.5.0
debug: 4.4.3(supports-color@10.2.2)
- react-native-css-interop: 0.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))
+ react-native-css-interop: 0.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))
tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- react
@@ -22713,7 +22665,7 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/api-logs': 0.208.0
'@opentelemetry/exporter-logs-otlp-http': 0.208.0(@opentelemetry/api@1.9.0)
- '@opentelemetry/resources': 2.2.0(@opentelemetry/api@1.9.0)
+ '@opentelemetry/resources': 2.5.0(@opentelemetry/api@1.9.0)
'@opentelemetry/sdk-logs': 0.208.0(@opentelemetry/api@1.9.0)
'@posthog/core': 1.20.0
'@posthog/types': 1.341.0
@@ -22745,8 +22697,6 @@ snapshots:
prettier@2.8.8: {}
- prettier@3.7.4: {}
-
prettier@3.8.1: {}
pretty-bytes@5.6.0: {}
@@ -22903,11 +22853,6 @@ snapshots:
react: 19.1.0
scheduler: 0.26.0
- react-dom@19.2.4(react@19.2.3):
- dependencies:
- react: 19.2.3
- scheduler: 0.27.0
-
react-dom@19.2.4(react@19.2.4):
dependencies:
react: 19.2.4
@@ -22927,23 +22872,23 @@ snapshots:
react-fast-compare@3.2.2: {}
- react-focus-lock@2.13.7(@types/react@19.2.3)(react@19.2.4):
+ react-focus-lock@2.13.7(@types/react@19.2.13)(react@19.2.4):
dependencies:
'@babel/runtime': 7.28.4
focus-lock: 1.3.6
prop-types: 15.8.1
react: 19.2.4
react-clientside-effect: 1.2.8(react@19.2.4)
- use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.4)
- use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.4)
+ use-callback-ref: 1.3.3(@types/react@19.2.13)(react@19.2.4)
+ use-sidecar: 1.1.3(@types/react@19.2.13)(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react-freeze@1.0.4(react@19.1.0):
dependencies:
react: 19.1.0
- react-hook-form@7.68.0(react@19.1.0):
+ react-hook-form@7.71.1(react@19.1.0):
dependencies:
react: 19.1.0
@@ -22959,7 +22904,7 @@ snapshots:
react-is@19.2.3: {}
- react-native-css-interop@0.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)):
+ react-native-css-interop@0.2.1(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
'@babel/helper-module-imports': 7.27.1
'@babel/traverse': 7.28.5
@@ -22967,57 +22912,57 @@ snapshots:
debug: 4.4.3(supports-color@10.2.2)
lightningcss: 1.27.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
semver: 7.7.3
tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.2)
optionalDependencies:
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-svg: 15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-svg: 15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- supports-color
- react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
'@egjs/hammerjs': 2.0.17
hoist-non-react-statics: 3.3.2
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- react-native-is-edge-to-edge@1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-is-edge-to-edge@1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
'@babel/core': 7.28.5
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-worklets: 0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-worklets: 0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
semver: 7.7.2
- react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
react-freeze: 1.0.4(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
warn-once: 0.1.1
- react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-svg@15.12.1(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
css-select: 5.2.2
css-tree: 1.1.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
warn-once: 0.1.1
react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
@@ -23035,14 +22980,14 @@ snapshots:
transitivePeerDependencies:
- encoding
- react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-webview@13.15.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
escape-string-regexp: 4.0.0
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
- react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0):
+ react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0):
dependencies:
'@babel/core': 7.28.5
'@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5)
@@ -23056,21 +23001,21 @@ snapshots:
'@babel/preset-typescript': 7.28.5(@babel/core@7.28.5)
convert-source-map: 2.0.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
semver: 7.7.2
transitivePeerDependencies:
- supports-color
- react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0):
+ react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0):
dependencies:
'@jest/create-cache-key-function': 29.7.0
'@react-native/assets-registry': 0.81.5
'@react-native/codegen': 0.81.5(@babel/core@7.28.5)
- '@react-native/community-cli-plugin': 0.81.5(@react-native-community/cli@20.0.2(typescript@5.9.3))
+ '@react-native/community-cli-plugin': 0.81.5(@react-native-community/cli@20.1.1(typescript@5.9.3))
'@react-native/gradle-plugin': 0.81.5
'@react-native/js-polyfills': 0.81.5
'@react-native/normalize-colors': 0.81.5
- '@react-native/virtualized-lists': 0.81.5(@types/react@19.2.3)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@react-native/virtualized-lists': 0.81.5(@types/react@19.2.13)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
abort-controller: 3.0.0
anser: 1.4.10
ansi-regex: 5.0.1
@@ -23099,7 +23044,7 @@ snapshots:
ws: 6.2.3
yargs: 17.7.2
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
transitivePeerDependencies:
- '@babel/core'
- '@react-native-community/cli'
@@ -23113,56 +23058,56 @@ snapshots:
react: 19.1.0
scheduler: 0.25.0
- react-redux@9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1):
+ react-redux@9.2.0(@types/react@19.2.13)(react@19.2.4)(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)
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
redux: 5.0.1
react-refresh@0.14.2: {}
react-refresh@0.18.0: {}
- react-remove-scroll-bar@2.3.8(@types/react@19.2.3)(react@19.1.0):
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.13)(react@19.1.0):
dependencies:
react: 19.1.0
- react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.1.0)
+ react-style-singleton: 2.2.3(@types/react@19.2.13)(react@19.1.0)
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- react-remove-scroll-bar@2.3.8(@types/react@19.2.3)(react@19.2.4):
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.13)(react@19.2.4):
dependencies:
react: 19.2.4
- react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.4)
+ react-style-singleton: 2.2.3(@types/react@19.2.13)(react@19.2.4)
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- react-remove-scroll@2.7.2(@types/react@19.2.3)(react@19.1.0):
+ react-remove-scroll@2.7.2(@types/react@19.2.13)(react@19.1.0):
dependencies:
react: 19.1.0
- react-remove-scroll-bar: 2.3.8(@types/react@19.2.3)(react@19.1.0)
- react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.1.0)
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.13)(react@19.1.0)
+ react-style-singleton: 2.2.3(@types/react@19.2.13)(react@19.1.0)
tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.1.0)
- use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.1.0)
+ use-callback-ref: 1.3.3(@types/react@19.2.13)(react@19.1.0)
+ use-sidecar: 1.1.3(@types/react@19.2.13)(react@19.1.0)
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- react-remove-scroll@2.7.2(@types/react@19.2.3)(react@19.2.4):
+ react-remove-scroll@2.7.2(@types/react@19.2.13)(react@19.2.4):
dependencies:
react: 19.2.4
- react-remove-scroll-bar: 2.3.8(@types/react@19.2.3)(react@19.2.4)
- react-style-singleton: 2.2.3(@types/react@19.2.3)(react@19.2.4)
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.13)(react@19.2.4)
+ react-style-singleton: 2.2.3(@types/react@19.2.13)(react@19.2.4)
tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.2.3)(react@19.2.4)
- use-sidecar: 1.1.3(@types/react@19.2.3)(react@19.2.4)
+ use-callback-ref: 1.3.3(@types/react@19.2.13)(react@19.2.4)
+ use-sidecar: 1.1.3(@types/react@19.2.13)(react@19.2.4)
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react-shallow-renderer@16.15.0(react@19.1.0):
dependencies:
@@ -23170,21 +23115,21 @@ snapshots:
react: 19.1.0
react-is: 18.3.1
- react-style-singleton@2.2.3(@types/react@19.2.3)(react@19.1.0):
+ react-style-singleton@2.2.3(@types/react@19.2.13)(react@19.1.0):
dependencies:
get-nonce: 1.0.1
react: 19.1.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- react-style-singleton@2.2.3(@types/react@19.2.3)(react@19.2.4):
+ react-style-singleton@2.2.3(@types/react@19.2.13)(react@19.2.4):
dependencies:
get-nonce: 1.0.1
react: 19.2.4
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
react-test-renderer@18.3.1(react@19.1.0):
dependencies:
@@ -23238,8 +23183,6 @@ snapshots:
react@19.1.0: {}
- react@19.2.3: {}
-
react@19.2.4: {}
read-cache@1.0.0:
@@ -23265,9 +23208,9 @@ snapshots:
readdirp@4.1.2: {}
- recharts@3.7.0(@types/react@19.2.3)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1):
+ recharts@3.7.0(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.3)(react@19.2.4)(redux@5.0.1):
dependencies:
- '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.3)(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.13)(react@19.2.4)(redux@5.0.1))(react@19.2.4)
clsx: 2.1.1
decimal.js-light: 2.5.1
es-toolkit: 1.43.0
@@ -23276,7 +23219,7 @@ snapshots:
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
react-is: 19.2.3
- react-redux: 9.2.0(@types/react@19.2.3)(react@19.2.4)(redux@5.0.1)
+ react-redux: 9.2.0(@types/react@19.2.13)(react@19.2.4)(redux@5.0.1)
reselect: 5.1.1
tiny-invariant: 1.3.3
use-sync-external-store: 1.6.0(react@19.2.4)
@@ -23959,6 +23902,8 @@ snapshots:
strict-uri-encode@2.0.0: {}
+ strict-url-sanitise@0.0.1: {}
+
string-length@4.0.2:
dependencies:
char-regex: 1.0.2
@@ -24319,25 +24264,6 @@ snapshots:
ts-interface-checker@0.1.13: {}
- ts-node@10.9.2(@types/node@22.19.3)(typescript@5.9.3):
- dependencies:
- '@cspotcode/source-map-support': 0.8.1
- '@tsconfig/node10': 1.0.12
- '@tsconfig/node12': 1.0.11
- '@tsconfig/node14': 1.0.3
- '@tsconfig/node16': 1.0.4
- '@types/node': 22.19.3
- acorn: 8.15.0
- acorn-walk: 8.3.4
- arg: 4.1.3
- create-require: 1.1.1
- diff: 4.0.2
- make-error: 1.3.6
- typescript: 5.9.3
- v8-compile-cache-lib: 3.0.1
- yn: 3.1.1
- optional: true
-
ts-node@10.9.2(@types/node@24.10.10)(typescript@5.9.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
@@ -24645,39 +24571,39 @@ snapshots:
querystringify: 2.2.0
requires-port: 1.0.0
- use-callback-ref@1.3.3(@types/react@19.2.3)(react@19.1.0):
+ use-callback-ref@1.3.3(@types/react@19.2.13)(react@19.1.0):
dependencies:
react: 19.1.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- use-callback-ref@1.3.3(@types/react@19.2.3)(react@19.2.4):
+ use-callback-ref@1.3.3(@types/react@19.2.13)(react@19.2.4):
dependencies:
react: 19.2.4
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
use-latest-callback@0.2.6(react@19.1.0):
dependencies:
react: 19.1.0
- use-sidecar@1.1.3(@types/react@19.2.3)(react@19.1.0):
+ use-sidecar@1.1.3(@types/react@19.2.13)(react@19.1.0):
dependencies:
detect-node-es: 1.1.0
react: 19.1.0
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
- use-sidecar@1.1.3(@types/react@19.2.3)(react@19.2.4):
+ use-sidecar@1.1.3(@types/react@19.2.13)(react@19.2.4):
dependencies:
detect-node-es: 1.1.0
react: 19.2.4
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.2.3
+ '@types/react': 19.2.13
use-sync-external-store@1.6.0(react@19.1.0):
dependencies:
@@ -24725,9 +24651,9 @@ snapshots:
vary@1.1.2: {}
- vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
+ vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
dependencies:
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.3))(@types/react@19.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.13))(@types/react@19.2.13)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
transitivePeerDependencies:
@@ -24744,18 +24670,18 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- victory-native@41.20.2(304cb029cd54f6dc7590a1eb71d5c0a3):
+ victory-native@41.20.2(bdcba2c82d78fb08aa89c4ee71f9fe53):
dependencies:
- '@shopify/react-native-skia': 2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ '@shopify/react-native-skia': 2.2.12(react-native-reanimated@4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
d3-scale: 4.0.2
d3-shape: 3.2.0
d3-zoom: 3.0.0
- its-fine: 1.2.5(@types/react@19.2.3)(react@19.1.0)
+ its-fine: 1.2.5(@types/react@19.2.13)(react@19.1.0)
react: 19.1.0
react-fast-compare: 3.2.2
- react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0)
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.0.2(typescript@5.9.3))(@types/react@19.2.3)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.6(@babel/core@7.28.5)(react-native-worklets@0.5.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@react-native-community/cli@20.1.1(typescript@5.9.3))(@types/react@19.2.13)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@types/react'
From 4d0b066d6a91f2e0e264d01002def287ac746344 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 08:31:27 +0100
Subject: [PATCH 28/69] Minimal i18n package
---
clients/packages/i18n/package.json | 18 +-
clients/pnpm-lock.yaml | 253 +----------------------------
2 files changed, 3 insertions(+), 268 deletions(-)
diff --git a/clients/packages/i18n/package.json b/clients/packages/i18n/package.json
index 9ab46d4647..2aef39c258 100644
--- a/clients/packages/i18n/package.json
+++ b/clients/packages/i18n/package.json
@@ -12,24 +12,15 @@
"directory": "clients/packages/i18n"
},
"scripts": {
- "translate": "tsx scripts/translate.ts",
- "validate": "tsx scripts/validate.ts",
"lint": "prettier -c .",
"typecheck": "tsc --noEmit",
- "test": "vitest run",
- "test:watch": "vitest",
"build": "rm -rf dist && tsup"
},
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
- },
- "./locales/en.json": "./src/locales/en.json",
- "./locales/sv.json": "./src/locales/generated-translations/sv.json",
- "./locales/es.json": "./src/locales/generated-translations/es.json",
- "./locales/fr.json": "./src/locales/generated-translations/fr.json",
- "./locales/nl.json": "./src/locales/generated-translations/nl.json"
+ }
},
"types": "./dist/index.d.ts",
"files": [
@@ -37,16 +28,11 @@
],
"devDependencies": {
"@polar-sh/typescript-config": "workspace:*",
- "@types/node": "^22.16.1",
"@types/react": "^19.2.13",
- "dotenv": "^16.4.5",
- "openai": "^4.103.0",
"prettier": "^3.7.4",
"react": "^19.2.4",
- "tsx": "^4.19.0",
"tsup": "^8.5.1",
- "typescript": "latest",
- "vitest": "^3.2.4"
+ "typescript": "latest"
},
"peerDependencies": {
"react": "^19.2.4"
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index 81fc658487..d9d32b91bf 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -803,18 +803,9 @@ importers:
'@polar-sh/typescript-config':
specifier: workspace:*
version: link:../typescript-config
- '@types/node':
- specifier: ^22.16.1
- version: 22.19.3
'@types/react':
specifier: 19.2.13
version: 19.2.13
- dotenv:
- specifier: ^16.4.5
- version: 16.6.1
- openai:
- specifier: ^4.103.0
- version: 4.104.0(ws@8.18.3)
prettier:
specifier: ^3.7.4
version: 3.8.1
@@ -824,15 +815,9 @@ importers:
tsup:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
- tsx:
- specifier: ^4.19.0
- version: 4.21.0
typescript:
specifier: latest
version: 5.9.3
- vitest:
- specifier: ^3.2.4
- version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
packages/mdx:
dependencies:
@@ -4784,18 +4769,9 @@ packages:
'@types/mysql@2.15.27':
resolution: {integrity: sha512-YfWiV16IY0OeBfBCk8+hXKmdTKrKlwKN1MNKAPBu5JYxLwBEZl7QzeEpGnlZb3VMGJrrGmB84gXiH+ofs/TezA==}
- '@types/node-fetch@2.6.13':
- resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==}
-
'@types/node@12.20.55':
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
- '@types/node@18.19.130':
- resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==}
-
- '@types/node@22.19.3':
- resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==}
-
'@types/node@24.10.10':
resolution: {integrity: sha512-+0/4J266CBGPUq/ELg7QUHhN25WYjE0wYTPSQJn1xeu8DOlIOPxXxrNGiLmfAWl7HMMgWFWXpt9IDjMWrF5Iow==}
@@ -5280,10 +5256,6 @@ packages:
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
engines: {node: '>= 14'}
- agentkeepalive@4.6.0:
- resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
- engines: {node: '>= 8.0.0'}
-
ai@5.0.113:
resolution: {integrity: sha512-26vivpSO/mzZj0k1Si2IpsFspp26ttQICHRySQiMrtWcRd5mnJMX2a8sG28vmZ38C+JUn1cWmfZrsLMxkSMw9g==}
engines: {node: '>=18'}
@@ -7152,9 +7124,6 @@ packages:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
- form-data-encoder@1.7.2:
- resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==}
-
form-data@4.0.5:
resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
engines: {node: '>= 6'}
@@ -7163,10 +7132,6 @@ packages:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
engines: {node: '>=0.4.x'}
- formdata-node@4.4.1:
- resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==}
- engines: {node: '>= 12.20'}
-
formdata-polyfill@4.0.10:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
@@ -7523,9 +7488,6 @@ packages:
resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
engines: {node: '>=10.17.0'}
- humanize-ms@1.2.1:
- resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
-
hyphenate-style-name@1.1.0:
resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==}
@@ -9190,18 +9152,6 @@ packages:
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
engines: {node: '>=12'}
- openai@4.104.0:
- resolution: {integrity: sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==}
- hasBin: true
- peerDependencies:
- ws: ^8.18.0
- zod: ^3.23.8
- peerDependenciesMeta:
- ws:
- optional: true
- zod:
- optional: true
-
openai@6.17.0:
resolution: {integrity: sha512-NHRpPEUPzAvFOAFs9+9pC6+HCw/iWsYsKCMPXH5Kw7BpMxqd8g/A07/1o7Gx2TWtCnzevVRyKMRFqyiHyAlqcA==}
hasBin: true
@@ -11097,12 +11047,6 @@ packages:
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
engines: {node: '>= 0.4'}
- undici-types@5.26.5:
- resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
-
- undici-types@6.21.0:
- resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
-
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
@@ -11510,10 +11454,6 @@ packages:
resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==}
engines: {node: '>= 8'}
- web-streams-polyfill@4.0.0-beta.3:
- resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==}
- engines: {node: '>= 14'}
-
web-vitals@5.1.0:
resolution: {integrity: sha512-ArI3kx5jI0atlTtmV0fWU3fjpLmq/nD3Zr1iFFlJLaqa5wLBkUSzINwBPySCX/8jRyjlmy1Volw1kz1g9XE4Jg==}
@@ -13528,14 +13468,6 @@ snapshots:
'@inquirer/ansi@1.0.2': {}
- '@inquirer/confirm@5.1.21(@types/node@22.19.3)':
- dependencies:
- '@inquirer/core': 10.3.2(@types/node@22.19.3)
- '@inquirer/type': 3.0.10(@types/node@22.19.3)
- optionalDependencies:
- '@types/node': 22.19.3
- optional: true
-
'@inquirer/confirm@5.1.21(@types/node@24.10.10)':
dependencies:
'@inquirer/core': 10.3.2(@types/node@24.10.10)
@@ -13551,20 +13483,6 @@ snapshots:
optionalDependencies:
'@types/node': 25.0.2
- '@inquirer/core@10.3.2(@types/node@22.19.3)':
- dependencies:
- '@inquirer/ansi': 1.0.2
- '@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@22.19.3)
- cli-width: 4.1.0
- mute-stream: 2.0.0
- signal-exit: 4.1.0
- wrap-ansi: 6.2.0
- yoctocolors-cjs: 2.1.3
- optionalDependencies:
- '@types/node': 22.19.3
- optional: true
-
'@inquirer/core@10.3.2(@types/node@24.10.10)':
dependencies:
'@inquirer/ansi': 1.0.2
@@ -13601,11 +13519,6 @@ snapshots:
'@inquirer/figures@1.0.15': {}
- '@inquirer/type@3.0.10(@types/node@22.19.3)':
- optionalDependencies:
- '@types/node': 22.19.3
- optional: true
-
'@inquirer/type@3.0.10(@types/node@24.10.10)':
optionalDependencies:
'@types/node': 24.10.10
@@ -16548,21 +16461,8 @@ snapshots:
dependencies:
'@types/node': 24.10.10
- '@types/node-fetch@2.6.13':
- dependencies:
- '@types/node': 24.10.10
- form-data: 4.0.5
-
'@types/node@12.20.55': {}
- '@types/node@18.19.130':
- dependencies:
- undici-types: 5.26.5
-
- '@types/node@22.19.3':
- dependencies:
- undici-types: 6.21.0
-
'@types/node@24.10.10':
dependencies:
undici-types: 7.16.0
@@ -16911,15 +16811,6 @@ snapshots:
msw: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
vite: 5.4.21(@types/node@25.0.2)(lightningcss@1.30.2)(terser@5.46.0)
- '@vitest/mocker@3.2.4(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
- dependencies:
- '@vitest/spy': 3.2.4
- estree-walker: 3.0.3
- magic-string: 0.30.21
- optionalDependencies:
- msw: 2.12.7(@types/node@22.19.3)(typescript@5.9.3)
- vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
-
'@vitest/mocker@3.2.4(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@vitest/spy': 3.2.4
@@ -17161,10 +17052,6 @@ snapshots:
agent-base@7.1.4: {}
- agentkeepalive@4.6.0:
- dependencies:
- humanize-ms: 1.2.1
-
ai@5.0.113(zod@4.3.6):
dependencies:
'@ai-sdk/gateway': 2.0.21(zod@4.3.6)
@@ -19436,8 +19323,6 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
- form-data-encoder@1.7.2: {}
-
form-data@4.0.5:
dependencies:
asynckit: 0.4.0
@@ -19448,11 +19333,6 @@ snapshots:
format@0.2.2: {}
- formdata-node@4.4.1:
- dependencies:
- node-domexception: 1.0.0
- web-streams-polyfill: 4.0.0-beta.3
-
formdata-polyfill@4.0.10:
dependencies:
fetch-blob: 3.2.0
@@ -19899,10 +19779,6 @@ snapshots:
human-signals@2.1.0: {}
- humanize-ms@1.2.1:
- dependencies:
- ms: 2.1.3
-
hyphenate-style-name@1.1.0: {}
iconv-lite@0.4.24:
@@ -21965,32 +21841,6 @@ snapshots:
ms@2.1.3: {}
- msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3):
- dependencies:
- '@inquirer/confirm': 5.1.21(@types/node@22.19.3)
- '@mswjs/interceptors': 0.40.0
- '@open-draft/deferred-promise': 2.2.0
- '@types/statuses': 2.0.6
- cookie: 1.1.1
- graphql: 16.12.0
- headers-polyfill: 4.0.3
- is-node-process: 1.2.0
- outvariant: 1.4.3
- path-to-regexp: 6.3.0
- picocolors: 1.1.1
- rettime: 0.7.0
- statuses: 2.0.2
- strict-event-emitter: 0.5.1
- tough-cookie: 6.0.0
- type-fest: 5.3.1
- until-async: 3.0.2
- yargs: 17.7.2
- optionalDependencies:
- typescript: 5.9.3
- transitivePeerDependencies:
- - '@types/node'
- optional: true
-
msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3):
dependencies:
'@inquirer/confirm': 5.1.21(@types/node@24.10.10)
@@ -22294,20 +22144,6 @@ snapshots:
is-docker: 2.2.1
is-wsl: 2.2.0
- openai@4.104.0(ws@8.18.3):
- dependencies:
- '@types/node': 18.19.130
- '@types/node-fetch': 2.6.13
- abort-controller: 3.0.0
- agentkeepalive: 4.6.0
- form-data-encoder: 1.7.2
- formdata-node: 4.4.1
- node-fetch: 2.7.0
- optionalDependencies:
- ws: 8.18.3
- transitivePeerDependencies:
- - encoding
-
openai@6.17.0(ws@8.18.3)(zod@4.3.6):
optionalDependencies:
ws: 8.18.3
@@ -24329,6 +24165,7 @@ snapshots:
get-tsconfig: 4.13.0
optionalDependencies:
fsevents: 2.3.3
+ optional: true
turbo-darwin-64@2.8.3:
optional: true
@@ -24445,10 +24282,6 @@ snapshots:
has-symbols: 1.1.0
which-boxed-primitive: 1.1.1
- undici-types@5.26.5: {}
-
- undici-types@6.21.0: {}
-
undici-types@7.16.0: {}
undici@5.29.0:
@@ -24720,27 +24553,6 @@ snapshots:
- supports-color
- terser
- vite-node@3.2.4(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
- dependencies:
- cac: 6.7.14
- debug: 4.4.3(supports-color@10.2.2)
- es-module-lexer: 1.7.0
- pathe: 2.0.3
- vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- transitivePeerDependencies:
- - '@types/node'
- - jiti
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - yaml
-
vite-node@3.2.4(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
cac: 6.7.14
@@ -24784,23 +24596,6 @@ snapshots:
lightningcss: 1.30.2
terser: 5.46.0
- vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
- dependencies:
- esbuild: 0.27.1
- fdir: 6.5.0(picomatch@4.0.3)
- picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.53.5
- tinyglobby: 0.2.15
- optionalDependencies:
- '@types/node': 22.19.3
- fsevents: 2.3.3
- jiti: 2.6.1
- lightningcss: 1.30.2
- terser: 5.46.0
- tsx: 4.21.0
- yaml: 2.8.2
-
vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
esbuild: 0.27.1
@@ -24871,50 +24666,6 @@ snapshots:
- supports-color
- terser
- vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.3)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
- dependencies:
- '@types/chai': 5.2.3
- '@vitest/expect': 3.2.4
- '@vitest/mocker': 3.2.4(msw@2.12.7(@types/node@22.19.3)(typescript@5.9.3))(vite@7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
- '@vitest/pretty-format': 3.2.4
- '@vitest/runner': 3.2.4
- '@vitest/snapshot': 3.2.4
- '@vitest/spy': 3.2.4
- '@vitest/utils': 3.2.4
- chai: 5.3.3
- debug: 4.4.3(supports-color@10.2.2)
- expect-type: 1.3.0
- magic-string: 0.30.21
- pathe: 2.0.3
- picomatch: 4.0.3
- std-env: 3.10.0
- tinybench: 2.9.0
- tinyexec: 0.3.2
- tinyglobby: 0.2.15
- tinypool: 1.1.1
- tinyrainbow: 2.0.0
- vite: 7.3.0(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- vite-node: 3.2.4(@types/node@22.19.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- why-is-node-running: 2.3.0
- optionalDependencies:
- '@types/debug': 4.1.12
- '@types/node': 22.19.3
- '@vitest/ui': 3.2.4(vitest@3.2.4)
- jsdom: 27.4.0(postcss@8.5.6)
- transitivePeerDependencies:
- - jiti
- - less
- - lightningcss
- - msw
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
- - tsx
- - yaml
-
vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.10.10)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@types/chai': 5.2.3
@@ -25025,8 +24776,6 @@ snapshots:
web-streams-polyfill@3.3.3: {}
- web-streams-polyfill@4.0.0-beta.3: {}
-
web-vitals@5.1.0: {}
webidl-conversions@3.0.1: {}
From 680ee4218611ecdc21a7c577d1259b7c6d2f300d Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Tue, 10 Feb 2026 09:04:48 +0100
Subject: [PATCH 29/69] Add checkout localization feature flag
---
docs/docs.json | 3 +-
docs/features/checkout/localization.mdx | 66 +++++++++++++++++++++++++
server/polar/organization/schemas.py | 4 ++
3 files changed, 72 insertions(+), 1 deletion(-)
create mode 100644 docs/features/checkout/localization.mdx
diff --git a/docs/docs.json b/docs/docs.json
index d0a1fcda76..06ac791b1d 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -82,7 +82,8 @@
"pages": [
"features/checkout/embed",
"features/checkout/links",
- "features/checkout/session"
+ "features/checkout/session",
+ "features/checkout/localization"
]
},
"features/trials",
diff --git a/docs/features/checkout/localization.mdx b/docs/features/checkout/localization.mdx
new file mode 100644
index 0000000000..e9b22cd818
--- /dev/null
+++ b/docs/features/checkout/localization.mdx
@@ -0,0 +1,66 @@
+---
+title: "Checkout Localization"
+sidebarTitle: "Localization"
+description: "Serve checkout in your customer's preferred language"
+---
+
+
+ Checkout localization is currently in **beta**. To enable it, turn on the
+ feature flag for your organization.
+
+
+## How it works
+
+When checkout localization is enabled for your organization, the checkout page automatically detects the customer's preferred language from their browser settings and displays the checkout in that language.
+
+This includes translated labels, placeholders, and descriptions for all standard checkout fields.
+
+## Overriding the language via API
+
+You can explicitly set the checkout language by passing the `locale` parameter when creating a checkout session via the API:
+
+```bash
+curl -X POST https://api.polar.sh/v1/checkouts/ \
+ -H "Authorization: Bearer " \
+ -H "Content-Type: application/json" \
+ -d '{
+ "product_price_id": "",
+ "locale": "fr"
+ }'
+```
+
+When a `locale` is set explicitly, it takes precedence over the browser's language preference.
+
+## Overriding the language via querystring
+
+You can append `?locale=` to any checkout link and that will take precedence over the browser's language preference.
+
+## Supported languages
+
+- English (en) (default)
+- Dutch (nl)
+
+The following languages are coming soon:
+
+- Spanish
+- French
+- Swedish
+- German
+
+Want to help us review translations for an upcoming language? Reach out at [pieter+i18n@polar.sh](mailto:pieter+i18n@polar.sh).
+
+## Known limitations
+
+During the beta period, localization is scoped to the checkout page itself:
+
+- **Error messages** are displayed in English
+- **Transactional emails** (receipts, confirmations) are sent in English
+- **Customer portal** is displayed in English
+- There is **no language selector** on the checkout page — language is determined automatically from the browser, via the API `locale` parameter or via a querystring `?locale`.
+
+## Feedback
+
+We'd love to hear your feedback on checkout localization:
+
+- Open an issue on [GitHub](https://github.com/polarsource/polar)
+- Email us at [pieter+i18n@polar.sh](mailto:pieter+i18n@polar.sh)
diff --git a/server/polar/organization/schemas.py b/server/polar/organization/schemas.py
index d1360126b0..0a0e9be1f0 100644
--- a/server/polar/organization/schemas.py
+++ b/server/polar/organization/schemas.py
@@ -99,6 +99,10 @@ class OrganizationFeatureSettings(Schema):
"If this organization has multiple presentment currencies enabled"
),
)
+ checkout_localization_enabled: bool = Field(
+ False,
+ description="If this organization has checkout localization enabled",
+ )
class OrganizationSubscribePromoteSettings(Schema):
From f605bb1ed170cf1e5fc3f369370065bd14c79df8 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 09:54:31 +0100
Subject: [PATCH 30/69] Force `en-US` locale when feature flag is not enabled
---
server/polar/checkout/service.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/server/polar/checkout/service.py b/server/polar/checkout/service.py
index 78f87ea24b..68f97a2495 100644
--- a/server/polar/checkout/service.py
+++ b/server/polar/checkout/service.py
@@ -540,6 +540,11 @@ async def create(
if checkout.locale is None and checkout.customer.locale is not None:
checkout.locale = checkout.customer.locale
+ if not product.organization.feature_settings.get(
+ "checkout_localization_enabled", False
+ ):
+ checkout.locale = "en-US"
+
# Auto-select business customer if they have both a billing name (without the fallback to customer.name)
# and a billing address since that means they've previously checked the is_business_customer checkbox
# Only auto-select if is_business_customer wasn't explicitly set in the request
From b63138cd02dc5aa1e40d26f1884347084de6c5a3 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 10:34:49 +0100
Subject: [PATCH 31/69] Add UI for feature flag
---
.../components/Settings/FeatureSettings.tsx | 32 ++++++++++++++
.../src/components/Settings/SettingsGroup.tsx | 2 +-
clients/packages/client/src/v1.ts | 44 +++++++++++++++++++
server/polar/checkout/service.py | 13 +++---
4 files changed, 85 insertions(+), 6 deletions(-)
diff --git a/clients/apps/web/src/components/Settings/FeatureSettings.tsx b/clients/apps/web/src/components/Settings/FeatureSettings.tsx
index 1490323dae..06cf78bd72 100644
--- a/clients/apps/web/src/components/Settings/FeatureSettings.tsx
+++ b/clients/apps/web/src/components/Settings/FeatureSettings.tsx
@@ -84,6 +84,38 @@ export default function FeatureSettings({
}}
/>
+
+ Show{' '}
+
+ translated checkouts
+ {' '}
+ to your customers.
+ >
+ }
+ >
+ {
+ return (
+ <>
+ field.onChange(enabled)}
+ />
+ >
+ )
+ }}
+ />
+
diff --git a/clients/apps/web/src/components/Settings/SettingsGroup.tsx b/clients/apps/web/src/components/Settings/SettingsGroup.tsx
index 2644c4d5ef..15963d6006 100644
--- a/clients/apps/web/src/components/Settings/SettingsGroup.tsx
+++ b/clients/apps/web/src/components/Settings/SettingsGroup.tsx
@@ -10,7 +10,7 @@ export const SettingsGroup: React.FC = ({
export interface SettingsGroupItemProps {
title: string
- description?: string
+ description?: React.ReactNode
vertical?: boolean
}
diff --git a/clients/packages/client/src/v1.ts b/clients/packages/client/src/v1.ts
index 4434365e67..51f27fb46e 100644
--- a/clients/packages/client/src/v1.ts
+++ b/clients/packages/client/src/v1.ts
@@ -9448,6 +9448,8 @@ export interface components {
customer_billing_address: components['schemas']['Address'] | null
/** Customer Tax Id */
customer_tax_id: string | null
+ /** Locale */
+ locale?: string | null
/** Payment Processor Metadata */
payment_processor_metadata: {
[key: string]: string
@@ -9570,6 +9572,8 @@ export interface components {
customer_billing_address?: components['schemas']['AddressInput'] | null
/** Customer Tax Id */
customer_tax_id?: string | null
+ /** Locale */
+ locale?: string | null
/**
* Discount Code
* @description Discount code to apply to the checkout.
@@ -9610,6 +9614,8 @@ export interface components {
* @description ID of a subscription to upgrade. It must be on a free pricing. If checkout is successful, metadata set on this checkout will be copied to the subscription, and existing keys will be overwritten.
*/
subscription_id?: string | null
+ /** Locale */
+ locale?: string | null
}
/**
* CheckoutCreatedEvent
@@ -10456,6 +10462,8 @@ export interface components {
* @description If you plan to embed the checkout session, set this to the Origin of the embedding page. It'll allow the Polar iframe to communicate with the parent page.
*/
embed_origin?: string | null
+ /** Locale */
+ locale?: string | null
/**
* Product Price Id
* Format: uuid4
@@ -10683,6 +10691,8 @@ export interface components {
* @description If you plan to embed the checkout session, set this to the Origin of the embedding page. It'll allow the Polar iframe to communicate with the parent page.
*/
embed_origin?: string | null
+ /** Locale */
+ locale?: string | null
currency?: components['schemas']['PresentmentCurrency'] | null
/**
* Product Id
@@ -10825,6 +10835,8 @@ export interface components {
* @description If you plan to embed the checkout session, set this to the Origin of the embedding page. It'll allow the Polar iframe to communicate with the parent page.
*/
embed_origin?: string | null
+ /** Locale */
+ locale?: string | null
currency?: components['schemas']['PresentmentCurrency'] | null
/**
* Products
@@ -11055,6 +11067,8 @@ export interface components {
customer_billing_address: components['schemas']['Address'] | null
/** Customer Tax Id */
customer_tax_id: string | null
+ /** Locale */
+ locale?: string | null
/** Payment Processor Metadata */
payment_processor_metadata: {
[key: string]: string
@@ -11312,6 +11326,8 @@ export interface components {
customer_billing_address: components['schemas']['Address'] | null
/** Customer Tax Id */
customer_tax_id: string | null
+ /** Locale */
+ locale?: string | null
/** Payment Processor Metadata */
payment_processor_metadata: {
[key: string]: string
@@ -11420,6 +11436,8 @@ export interface components {
customer_billing_address?: components['schemas']['AddressInput'] | null
/** Customer Tax Id */
customer_tax_id?: string | null
+ /** Locale */
+ locale?: string | null
/** @description The interval unit for the trial period. */
trial_interval?: components['schemas']['TrialInterval'] | null
/**
@@ -11541,6 +11559,8 @@ export interface components {
customer_billing_address?: components['schemas']['AddressInput'] | null
/** Customer Tax Id */
customer_tax_id?: string | null
+ /** Locale */
+ locale?: string | null
/**
* Discount Code
* @description Discount code to apply to the checkout.
@@ -12874,6 +12894,8 @@ export interface components {
billing_address: components['schemas']['Address'] | null
/** Tax Id */
tax_id: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
/**
* Organization Id
* Format: uuid4
@@ -13317,6 +13339,8 @@ export interface components {
billing_address?: components['schemas']['AddressInput'] | null
/** Tax Id */
tax_id?: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
/**
* @description The type of customer. Defaults to 'individual'. Set to 'team' for customers that can have multiple members.
* @example individual
@@ -14797,6 +14821,8 @@ export interface components {
billing_address: components['schemas']['Address'] | null
/** Tax Id */
tax_id: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
/**
* Organization Id
* Format: uuid4
@@ -15498,6 +15524,8 @@ export interface components {
billing_address?: components['schemas']['AddressInput'] | null
/** Tax Id */
tax_id?: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
/**
* External Id
* @description The ID of the customer in your system. This must be unique within the organization. Once set, it can't be updated.
@@ -15540,6 +15568,8 @@ export interface components {
billing_address?: components['schemas']['AddressInput'] | null
/** Tax Id */
tax_id?: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
}
/**
* CustomerUpdatedEvent
@@ -15751,6 +15781,8 @@ export interface components {
billing_address: components['schemas']['Address'] | null
/** Tax Id */
tax_id: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
/**
* Organization Id
* Format: uuid4
@@ -18151,6 +18183,8 @@ export interface components {
billing_address: components['schemas']['Address'] | null
/** Tax Id */
tax_id: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
/**
* Organization Id
* Format: uuid4
@@ -20200,6 +20234,8 @@ export interface components {
billing_address: components['schemas']['Address'] | null
/** Tax Id */
tax_id: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
/**
* Organization Id
* Format: uuid4
@@ -21183,6 +21219,12 @@ export interface components {
* @default false
*/
presentment_currencies_enabled: boolean
+ /**
+ * Checkout Localization Enabled
+ * @description If this organization has checkout localization enabled
+ * @default false
+ */
+ checkout_localization_enabled: boolean
}
/** OrganizationMember */
OrganizationMember: {
@@ -24307,6 +24349,8 @@ export interface components {
billing_address: components['schemas']['Address'] | null
/** Tax Id */
tax_id: [string, components['schemas']['TaxIDFormat']] | null
+ /** Locale */
+ locale?: string | null
/**
* Organization Id
* Format: uuid4
diff --git a/server/polar/checkout/service.py b/server/polar/checkout/service.py
index 68f97a2495..b4a93563c6 100644
--- a/server/polar/checkout/service.py
+++ b/server/polar/checkout/service.py
@@ -540,11 +540,6 @@ async def create(
if checkout.locale is None and checkout.customer.locale is not None:
checkout.locale = checkout.customer.locale
- if not product.organization.feature_settings.get(
- "checkout_localization_enabled", False
- ):
- checkout.locale = "en-US"
-
# Auto-select business customer if they have both a billing name (without the fallback to customer.name)
# and a billing address since that means they've previously checked the is_business_customer checkbox
# Only auto-select if is_business_customer wasn't explicitly set in the request
@@ -570,6 +565,14 @@ async def create(
"customer_session_client_secret": stripe_customer_session.client_secret,
}
+ # `None` locale would opt in to browser-based language detection.
+ # If people haven't opted in to this yet, we hardcode the default locale
+ # to `en-US` to keep the current behavior
+ if not product.organization.feature_settings.get(
+ "checkout_localization_enabled", False
+ ):
+ checkout.locale = "en-US"
+
session.add(checkout)
checkout = await self._update_ip_country(session, checkout, ip_country)
From e22593a2b11e7c8734673dc7799b63e5a44f71ec Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 11:40:30 +0100
Subject: [PATCH 32/69] Import i18n automations
Co-authored-by: sebastianekstrom
---
.github/workflows/i18n_translate.yml | 55 ++
clients/packages/i18n/.env.template | 4 +
clients/packages/i18n/.prettierignore | 1 +
clients/packages/i18n/package.json | 13 +-
clients/packages/i18n/scripts/logger.ts | 119 ++++
clients/packages/i18n/scripts/translate.ts | 406 ++++++++++++
clients/packages/i18n/scripts/utils.test.ts | 624 ++++++++++++++++++
clients/packages/i18n/scripts/utils.ts | 326 +++++++++
clients/packages/i18n/scripts/validate.ts | 136 ++++
clients/packages/i18n/src/config.ts | 10 +
clients/packages/i18n/src/index.ts | 8 +-
.../i18n/src/locales/config/.cache.json | 124 ++++
.../i18n/src/locales/config/locks.json | 3 +
.../i18n/src/locales/config/prompt.md | 197 ++++++
clients/packages/i18n/src/locales/en.ts | 15 -
clients/packages/i18n/src/locales/nl.ts | 116 ++--
clients/packages/i18n/vitest.config.ts | 8 +
clients/pnpm-lock.yaml | 92 ++-
18 files changed, 2178 insertions(+), 79 deletions(-)
create mode 100644 .github/workflows/i18n_translate.yml
create mode 100644 clients/packages/i18n/.env.template
create mode 100644 clients/packages/i18n/scripts/logger.ts
create mode 100644 clients/packages/i18n/scripts/translate.ts
create mode 100644 clients/packages/i18n/scripts/utils.test.ts
create mode 100644 clients/packages/i18n/scripts/utils.ts
create mode 100644 clients/packages/i18n/scripts/validate.ts
create mode 100644 clients/packages/i18n/src/config.ts
create mode 100644 clients/packages/i18n/src/locales/config/.cache.json
create mode 100644 clients/packages/i18n/src/locales/config/locks.json
create mode 100644 clients/packages/i18n/src/locales/config/prompt.md
create mode 100644 clients/packages/i18n/vitest.config.ts
diff --git a/.github/workflows/i18n_translate.yml b/.github/workflows/i18n_translate.yml
new file mode 100644
index 0000000000..53eaed75a5
--- /dev/null
+++ b/.github/workflows/i18n_translate.yml
@@ -0,0 +1,55 @@
+name: Generate Translations
+
+on:
+ pull_request:
+ paths:
+ - 'clients/packages/i18n/src/locales/en.ts'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ translate:
+ runs-on: ubuntu-latest
+
+ defaults:
+ run:
+ working-directory: ${{ github.workspace }}/clients
+
+ permissions:
+ contents: write
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+ with:
+ ref: ${{ github.head_ref }}
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - uses: pnpm/action-setup@v4
+ with:
+ package_json_file: clients/package.json
+
+ - name: Setup Node.js environment
+ uses: actions/setup-node@v6
+ with:
+ node-version-file: clients/.node-version
+ cache: 'pnpm'
+ cache-dependency-path: 'clients/pnpm-lock.yaml'
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Generate translations
+ env:
+ GOOGLE_GENERATIVE_AI_API_KEY: ${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }}
+ run: pnpm --filter @polar-sh/i18n translate
+
+ - name: Commit translations
+ run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add packages/i18n/
+ git diff --staged --quiet || git commit -m "chore(i18n): update translations"
+ git push
diff --git a/clients/packages/i18n/.env.template b/clients/packages/i18n/.env.template
new file mode 100644
index 0000000000..b25a71076c
--- /dev/null
+++ b/clients/packages/i18n/.env.template
@@ -0,0 +1,4 @@
+# Copy this file to .env or .env.local and replace the values
+# cp .env.template .env.local
+
+GOOGLE_GENERATIVE_AI_API_KEY="*** REPLACE ***"
diff --git a/clients/packages/i18n/.prettierignore b/clients/packages/i18n/.prettierignore
index 849ddff3b7..b1448a4a4c 100644
--- a/clients/packages/i18n/.prettierignore
+++ b/clients/packages/i18n/.prettierignore
@@ -1 +1,2 @@
dist/
+src/locales/config/.cache.json
diff --git a/clients/packages/i18n/package.json b/clients/packages/i18n/package.json
index 2aef39c258..ee6c2ffe3f 100644
--- a/clients/packages/i18n/package.json
+++ b/clients/packages/i18n/package.json
@@ -12,9 +12,13 @@
"directory": "clients/packages/i18n"
},
"scripts": {
+ "translate": "tsx --env-file=.env.local scripts/translate.ts",
+ "validate": "tsx scripts/validate.ts",
"lint": "prettier -c .",
"typecheck": "tsc --noEmit",
- "build": "rm -rf dist && tsup"
+ "build": "rm -rf dist && tsup",
+ "test": "vitest run",
+ "test:watch": "vitest"
},
"exports": {
".": {
@@ -27,12 +31,17 @@
"dist"
],
"devDependencies": {
+ "@ai-sdk/google": "^2.0.46",
"@polar-sh/typescript-config": "workspace:*",
"@types/react": "^19.2.13",
+ "ai": "^5.0.113",
+ "dotenv": "^16.4.5",
"prettier": "^3.7.4",
"react": "^19.2.4",
"tsup": "^8.5.1",
- "typescript": "latest"
+ "tsx": "^4.19.0",
+ "typescript": "latest",
+ "vitest": "^3.2.4"
},
"peerDependencies": {
"react": "^19.2.4"
diff --git a/clients/packages/i18n/scripts/logger.ts b/clients/packages/i18n/scripts/logger.ts
new file mode 100644
index 0000000000..3159b1e3f4
--- /dev/null
+++ b/clients/packages/i18n/scripts/logger.ts
@@ -0,0 +1,119 @@
+/**
+ * Professional CLI logger with colors and formatting
+ */
+
+const colors = {
+ reset: '\x1b[0m',
+ bold: '\x1b[1m',
+ dim: '\x1b[2m',
+ green: '\x1b[32m',
+ yellow: '\x1b[33m',
+ blue: '\x1b[34m',
+ magenta: '\x1b[35m',
+ cyan: '\x1b[36m',
+ gray: '\x1b[90m',
+}
+
+const symbols = {
+ check: '✓',
+ cross: '✗',
+ arrow: '→',
+ bullet: '•',
+ info: 'ℹ',
+ warning: '⚠',
+}
+
+export function bold(text: string): string {
+ return `${colors.bold}${text}${colors.reset}`
+}
+
+export function dim(text: string): string {
+ return `${colors.dim}${text}${colors.reset}`
+}
+
+export function green(text: string): string {
+ return `${colors.green}${text}${colors.reset}`
+}
+
+export function yellow(text: string): string {
+ return `${colors.yellow}${text}${colors.reset}`
+}
+
+export function blue(text: string): string {
+ return `${colors.blue}${text}${colors.reset}`
+}
+
+export function cyan(text: string): string {
+ return `${colors.cyan}${text}${colors.reset}`
+}
+
+export function gray(text: string): string {
+ return `${colors.gray}${text}${colors.reset}`
+}
+
+export function header(title: string): void {
+ console.log()
+ console.log(bold(blue(` ${title}`)))
+ console.log(gray(' ' + '─'.repeat(40)))
+}
+
+export function success(message: string): void {
+ console.log(` ${green(symbols.check)} ${message}`)
+}
+
+export function warning(message: string): void {
+ console.log(` ${yellow(symbols.warning)} ${message}`)
+}
+
+export function error(message: string): void {
+ console.log(
+ ` ${colors.bold}\x1b[31m${symbols.cross}${colors.reset} ${message}`,
+ )
+}
+
+export function info(message: string): void {
+ console.log(` ${cyan(symbols.info)} ${message}`)
+}
+
+export function item(message: string): void {
+ console.log(` ${gray(symbols.bullet)} ${message}`)
+}
+
+export function step(message: string): void {
+ console.log(` ${gray(symbols.arrow)} ${message}`)
+}
+
+export function blank(): void {
+ console.log()
+}
+
+export function summary(stats: {
+ translated: number
+ skipped: number
+ removed: number
+}): void {
+ console.log()
+ console.log(gray(' ' + '─'.repeat(50)))
+ console.log(bold(' Summary'))
+ console.log(` Translated: ${green(stats.translated.toString())} keys`)
+ console.log(
+ ` Skipped: ${gray(stats.skipped.toString())} keys ${dim('(unchanged)')}`,
+ )
+ if (stats.removed > 0) {
+ console.log(
+ ` Removed: ${yellow(stats.removed.toString())} keys ${dim('(orphaned)')}`,
+ )
+ }
+ console.log()
+}
+
+export function localeHeader(locale: string, localeName: string): void {
+ console.log()
+ console.log(` ${bold(locale.toUpperCase())} ${dim(`(${localeName})`)}`)
+}
+
+export function done(message: string): void {
+ console.log()
+ console.log(` ${green(symbols.check)} ${bold(message)}`)
+ console.log()
+}
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
new file mode 100644
index 0000000000..4720862797
--- /dev/null
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -0,0 +1,406 @@
+import { google } from '@ai-sdk/google'
+import { generateText } from 'ai'
+import dotenv from 'dotenv'
+import { execSync } from 'node:child_process'
+import fs from 'node:fs'
+import path from 'node:path'
+import * as log from './logger'
+import {
+ type EntryValue,
+ type NestedObject,
+ type TranslationCache,
+ arraysEqual,
+ extractPlaceholders,
+ findChangedKeys,
+ findOrphanedKeys,
+ findPluralPaths,
+ flattenKeys,
+ flattenKeysToStrings,
+ getStringValue,
+ normalizeResponse,
+ prepareForLLM,
+ unflattenKeys,
+} from './utils'
+
+import { LOCALE_NAMES, SUPPORTED_LOCALES } from '../src/config'
+
+dotenv.config({ path: path.join(import.meta.dirname, '../.env.local') })
+dotenv.config({ path: path.join(import.meta.dirname, '../.env') })
+
+const LOCALES_DIR = path.join(import.meta.dirname, '../src/locales')
+const CONFIG_DIR = path.join(LOCALES_DIR, 'config')
+const PROMPT_FILE = path.join(CONFIG_DIR, 'prompt.md')
+const LOCKS_FILE = path.join(CONFIG_DIR, 'locks.json')
+const CACHE_FILE = path.join(CONFIG_DIR, '.cache.json')
+
+async function callLLM(
+ targetLocale: string,
+ sourceStrings: Record,
+ prompt: string,
+): Promise> {
+ const localeName = LOCALE_NAMES[targetLocale] || targetLocale
+
+ const systemPromptPart = prompt
+ .split('USER')[0]
+ .replace('SYSTEM', '')
+ .replace(/{TARGET_LOCALE}/g, localeName)
+ .replace('{EN_JSON}', JSON.stringify(sourceStrings, null, 2))
+ .trim()
+
+ const userPromptPart = prompt
+ .split('USER')[1]
+ .replace(/{TARGET_LOCALE}/g, localeName)
+ .replace('{EN_JSON}', JSON.stringify(sourceStrings, null, 2))
+ .trim()
+
+ log.step(`Calling Gemini 2.5 Flash...`)
+
+ const { text } = await generateText({
+ model: google('gemini-2.5-flash'),
+ system: systemPromptPart,
+ prompt: userPromptPart,
+ temperature: 0.3,
+ })
+
+ // Strip markdown code fences if present
+ const cleaned = text
+ .replace(/^```(?:json)?\s*\n?/gm, '')
+ .replace(/\n?```\s*$/gm, '')
+ .trim()
+
+ try {
+ const parsed = JSON.parse(cleaned) as Record
+ return normalizeResponse(parsed)
+ } catch {
+ throw new Error(
+ `Invalid JSON response from Gemini for ${targetLocale}: ${cleaned}`,
+ )
+ }
+}
+
+function loadCache(): TranslationCache {
+ if (fs.existsSync(CACHE_FILE)) {
+ return JSON.parse(fs.readFileSync(CACHE_FILE, 'utf-8')) as TranslationCache
+ }
+ return {}
+}
+
+function saveCache(cache: TranslationCache): void {
+ fs.writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2) + '\n')
+}
+
+function writeLocaleFile(locale: string, obj: NestedObject): void {
+ const filePath = path.join(LOCALES_DIR, `${locale}.ts`)
+ const content = `export const ${locale} = ${JSON.stringify(obj, null, 2)} as const\n`
+ fs.writeFileSync(filePath, content)
+
+ // Run prettier on the generated file
+ try {
+ execSync(`npx prettier --write "${filePath}"`, {
+ stdio: 'pipe',
+ cwd: path.join(import.meta.dirname, '..'),
+ })
+ } catch {
+ log.warning(`Prettier formatting failed for ${locale}.ts`)
+ }
+}
+
+async function loadExistingLocale(
+ locale: string,
+): Promise {
+ const filePath = path.join(LOCALES_DIR, `${locale}.ts`)
+ if (!fs.existsSync(filePath)) return null
+
+ try {
+ const mod = await import(`${filePath}?t=${Date.now()}`)
+ return (mod[locale] ?? null) as NestedObject | null
+ } catch {
+ log.warning(`Could not import ${locale}.ts`)
+ return null
+ }
+}
+
+/**
+ * Seed cache from current source values for locales that already have translations.
+ * This prevents re-translating everything on first run when an existing locale file exists.
+ */
+function seedCacheForLocale(
+ locale: string,
+ sourceKeys: Map,
+ existing: NestedObject,
+ cache: TranslationCache,
+): void {
+ const existingKeys = flattenKeys(existing)
+ const localeCache: Record = {}
+
+ for (const [key, value] of sourceKeys) {
+ if (existingKeys.has(key)) {
+ localeCache[key] = getStringValue(value)
+ }
+ }
+
+ if (Object.keys(localeCache).length > 0) {
+ cache[locale] = localeCache
+ log.info(`Seeded cache with ${Object.keys(localeCache).length} keys`)
+ }
+}
+
+async function translate(
+ en: NestedObject,
+ sourceKeys: Map,
+ pluralPaths: Set,
+ targetLocales: string[],
+ locks: Record,
+ prompt: string,
+ cache: TranslationCache,
+) {
+ log.header('Polar i18n')
+ log.info(`Source: ${log.bold(sourceKeys.size.toString())} keys in en.ts`)
+ log.info(`Targets: ${targetLocales.map((l) => log.cyan(l)).join(', ')}`)
+
+ const stats = { translated: 0, skipped: 0, removed: 0 }
+
+ for (const locale of targetLocales) {
+ const localeName = LOCALE_NAMES[locale] || locale
+ log.localeHeader(locale, localeName)
+
+ const lockedKeys = locks[locale] ?? []
+ let localeCache = cache[locale] ?? {}
+
+ const existing = (await loadExistingLocale(locale)) ?? ({} as NestedObject)
+
+ // Seed cache on first run if locale file exists but cache is empty
+ if (
+ Object.keys(localeCache).length === 0 &&
+ Object.keys(existing).length > 0
+ ) {
+ seedCacheForLocale(locale, sourceKeys, existing, cache)
+ localeCache = cache[locale] ?? {}
+ }
+
+ const changedKeys = findChangedKeys(
+ sourceKeys,
+ localeCache,
+ existing,
+ ).filter((key) => !lockedKeys.includes(key))
+
+ const orphanedKeys = findOrphanedKeys(sourceKeys, existing)
+
+ if (changedKeys.length === 0 && orphanedKeys.length === 0) {
+ log.success('Up to date')
+ stats.skipped += sourceKeys.size
+ continue
+ }
+
+ if (changedKeys.length > 0) {
+ log.item(
+ `${changedKeys.length} key${changedKeys.length > 1 ? 's' : ''} to translate`,
+ )
+ }
+ if (orphanedKeys.length > 0) {
+ log.item(
+ `${orphanedKeys.length} orphaned key${orphanedKeys.length > 1 ? 's' : ''} to remove`,
+ )
+ }
+
+ let translations: Record = {}
+ if (changedKeys.length > 0) {
+ const toTranslate = prepareForLLM(sourceKeys, changedKeys)
+ translations = await callLLM(locale, toTranslate, prompt)
+ }
+
+ const existingFlat = flattenKeys(existing)
+ const updatedFlat = new Map()
+
+ for (const [key, value] of existingFlat) {
+ if (!orphanedKeys.includes(key) && !changedKeys.includes(key)) {
+ updatedFlat.set(key, getStringValue(value))
+ }
+ }
+
+ let translatedCount = 0
+ for (const key of changedKeys) {
+ if (translations[key]) {
+ updatedFlat.set(key, translations[key])
+ localeCache[key] = getStringValue(sourceKeys.get(key) as EntryValue)
+ translatedCount++
+ log.item(`${log.dim(key)}`)
+ log.item(
+ ` ${log.gray('en:')} ${getStringValue(sourceKeys.get(key) as EntryValue)}`,
+ )
+ log.item(` ${log.cyan(locale + ':')} ${translations[key]}`)
+ } else {
+ log.warning(`No translation received for "${key}"`)
+ }
+ }
+
+ for (const key of orphanedKeys) {
+ delete localeCache[key]
+ }
+
+ cache[locale] = localeCache
+
+ const updated = unflattenKeys(updatedFlat, pluralPaths)
+ writeLocaleFile(locale, updated)
+
+ stats.translated += translatedCount
+ stats.removed += orphanedKeys.length
+ stats.skipped += sourceKeys.size - changedKeys.length
+
+ log.success(`Written to ${locale}.ts`)
+ }
+
+ saveCache(cache)
+
+ log.summary(stats)
+}
+
+function validate(
+ sourceKeys: Map,
+ targetLocales: string[],
+ localeData: Map,
+): boolean {
+ const errors: string[] = []
+
+ log.blank()
+ log.step('Validating translations...')
+
+ for (const locale of targetLocales) {
+ const translation = localeData.get(locale)
+
+ if (!translation) {
+ errors.push(`${locale}: File does not exist`)
+ log.error(`${locale}: File does not exist`)
+ continue
+ }
+
+ const translationKeys = flattenKeysToStrings(translation)
+
+ const missingKeys: string[] = []
+ for (const key of sourceKeys.keys()) {
+ if (!translationKeys.has(key)) {
+ missingKeys.push(key)
+ }
+ }
+
+ if (missingKeys.length > 0) {
+ errors.push(`${locale}: Missing ${missingKeys.length} keys`)
+ log.warning(
+ `${locale}: Missing ${missingKeys.length} key${missingKeys.length > 1 ? 's' : ''}`,
+ )
+ for (const key of missingKeys) {
+ log.item(log.dim(key))
+ }
+ }
+
+ const extraKeys: string[] = []
+ for (const key of translationKeys.keys()) {
+ if (!sourceKeys.has(key)) {
+ extraKeys.push(key)
+ }
+ }
+
+ if (extraKeys.length > 0) {
+ errors.push(`${locale}: ${extraKeys.length} extra keys`)
+ log.warning(
+ `${locale}: ${extraKeys.length} extra key${extraKeys.length > 1 ? 's' : ''}`,
+ )
+ for (const key of extraKeys) {
+ log.item(log.dim(key))
+ }
+ }
+
+ const sourceStrings = flattenKeysToStrings(
+ localeData.get('en') as NestedObject,
+ )
+ const placeholderErrors: string[] = []
+ for (const [key, sourceValue] of sourceStrings) {
+ const translationValue = translationKeys.get(key)
+ if (!translationValue) continue
+
+ const sourcePlaceholders = extractPlaceholders(sourceValue)
+ const translationPlaceholders = extractPlaceholders(translationValue)
+
+ if (!arraysEqual(sourcePlaceholders, translationPlaceholders)) {
+ placeholderErrors.push(key)
+ errors.push(`${locale}.${key}: Placeholder mismatch`)
+ }
+ }
+
+ if (placeholderErrors.length > 0) {
+ log.warning(
+ `${locale}: ${placeholderErrors.length} placeholder mismatch${placeholderErrors.length > 1 ? 'es' : ''}`,
+ )
+ for (const key of placeholderErrors) {
+ log.item(log.dim(key))
+ }
+ }
+
+ if (
+ missingKeys.length === 0 &&
+ extraKeys.length === 0 &&
+ placeholderErrors.length === 0
+ ) {
+ log.success(`${locale}: All keys valid`)
+ }
+ }
+
+ return errors.length === 0
+}
+
+async function main() {
+ // Import source locale
+ const enModule = await import('../src/locales/en.ts')
+ const en = enModule.en as NestedObject
+
+ const locks = JSON.parse(fs.readFileSync(LOCKS_FILE, 'utf-8')) as Record<
+ string,
+ string[]
+ >
+ const prompt = fs.readFileSync(PROMPT_FILE, 'utf-8')
+ const cache = loadCache()
+
+ const sourceKeys = flattenKeys(en)
+ const pluralPaths = findPluralPaths(en as Record)
+ const targetLocales = SUPPORTED_LOCALES.filter((l): l is string => l !== 'en')
+
+ // Safety guard: never write to en.ts
+ if (targetLocales.includes('en')) {
+ log.error('Cannot translate to English (source locale)')
+ process.exit(1)
+ }
+
+ await translate(
+ en,
+ sourceKeys,
+ pluralPaths,
+ targetLocales,
+ locks,
+ prompt,
+ cache,
+ )
+
+ // Load all locale data for validation
+ const localeData = new Map()
+ localeData.set('en', en)
+ for (const locale of targetLocales) {
+ const data = await loadExistingLocale(locale)
+ if (data) localeData.set(locale, data)
+ }
+
+ const isValid = validate(sourceKeys, targetLocales, localeData)
+
+ if (!isValid) {
+ log.blank()
+ log.error('Validation failed')
+ process.exit(1)
+ }
+
+ log.done('Translation and validation complete')
+}
+
+main().catch((error) => {
+ log.blank()
+ log.error(`Translation failed: ${error.message}`)
+ process.exit(1)
+})
diff --git a/clients/packages/i18n/scripts/utils.test.ts b/clients/packages/i18n/scripts/utils.test.ts
new file mode 100644
index 0000000000..0a16421358
--- /dev/null
+++ b/clients/packages/i18n/scripts/utils.test.ts
@@ -0,0 +1,624 @@
+import { describe, expect, it } from 'vitest'
+import {
+ arraysEqual,
+ extractPlaceholders,
+ findChangedKeys,
+ findOrphanedKeys,
+ findPluralPaths,
+ flattenKeys,
+ flattenKeysToStrings,
+ getStringValue,
+ hasLlmContext,
+ isLeafNode,
+ normalizeResponse,
+ prepareForLLM,
+ unflattenKeys,
+} from './utils'
+
+describe('getStringValue', () => {
+ it('returns string directly when input is string', () => {
+ expect(getStringValue('hello')).toBe('hello')
+ })
+
+ it('extracts value from object with value property', () => {
+ expect(getStringValue({ value: 'hello' })).toBe('hello')
+ })
+
+ it('extracts value from object with value and llmContext', () => {
+ expect(getStringValue({ value: 'hello', llmContext: 'context' })).toBe(
+ 'hello',
+ )
+ })
+})
+
+describe('hasLlmContext', () => {
+ it('returns false for plain strings', () => {
+ expect(hasLlmContext('hello')).toBe(false)
+ })
+
+ it('returns false for object without llmContext', () => {
+ expect(hasLlmContext({ value: 'hello' })).toBe(false)
+ })
+
+ it('returns true for object with llmContext', () => {
+ expect(hasLlmContext({ value: 'hello', llmContext: 'context' })).toBe(true)
+ })
+
+ it('returns false for object with undefined llmContext', () => {
+ expect(hasLlmContext({ value: 'hello', llmContext: undefined })).toBe(false)
+ })
+})
+
+describe('isLeafNode', () => {
+ it('returns true for strings', () => {
+ expect(isLeafNode('hello')).toBe(true)
+ })
+
+ it('returns true for objects with value property', () => {
+ expect(isLeafNode({ value: 'hello' })).toBe(true)
+ })
+
+ it('returns false for nested objects', () => {
+ expect(isLeafNode({ nested: { value: 'hello' } })).toBe(false)
+ })
+
+ it('returns false for null', () => {
+ expect(isLeafNode(null)).toBe(false)
+ })
+
+ it('returns false for arrays', () => {
+ expect(isLeafNode(['hello'])).toBe(false)
+ })
+})
+
+describe('findPluralPaths', () => {
+ it('finds plural objects at top level', () => {
+ const obj = {
+ messages: {
+ _mode: 'plural',
+ '=1': 'One message',
+ other: '# messages',
+ },
+ }
+ expect(findPluralPaths(obj)).toEqual(new Set(['messages']))
+ })
+
+ it('finds nested plural objects', () => {
+ const obj = {
+ checkout: {
+ benefits: {
+ moreBenefits: {
+ _mode: 'plural',
+ '=1': '# more benefit',
+ other: '# more benefits',
+ },
+ },
+ },
+ }
+ expect(findPluralPaths(obj)).toEqual(
+ new Set(['checkout.benefits.moreBenefits']),
+ )
+ })
+
+ it('finds multiple plural objects', () => {
+ const obj = {
+ a: { _mode: 'plural', '=1': 'one', other: 'many' },
+ b: {
+ c: { _mode: 'plural', '=1': 'one', other: 'many' },
+ },
+ }
+ expect(findPluralPaths(obj)).toEqual(new Set(['a', 'b.c']))
+ })
+
+ it('returns empty set when no plurals', () => {
+ const obj = { greeting: 'hello', nested: { farewell: 'goodbye' } }
+ expect(findPluralPaths(obj)).toEqual(new Set())
+ })
+})
+
+describe('flattenKeys', () => {
+ it('flattens simple object', () => {
+ const obj = { greeting: 'hello', farewell: 'goodbye' }
+ const result = flattenKeys(obj)
+
+ expect(result.get('greeting')).toBe('hello')
+ expect(result.get('farewell')).toBe('goodbye')
+ expect(result.size).toBe(2)
+ })
+
+ it('flattens nested objects with dot notation', () => {
+ const obj = {
+ messages: {
+ greeting: 'hello',
+ farewell: 'goodbye',
+ },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('messages.greeting')).toBe('hello')
+ expect(result.get('messages.farewell')).toBe('goodbye')
+ expect(result.size).toBe(2)
+ })
+
+ it('handles deeply nested objects', () => {
+ const obj = {
+ level1: {
+ level2: {
+ level3: 'deep value',
+ },
+ },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('level1.level2.level3')).toBe('deep value')
+ expect(result.size).toBe(1)
+ })
+
+ it('handles object entries with value property', () => {
+ const obj = {
+ greeting: { value: 'hello', llmContext: 'A greeting message' },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('greeting')).toEqual({
+ value: 'hello',
+ llmContext: 'A greeting message',
+ })
+ })
+
+ it('handles mixed string and object entries', () => {
+ const obj = {
+ simple: 'hello',
+ complex: { value: 'world', llmContext: 'context' },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('simple')).toBe('hello')
+ expect(result.get('complex')).toEqual({
+ value: 'world',
+ llmContext: 'context',
+ })
+ })
+
+ it('expands plural objects into separate variant keys', () => {
+ const obj = {
+ messages: {
+ _mode: 'plural' as const,
+ '=1': 'One message',
+ other: '# messages',
+ },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('messages.=1')).toBe('One message')
+ expect(result.get('messages.other')).toBe('# messages')
+ expect(result.has('messages._mode')).toBe(false)
+ expect(result.size).toBe(2)
+ })
+
+ it('expands nested plural objects', () => {
+ const obj = {
+ checkout: {
+ trial: {
+ days: {
+ _mode: 'plural' as const,
+ '=1': '# day trial',
+ other: '# days trial',
+ },
+ },
+ },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('checkout.trial.days.=1')).toBe('# day trial')
+ expect(result.get('checkout.trial.days.other')).toBe('# days trial')
+ expect(result.size).toBe(2)
+ })
+})
+
+describe('flattenKeysToStrings', () => {
+ it('extracts string values from all entries', () => {
+ const obj = {
+ simple: 'hello',
+ complex: { value: 'world', llmContext: 'context' },
+ }
+ const result = flattenKeysToStrings(obj)
+
+ expect(result.get('simple')).toBe('hello')
+ expect(result.get('complex')).toBe('world')
+ })
+
+ it('expands plural objects to string variants', () => {
+ const obj = {
+ messages: {
+ _mode: 'plural' as const,
+ '=0': 'No messages',
+ '=1': 'One message',
+ other: '# messages',
+ },
+ }
+ const result = flattenKeysToStrings(obj)
+
+ expect(result.get('messages.=0')).toBe('No messages')
+ expect(result.get('messages.=1')).toBe('One message')
+ expect(result.get('messages.other')).toBe('# messages')
+ expect(result.size).toBe(3)
+ })
+})
+
+describe('unflattenKeys', () => {
+ it('unflattens simple keys', () => {
+ const map = new Map([
+ ['greeting', 'hello'],
+ ['farewell', 'goodbye'],
+ ])
+ const result = unflattenKeys(map)
+
+ expect(result).toEqual({ greeting: 'hello', farewell: 'goodbye' })
+ })
+
+ it('unflattens dot-notation keys into nested objects', () => {
+ const map = new Map([
+ ['messages.greeting', 'hello'],
+ ['messages.farewell', 'goodbye'],
+ ])
+ const result = unflattenKeys(map)
+
+ expect(result).toEqual({
+ messages: {
+ greeting: 'hello',
+ farewell: 'goodbye',
+ },
+ })
+ })
+
+ it('handles deeply nested keys', () => {
+ const map = new Map([['level1.level2.level3', 'deep value']])
+ const result = unflattenKeys(map)
+
+ expect(result).toEqual({
+ level1: {
+ level2: {
+ level3: 'deep value',
+ },
+ },
+ })
+ })
+
+ it('re-injects _mode: plural at tracked plural paths', () => {
+ const map = new Map([
+ ['messages.=1', 'One message'],
+ ['messages.other', '# messages'],
+ ])
+ const pluralPaths = new Set(['messages'])
+ const result = unflattenKeys(map, pluralPaths)
+
+ expect(result).toEqual({
+ messages: {
+ _mode: 'plural',
+ '=1': 'One message',
+ other: '# messages',
+ },
+ })
+ })
+
+ it('re-injects _mode: plural at nested paths', () => {
+ const map = new Map([
+ ['checkout.trial.days.=1', '# day trial'],
+ ['checkout.trial.days.other', '# days trial'],
+ ])
+ const pluralPaths = new Set(['checkout.trial.days'])
+ const result = unflattenKeys(map, pluralPaths)
+
+ expect(result).toEqual({
+ checkout: {
+ trial: {
+ days: {
+ _mode: 'plural',
+ '=1': '# day trial',
+ other: '# days trial',
+ },
+ },
+ },
+ })
+ })
+
+ it('round-trips with flattenKeysToStrings (no plurals)', () => {
+ const original = {
+ checkout: {
+ email: 'Email',
+ submit: 'Submit',
+ },
+ common: {
+ cancel: 'Cancel',
+ },
+ }
+ const flattened = flattenKeysToStrings(original)
+ const unflattened = unflattenKeys(flattened)
+
+ expect(unflattened).toEqual(original)
+ })
+
+ it('round-trips with flattenKeysToStrings (with plurals)', () => {
+ const original = {
+ checkout: {
+ benefits: {
+ moreBenefits: {
+ _mode: 'plural' as const,
+ '=1': '# more benefit',
+ other: '# more benefits',
+ },
+ },
+ },
+ }
+ const pluralPaths = findPluralPaths(original)
+ const flattened = flattenKeysToStrings(original)
+ const unflattened = unflattenKeys(flattened, pluralPaths)
+
+ expect(unflattened).toEqual(original)
+ })
+})
+
+describe('findChangedKeys', () => {
+ it('returns all keys when cache is empty', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ['farewell', 'goodbye'],
+ ])
+ const cache = {}
+ const existing = {}
+
+ const result = findChangedKeys(sourceKeys, cache, existing)
+
+ expect(result).toEqual(['greeting', 'farewell'])
+ })
+
+ it('returns empty when all keys are cached and unchanged', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+ const cache = { greeting: 'hello' }
+ const existing = { greeting: 'hola' }
+
+ const result = findChangedKeys(sourceKeys, cache, existing)
+
+ expect(result).toEqual([])
+ })
+
+ it('detects changed source values', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello updated'],
+ ])
+ const cache = { greeting: 'hello' }
+ const existing = { greeting: 'hola' }
+
+ const result = findChangedKeys(sourceKeys, cache, existing)
+
+ expect(result).toEqual(['greeting'])
+ })
+
+ it('detects missing translations', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ['farewell', 'goodbye'],
+ ])
+ const cache = { greeting: 'hello', farewell: 'goodbye' }
+ const existing = { greeting: 'hola' } // farewell is missing
+
+ const result = findChangedKeys(sourceKeys, cache, existing)
+
+ expect(result).toEqual(['farewell'])
+ })
+})
+
+describe('findOrphanedKeys', () => {
+ it('returns empty when all translation keys exist in source', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+ const existing = { greeting: 'hola' }
+
+ const result = findOrphanedKeys(sourceKeys, existing)
+
+ expect(result).toEqual([])
+ })
+
+ it('finds keys in translation that do not exist in source', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+ const existing = { greeting: 'hola', oldKey: 'viejo' }
+
+ const result = findOrphanedKeys(sourceKeys, existing)
+
+ expect(result).toEqual(['oldKey'])
+ })
+
+ it('handles nested orphaned keys', () => {
+ const sourceKeys = new Map([
+ ['messages.greeting', 'hello'],
+ ])
+ const existing = {
+ messages: {
+ greeting: 'hola',
+ oldMessage: 'viejo',
+ },
+ }
+
+ const result = findOrphanedKeys(sourceKeys, existing)
+
+ expect(result).toEqual(['messages.oldMessage'])
+ })
+})
+
+describe('prepareForLLM', () => {
+ it('prepares simple strings for LLM', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+
+ const result = prepareForLLM(sourceKeys, ['greeting'])
+
+ expect(result).toEqual({
+ greeting: { value: 'hello' },
+ })
+ })
+
+ it('includes llmContext when available', () => {
+ const sourceKeys = new Map<
+ string,
+ string | { value: string; llmContext?: string }
+ >([['greeting', { value: 'hello', llmContext: 'A friendly greeting' }]])
+
+ const result = prepareForLLM(sourceKeys, ['greeting'])
+
+ expect(result).toEqual({
+ greeting: { value: 'hello', llmContext: 'A friendly greeting' },
+ })
+ })
+
+ it('only includes requested keys', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ['farewell', 'goodbye'],
+ ])
+
+ const result = prepareForLLM(sourceKeys, ['greeting'])
+
+ expect(result).toEqual({
+ greeting: { value: 'hello' },
+ })
+ expect(result.farewell).toBeUndefined()
+ })
+
+ it('skips keys not in sourceKeys', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+
+ const result = prepareForLLM(sourceKeys, ['greeting', 'nonexistent'])
+
+ expect(result).toEqual({
+ greeting: { value: 'hello' },
+ })
+ })
+})
+
+describe('normalizeResponse', () => {
+ it('passes through string values', () => {
+ const response = { greeting: 'hola', farewell: 'adios' }
+
+ const result = normalizeResponse(response)
+
+ expect(result).toEqual({ greeting: 'hola', farewell: 'adios' })
+ })
+
+ it('extracts value from object responses', () => {
+ const response = {
+ greeting: { value: 'hola' },
+ farewell: { value: 'adios' },
+ }
+
+ const result = normalizeResponse(response)
+
+ expect(result).toEqual({ greeting: 'hola', farewell: 'adios' })
+ })
+
+ it('handles mixed string and object responses', () => {
+ const response = {
+ greeting: 'hola',
+ farewell: { value: 'adios' },
+ }
+
+ const result = normalizeResponse(response)
+
+ expect(result).toEqual({ greeting: 'hola', farewell: 'adios' })
+ })
+
+ it('ignores invalid values', () => {
+ const response = {
+ greeting: 'hola',
+ invalid: 123,
+ alsoInvalid: null,
+ }
+
+ const result = normalizeResponse(response as Record)
+
+ expect(result).toEqual({ greeting: 'hola' })
+ })
+})
+
+describe('extractPlaceholders', () => {
+ it('returns empty array for strings without placeholders', () => {
+ expect(extractPlaceholders('Hello world')).toEqual([])
+ })
+
+ it('extracts single placeholder', () => {
+ expect(extractPlaceholders('Hello {name}')).toEqual(['name'])
+ })
+
+ it('extracts multiple placeholders', () => {
+ expect(extractPlaceholders('Hello {firstName} {lastName}')).toEqual([
+ 'firstName',
+ 'lastName',
+ ])
+ })
+
+ it('returns sorted and unique placeholders', () => {
+ expect(extractPlaceholders('{b} {a} {b} {c}')).toEqual(['a', 'b', 'c'])
+ })
+
+ it('extracts double-brace placeholders', () => {
+ expect(extractPlaceholders('Hello {{name}}')).toEqual(['name'])
+ })
+
+ it('ignores ICU keywords', () => {
+ expect(
+ extractPlaceholders('{count, plural, one {# item} other {# items}}'),
+ ).toEqual(['#', 'count'])
+ })
+
+ it('handles complex ICU messages', () => {
+ const message =
+ '{name} has {count, plural, one {# message} other {# messages}}'
+ expect(extractPlaceholders(message)).toEqual(['#', 'count', 'name'])
+ })
+
+ it('handles underscores in placeholder names', () => {
+ expect(extractPlaceholders('Hello {first_name}')).toEqual(['first_name'])
+ })
+
+ it('handles numbers in placeholder names', () => {
+ expect(extractPlaceholders('Value: {value1}')).toEqual(['value1'])
+ })
+
+ it('detects # as plural count placeholder', () => {
+ expect(extractPlaceholders('# items remaining')).toEqual(['#'])
+ })
+
+ it('detects # alongside regular placeholders', () => {
+ expect(extractPlaceholders('# results for {query}')).toEqual(['#', 'query'])
+ })
+})
+
+describe('arraysEqual', () => {
+ it('returns true for identical arrays', () => {
+ expect(arraysEqual(['a', 'b', 'c'], ['a', 'b', 'c'])).toBe(true)
+ })
+
+ it('returns true for empty arrays', () => {
+ expect(arraysEqual([], [])).toBe(true)
+ })
+
+ it('returns false for different lengths', () => {
+ expect(arraysEqual(['a', 'b'], ['a', 'b', 'c'])).toBe(false)
+ })
+
+ it('returns false for different elements', () => {
+ expect(arraysEqual(['a', 'b', 'c'], ['a', 'x', 'c'])).toBe(false)
+ })
+
+ it('returns false for same elements in different order', () => {
+ expect(arraysEqual(['a', 'b', 'c'], ['c', 'b', 'a'])).toBe(false)
+ })
+})
diff --git a/clients/packages/i18n/scripts/utils.ts b/clients/packages/i18n/scripts/utils.ts
new file mode 100644
index 0000000000..0bceb54922
--- /dev/null
+++ b/clients/packages/i18n/scripts/utils.ts
@@ -0,0 +1,326 @@
+/**
+ * Shared utility functions for i18n scripts
+ */
+
+export type EntryValue = string | { value: string; llmContext?: string }
+export type NestedObject = { [key: string]: EntryValue | NestedObject }
+export type TranslationCache = Record>
+
+/**
+ * Check if a value is a plural object (has _mode: 'plural')
+ */
+function isPluralObject(
+ value: unknown,
+): value is Record & { _mode: 'plural' } {
+ return (
+ typeof value === 'object' &&
+ value !== null &&
+ '_mode' in value &&
+ (value as Record)._mode === 'plural'
+ )
+}
+
+/**
+ * Extract the string value from an entry (handles both string and object formats)
+ */
+export function getStringValue(entry: EntryValue): string {
+ if (typeof entry === 'string') {
+ return entry
+ }
+ return entry.value
+}
+
+/**
+ * Check if an entry has LLM context metadata
+ */
+export function hasLlmContext(
+ entry: EntryValue,
+): entry is { value: string; llmContext: string } {
+ return (
+ typeof entry === 'object' &&
+ 'llmContext' in entry &&
+ entry.llmContext !== undefined
+ )
+}
+
+/**
+ * Check if value is a leaf node (string or object with 'value' key)
+ */
+export function isLeafNode(value: unknown): value is EntryValue {
+ return (
+ typeof value === 'string' ||
+ (typeof value === 'object' &&
+ value !== null &&
+ !Array.isArray(value) &&
+ 'value' in value)
+ )
+}
+
+/**
+ * Find all paths in a nested object that are plural objects.
+ * Returns a Set of dot-notation paths.
+ */
+export function findPluralPaths(
+ obj: Record,
+ prefix = '',
+): Set {
+ const paths = new Set()
+
+ for (const [key, value] of Object.entries(obj)) {
+ const fullKey = prefix ? `${prefix}.${key}` : key
+
+ if (isPluralObject(value)) {
+ paths.add(fullKey)
+ } else if (typeof value === 'object' && value !== null) {
+ for (const p of findPluralPaths(
+ value as Record,
+ fullKey,
+ )) {
+ paths.add(p)
+ }
+ }
+ }
+
+ return paths
+}
+
+/**
+ * Flatten a nested object into a Map of dot-notation keys to values.
+ * Plural objects are expanded: { _mode: 'plural', '=1': '...', other: '...' }
+ * becomes separate keys like 'path.=1' and 'path.other' (skipping _mode).
+ */
+export function flattenKeys(
+ obj: NestedObject,
+ prefix = '',
+): Map {
+ const result = new Map()
+
+ for (const [key, value] of Object.entries(obj)) {
+ const fullKey = prefix ? `${prefix}.${key}` : key
+
+ if (isPluralObject(value)) {
+ // Expand plural variants as individual flat keys, skip _mode
+ for (const [variant, text] of Object.entries(value)) {
+ if (variant === '_mode') continue
+ result.set(`${fullKey}.${variant}`, text)
+ }
+ } else if (isLeafNode(value)) {
+ result.set(fullKey, value as EntryValue)
+ } else if (typeof value === 'object' && value !== null) {
+ const nested = flattenKeys(value as NestedObject, fullKey)
+ for (const [k, v] of nested) {
+ result.set(k, v)
+ }
+ }
+ }
+
+ return result
+}
+
+/**
+ * Flatten keys but return string values only (for validation)
+ */
+export function flattenKeysToStrings(
+ obj: NestedObject,
+ prefix = '',
+): Map {
+ const result = new Map()
+
+ for (const [key, value] of Object.entries(obj)) {
+ const fullKey = prefix ? `${prefix}.${key}` : key
+
+ if (isPluralObject(value)) {
+ for (const [variant, text] of Object.entries(value)) {
+ if (variant === '_mode') continue
+ result.set(`${fullKey}.${variant}`, text)
+ }
+ } else if (isLeafNode(value)) {
+ result.set(fullKey, getStringValue(value))
+ } else if (typeof value === 'object' && value !== null) {
+ const nested = flattenKeysToStrings(value as NestedObject, fullKey)
+ for (const [k, v] of nested) {
+ result.set(k, v)
+ }
+ }
+ }
+
+ return result
+}
+
+/**
+ * Unflatten a Map of dot-notation keys back into a nested object.
+ * Re-injects _mode: 'plural' at tracked plural paths.
+ */
+export function unflattenKeys(
+ map: Map,
+ pluralPaths: Set = new Set(),
+): NestedObject {
+ const result: NestedObject = {}
+
+ for (const [key, value] of map) {
+ const parts = key.split('.')
+ let current = result as Record
+
+ for (let i = 0; i < parts.length - 1; i++) {
+ const part = parts[i]
+ if (!(part in current)) {
+ current[part] = {}
+ }
+ current = current[part] as Record
+ }
+
+ current[parts[parts.length - 1]] = value
+ }
+
+ // Re-inject _mode: 'plural' at plural paths
+ for (const path of pluralPaths) {
+ const parts = path.split('.')
+ let current = result as Record
+
+ for (const part of parts) {
+ if (!(part in current)) break
+ if (part === parts[parts.length - 1]) {
+ const obj = current[part]
+ if (typeof obj === 'object' && obj !== null) {
+ ;(obj as Record)._mode = 'plural'
+ }
+ } else {
+ current = current[part] as Record
+ }
+ }
+ }
+
+ return result
+}
+
+/**
+ * Find keys that have changed (new, modified, or missing from cache)
+ */
+export function findChangedKeys(
+ sourceKeys: Map,
+ cache: Record,
+ existingTranslation: NestedObject,
+): string[] {
+ const existingKeys = flattenKeys(existingTranslation)
+ const changed: string[] = []
+
+ for (const [key, value] of sourceKeys) {
+ const currentSource = getStringValue(value)
+ const cachedSource = cache[key]
+ const hasExistingTranslation = existingKeys.has(key)
+
+ if (!hasExistingTranslation || cachedSource !== currentSource) {
+ changed.push(key)
+ }
+ }
+
+ return changed
+}
+
+/**
+ * Find keys that exist in translation but not in source (should be removed)
+ */
+export function findOrphanedKeys(
+ sourceKeys: Map,
+ existingTranslation: NestedObject,
+): string[] {
+ const existingKeys = flattenKeys(existingTranslation)
+ const orphaned: string[] = []
+
+ for (const key of existingKeys.keys()) {
+ if (!sourceKeys.has(key)) {
+ orphaned.push(key)
+ }
+ }
+
+ return orphaned
+}
+
+/**
+ * Prepare source strings for LLM translation (include context where available)
+ */
+export function prepareForLLM(
+ sourceKeys: Map,
+ keys: string[],
+): Record {
+ const result: Record = {}
+
+ for (const key of keys) {
+ const entry = sourceKeys.get(key)
+ if (!entry) continue
+
+ if (hasLlmContext(entry)) {
+ result[key] = { value: entry.value, llmContext: entry.llmContext }
+ } else {
+ result[key] = { value: getStringValue(entry) }
+ }
+ }
+
+ return result
+}
+
+/**
+ * Normalize LLM response (handle both string and object formats)
+ */
+export function normalizeResponse(
+ response: Record,
+): Record {
+ const result: Record = {}
+
+ for (const [key, value] of Object.entries(response)) {
+ if (typeof value === 'string') {
+ result[key] = value
+ } else if (
+ typeof value === 'object' &&
+ value !== null &&
+ 'value' in value
+ ) {
+ result[key] = (value as { value: string }).value
+ }
+ }
+
+ return result
+}
+
+/**
+ * Extract placeholders from a string.
+ * Recognizes {name}, {{name}}, ICU patterns, and # (plural count).
+ */
+export function extractPlaceholders(str: string): string[] {
+ const placeholders: string[] = []
+
+ // Match {name} style simple placeholders
+ const simpleMatch = str.matchAll(/\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g)
+ for (const match of simpleMatch) {
+ placeholders.push(match[1])
+ }
+
+ // Match {name, plural/select/selectordinal, ...} style ICU placeholders
+ const icuMatch = str.matchAll(
+ /\{([a-zA-Z_][a-zA-Z0-9_]*),\s*(?:plural|select|selectordinal)/g,
+ )
+ for (const match of icuMatch) {
+ placeholders.push(match[1])
+ }
+
+ // Match {{name}} style placeholders
+ const doubleMatch = str.matchAll(/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g)
+ for (const match of doubleMatch) {
+ placeholders.push(match[1])
+ }
+
+ // Track presence of # (plural count placeholder)
+ if (/#/.test(str)) {
+ placeholders.push('#')
+ }
+
+ return [...new Set(placeholders)].sort()
+}
+
+/**
+ * Check if two arrays are equal (same elements in same order)
+ */
+export function arraysEqual(a: string[], b: string[]): boolean {
+ if (a.length !== b.length) return false
+ return a.every((val, i) => val === b[i])
+}
diff --git a/clients/packages/i18n/scripts/validate.ts b/clients/packages/i18n/scripts/validate.ts
new file mode 100644
index 0000000000..41aa878404
--- /dev/null
+++ b/clients/packages/i18n/scripts/validate.ts
@@ -0,0 +1,136 @@
+import path from 'node:path'
+import * as log from './logger'
+import {
+ type NestedObject,
+ arraysEqual,
+ extractPlaceholders,
+ flattenKeys,
+ flattenKeysToStrings,
+} from './utils'
+
+import { LOCALE_NAMES, SUPPORTED_LOCALES } from '../src/config'
+
+const LOCALES_DIR = path.join(import.meta.dirname, '../src/locales')
+
+async function loadLocale(locale: string): Promise {
+ const filePath = path.join(LOCALES_DIR, `${locale}.ts`)
+ try {
+ const mod = await import(filePath)
+ return (mod[locale] ?? null) as NestedObject | null
+ } catch {
+ return null
+ }
+}
+
+async function validate() {
+ const errors: string[] = []
+
+ const enModule = await import('../src/locales/en.ts')
+ const en = enModule.en as NestedObject
+
+ const sourceKeys = flattenKeys(en)
+ const sourceStrings = flattenKeysToStrings(en)
+ const targetLocales = SUPPORTED_LOCALES.filter((l): l is string => l !== 'en')
+
+ log.header('Polar i18n Validation')
+ log.info(`Source: ${log.bold(sourceKeys.size.toString())} keys in en.ts`)
+ log.info(`Checking: ${targetLocales.map((l) => log.cyan(l)).join(', ')}`)
+
+ for (const locale of targetLocales) {
+ const localeName = LOCALE_NAMES[locale] || locale
+ log.localeHeader(locale, localeName)
+
+ const translation = await loadLocale(locale)
+
+ if (!translation) {
+ errors.push(`${locale}: File does not exist`)
+ log.error('File does not exist')
+ continue
+ }
+
+ const translationKeys = flattenKeysToStrings(translation)
+
+ const missingKeys: string[] = []
+ for (const key of sourceKeys.keys()) {
+ if (!translationKeys.has(key)) {
+ missingKeys.push(key)
+ }
+ }
+
+ if (missingKeys.length > 0) {
+ errors.push(`${locale}: Missing ${missingKeys.length} keys`)
+ log.warning(
+ `Missing ${missingKeys.length} key${missingKeys.length > 1 ? 's' : ''}`,
+ )
+ for (const key of missingKeys) {
+ log.item(log.dim(key))
+ }
+ }
+
+ const extraKeys: string[] = []
+ for (const key of translationKeys.keys()) {
+ if (!sourceKeys.has(key)) {
+ extraKeys.push(key)
+ }
+ }
+
+ if (extraKeys.length > 0) {
+ errors.push(`${locale}: ${extraKeys.length} extra keys`)
+ log.warning(
+ `${extraKeys.length} extra key${extraKeys.length > 1 ? 's' : ''}`,
+ )
+ for (const key of extraKeys) {
+ log.item(log.dim(key))
+ }
+ }
+
+ const placeholderErrors: string[] = []
+ for (const [key, sourceValue] of sourceStrings) {
+ const translationValue = translationKeys.get(key)
+ if (!translationValue) continue
+
+ const sourcePlaceholders = extractPlaceholders(sourceValue)
+ const translationPlaceholders = extractPlaceholders(translationValue)
+
+ if (!arraysEqual(sourcePlaceholders, translationPlaceholders)) {
+ placeholderErrors.push(key)
+ errors.push(`${locale}.${key}: Placeholder mismatch`)
+ }
+ }
+
+ if (placeholderErrors.length > 0) {
+ log.warning(
+ `${placeholderErrors.length} placeholder mismatch${placeholderErrors.length > 1 ? 'es' : ''}`,
+ )
+ for (const key of placeholderErrors) {
+ log.item(log.dim(key))
+ }
+ }
+
+ if (
+ missingKeys.length === 0 &&
+ extraKeys.length === 0 &&
+ placeholderErrors.length === 0
+ ) {
+ log.success('All keys valid')
+ }
+ }
+
+ log.blank()
+
+ if (errors.length > 0) {
+ log.error(
+ `Validation failed with ${errors.length} error${errors.length > 1 ? 's' : ''}`,
+ )
+ log.blank()
+ process.exit(1)
+ }
+
+ log.done('All translations valid')
+}
+
+validate().catch((error) => {
+ log.blank()
+ log.error(`Validation failed: ${error.message}`)
+ process.exit(1)
+})
diff --git a/clients/packages/i18n/src/config.ts b/clients/packages/i18n/src/config.ts
new file mode 100644
index 0000000000..f0c1aabbe7
--- /dev/null
+++ b/clients/packages/i18n/src/config.ts
@@ -0,0 +1,10 @@
+export const SUPPORTED_LOCALES = ['en', 'nl'] as const
+export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
+export const DEFAULT_LOCALE: SupportedLocale = 'en'
+
+export const LOCALE_NAMES: Record = {
+ nl: 'Dutch',
+ sv: 'Swedish',
+ es: 'Spanish',
+ fr: 'French',
+}
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index eea8af9403..dd2fc40806 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -1,8 +1,10 @@
import { useCallback } from 'react'
-export const SUPPORTED_LOCALES = ['en', 'nl'] as const
-export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
-export const DEFAULT_LOCALE = 'en'
+export { DEFAULT_LOCALE, LOCALE_NAMES, SUPPORTED_LOCALES } from './config'
+export type { SupportedLocale } from './config'
+
+import type { SupportedLocale } from './config'
+import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from './config'
// Expand bare language codes to include region variants,
// but keep region-specific codes (like future 'pt-BR') exact
diff --git a/clients/packages/i18n/src/locales/config/.cache.json b/clients/packages/i18n/src/locales/config/.cache.json
new file mode 100644
index 0000000000..438d4ab895
--- /dev/null
+++ b/clients/packages/i18n/src/locales/config/.cache.json
@@ -0,0 +1,124 @@
+{
+ "nl": {
+ "checkout.footer.poweredBy": "Powered by",
+ "checkout.footer.merchantOfRecord": "This order is processed by our online reseller & Merchant of Record, Polar, who also handles order-related inquiries and returns.",
+ "checkout.form.email": "Email",
+ "checkout.form.cardholderName": "Cardholder name",
+ "checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
+ "checkout.form.businessName": "Business name",
+ "checkout.form.billingAddress.label": "Billing address",
+ "checkout.form.billingAddress.line1": "Line 1",
+ "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.postalCode": "Postal code",
+ "checkout.form.billingAddress.city": "City",
+ "checkout.form.billingAddress.country": "Country",
+ "checkout.form.billingAddress.state": "State",
+ "checkout.form.billingAddress.province": "Province",
+ "checkout.form.billingAddress.stateProvince": "State / Province",
+ "checkout.form.taxId": "Tax ID",
+ "checkout.form.discountCode": "Discount code",
+ "checkout.form.optional": "Optional",
+ "checkout.form.apply": "Apply",
+ "checkout.form.fieldRequired": "This field is required",
+ "checkout.pricing.subtotal": "Subtotal",
+ "checkout.pricing.taxableAmount": "Taxable amount",
+ "checkout.pricing.taxes": "Taxes",
+ "checkout.pricing.free": "Free",
+ "checkout.pricing.payWhatYouWant": "Pay what you want",
+ "checkout.pricing.total": "Total",
+ "checkout.pricing.everyInterval": "Every {interval}",
+ "checkout.pricing.additionalMeteredUsage": "Additional metered usage",
+ "checkout.pricing.perUnit": "/ unit",
+ "checkout.pricing.discount.duration.months.=1": "for the first month",
+ "checkout.pricing.discount.duration.months.other": "for the first # months",
+ "checkout.pricing.discount.duration.years.=1": "for the first year",
+ "checkout.pricing.discount.duration.years.other": "for the first # years",
+ "checkout.trial.ends": "Trial ends {endDate}",
+ "checkout.trial.duration.days.=1": "# day trial",
+ "checkout.trial.duration.days.other": "# days trial",
+ "checkout.trial.duration.weeks.=1": "# week trial",
+ "checkout.trial.duration.weeks.other": "# weeks trial",
+ "checkout.trial.duration.months.=1": "# month trial",
+ "checkout.trial.duration.months.other": "# months trial",
+ "checkout.trial.duration.years.=1": "# year trial",
+ "checkout.trial.duration.years.other": "# years trial",
+ "checkout.pwywForm.label": "Name a fair price",
+ "checkout.pwywForm.minimum": "{amount} minimum",
+ "checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.productSwitcher.billedRecurring": "Billed {frequency}",
+ "checkout.productSwitcher.oneTimePurchase": "One-time purchase",
+ "checkout.card.included": "Included",
+ "checkout.benefits.moreBenefits.=1": "# more benefit",
+ "checkout.benefits.moreBenefits.other": "# more benefits",
+ "checkout.benefits.showMoreBenefits.=1": "Show # more benefit",
+ "checkout.benefits.showMoreBenefits.other": "Show # more benefits",
+ "checkout.benefits.showLess": "Show less",
+ "checkout.benefits.granting": "Granting benefits...",
+ "checkout.benefits.requestNewInvite": "Request new invite",
+ "checkout.benefits.retryIn.=1": "Try again in # second",
+ "checkout.benefits.retryIn.other": "Try again in # seconds",
+ "checkout.benefits.connectNewAccount": "Connect new account",
+ "checkout.benefits.requestMyInvite": "Request my invite",
+ "checkout.benefits.github.connect": "Connect GitHub account",
+ "checkout.benefits.github.goTo": "Go to {repository}",
+ "checkout.benefits.github.selectAccount": "Select a GitHub account",
+ "checkout.benefits.discord.connect": "Connect Discord account",
+ "checkout.benefits.discord.open": "Open Discord",
+ "checkout.benefits.discord.selectAccount": "Select a Discord account",
+ "checkout.benefits.licenseKey.copy": "Copy",
+ "checkout.benefits.licenseKey.copiedToClipboard": "Copied To Clipboard",
+ "checkout.benefits.licenseKey.copiedToClipboardDescription": "License Key was copied to clipboard",
+ "checkout.benefits.licenseKey.loading": "Loading...",
+ "checkout.benefits.licenseKey.status": "Status",
+ "checkout.benefits.licenseKey.statusGranted": "Granted",
+ "checkout.benefits.licenseKey.statusRevoked": "Revoked",
+ "checkout.benefits.licenseKey.statusDisabled": "Disabled",
+ "checkout.benefits.licenseKey.usage": "Usage",
+ "checkout.benefits.licenseKey.validations": "Validations",
+ "checkout.benefits.licenseKey.validatedAt": "Validated At",
+ "checkout.benefits.licenseKey.neverValidated": "Never Validated",
+ "checkout.benefits.licenseKey.expiryDate": "Expiry Date",
+ "checkout.benefits.licenseKey.noExpiry": "No Expiry",
+ "checkout.benefits.licenseKey.activations": "Activations",
+ "checkout.benefits.licenseKey.activationDeleted": "License Key Activation Deleted",
+ "checkout.benefits.licenseKey.activationDeletedDescription": "Activation deleted successfully",
+ "checkout.benefits.licenseKey.activationDeactivationFailed": "Activation Deactivation Failed",
+ "checkout.confirmation.confirmPayment": "Confirm payment",
+ "checkout.confirmation.processingTitle": "We are processing your order",
+ "checkout.confirmation.successTitle": "Your order was successful!",
+ "checkout.confirmation.failedTitle": "A problem occurred while processing your order",
+ "checkout.confirmation.processingDescription": "Please wait while we confirm your payment.",
+ "checkout.confirmation.successDescription": "You're now eligible for the benefits of {product}.",
+ "checkout.confirmation.failedDescription": "Please try again or contact support.",
+ "checkout.loading.processingOrder": "Processing order...",
+ "checkout.loading.processingPayment": "Processing payment",
+ "checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
+ "checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
+ "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.subscribeNow": "Subscribe now",
+ "checkout.cta.payNow": "Pay now",
+ "checkout.cta.getFree": "Get for free",
+ "checkout.cta.paymentsUnavailable": "Payments are currently unavailable",
+ "intervals.short.day": "dy",
+ "intervals.short.week": "wk",
+ "intervals.short.month": "mo",
+ "intervals.short.year": "yr",
+ "intervals.long.day": "day",
+ "intervals.long.week": "week",
+ "intervals.long.month": "month",
+ "intervals.long.year": "year",
+ "intervals.frequency.day": "daily",
+ "intervals.frequency.week": "weekly",
+ "intervals.frequency.month": "monthly",
+ "intervals.frequency.year": "yearly",
+ "intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
+ "benefitTypes.usage.displayName": "Usage",
+ "benefitTypes.license_keys.displayName": "License Keys",
+ "benefitTypes.github_repository.displayName": "GitHub Repository Access",
+ "benefitTypes.discord.displayName": "Discord Invite",
+ "benefitTypes.downloadables.displayName": "File Downloads",
+ "benefitTypes.custom.displayName": "Custom",
+ "benefitTypes.meter_credit.displayName": "Meter Credits"
+ }
+}
diff --git a/clients/packages/i18n/src/locales/config/locks.json b/clients/packages/i18n/src/locales/config/locks.json
new file mode 100644
index 0000000000..45441489de
--- /dev/null
+++ b/clients/packages/i18n/src/locales/config/locks.json
@@ -0,0 +1,3 @@
+{
+ "nl": []
+}
diff --git a/clients/packages/i18n/src/locales/config/prompt.md b/clients/packages/i18n/src/locales/config/prompt.md
new file mode 100644
index 0000000000..c30cbd64c4
--- /dev/null
+++ b/clients/packages/i18n/src/locales/config/prompt.md
@@ -0,0 +1,197 @@
+SYSTEM
+You are a senior SaaS localization specialist with deep expertise in digital goods and subscription checkout UX.
+You have translated and reviewed production checkout flows for major platforms selling software, subscriptions, and digital products.
+
+Your priority is NOT literal translation.
+Your priority is using the most common, expected, boring, user-facing terminology that real users see in online checkouts for {TARGET_LOCALE}.
+
+USER
+Task:
+Translate the provided English JSON into {TARGET_LOCALE}.
+
+This JSON contains UI strings for a checkout flow selling DIGITAL GOODS ONLY (software, subscriptions, licenses, downloads). There are NO physical products, NO shipping, and NO physical delivery involved.
+
+The keys are dot-notation paths (e.g., "checkout.form.email"). Translate only the values.
+
+========================
+HARD REQUIREMENTS
+========================
+
+1. Output ONLY valid JSON.
+ - No markdown
+ - No comments
+ - No explanations
+ - No wrapper objects
+
+2. Preserve JSON structure EXACTLY:
+ - Same keys
+ - Same nesting
+ - Same ordering where possible
+ - Translate VALUES ONLY
+
+3. Placeholders MUST be preserved exactly, character-for-character:
+ - Examples: {name}, {count}, {{amount}}, %s, %(name)s, :amount, ${amount}
+ - Do NOT rename, move, duplicate, or remove placeholders
+ - Keep whitespace inside placeholders unchanged
+
+4. The `#` symbol is a COUNT PLACEHOLDER in plural strings.
+ - It will be replaced with a number at runtime.
+ - ALWAYS preserve `#` exactly as-is in translations.
+ - Example: "# items" → "# Artikel" (German), NOT "Nummer items"
+
+5. Preserve markup and formatting exactly:
+ - HTML tags, attributes, entities
+ - Line breaks (\n), , ,
+ - Translate only the human-readable text
+
+6. Do NOT translate:
+ - Brand names
+ - Product names
+ - Plan names
+ - Proper nouns
+ - Technical/API terms
+ unless a widely-used localized form exists in {TARGET_LOCALE} checkout UX.
+
+========================
+CHECKOUT TERMINOLOGY (CRITICAL)
+========================
+
+Terminology accuracy is NON-NEGOTIABLE.
+
+- Use the most common checkout wording used by major ecommerce platforms in {TARGET_LOCALE}.
+- Avoid literal translations that are technically correct but uncommon or awkward in checkout UI.
+- If multiple translations are possible, choose the one users most frequently see in real checkouts.
+- Prefer standard, conservative wording over creative or expressive language.
+
+Key checkout concepts include (but are not limited to):
+
+- checkout
+- order / purchase
+- order summary
+- subtotal
+- total
+- discount / discount code / promo code
+- tax / VAT
+- payment method
+- billing address (NOT shipping address)
+- receipt
+- confirmation
+- refund
+- email receipt
+- continue as guest
+- subscription / subscribe
+- trial / free trial
+- license
+- download
+- access
+
+NOTE: Do NOT use terminology related to physical goods such as:
+
+- shipping / delivery
+- shipping address
+- tracking
+- warehouse
+- inventory
+- in stock / out of stock
+
+Once you pick a translation for a core term, use it CONSISTENTLY across the entire JSON.
+
+========================
+CTA & BUTTON LABEL RULES (VERY IMPORTANT)
+========================
+
+Short verbs and button labels are the most error-prone.
+Treat them as CHECKOUT CTAs, not generic verbs.
+
+Never use rare, formal, academic, or literal translations.
+Never invent wording.
+Never embellish.
+
+CTAs MUST:
+
+- Be short (typically 1–3 words)
+- Match real checkout buttons in {TARGET_LOCALE}
+- Use the standard imperative form for UI buttons in {TARGET_LOCALE}
+- Follow typical capitalization rules for buttons in {TARGET_LOCALE}
+
+The following English strings are SPECIAL and must be translated using the most standard checkout UI equivalent for {TARGET_LOCALE}:
+
+- "Submit"
+- "Continue"
+- "Next"
+- "Back"
+- "Confirm"
+- "Save"
+- "Cancel"
+- "Pay"
+- "Pay now"
+- "Place order"
+- "Complete purchase"
+- "Buy now"
+- "Proceed to checkout"
+- "Apply"
+- "Apply discount"
+- "Remove"
+- "Edit"
+- "Update"
+- "Sign in"
+- "Sign out"
+- "Create account"
+- "Continue as guest"
+- "Subscribe"
+- "Subscribe now"
+- "Start trial"
+- "Start free trial"
+- "Download"
+- "Get access"
+
+SPECIAL RULE FOR "Submit":
+
+- If the English value is exactly "Submit" (case-insensitive),
+ translate it as the most common checkout/form CTA in {TARGET_LOCALE}.
+- Do NOT translate it as a literal equivalent meaning "hand in", "send", or similar.
+- Prefer the equivalent of "Continue" or "Confirm" as commonly used in checkout flows.
+
+========================
+TONE & STYLE
+========================
+
+- Concise
+- Clear
+- Conversion-focused
+- Neutral and professional
+- Not marketing-heavy
+- Not overly formal unless the locale strictly requires it
+
+Error messages:
+
+- Short
+- Direct
+- Actionable
+- No fluff
+
+========================
+GRAMMAR & EDGE CASES
+========================
+
+- If grammar in {TARGET_LOCALE} requires reordering around placeholders, do so WITHOUT changing the placeholder.
+- Handle pluralization naturally, but never modify placeholder tokens.
+- If a string is ambiguous, assume it appears in a digital goods/subscription checkout context and choose accordingly. Never assume physical product context.
+
+========================
+QUALITY CHECK (MENTAL, BEFORE RESPONDING)
+========================
+
+Before outputting:
+
+- Validate the JSON is parseable.
+- Verify every placeholder from the source exists unchanged in the output.
+- Verify every `#` count placeholder is preserved.
+- Confirm no unintended English remains.
+- Confirm CTAs look like real checkout buttons a user would recognize.
+
+========================
+INPUT
+========================
+
+{EN_JSON}
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index 4ebddb1a48..46d5409a79 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -196,19 +196,4 @@ export const en = {
custom: { displayName: 'Custom' },
meter_credit: { displayName: 'Meter Credits' },
},
- playground: {
- interpolation: 'This is a {test}',
- plurals: {
- _mode: 'plural',
- '=0': 'No messages',
- '=1': 'One message',
- other: '# messages',
- },
- pluralsWithInterpolation: {
- _mode: 'plural',
- '=0': 'No results found for {query}',
- '=1': 'One result found for {query}',
- other: '# results found for {query}',
- },
- },
} as const
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index d2c30840a2..351f307002 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -3,19 +3,19 @@ export const nl = {
footer: {
poweredBy: 'Mogelijk gemaakt door',
merchantOfRecord:
- 'Deze bestelling wordt verwerkt door onze online reseller & Merchant of Record, Polar, die ook vragen over bestellingen en terugbetalingen afhandelt.',
+ 'Deze bestelling wordt verwerkt door onze online wederverkoper & Merchant of Record, Polar, die ook vragen over bestellingen en retouren afhandelt.',
},
form: {
- email: 'E-mail',
+ email: 'E-mailadres',
cardholderName: 'Naam kaarthouder',
purchasingAsBusiness: 'Ik koop als bedrijf',
businessName: 'Bedrijfsnaam',
billingAddress: {
label: 'Factuuradres',
- line1: 'Regel 1',
- line2: 'Regel 2',
+ line1: 'Adresregel 1',
+ line2: 'Adresregel 2',
postalCode: 'Postcode',
- city: 'Stad',
+ city: 'Plaats',
country: 'Land',
state: 'Staat',
province: 'Provincie',
@@ -30,24 +30,24 @@ export const nl = {
pricing: {
subtotal: 'Subtotaal',
taxableAmount: 'Belastbaar bedrag',
- taxes: 'BTW',
+ taxes: 'Btw',
free: 'Gratis',
payWhatYouWant: 'Betaal wat je wilt',
total: 'Totaal',
everyInterval: 'Elke {interval}',
- additionalMeteredUsage: 'Extra verbruikskosten',
+ additionalMeteredUsage: 'Extra gemeten gebruik',
perUnit: '/ eenheid',
discount: {
duration: {
months: {
- _mode: 'plural',
'=1': 'voor de eerste maand',
other: 'voor de eerste # maanden',
+ _mode: 'plural',
},
years: {
- _mode: 'plural',
'=1': 'voor het eerste jaar',
- other: 'voor de eerste # jaar',
+ other: 'voor de eerste # jaren',
+ _mode: 'plural',
},
},
},
@@ -56,35 +56,35 @@ export const nl = {
ends: 'Proefperiode eindigt op {endDate}',
duration: {
days: {
- _mode: 'plural',
'=1': '# dag proefperiode',
other: '# dagen proefperiode',
+ _mode: 'plural',
},
weeks: {
- _mode: 'plural',
'=1': '# week proefperiode',
other: '# weken proefperiode',
+ _mode: 'plural',
},
months: {
- _mode: 'plural',
'=1': '# maand proefperiode',
other: '# maanden proefperiode',
+ _mode: 'plural',
},
years: {
- _mode: 'plural',
'=1': '# jaar proefperiode',
- other: '# jaar proefperiode',
+ other: '# jaren proefperiode',
+ _mode: 'plural',
},
},
},
pwywForm: {
label: 'Noem een eerlijke prijs',
- minimum: '{amount} minimum',
+ minimum: '{amount} minimaal',
amountMinimum: 'Bedrag moet minimaal {min} zijn',
amountFreeOrMinimum: 'Bedrag moet $0 of minimaal {min} zijn',
},
productSwitcher: {
- billedRecurring: '{frequency} gefactureerd',
+ billedRecurring: 'Wordt {frequency} gefactureerd',
oneTimePurchase: 'Eenmalige aankoop',
},
card: {
@@ -92,22 +92,22 @@ export const nl = {
},
benefits: {
moreBenefits: {
- _mode: 'plural',
'=1': '# extra voordeel',
other: '# extra voordelen',
+ _mode: 'plural',
},
showMoreBenefits: {
- _mode: 'plural',
'=1': 'Toon # extra voordeel',
other: 'Toon # extra voordelen',
+ _mode: 'plural',
},
- showLess: 'Toon minder',
- granting: 'Voordelen worden toegekend...',
+ showLess: 'Minder tonen',
+ granting: 'Voordelen toekennen...',
requestNewInvite: 'Nieuwe uitnodiging aanvragen',
retryIn: {
- _mode: 'plural',
'=1': 'Probeer opnieuw over # seconde',
other: 'Probeer opnieuw over # seconden',
+ _mode: 'plural',
},
connectNewAccount: 'Nieuw account koppelen',
requestMyInvite: 'Mijn uitnodiging aanvragen',
@@ -138,39 +138,42 @@ export const nl = {
expiryDate: 'Vervaldatum',
noExpiry: 'Geen vervaldatum',
activations: 'Activaties',
- activationDeleted: 'Licentiesleutelactivatie verwijderd',
- activationDeletedDescription: 'Activatie succesvol verwijderd',
- activationDeactivationFailed: 'Deactivatie mislukt',
+ activationDeleted: 'Activering licentiesleutel verwijderd',
+ activationDeletedDescription: 'Activering succesvol verwijderd',
+ activationDeactivationFailed: 'Deactivering activering mislukt',
},
},
confirmation: {
confirmPayment: 'Betaling bevestigen',
- processingTitle: 'We verwerken je bestelling',
- successTitle: 'Je bestelling is geslaagd!',
+ processingTitle: 'We verwerken uw bestelling',
+ successTitle: 'Uw bestelling is succesvol!',
failedTitle:
- 'Er is een probleem opgetreden bij het verwerken van je bestelling',
- processingDescription: 'Even geduld terwijl we je betaling bevestigen.',
- successDescription: 'Je hebt nu recht op de voordelen van {product}.',
- failedDescription: 'Probeer het opnieuw of neem contact op met support.',
+ 'Er is een probleem opgetreden bij het verwerken van uw bestelling',
+ processingDescription: 'Even geduld terwijl we uw betaling bevestigen.',
+ successDescription:
+ 'U komt nu in aanmerking voor de voordelen van {product}.',
+ failedDescription:
+ 'Probeer het opnieuw of neem contact op met de ondersteuning.',
},
loading: {
processingOrder: 'Bestelling verwerken...',
processingPayment: 'Betaling verwerken',
- paymentSuccessful: 'Betaling geslaagd! Je producten worden klaargezet...',
+ paymentSuccessful:
+ 'Betaling succesvol! Uw producten worden klaargemaakt...',
confirmationTokenFailed:
- 'Bevestigingstoken aanmaken mislukt, probeer het later opnieuw.',
+ 'Het aanmaken van een bevestigingstoken is mislukt, probeer het later opnieuw.',
},
cta: {
- startTrial: 'Proefperiode starten',
+ startTrial: 'Start proefperiode',
subscribeNow: 'Nu abonneren',
payNow: 'Nu betalen',
- getFree: 'Gratis verkrijgen',
+ getFree: 'Gratis krijgen',
paymentsUnavailable: 'Betalingen zijn momenteel niet beschikbaar',
},
},
intervals: {
short: {
- day: 'dag',
+ day: 'dg',
week: 'wk',
month: 'mnd',
year: 'jr',
@@ -190,27 +193,26 @@ export const nl = {
},
},
benefitTypes: {
- usage: { displayName: 'Gebruik' },
- license_keys: { displayName: 'Licentiesleutels' },
- github_repository: { displayName: 'Toegang tot GitHub-repository' },
- discord: { displayName: 'Discord-uitnodiging' },
- downloadables: { displayName: 'Downloads' },
- custom: { displayName: 'Custom' },
- meter_credit: { displayName: 'Verbruikstegoed' },
- },
- playground: {
- interpolation: 'Dit is een {test}',
- plurals: {
- _mode: 'plural',
- '=0': 'Geen berichten',
- '=1': 'Eén bericht',
- other: '# berichten',
- },
- pluralsWithInterpolation: {
- _mode: 'plural',
- '=0': 'Geen resultaten gevonden voor {query}',
- '=1': 'Eén resultaat gevonden voor {query}',
- other: '# resultaten gevonden voor {query}',
+ usage: {
+ displayName: 'Gebruik',
+ },
+ license_keys: {
+ displayName: 'Licentiesleutels',
+ },
+ github_repository: {
+ displayName: 'Toegang tot GitHub-repository',
+ },
+ discord: {
+ displayName: 'Discord-uitnodiging',
+ },
+ downloadables: {
+ displayName: 'Bestandsdownloads',
+ },
+ custom: {
+ displayName: 'Aangepast',
+ },
+ meter_credit: {
+ displayName: 'Metertegoed',
},
},
} as const
diff --git a/clients/packages/i18n/vitest.config.ts b/clients/packages/i18n/vitest.config.ts
new file mode 100644
index 0000000000..0dae43e270
--- /dev/null
+++ b/clients/packages/i18n/vitest.config.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from 'vitest/config'
+
+export default defineConfig({
+ test: {
+ globals: true,
+ include: ['scripts/**/*.test.ts'],
+ },
+})
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index d9d32b91bf..5868f898dc 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -800,12 +800,21 @@ importers:
packages/i18n:
devDependencies:
+ '@ai-sdk/google':
+ specifier: ^2.0.46
+ version: 2.0.46(zod@4.3.6)
'@polar-sh/typescript-config':
specifier: workspace:*
version: link:../typescript-config
'@types/react':
specifier: 19.2.13
version: 19.2.13
+ ai:
+ specifier: ^5.0.113
+ version: 5.0.113(zod@4.3.6)
+ dotenv:
+ specifier: ^16.4.5
+ version: 16.6.1
prettier:
specifier: ^3.7.4
version: 3.8.1
@@ -815,9 +824,15 @@ importers:
tsup:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
+ tsx:
+ specifier: ^4.19.0
+ version: 4.21.0
typescript:
specifier: latest
version: 5.9.3
+ vitest:
+ specifier: ^3.2.4
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
packages/mdx:
dependencies:
@@ -16820,6 +16835,15 @@ snapshots:
msw: 2.12.7(@types/node@24.10.10)(typescript@5.9.3)
vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ '@vitest/mocker@3.2.4(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ dependencies:
+ '@vitest/spy': 3.2.4
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ msw: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
+ vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+
'@vitest/mocker@4.0.18(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@vitest/spy': 4.0.18
@@ -16894,7 +16918,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.15
tinyrainbow: 2.0.0
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.10)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/utils@2.1.9':
dependencies:
@@ -24165,7 +24189,6 @@ snapshots:
get-tsconfig: 4.13.0
optionalDependencies:
fsevents: 2.3.3
- optional: true
turbo-darwin-64@2.8.3:
optional: true
@@ -24574,6 +24597,27 @@ snapshots:
- tsx
- yaml
+ vite-node@3.2.4(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.3(supports-color@10.2.2)
+ es-module-lexer: 1.7.0
+ pathe: 2.0.3
+ vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ transitivePeerDependencies:
+ - '@types/node'
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
debug: 4.4.3(supports-color@10.2.2)
@@ -24710,6 +24754,50 @@ snapshots:
- tsx
- yaml
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ '@types/chai': 5.2.3
+ '@vitest/expect': 3.2.4
+ '@vitest/mocker': 3.2.4(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@vitest/pretty-format': 3.2.4
+ '@vitest/runner': 3.2.4
+ '@vitest/snapshot': 3.2.4
+ '@vitest/spy': 3.2.4
+ '@vitest/utils': 3.2.4
+ chai: 5.3.3
+ debug: 4.4.3(supports-color@10.2.2)
+ expect-type: 1.3.0
+ magic-string: 0.30.21
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ std-env: 3.10.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.2
+ tinyglobby: 0.2.15
+ tinypool: 1.1.1
+ tinyrainbow: 2.0.0
+ vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite-node: 3.2.4(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/debug': 4.1.12
+ '@types/node': 25.0.2
+ '@vitest/ui': 3.2.4(vitest@3.2.4)
+ jsdom: 27.4.0(postcss@8.5.6)
+ transitivePeerDependencies:
+ - jiti
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.0.2)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@vitest/expect': 4.0.18
From c01871aff1e7d9e990c204a585953cc5c16dc8f6 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 12:48:26 +0100
Subject: [PATCH 33/69] Fix typecheck
---
clients/packages/i18n/scripts/translate.ts | 14 +++++---------
clients/packages/i18n/scripts/validate.ts | 8 +++++---
2 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
index 4720862797..9d2361b7f1 100644
--- a/clients/packages/i18n/scripts/translate.ts
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -22,7 +22,7 @@ import {
unflattenKeys,
} from './utils'
-import { LOCALE_NAMES, SUPPORTED_LOCALES } from '../src/config'
+import { LOCALE_NAMES, SUPPORTED_LOCALES, SupportedLocale } from '../src/config'
dotenv.config({ path: path.join(import.meta.dirname, '../.env.local') })
dotenv.config({ path: path.join(import.meta.dirname, '../.env') })
@@ -350,7 +350,7 @@ function validate(
async function main() {
// Import source locale
- const enModule = await import('../src/locales/en.ts')
+ const enModule = await import('../src/locales/en')
const en = enModule.en as NestedObject
const locks = JSON.parse(fs.readFileSync(LOCKS_FILE, 'utf-8')) as Record<
@@ -362,13 +362,9 @@ async function main() {
const sourceKeys = flattenKeys(en)
const pluralPaths = findPluralPaths(en as Record)
- const targetLocales = SUPPORTED_LOCALES.filter((l): l is string => l !== 'en')
-
- // Safety guard: never write to en.ts
- if (targetLocales.includes('en')) {
- log.error('Cannot translate to English (source locale)')
- process.exit(1)
- }
+ const targetLocales = SUPPORTED_LOCALES.filter(
+ (l): l is Exclude => l !== 'en',
+ )
await translate(
en,
diff --git a/clients/packages/i18n/scripts/validate.ts b/clients/packages/i18n/scripts/validate.ts
index 41aa878404..de6943a4d4 100644
--- a/clients/packages/i18n/scripts/validate.ts
+++ b/clients/packages/i18n/scripts/validate.ts
@@ -8,7 +8,7 @@ import {
flattenKeysToStrings,
} from './utils'
-import { LOCALE_NAMES, SUPPORTED_LOCALES } from '../src/config'
+import { LOCALE_NAMES, SUPPORTED_LOCALES, SupportedLocale } from '../src/config'
const LOCALES_DIR = path.join(import.meta.dirname, '../src/locales')
@@ -25,12 +25,14 @@ async function loadLocale(locale: string): Promise {
async function validate() {
const errors: string[] = []
- const enModule = await import('../src/locales/en.ts')
+ const enModule = await import('../src/locales/en')
const en = enModule.en as NestedObject
const sourceKeys = flattenKeys(en)
const sourceStrings = flattenKeysToStrings(en)
- const targetLocales = SUPPORTED_LOCALES.filter((l): l is string => l !== 'en')
+ const targetLocales = SUPPORTED_LOCALES.filter(
+ (l): l is Exclude => l !== 'en',
+ )
log.header('Polar i18n Validation')
log.info(`Source: ${log.bold(sourceKeys.size.toString())} keys in en.ts`)
From b15724b57040d4c30790ea40eec7427dbc32dd2f Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 13:44:50 +0100
Subject: [PATCH 34/69] Add `_llmContext` support to the Typescript helpers
---
clients/packages/i18n/scripts/translate.ts | 2 +-
clients/packages/i18n/scripts/utils.test.ts | 61 +++++++++++++++------
clients/packages/i18n/scripts/utils.ts | 14 ++---
clients/packages/i18n/src/index.ts | 52 ++++++++++++------
clients/packages/i18n/src/locales/en.ts | 14 ++++-
5 files changed, 99 insertions(+), 44 deletions(-)
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
index 9d2361b7f1..a50e8df653 100644
--- a/clients/packages/i18n/scripts/translate.ts
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -35,7 +35,7 @@ const CACHE_FILE = path.join(CONFIG_DIR, '.cache.json')
async function callLLM(
targetLocale: string,
- sourceStrings: Record,
+ sourceStrings: Record,
prompt: string,
): Promise> {
const localeName = LOCALE_NAMES[targetLocale] || targetLocale
diff --git a/clients/packages/i18n/scripts/utils.test.ts b/clients/packages/i18n/scripts/utils.test.ts
index 0a16421358..861b2a9fa9 100644
--- a/clients/packages/i18n/scripts/utils.test.ts
+++ b/clients/packages/i18n/scripts/utils.test.ts
@@ -24,8 +24,8 @@ describe('getStringValue', () => {
expect(getStringValue({ value: 'hello' })).toBe('hello')
})
- it('extracts value from object with value and llmContext', () => {
- expect(getStringValue({ value: 'hello', llmContext: 'context' })).toBe(
+ it('extracts value from object with value and _llmContext', () => {
+ expect(getStringValue({ value: 'hello', _llmContext: 'context' })).toBe(
'hello',
)
})
@@ -36,16 +36,18 @@ describe('hasLlmContext', () => {
expect(hasLlmContext('hello')).toBe(false)
})
- it('returns false for object without llmContext', () => {
+ it('returns false for object without _llmContext', () => {
expect(hasLlmContext({ value: 'hello' })).toBe(false)
})
- it('returns true for object with llmContext', () => {
- expect(hasLlmContext({ value: 'hello', llmContext: 'context' })).toBe(true)
+ it('returns true for object with _llmContext', () => {
+ expect(hasLlmContext({ value: 'hello', _llmContext: 'context' })).toBe(true)
})
- it('returns false for object with undefined llmContext', () => {
- expect(hasLlmContext({ value: 'hello', llmContext: undefined })).toBe(false)
+ it('returns false for object with undefined _llmContext', () => {
+ expect(hasLlmContext({ value: 'hello', _llmContext: undefined })).toBe(
+ false,
+ )
})
})
@@ -156,27 +158,27 @@ describe('flattenKeys', () => {
it('handles object entries with value property', () => {
const obj = {
- greeting: { value: 'hello', llmContext: 'A greeting message' },
+ greeting: { value: 'hello', _llmContext: 'A greeting message' },
}
const result = flattenKeys(obj)
expect(result.get('greeting')).toEqual({
value: 'hello',
- llmContext: 'A greeting message',
+ _llmContext: 'A greeting message',
})
})
it('handles mixed string and object entries', () => {
const obj = {
simple: 'hello',
- complex: { value: 'world', llmContext: 'context' },
+ complex: { value: 'world', _llmContext: 'context' },
}
const result = flattenKeys(obj)
expect(result.get('simple')).toBe('hello')
expect(result.get('complex')).toEqual({
value: 'world',
- llmContext: 'context',
+ _llmContext: 'context',
})
})
@@ -220,7 +222,7 @@ describe('flattenKeysToStrings', () => {
it('extracts string values from all entries', () => {
const obj = {
simple: 'hello',
- complex: { value: 'world', llmContext: 'context' },
+ complex: { value: 'world', _llmContext: 'context' },
}
const result = flattenKeysToStrings(obj)
@@ -464,19 +466,46 @@ describe('prepareForLLM', () => {
})
})
- it('includes llmContext when available', () => {
+ it('includes _llmContext when available', () => {
const sourceKeys = new Map<
string,
- string | { value: string; llmContext?: string }
- >([['greeting', { value: 'hello', llmContext: 'A friendly greeting' }]])
+ string | { value: string; _llmContext?: string }
+ >([['greeting', { value: 'hello', _llmContext: 'A friendly greeting' }]])
const result = prepareForLLM(sourceKeys, ['greeting'])
expect(result).toEqual({
- greeting: { value: 'hello', llmContext: 'A friendly greeting' },
+ greeting: { value: 'hello', _llmContext: 'A friendly greeting' },
})
})
+ it('_llmContext survives JSON serialization (as sent to LLM)', () => {
+ const sourceKeys = new Map<
+ string,
+ string | { value: string; _llmContext?: string }
+ >([
+ [
+ 'checkout.form.email',
+ {
+ value: 'Email',
+ _llmContext: 'Label for the email input on checkout',
+ },
+ ],
+ ['checkout.form.submit', 'Submit'],
+ ])
+
+ const result = prepareForLLM(sourceKeys, [
+ 'checkout.form.email',
+ 'checkout.form.submit',
+ ])
+ const json = JSON.parse(JSON.stringify(result))
+
+ expect(json['checkout.form.email']._llmContext).toBe(
+ 'Label for the email input on checkout',
+ )
+ expect(json['checkout.form.submit']._llmContext).toBeUndefined()
+ })
+
it('only includes requested keys', () => {
const sourceKeys = new Map([
['greeting', 'hello'],
diff --git a/clients/packages/i18n/scripts/utils.ts b/clients/packages/i18n/scripts/utils.ts
index 0bceb54922..94e01e8c39 100644
--- a/clients/packages/i18n/scripts/utils.ts
+++ b/clients/packages/i18n/scripts/utils.ts
@@ -2,7 +2,7 @@
* Shared utility functions for i18n scripts
*/
-export type EntryValue = string | { value: string; llmContext?: string }
+export type EntryValue = string | { value: string; _llmContext?: string }
export type NestedObject = { [key: string]: EntryValue | NestedObject }
export type TranslationCache = Record>
@@ -35,11 +35,11 @@ export function getStringValue(entry: EntryValue): string {
*/
export function hasLlmContext(
entry: EntryValue,
-): entry is { value: string; llmContext: string } {
+): entry is { value: string; _llmContext: string } {
return (
typeof entry === 'object' &&
- 'llmContext' in entry &&
- entry.llmContext !== undefined
+ '_llmContext' in entry &&
+ entry._llmContext !== undefined
)
}
@@ -242,15 +242,15 @@ export function findOrphanedKeys(
export function prepareForLLM(
sourceKeys: Map,
keys: string[],
-): Record {
- const result: Record = {}
+): Record {
+ const result: Record = {}
for (const key of keys) {
const entry = sourceKeys.get(key)
if (!entry) continue
if (hasLlmContext(entry)) {
- result[key] = { value: entry.value, llmContext: entry.llmContext }
+ result[key] = { value: entry.value, _llmContext: entry._llmContext }
} else {
result[key] = { value: getStringValue(entry) }
}
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index dd2fc40806..b783986651 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -107,13 +107,17 @@ export type Translations = typeof en
type LeafPaths = T extends object
? '_mode' extends keyof T
? never
- : {
- [K in keyof T & string]: '_mode' extends keyof T[K]
- ? K
- : T[K] extends object
- ? `${K}.${LeafPaths}`
- : K
- }[keyof T & string]
+ : '_llmContext' extends keyof T
+ ? never
+ : {
+ [K in keyof T & string]: '_mode' extends keyof T[K]
+ ? K
+ : '_llmContext' extends keyof T[K]
+ ? K
+ : T[K] extends object
+ ? `${K}.${LeafPaths}`
+ : K
+ }[keyof T & string]
: never
export type TranslationKey = LeafPaths
@@ -159,14 +163,20 @@ type PluralShape = {
: T[K]
}
+type AnnotatedEntryShape =
+ | StringShape
+ | { value: StringShape; _llmContext: string }
+
type LocaleShape = {
[K in keyof T]: T[K] extends { _mode: string }
? PluralShape
- : T[K] extends string
- ? StringShape
- : T[K] extends object
- ? LocaleShape
- : T[K]
+ : T[K] extends { value: string; _llmContext: string }
+ ? AnnotatedEntryShape
+ : T[K] extends string
+ ? StringShape
+ : T[K] extends object
+ ? LocaleShape
+ : T[K]
}
// Get all required interpolation keys for a translation key
@@ -175,9 +185,11 @@ type InterpolationKeys =
ValueAtPath extends infer V
? '_mode' extends keyof V
? 'count' | ExtractPlaceholders] & string>
- : V extends string
- ? ExtractPlaceholders
- : never
+ : V extends { value: infer S extends string }
+ ? ExtractPlaceholders
+ : V extends string
+ ? ExtractPlaceholders
+ : never
: never
type InterpolationValue = string | number | { toString(): string }
@@ -245,8 +257,14 @@ export const useTranslations = (locale: AcceptedLocale): TranslateFn => {
return result
}
- // Regular string template
- const template = value as string
+ // Handle annotated entries — extract the value string
+ const template =
+ typeof value === 'object' &&
+ value !== null &&
+ 'value' in value &&
+ typeof (value as { value: unknown }).value === 'string'
+ ? (value as { value: string }).value
+ : (value as string)
if (!interpolations) {
return template
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index 46d5409a79..ce782c7c58 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -12,8 +12,16 @@ export const en = {
businessName: 'Business name',
billingAddress: {
label: 'Billing address',
- line1: 'Line 1',
- line2: 'Line 2',
+ line1: {
+ value: 'Line 1',
+ _llmContext:
+ 'The first line of the billing address, typically including street address and number.',
+ },
+ line2: {
+ value: 'Line 2',
+ _llmContext:
+ 'The second line of the billing address, typically used for apartment, suite, unit, building, floor, etc.',
+ },
postalCode: 'Postal code',
city: 'City',
country: 'Country',
@@ -159,7 +167,7 @@ export const en = {
'Failed to create confirmation token, please try again later.',
},
cta: {
- startTrial: 'Start Trial',
+ startTrial: 'Start trial',
subscribeNow: 'Subscribe now',
payNow: 'Pay now',
getFree: 'Get for free',
From ab26fdc407cc59455268ebe9cca8b31e2e40d31f Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 12:38:56 +0100
Subject: [PATCH 35/69] Add Spanish, French, and Swedish
---
clients/packages/i18n/src/config.ts | 5 +-
.../i18n/src/locales/config/.cache.json | 366 ++++++++++++++++++
clients/packages/i18n/src/locales/es.ts | 216 +++++++++++
clients/packages/i18n/src/locales/fr.ts | 218 +++++++++++
clients/packages/i18n/src/locales/sv.ts | 213 ++++++++++
5 files changed, 1016 insertions(+), 2 deletions(-)
create mode 100644 clients/packages/i18n/src/locales/es.ts
create mode 100644 clients/packages/i18n/src/locales/fr.ts
create mode 100644 clients/packages/i18n/src/locales/sv.ts
diff --git a/clients/packages/i18n/src/config.ts b/clients/packages/i18n/src/config.ts
index f0c1aabbe7..800d2a6dcb 100644
--- a/clients/packages/i18n/src/config.ts
+++ b/clients/packages/i18n/src/config.ts
@@ -1,8 +1,9 @@
-export const SUPPORTED_LOCALES = ['en', 'nl'] as const
+export const SUPPORTED_LOCALES = ['en', 'nl', 'fr', 'sv', 'es'] as const
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
export const DEFAULT_LOCALE: SupportedLocale = 'en'
-export const LOCALE_NAMES: Record = {
+export const LOCALE_NAMES: Record = {
+ en: 'English',
nl: 'Dutch',
sv: 'Swedish',
es: 'Spanish',
diff --git a/clients/packages/i18n/src/locales/config/.cache.json b/clients/packages/i18n/src/locales/config/.cache.json
index 438d4ab895..ea61cb4c15 100644
--- a/clients/packages/i18n/src/locales/config/.cache.json
+++ b/clients/packages/i18n/src/locales/config/.cache.json
@@ -120,5 +120,371 @@
"benefitTypes.downloadables.displayName": "File Downloads",
"benefitTypes.custom.displayName": "Custom",
"benefitTypes.meter_credit.displayName": "Meter Credits"
+ },
+ "fr": {
+ "checkout.footer.poweredBy": "Powered by",
+ "checkout.footer.merchantOfRecord": "This order is processed by our online reseller & Merchant of Record, Polar, who also handles order-related inquiries and returns.",
+ "checkout.form.email": "Email",
+ "checkout.form.cardholderName": "Cardholder name",
+ "checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
+ "checkout.form.businessName": "Business name",
+ "checkout.form.billingAddress.label": "Billing address",
+ "checkout.form.billingAddress.line1": "Line 1",
+ "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.postalCode": "Postal code",
+ "checkout.form.billingAddress.city": "City",
+ "checkout.form.billingAddress.country": "Country",
+ "checkout.form.billingAddress.state": "State",
+ "checkout.form.billingAddress.province": "Province",
+ "checkout.form.billingAddress.stateProvince": "State / Province",
+ "checkout.form.taxId": "Tax ID",
+ "checkout.form.discountCode": "Discount code",
+ "checkout.form.optional": "Optional",
+ "checkout.form.apply": "Apply",
+ "checkout.form.fieldRequired": "This field is required",
+ "checkout.pricing.subtotal": "Subtotal",
+ "checkout.pricing.taxableAmount": "Taxable amount",
+ "checkout.pricing.taxes": "Taxes",
+ "checkout.pricing.free": "Free",
+ "checkout.pricing.payWhatYouWant": "Pay what you want",
+ "checkout.pricing.total": "Total",
+ "checkout.pricing.everyInterval": "Every {interval}",
+ "checkout.pricing.additionalMeteredUsage": "Additional metered usage",
+ "checkout.pricing.perUnit": "/ unit",
+ "checkout.pricing.discount.duration.months.=1": "for the first month",
+ "checkout.pricing.discount.duration.months.other": "for the first # months",
+ "checkout.pricing.discount.duration.years.=1": "for the first year",
+ "checkout.pricing.discount.duration.years.other": "for the first # years",
+ "checkout.trial.ends": "Trial ends {endDate}",
+ "checkout.trial.duration.days.=1": "# day trial",
+ "checkout.trial.duration.days.other": "# days trial",
+ "checkout.trial.duration.weeks.=1": "# week trial",
+ "checkout.trial.duration.weeks.other": "# weeks trial",
+ "checkout.trial.duration.months.=1": "# month trial",
+ "checkout.trial.duration.months.other": "# months trial",
+ "checkout.trial.duration.years.=1": "# year trial",
+ "checkout.trial.duration.years.other": "# years trial",
+ "checkout.pwywForm.label": "Name a fair price",
+ "checkout.pwywForm.minimum": "{amount} minimum",
+ "checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.productSwitcher.billedRecurring": "Billed {frequency}",
+ "checkout.productSwitcher.oneTimePurchase": "One-time purchase",
+ "checkout.card.included": "Included",
+ "checkout.benefits.moreBenefits.=1": "# more benefit",
+ "checkout.benefits.moreBenefits.other": "# more benefits",
+ "checkout.benefits.showMoreBenefits.=1": "Show # more benefit",
+ "checkout.benefits.showMoreBenefits.other": "Show # more benefits",
+ "checkout.benefits.showLess": "Show less",
+ "checkout.benefits.granting": "Granting benefits...",
+ "checkout.benefits.requestNewInvite": "Request new invite",
+ "checkout.benefits.retryIn.=1": "Try again in # second",
+ "checkout.benefits.retryIn.other": "Try again in # seconds",
+ "checkout.benefits.connectNewAccount": "Connect new account",
+ "checkout.benefits.requestMyInvite": "Request my invite",
+ "checkout.benefits.github.connect": "Connect GitHub account",
+ "checkout.benefits.github.goTo": "Go to {repository}",
+ "checkout.benefits.github.selectAccount": "Select a GitHub account",
+ "checkout.benefits.discord.connect": "Connect Discord account",
+ "checkout.benefits.discord.open": "Open Discord",
+ "checkout.benefits.discord.selectAccount": "Select a Discord account",
+ "checkout.benefits.licenseKey.copy": "Copy",
+ "checkout.benefits.licenseKey.copiedToClipboard": "Copied To Clipboard",
+ "checkout.benefits.licenseKey.copiedToClipboardDescription": "License Key was copied to clipboard",
+ "checkout.benefits.licenseKey.loading": "Loading...",
+ "checkout.benefits.licenseKey.status": "Status",
+ "checkout.benefits.licenseKey.statusGranted": "Granted",
+ "checkout.benefits.licenseKey.statusRevoked": "Revoked",
+ "checkout.benefits.licenseKey.statusDisabled": "Disabled",
+ "checkout.benefits.licenseKey.usage": "Usage",
+ "checkout.benefits.licenseKey.validations": "Validations",
+ "checkout.benefits.licenseKey.validatedAt": "Validated At",
+ "checkout.benefits.licenseKey.neverValidated": "Never Validated",
+ "checkout.benefits.licenseKey.expiryDate": "Expiry Date",
+ "checkout.benefits.licenseKey.noExpiry": "No Expiry",
+ "checkout.benefits.licenseKey.activations": "Activations",
+ "checkout.benefits.licenseKey.activationDeleted": "License Key Activation Deleted",
+ "checkout.benefits.licenseKey.activationDeletedDescription": "Activation deleted successfully",
+ "checkout.benefits.licenseKey.activationDeactivationFailed": "Activation Deactivation Failed",
+ "checkout.confirmation.confirmPayment": "Confirm payment",
+ "checkout.confirmation.processingTitle": "We are processing your order",
+ "checkout.confirmation.successTitle": "Your order was successful!",
+ "checkout.confirmation.failedTitle": "A problem occurred while processing your order",
+ "checkout.confirmation.processingDescription": "Please wait while we confirm your payment.",
+ "checkout.confirmation.successDescription": "You're now eligible for the benefits of {product}.",
+ "checkout.confirmation.failedDescription": "Please try again or contact support.",
+ "checkout.loading.processingOrder": "Processing order...",
+ "checkout.loading.processingPayment": "Processing payment",
+ "checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
+ "checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
+ "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.subscribeNow": "Subscribe now",
+ "checkout.cta.payNow": "Pay now",
+ "checkout.cta.getFree": "Get for free",
+ "checkout.cta.paymentsUnavailable": "Payments are currently unavailable",
+ "intervals.short.day": "dy",
+ "intervals.short.week": "wk",
+ "intervals.short.month": "mo",
+ "intervals.short.year": "yr",
+ "intervals.long.day": "day",
+ "intervals.long.week": "week",
+ "intervals.long.month": "month",
+ "intervals.long.year": "year",
+ "intervals.frequency.day": "daily",
+ "intervals.frequency.week": "weekly",
+ "intervals.frequency.month": "monthly",
+ "intervals.frequency.year": "yearly",
+ "intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
+ "benefitTypes.usage.displayName": "Usage",
+ "benefitTypes.license_keys.displayName": "License Keys",
+ "benefitTypes.github_repository.displayName": "GitHub Repository Access",
+ "benefitTypes.discord.displayName": "Discord Invite",
+ "benefitTypes.downloadables.displayName": "File Downloads",
+ "benefitTypes.custom.displayName": "Custom",
+ "benefitTypes.meter_credit.displayName": "Meter Credits"
+ },
+ "sv": {
+ "checkout.footer.poweredBy": "Powered by",
+ "checkout.footer.merchantOfRecord": "This order is processed by our online reseller & Merchant of Record, Polar, who also handles order-related inquiries and returns.",
+ "checkout.form.email": "Email",
+ "checkout.form.cardholderName": "Cardholder name",
+ "checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
+ "checkout.form.businessName": "Business name",
+ "checkout.form.billingAddress.label": "Billing address",
+ "checkout.form.billingAddress.line1": "Line 1",
+ "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.postalCode": "Postal code",
+ "checkout.form.billingAddress.city": "City",
+ "checkout.form.billingAddress.country": "Country",
+ "checkout.form.billingAddress.state": "State",
+ "checkout.form.billingAddress.province": "Province",
+ "checkout.form.billingAddress.stateProvince": "State / Province",
+ "checkout.form.taxId": "Tax ID",
+ "checkout.form.discountCode": "Discount code",
+ "checkout.form.optional": "Optional",
+ "checkout.form.apply": "Apply",
+ "checkout.form.fieldRequired": "This field is required",
+ "checkout.pricing.subtotal": "Subtotal",
+ "checkout.pricing.taxableAmount": "Taxable amount",
+ "checkout.pricing.taxes": "Taxes",
+ "checkout.pricing.free": "Free",
+ "checkout.pricing.payWhatYouWant": "Pay what you want",
+ "checkout.pricing.total": "Total",
+ "checkout.pricing.everyInterval": "Every {interval}",
+ "checkout.pricing.additionalMeteredUsage": "Additional metered usage",
+ "checkout.pricing.perUnit": "/ unit",
+ "checkout.pricing.discount.duration.months.=1": "for the first month",
+ "checkout.pricing.discount.duration.months.other": "for the first # months",
+ "checkout.pricing.discount.duration.years.=1": "for the first year",
+ "checkout.pricing.discount.duration.years.other": "for the first # years",
+ "checkout.trial.ends": "Trial ends {endDate}",
+ "checkout.trial.duration.days.=1": "# day trial",
+ "checkout.trial.duration.days.other": "# days trial",
+ "checkout.trial.duration.weeks.=1": "# week trial",
+ "checkout.trial.duration.weeks.other": "# weeks trial",
+ "checkout.trial.duration.months.=1": "# month trial",
+ "checkout.trial.duration.months.other": "# months trial",
+ "checkout.trial.duration.years.=1": "# year trial",
+ "checkout.trial.duration.years.other": "# years trial",
+ "checkout.pwywForm.label": "Name a fair price",
+ "checkout.pwywForm.minimum": "{amount} minimum",
+ "checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.productSwitcher.billedRecurring": "Billed {frequency}",
+ "checkout.productSwitcher.oneTimePurchase": "One-time purchase",
+ "checkout.card.included": "Included",
+ "checkout.benefits.moreBenefits.=1": "# more benefit",
+ "checkout.benefits.moreBenefits.other": "# more benefits",
+ "checkout.benefits.showMoreBenefits.=1": "Show # more benefit",
+ "checkout.benefits.showMoreBenefits.other": "Show # more benefits",
+ "checkout.benefits.showLess": "Show less",
+ "checkout.benefits.granting": "Granting benefits...",
+ "checkout.benefits.requestNewInvite": "Request new invite",
+ "checkout.benefits.retryIn.=1": "Try again in # second",
+ "checkout.benefits.retryIn.other": "Try again in # seconds",
+ "checkout.benefits.connectNewAccount": "Connect new account",
+ "checkout.benefits.requestMyInvite": "Request my invite",
+ "checkout.benefits.github.connect": "Connect GitHub account",
+ "checkout.benefits.github.goTo": "Go to {repository}",
+ "checkout.benefits.github.selectAccount": "Select a GitHub account",
+ "checkout.benefits.discord.connect": "Connect Discord account",
+ "checkout.benefits.discord.open": "Open Discord",
+ "checkout.benefits.discord.selectAccount": "Select a Discord account",
+ "checkout.benefits.licenseKey.copy": "Copy",
+ "checkout.benefits.licenseKey.copiedToClipboard": "Copied To Clipboard",
+ "checkout.benefits.licenseKey.copiedToClipboardDescription": "License Key was copied to clipboard",
+ "checkout.benefits.licenseKey.loading": "Loading...",
+ "checkout.benefits.licenseKey.status": "Status",
+ "checkout.benefits.licenseKey.statusGranted": "Granted",
+ "checkout.benefits.licenseKey.statusRevoked": "Revoked",
+ "checkout.benefits.licenseKey.statusDisabled": "Disabled",
+ "checkout.benefits.licenseKey.usage": "Usage",
+ "checkout.benefits.licenseKey.validations": "Validations",
+ "checkout.benefits.licenseKey.validatedAt": "Validated At",
+ "checkout.benefits.licenseKey.neverValidated": "Never Validated",
+ "checkout.benefits.licenseKey.expiryDate": "Expiry Date",
+ "checkout.benefits.licenseKey.noExpiry": "No Expiry",
+ "checkout.benefits.licenseKey.activations": "Activations",
+ "checkout.benefits.licenseKey.activationDeleted": "License Key Activation Deleted",
+ "checkout.benefits.licenseKey.activationDeletedDescription": "Activation deleted successfully",
+ "checkout.benefits.licenseKey.activationDeactivationFailed": "Activation Deactivation Failed",
+ "checkout.confirmation.confirmPayment": "Confirm payment",
+ "checkout.confirmation.processingTitle": "We are processing your order",
+ "checkout.confirmation.successTitle": "Your order was successful!",
+ "checkout.confirmation.failedTitle": "A problem occurred while processing your order",
+ "checkout.confirmation.processingDescription": "Please wait while we confirm your payment.",
+ "checkout.confirmation.successDescription": "You're now eligible for the benefits of {product}.",
+ "checkout.confirmation.failedDescription": "Please try again or contact support.",
+ "checkout.loading.processingOrder": "Processing order...",
+ "checkout.loading.processingPayment": "Processing payment",
+ "checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
+ "checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
+ "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.subscribeNow": "Subscribe now",
+ "checkout.cta.payNow": "Pay now",
+ "checkout.cta.getFree": "Get for free",
+ "checkout.cta.paymentsUnavailable": "Payments are currently unavailable",
+ "intervals.short.day": "dy",
+ "intervals.short.week": "wk",
+ "intervals.short.month": "mo",
+ "intervals.short.year": "yr",
+ "intervals.long.day": "day",
+ "intervals.long.week": "week",
+ "intervals.long.month": "month",
+ "intervals.long.year": "year",
+ "intervals.frequency.day": "daily",
+ "intervals.frequency.week": "weekly",
+ "intervals.frequency.month": "monthly",
+ "intervals.frequency.year": "yearly",
+ "intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
+ "benefitTypes.usage.displayName": "Usage",
+ "benefitTypes.license_keys.displayName": "License Keys",
+ "benefitTypes.github_repository.displayName": "GitHub Repository Access",
+ "benefitTypes.discord.displayName": "Discord Invite",
+ "benefitTypes.downloadables.displayName": "File Downloads",
+ "benefitTypes.custom.displayName": "Custom",
+ "benefitTypes.meter_credit.displayName": "Meter Credits"
+ },
+ "es": {
+ "checkout.footer.poweredBy": "Powered by",
+ "checkout.footer.merchantOfRecord": "This order is processed by our online reseller & Merchant of Record, Polar, who also handles order-related inquiries and returns.",
+ "checkout.form.email": "Email",
+ "checkout.form.cardholderName": "Cardholder name",
+ "checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
+ "checkout.form.businessName": "Business name",
+ "checkout.form.billingAddress.label": "Billing address",
+ "checkout.form.billingAddress.line1": "Line 1",
+ "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.postalCode": "Postal code",
+ "checkout.form.billingAddress.city": "City",
+ "checkout.form.billingAddress.country": "Country",
+ "checkout.form.billingAddress.state": "State",
+ "checkout.form.billingAddress.province": "Province",
+ "checkout.form.billingAddress.stateProvince": "State / Province",
+ "checkout.form.taxId": "Tax ID",
+ "checkout.form.discountCode": "Discount code",
+ "checkout.form.optional": "Optional",
+ "checkout.form.apply": "Apply",
+ "checkout.form.fieldRequired": "This field is required",
+ "checkout.pricing.subtotal": "Subtotal",
+ "checkout.pricing.taxableAmount": "Taxable amount",
+ "checkout.pricing.taxes": "Taxes",
+ "checkout.pricing.free": "Free",
+ "checkout.pricing.payWhatYouWant": "Pay what you want",
+ "checkout.pricing.total": "Total",
+ "checkout.pricing.everyInterval": "Every {interval}",
+ "checkout.pricing.additionalMeteredUsage": "Additional metered usage",
+ "checkout.pricing.perUnit": "/ unit",
+ "checkout.pricing.discount.duration.months.=1": "for the first month",
+ "checkout.pricing.discount.duration.months.other": "for the first # months",
+ "checkout.pricing.discount.duration.years.=1": "for the first year",
+ "checkout.pricing.discount.duration.years.other": "for the first # years",
+ "checkout.trial.ends": "Trial ends {endDate}",
+ "checkout.trial.duration.days.=1": "# day trial",
+ "checkout.trial.duration.days.other": "# days trial",
+ "checkout.trial.duration.weeks.=1": "# week trial",
+ "checkout.trial.duration.weeks.other": "# weeks trial",
+ "checkout.trial.duration.months.=1": "# month trial",
+ "checkout.trial.duration.months.other": "# months trial",
+ "checkout.trial.duration.years.=1": "# year trial",
+ "checkout.trial.duration.years.other": "# years trial",
+ "checkout.pwywForm.label": "Name a fair price",
+ "checkout.pwywForm.minimum": "{amount} minimum",
+ "checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.productSwitcher.billedRecurring": "Billed {frequency}",
+ "checkout.productSwitcher.oneTimePurchase": "One-time purchase",
+ "checkout.card.included": "Included",
+ "checkout.benefits.moreBenefits.=1": "# more benefit",
+ "checkout.benefits.moreBenefits.other": "# more benefits",
+ "checkout.benefits.showMoreBenefits.=1": "Show # more benefit",
+ "checkout.benefits.showMoreBenefits.other": "Show # more benefits",
+ "checkout.benefits.showLess": "Show less",
+ "checkout.benefits.granting": "Granting benefits...",
+ "checkout.benefits.requestNewInvite": "Request new invite",
+ "checkout.benefits.retryIn.=1": "Try again in # second",
+ "checkout.benefits.retryIn.other": "Try again in # seconds",
+ "checkout.benefits.connectNewAccount": "Connect new account",
+ "checkout.benefits.requestMyInvite": "Request my invite",
+ "checkout.benefits.github.connect": "Connect GitHub account",
+ "checkout.benefits.github.goTo": "Go to {repository}",
+ "checkout.benefits.github.selectAccount": "Select a GitHub account",
+ "checkout.benefits.discord.connect": "Connect Discord account",
+ "checkout.benefits.discord.open": "Open Discord",
+ "checkout.benefits.discord.selectAccount": "Select a Discord account",
+ "checkout.benefits.licenseKey.copy": "Copy",
+ "checkout.benefits.licenseKey.copiedToClipboard": "Copied To Clipboard",
+ "checkout.benefits.licenseKey.copiedToClipboardDescription": "License Key was copied to clipboard",
+ "checkout.benefits.licenseKey.loading": "Loading...",
+ "checkout.benefits.licenseKey.status": "Status",
+ "checkout.benefits.licenseKey.statusGranted": "Granted",
+ "checkout.benefits.licenseKey.statusRevoked": "Revoked",
+ "checkout.benefits.licenseKey.statusDisabled": "Disabled",
+ "checkout.benefits.licenseKey.usage": "Usage",
+ "checkout.benefits.licenseKey.validations": "Validations",
+ "checkout.benefits.licenseKey.validatedAt": "Validated At",
+ "checkout.benefits.licenseKey.neverValidated": "Never Validated",
+ "checkout.benefits.licenseKey.expiryDate": "Expiry Date",
+ "checkout.benefits.licenseKey.noExpiry": "No Expiry",
+ "checkout.benefits.licenseKey.activations": "Activations",
+ "checkout.benefits.licenseKey.activationDeleted": "License Key Activation Deleted",
+ "checkout.benefits.licenseKey.activationDeletedDescription": "Activation deleted successfully",
+ "checkout.benefits.licenseKey.activationDeactivationFailed": "Activation Deactivation Failed",
+ "checkout.confirmation.confirmPayment": "Confirm payment",
+ "checkout.confirmation.processingTitle": "We are processing your order",
+ "checkout.confirmation.successTitle": "Your order was successful!",
+ "checkout.confirmation.failedTitle": "A problem occurred while processing your order",
+ "checkout.confirmation.processingDescription": "Please wait while we confirm your payment.",
+ "checkout.confirmation.successDescription": "You're now eligible for the benefits of {product}.",
+ "checkout.confirmation.failedDescription": "Please try again or contact support.",
+ "checkout.loading.processingOrder": "Processing order...",
+ "checkout.loading.processingPayment": "Processing payment",
+ "checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
+ "checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
+ "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.subscribeNow": "Subscribe now",
+ "checkout.cta.payNow": "Pay now",
+ "checkout.cta.getFree": "Get for free",
+ "checkout.cta.paymentsUnavailable": "Payments are currently unavailable",
+ "intervals.short.day": "dy",
+ "intervals.short.week": "wk",
+ "intervals.short.month": "mo",
+ "intervals.short.year": "yr",
+ "intervals.long.day": "day",
+ "intervals.long.week": "week",
+ "intervals.long.month": "month",
+ "intervals.long.year": "year",
+ "intervals.frequency.day": "daily",
+ "intervals.frequency.week": "weekly",
+ "intervals.frequency.month": "monthly",
+ "intervals.frequency.year": "yearly",
+ "intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
+ "benefitTypes.usage.displayName": "Usage",
+ "benefitTypes.license_keys.displayName": "License Keys",
+ "benefitTypes.github_repository.displayName": "GitHub Repository Access",
+ "benefitTypes.discord.displayName": "Discord Invite",
+ "benefitTypes.downloadables.displayName": "File Downloads",
+ "benefitTypes.custom.displayName": "Custom",
+ "benefitTypes.meter_credit.displayName": "Meter Credits"
}
}
diff --git a/clients/packages/i18n/src/locales/es.ts b/clients/packages/i18n/src/locales/es.ts
new file mode 100644
index 0000000000..116399d7cf
--- /dev/null
+++ b/clients/packages/i18n/src/locales/es.ts
@@ -0,0 +1,216 @@
+export const es = {
+ checkout: {
+ footer: {
+ poweredBy: 'Desarrollado por',
+ merchantOfRecord:
+ 'Este pedido es procesado por nuestro distribuidor en línea y comerciante oficial, Polar, quien también gestiona las consultas y devoluciones relacionadas con el pedido.',
+ },
+ form: {
+ email: 'Correo electrónico',
+ cardholderName: 'Nombre del titular de la tarjeta',
+ purchasingAsBusiness: 'Compro como empresa',
+ businessName: 'Nombre de la empresa',
+ billingAddress: {
+ label: 'Dirección de facturación',
+ line1: 'Línea 1',
+ line2: 'Línea 2',
+ postalCode: 'Código postal',
+ city: 'Ciudad',
+ country: 'País',
+ state: 'Estado',
+ province: 'Provincia',
+ stateProvince: 'Estado / Provincia',
+ },
+ taxId: 'ID fiscal',
+ discountCode: 'Código de descuento',
+ optional: 'Opcional',
+ apply: 'Aplicar',
+ fieldRequired: 'Este campo es obligatorio',
+ },
+ pricing: {
+ subtotal: 'Subtotal',
+ taxableAmount: 'Importe imponible',
+ taxes: 'Impuestos',
+ free: 'Gratis',
+ payWhatYouWant: 'Paga lo que quieras',
+ total: 'Total',
+ everyInterval: 'Cada {interval}',
+ additionalMeteredUsage: 'Uso medido adicional',
+ perUnit: '/ unidad',
+ discount: {
+ duration: {
+ months: {
+ '=1': 'durante el primer mes',
+ other: 'durante los primeros # meses',
+ _mode: 'plural',
+ },
+ years: {
+ '=1': 'durante el primer año',
+ other: 'durante los primeros # años',
+ _mode: 'plural',
+ },
+ },
+ },
+ },
+ trial: {
+ ends: 'La prueba finaliza el {endDate}',
+ duration: {
+ days: {
+ '=1': 'prueba de # día',
+ other: 'prueba de # días',
+ _mode: 'plural',
+ },
+ weeks: {
+ '=1': 'prueba de # semana',
+ other: 'prueba de # semanas',
+ _mode: 'plural',
+ },
+ months: {
+ '=1': 'prueba de # mes',
+ other: 'prueba de # meses',
+ _mode: 'plural',
+ },
+ years: {
+ '=1': 'prueba de # año',
+ other: 'prueba de # años',
+ _mode: 'plural',
+ },
+ },
+ },
+ pwywForm: {
+ label: 'Pon un precio justo',
+ minimum: '{amount} mínimo',
+ amountMinimum: 'El importe debe ser al menos {min}',
+ amountFreeOrMinimum: 'El importe debe ser $0 o al menos {min}',
+ },
+ productSwitcher: {
+ billedRecurring: 'Facturado {frequency}',
+ oneTimePurchase: 'Compra única',
+ },
+ card: {
+ included: 'Incluido',
+ },
+ benefits: {
+ moreBenefits: {
+ '=1': '# beneficio más',
+ other: '# beneficios más',
+ _mode: 'plural',
+ },
+ showMoreBenefits: {
+ '=1': 'Mostrar # beneficio más',
+ other: 'Mostrar # beneficios más',
+ _mode: 'plural',
+ },
+ showLess: 'Mostrar menos',
+ granting: 'Concediendo beneficios...',
+ requestNewInvite: 'Solicitar nueva invitación',
+ retryIn: {
+ '=1': 'Intentar de nuevo en # segundo',
+ other: 'Intentar de nuevo en # segundos',
+ _mode: 'plural',
+ },
+ connectNewAccount: 'Conectar nueva cuenta',
+ requestMyInvite: 'Solicitar mi invitación',
+ github: {
+ connect: 'Conectar cuenta de GitHub',
+ goTo: 'Ir a {repository}',
+ selectAccount: 'Seleccionar una cuenta de GitHub',
+ },
+ discord: {
+ connect: 'Conectar cuenta de Discord',
+ open: 'Abrir Discord',
+ selectAccount: 'Seleccionar una cuenta de Discord',
+ },
+ licenseKey: {
+ copy: 'Copiar',
+ copiedToClipboard: 'Copiado al portapapeles',
+ copiedToClipboardDescription:
+ 'La clave de licencia se copió al portapapeles',
+ loading: 'Cargando...',
+ status: 'Estado',
+ statusGranted: 'Concedida',
+ statusRevoked: 'Revocada',
+ statusDisabled: 'Deshabilitada',
+ usage: 'Uso',
+ validations: 'Validaciones',
+ validatedAt: 'Validado el',
+ neverValidated: 'Nunca validado',
+ expiryDate: 'Fecha de caducidad',
+ noExpiry: 'Sin caducidad',
+ activations: 'Activaciones',
+ activationDeleted: 'Activación de clave de licencia eliminada',
+ activationDeletedDescription: 'Activación eliminada correctamente',
+ activationDeactivationFailed: 'Error al desactivar la activación',
+ },
+ },
+ confirmation: {
+ confirmPayment: 'Confirmar pago',
+ processingTitle: 'Estamos procesando su pedido',
+ successTitle: '¡Su pedido se realizó con éxito!',
+ failedTitle: 'Ocurrió un problema al procesar su pedido',
+ processingDescription: 'Espere mientras confirmamos su pago.',
+ successDescription: 'Ahora es elegible para los beneficios de {product}.',
+ failedDescription:
+ 'Por favor, inténtelo de nuevo o póngase en contacto con soporte.',
+ },
+ loading: {
+ processingOrder: 'Procesando pedido...',
+ processingPayment: 'Procesando pago',
+ paymentSuccessful:
+ '¡Pago realizado con éxito! Preparando sus productos...',
+ confirmationTokenFailed:
+ 'No se pudo crear el token de confirmación, inténtelo de nuevo más tarde.',
+ },
+ cta: {
+ startTrial: 'Iniciar prueba',
+ subscribeNow: 'Suscribirse ahora',
+ payNow: 'Pagar ahora',
+ getFree: 'Obtener gratis',
+ paymentsUnavailable: 'Los pagos no están disponibles actualmente',
+ },
+ },
+ intervals: {
+ short: {
+ day: 'día',
+ week: 'sem',
+ month: 'mes',
+ year: 'año',
+ },
+ long: {
+ day: 'día',
+ week: 'semana',
+ month: 'mes',
+ year: 'año',
+ },
+ frequency: {
+ day: 'diariamente',
+ week: 'semanalmente',
+ month: 'mensualmente',
+ year: 'anualmente',
+ everyOrdinalInterval: 'cada {ordinal} {interval}',
+ },
+ },
+ benefitTypes: {
+ usage: {
+ displayName: 'Uso',
+ },
+ license_keys: {
+ displayName: 'Claves de licencia',
+ },
+ github_repository: {
+ displayName: 'Acceso a repositorio de GitHub',
+ },
+ discord: {
+ displayName: 'Invitación a Discord',
+ },
+ downloadables: {
+ displayName: 'Descargas de archivos',
+ },
+ custom: {
+ displayName: 'Personalizado',
+ },
+ meter_credit: {
+ displayName: 'Créditos de medición',
+ },
+ },
+} as const
diff --git a/clients/packages/i18n/src/locales/fr.ts b/clients/packages/i18n/src/locales/fr.ts
new file mode 100644
index 0000000000..11bb8f3127
--- /dev/null
+++ b/clients/packages/i18n/src/locales/fr.ts
@@ -0,0 +1,218 @@
+export const fr = {
+ checkout: {
+ footer: {
+ poweredBy: 'Propulsé par',
+ merchantOfRecord:
+ 'Cette commande est traitée par notre revendeur en ligne et commerçant officiel, Polar, qui gère également les demandes et retours liés à la commande.',
+ },
+ form: {
+ email: 'E-mail',
+ cardholderName: 'Nom du titulaire de la carte',
+ purchasingAsBusiness: "J'achète en tant qu'entreprise",
+ businessName: "Nom de l'entreprise",
+ billingAddress: {
+ label: 'Adresse de facturation',
+ line1: 'Ligne 1',
+ line2: 'Ligne 2',
+ postalCode: 'Code postal',
+ city: 'Ville',
+ country: 'Pays',
+ state: 'État',
+ province: 'Province',
+ stateProvince: 'État / Province',
+ },
+ taxId: "Numéro d'identification fiscale",
+ discountCode: 'Code promo',
+ optional: 'Facultatif',
+ apply: 'Appliquer',
+ fieldRequired: 'Ce champ est obligatoire',
+ },
+ pricing: {
+ subtotal: 'Sous-total',
+ taxableAmount: 'Montant imposable',
+ taxes: 'Taxes',
+ free: 'Gratuit',
+ payWhatYouWant: 'Payez ce que vous voulez',
+ total: 'Total',
+ everyInterval: 'Tous les {interval}',
+ additionalMeteredUsage: 'Utilisation mesurée supplémentaire',
+ perUnit: '/ unité',
+ discount: {
+ duration: {
+ months: {
+ '=1': 'pour le premier mois',
+ other: 'pour les # premiers mois',
+ _mode: 'plural',
+ },
+ years: {
+ '=1': 'pour la première année',
+ other: 'pour les # premières années',
+ _mode: 'plural',
+ },
+ },
+ },
+ },
+ trial: {
+ ends: "L'essai se termine le {endDate}",
+ duration: {
+ days: {
+ '=1': 'Essai de # jour',
+ other: 'Essai de # jours',
+ _mode: 'plural',
+ },
+ weeks: {
+ '=1': 'Essai de # semaine',
+ other: 'Essai de # semaines',
+ _mode: 'plural',
+ },
+ months: {
+ '=1': 'Essai de # mois',
+ other: 'Essai de # mois',
+ _mode: 'plural',
+ },
+ years: {
+ '=1': 'Essai de # an',
+ other: 'Essai de # ans',
+ _mode: 'plural',
+ },
+ },
+ },
+ pwywForm: {
+ label: 'Fixez un prix juste',
+ minimum: '{amount} minimum',
+ amountMinimum: "Le montant doit être d'au moins {min}",
+ amountFreeOrMinimum: "Le montant doit être de 0 $ ou d'au moins {min}",
+ },
+ productSwitcher: {
+ billedRecurring: 'Facturé {frequency}',
+ oneTimePurchase: 'Achat unique',
+ },
+ card: {
+ included: 'Inclus',
+ },
+ benefits: {
+ moreBenefits: {
+ '=1': '# avantage supplémentaire',
+ other: '# avantages supplémentaires',
+ _mode: 'plural',
+ },
+ showMoreBenefits: {
+ '=1': 'Afficher # avantage supplémentaire',
+ other: 'Afficher # avantages supplémentaires',
+ _mode: 'plural',
+ },
+ showLess: 'Afficher moins',
+ granting: 'Octroi des avantages...',
+ requestNewInvite: 'Demander une nouvelle invitation',
+ retryIn: {
+ '=1': 'Réessayer dans # seconde',
+ other: 'Réessayer dans # secondes',
+ _mode: 'plural',
+ },
+ connectNewAccount: 'Connecter un nouveau compte',
+ requestMyInvite: 'Demander mon invitation',
+ github: {
+ connect: 'Connecter le compte GitHub',
+ goTo: 'Aller au dépôt {repository}',
+ selectAccount: 'Sélectionner un compte GitHub',
+ },
+ discord: {
+ connect: 'Connecter le compte Discord',
+ open: 'Ouvrir Discord',
+ selectAccount: 'Sélectionner un compte Discord',
+ },
+ licenseKey: {
+ copy: 'Copier',
+ copiedToClipboard: 'Copié dans le presse-papiers',
+ copiedToClipboardDescription:
+ 'La clé de licence a été copiée dans le presse-papiers',
+ loading: 'Chargement...',
+ status: 'Statut',
+ statusGranted: 'Accordée',
+ statusRevoked: 'Révoquée',
+ statusDisabled: 'Désactivée',
+ usage: 'Utilisation',
+ validations: 'Validations',
+ validatedAt: 'Validée le',
+ neverValidated: 'Jamais validée',
+ expiryDate: "Date d'expiration",
+ noExpiry: "Pas d'expiration",
+ activations: 'Activations',
+ activationDeleted: 'Activation de la clé de licence supprimée',
+ activationDeletedDescription: 'Activation supprimée avec succès',
+ activationDeactivationFailed:
+ "Échec de la désactivation de l'activation",
+ },
+ },
+ confirmation: {
+ confirmPayment: 'Confirmer le paiement',
+ processingTitle: 'Nous traitons votre commande',
+ successTitle: 'Votre commande a été traitée avec succès !',
+ failedTitle:
+ 'Un problème est survenu lors du traitement de votre commande',
+ processingDescription:
+ 'Veuillez patienter pendant que nous confirmons votre paiement.',
+ successDescription:
+ 'Vous êtes maintenant éligible aux avantages de {product}.',
+ failedDescription: 'Veuillez réessayer ou contacter le support.',
+ },
+ loading: {
+ processingOrder: 'Traitement de la commande...',
+ processingPayment: 'Traitement du paiement',
+ paymentSuccessful: 'Paiement réussi ! Préparation de vos produits...',
+ confirmationTokenFailed:
+ 'Échec de la création du jeton de confirmation, veuillez réessayer plus tard.',
+ },
+ cta: {
+ startTrial: "Démarrer l'essai",
+ subscribeNow: "S'abonner maintenant",
+ payNow: 'Payer maintenant',
+ getFree: 'Obtenir gratuitement',
+ paymentsUnavailable: 'Les paiements sont actuellement indisponibles',
+ },
+ },
+ intervals: {
+ short: {
+ day: 'j',
+ week: 'sem',
+ month: 'mois',
+ year: 'an',
+ },
+ long: {
+ day: 'jour',
+ week: 'semaine',
+ month: 'mois',
+ year: 'an',
+ },
+ frequency: {
+ day: 'quotidien',
+ week: 'hebdomadaire',
+ month: 'mensuel',
+ year: 'annuel',
+ everyOrdinalInterval: 'tous les {ordinal} {interval}',
+ },
+ },
+ benefitTypes: {
+ usage: {
+ displayName: 'Utilisation',
+ },
+ license_keys: {
+ displayName: 'Clés de licence',
+ },
+ github_repository: {
+ displayName: 'Accès au dépôt GitHub',
+ },
+ discord: {
+ displayName: 'Invitation Discord',
+ },
+ downloadables: {
+ displayName: 'Téléchargements de fichiers',
+ },
+ custom: {
+ displayName: 'Personnalisé',
+ },
+ meter_credit: {
+ displayName: 'Crédits de compteur',
+ },
+ },
+} as const
diff --git a/clients/packages/i18n/src/locales/sv.ts b/clients/packages/i18n/src/locales/sv.ts
new file mode 100644
index 0000000000..fe9edbe02e
--- /dev/null
+++ b/clients/packages/i18n/src/locales/sv.ts
@@ -0,0 +1,213 @@
+export const sv = {
+ checkout: {
+ footer: {
+ poweredBy: 'Drivs av',
+ merchantOfRecord:
+ 'Denna order behandlas av vår online-återförsäljare och Merchant of Record, Polar, som också hanterar orderrelaterade frågor och returer.',
+ },
+ form: {
+ email: 'E-post',
+ cardholderName: 'Kortinnehavarens namn',
+ purchasingAsBusiness: 'Jag köper som företag',
+ businessName: 'Företagsnamn',
+ billingAddress: {
+ label: 'Faktureringsadress',
+ line1: 'Adressrad 1',
+ line2: 'Adressrad 2',
+ postalCode: 'Postnummer',
+ city: 'Ort',
+ country: 'Land',
+ state: 'Delstat',
+ province: 'Provins',
+ stateProvince: 'Delstat / Provins',
+ },
+ taxId: 'Momsregistreringsnummer',
+ discountCode: 'Rabattkod',
+ optional: 'Valfritt',
+ apply: 'Tillämpa',
+ fieldRequired: 'Detta fält är obligatoriskt',
+ },
+ pricing: {
+ subtotal: 'Delsumma',
+ taxableAmount: 'Momspliktigt belopp',
+ taxes: 'Moms',
+ free: 'Gratis',
+ payWhatYouWant: 'Betala vad du vill',
+ total: 'Totalt',
+ everyInterval: 'Varje {interval}',
+ additionalMeteredUsage: 'Ytterligare mätbaserad användning',
+ perUnit: '/ enhet',
+ discount: {
+ duration: {
+ months: {
+ '=1': 'för den första månaden',
+ other: 'för de första # månaderna',
+ _mode: 'plural',
+ },
+ years: {
+ '=1': 'för det första året',
+ other: 'för de första # åren',
+ _mode: 'plural',
+ },
+ },
+ },
+ },
+ trial: {
+ ends: 'Testperioden avslutas {endDate}',
+ duration: {
+ days: {
+ '=1': '# dags testperiod',
+ other: '# dagars testperiod',
+ _mode: 'plural',
+ },
+ weeks: {
+ '=1': '# veckas testperiod',
+ other: '# veckors testperiod',
+ _mode: 'plural',
+ },
+ months: {
+ '=1': '# månads testperiod',
+ other: '# månaders testperiod',
+ _mode: 'plural',
+ },
+ years: {
+ '=1': '# års testperiod',
+ other: '# års testperiod',
+ _mode: 'plural',
+ },
+ },
+ },
+ pwywForm: {
+ label: 'Ange ett rimligt pris',
+ minimum: 'Minst {amount}',
+ amountMinimum: 'Beloppet måste vara minst {min}',
+ amountFreeOrMinimum: 'Beloppet måste vara 0 kr eller minst {min}',
+ },
+ productSwitcher: {
+ billedRecurring: 'Debiteras {frequency}',
+ oneTimePurchase: 'Engångsköp',
+ },
+ card: {
+ included: 'Ingår',
+ },
+ benefits: {
+ moreBenefits: {
+ '=1': '# ytterligare förmån',
+ other: '# ytterligare förmåner',
+ _mode: 'plural',
+ },
+ showMoreBenefits: {
+ '=1': 'Visa # ytterligare förmån',
+ other: 'Visa # ytterligare förmåner',
+ _mode: 'plural',
+ },
+ showLess: 'Visa mindre',
+ granting: 'Tilldelar förmåner...',
+ requestNewInvite: 'Begär ny inbjudan',
+ retryIn: {
+ '=1': 'Försök igen om # sekund',
+ other: 'Försök igen om # sekunder',
+ _mode: 'plural',
+ },
+ connectNewAccount: 'Anslut nytt konto',
+ requestMyInvite: 'Begär min inbjudan',
+ github: {
+ connect: 'Anslut GitHub-konto',
+ goTo: 'Gå till {repository}',
+ selectAccount: 'Välj ett GitHub-konto',
+ },
+ discord: {
+ connect: 'Anslut Discord-konto',
+ open: 'Öppna Discord',
+ selectAccount: 'Välj ett Discord-konto',
+ },
+ licenseKey: {
+ copy: 'Kopiera',
+ copiedToClipboard: 'Kopierat till urklipp',
+ copiedToClipboardDescription: 'Licensnyckeln kopierades till urklipp',
+ loading: 'Laddar...',
+ status: 'Status',
+ statusGranted: 'Tilldelad',
+ statusRevoked: 'Återkallad',
+ statusDisabled: 'Inaktiverad',
+ usage: 'Användning',
+ validations: 'Valideringar',
+ validatedAt: 'Validerad den',
+ neverValidated: 'Aldrig validerad',
+ expiryDate: 'Utgångsdatum',
+ noExpiry: 'Inget utgångsdatum',
+ activations: 'Aktiveringar',
+ activationDeleted: 'Licensnyckelaktivering borttagen',
+ activationDeletedDescription: 'Aktivering borttagen',
+ activationDeactivationFailed: 'Deaktivering av aktivering misslyckades',
+ },
+ },
+ confirmation: {
+ confirmPayment: 'Bekräfta betalning',
+ processingTitle: 'Vi behandlar din order',
+ successTitle: 'Din order lyckades!',
+ failedTitle: 'Ett problem uppstod vid behandling av din order',
+ processingDescription: 'Vänta medan vi bekräftar din betalning.',
+ successDescription: 'Du är nu berättigad till förmånerna med {product}.',
+ failedDescription: 'Försök igen eller kontakta support.',
+ },
+ loading: {
+ processingOrder: 'Behandlar order...',
+ processingPayment: 'Behandlar betalning',
+ paymentSuccessful: 'Betalning lyckades! Förbereder dina produkter...',
+ confirmationTokenFailed:
+ 'Kunde inte skapa bekräftelsetoken, försök igen senare.',
+ },
+ cta: {
+ startTrial: 'Starta testperiod',
+ subscribeNow: 'Prenumerera nu',
+ payNow: 'Betala nu',
+ getFree: 'Få gratis',
+ paymentsUnavailable: 'Betalningar är för närvarande inte tillgängliga',
+ },
+ },
+ intervals: {
+ short: {
+ day: 'd',
+ week: 'v',
+ month: 'mån',
+ year: 'år',
+ },
+ long: {
+ day: 'dag',
+ week: 'vecka',
+ month: 'månad',
+ year: 'år',
+ },
+ frequency: {
+ day: 'dagligen',
+ week: 'veckovis',
+ month: 'månatligen',
+ year: 'årligen',
+ everyOrdinalInterval: 'var {ordinal} {interval}',
+ },
+ },
+ benefitTypes: {
+ usage: {
+ displayName: 'Användning',
+ },
+ license_keys: {
+ displayName: 'Licensnycklar',
+ },
+ github_repository: {
+ displayName: 'Åtkomst till GitHub-repository',
+ },
+ discord: {
+ displayName: 'Discord-inbjudan',
+ },
+ downloadables: {
+ displayName: 'Filnedladdningar',
+ },
+ custom: {
+ displayName: 'Anpassad',
+ },
+ meter_credit: {
+ displayName: 'Mätarkrediter',
+ },
+ },
+} as const
From dc0feec0147b3c107421b910b32be1917aaf2c6b Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 14:04:22 +0100
Subject: [PATCH 36/69] Tinker with languages
---
.../src/components/Benefit/BenefitGrant.tsx | 2 +-
.../i18n/src/locales/config/.cache.json | 64 ++++++++---------
.../i18n/src/locales/config/prompt.md | 1 +
clients/packages/i18n/src/locales/en.ts | 25 ++++---
clients/packages/i18n/src/locales/es.ts | 70 ++++++++-----------
clients/packages/i18n/src/locales/fr.ts | 66 +++++++----------
clients/packages/i18n/src/locales/nl.ts | 44 ++++--------
clients/packages/i18n/src/locales/sv.ts | 54 ++++++--------
8 files changed, 139 insertions(+), 187 deletions(-)
diff --git a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
index 27aea29dcd..a9bf7052fa 100644
--- a/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
+++ b/clients/apps/web/src/components/Benefit/BenefitGrant.tsx
@@ -355,7 +355,7 @@ export const BenefitGrant = ({
{benefit.description}
- {t(`benefitTypes.${benefit.type}.displayName`)}
+ {t(`benefitTypes.${benefit.type}`)}
diff --git a/clients/packages/i18n/src/locales/config/.cache.json b/clients/packages/i18n/src/locales/config/.cache.json
index ea61cb4c15..ca19ace2f0 100644
--- a/clients/packages/i18n/src/locales/config/.cache.json
+++ b/clients/packages/i18n/src/locales/config/.cache.json
@@ -95,7 +95,7 @@
"checkout.loading.processingPayment": "Processing payment",
"checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
"checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
- "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.startTrial": "Start trial",
"checkout.cta.subscribeNow": "Subscribe now",
"checkout.cta.payNow": "Pay now",
"checkout.cta.getFree": "Get for free",
@@ -113,13 +113,13 @@
"intervals.frequency.month": "monthly",
"intervals.frequency.year": "yearly",
"intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
- "benefitTypes.usage.displayName": "Usage",
- "benefitTypes.license_keys.displayName": "License Keys",
- "benefitTypes.github_repository.displayName": "GitHub Repository Access",
- "benefitTypes.discord.displayName": "Discord Invite",
- "benefitTypes.downloadables.displayName": "File Downloads",
- "benefitTypes.custom.displayName": "Custom",
- "benefitTypes.meter_credit.displayName": "Meter Credits"
+ "benefitTypes.usage": "Usage",
+ "benefitTypes.license_keys": "License Keys",
+ "benefitTypes.github_repository": "GitHub Repository Access",
+ "benefitTypes.discord": "Discord Invite",
+ "benefitTypes.downloadables": "File Downloads",
+ "benefitTypes.custom": "Custom",
+ "benefitTypes.meter_credit": "Meter Credits"
},
"fr": {
"checkout.footer.poweredBy": "Powered by",
@@ -217,7 +217,7 @@
"checkout.loading.processingPayment": "Processing payment",
"checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
"checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
- "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.startTrial": "Start trial",
"checkout.cta.subscribeNow": "Subscribe now",
"checkout.cta.payNow": "Pay now",
"checkout.cta.getFree": "Get for free",
@@ -235,13 +235,13 @@
"intervals.frequency.month": "monthly",
"intervals.frequency.year": "yearly",
"intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
- "benefitTypes.usage.displayName": "Usage",
- "benefitTypes.license_keys.displayName": "License Keys",
- "benefitTypes.github_repository.displayName": "GitHub Repository Access",
- "benefitTypes.discord.displayName": "Discord Invite",
- "benefitTypes.downloadables.displayName": "File Downloads",
- "benefitTypes.custom.displayName": "Custom",
- "benefitTypes.meter_credit.displayName": "Meter Credits"
+ "benefitTypes.usage": "Usage",
+ "benefitTypes.license_keys": "License Keys",
+ "benefitTypes.github_repository": "GitHub Repository Access",
+ "benefitTypes.discord": "Discord Invite",
+ "benefitTypes.downloadables": "File Downloads",
+ "benefitTypes.custom": "Custom",
+ "benefitTypes.meter_credit": "Meter Credits"
},
"sv": {
"checkout.footer.poweredBy": "Powered by",
@@ -339,7 +339,7 @@
"checkout.loading.processingPayment": "Processing payment",
"checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
"checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
- "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.startTrial": "Start trial",
"checkout.cta.subscribeNow": "Subscribe now",
"checkout.cta.payNow": "Pay now",
"checkout.cta.getFree": "Get for free",
@@ -357,13 +357,13 @@
"intervals.frequency.month": "monthly",
"intervals.frequency.year": "yearly",
"intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
- "benefitTypes.usage.displayName": "Usage",
- "benefitTypes.license_keys.displayName": "License Keys",
- "benefitTypes.github_repository.displayName": "GitHub Repository Access",
- "benefitTypes.discord.displayName": "Discord Invite",
- "benefitTypes.downloadables.displayName": "File Downloads",
- "benefitTypes.custom.displayName": "Custom",
- "benefitTypes.meter_credit.displayName": "Meter Credits"
+ "benefitTypes.usage": "Usage",
+ "benefitTypes.license_keys": "License Keys",
+ "benefitTypes.github_repository": "GitHub Repository Access",
+ "benefitTypes.discord": "Discord Invite",
+ "benefitTypes.downloadables": "File Downloads",
+ "benefitTypes.custom": "Custom",
+ "benefitTypes.meter_credit": "Meter Credits"
},
"es": {
"checkout.footer.poweredBy": "Powered by",
@@ -461,7 +461,7 @@
"checkout.loading.processingPayment": "Processing payment",
"checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
"checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
- "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.startTrial": "Start trial",
"checkout.cta.subscribeNow": "Subscribe now",
"checkout.cta.payNow": "Pay now",
"checkout.cta.getFree": "Get for free",
@@ -479,12 +479,12 @@
"intervals.frequency.month": "monthly",
"intervals.frequency.year": "yearly",
"intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
- "benefitTypes.usage.displayName": "Usage",
- "benefitTypes.license_keys.displayName": "License Keys",
- "benefitTypes.github_repository.displayName": "GitHub Repository Access",
- "benefitTypes.discord.displayName": "Discord Invite",
- "benefitTypes.downloadables.displayName": "File Downloads",
- "benefitTypes.custom.displayName": "Custom",
- "benefitTypes.meter_credit.displayName": "Meter Credits"
+ "benefitTypes.usage": "Usage",
+ "benefitTypes.license_keys": "License Keys",
+ "benefitTypes.github_repository": "GitHub Repository Access",
+ "benefitTypes.discord": "Discord Invite",
+ "benefitTypes.downloadables": "File Downloads",
+ "benefitTypes.custom": "Custom",
+ "benefitTypes.meter_credit": "Meter Credits"
}
}
diff --git a/clients/packages/i18n/src/locales/config/prompt.md b/clients/packages/i18n/src/locales/config/prompt.md
index c30cbd64c4..690735d800 100644
--- a/clients/packages/i18n/src/locales/config/prompt.md
+++ b/clients/packages/i18n/src/locales/config/prompt.md
@@ -43,6 +43,7 @@ HARD REQUIREMENTS
- HTML tags, attributes, entities
- Line breaks (\n), , ,
- Translate only the human-readable text
+ - If the value starts with a lowercase letter, also start the translated string with a lowercase letter, except when the {TARGET_LOCALE} explicitly requires an uppercase letter (like for nouns in German)
6. Do NOT translate:
- Brand names
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index ce782c7c58..c76c7e9d59 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -32,7 +32,10 @@ export const en = {
taxId: 'Tax ID',
discountCode: 'Discount code',
optional: 'Optional',
- apply: 'Apply',
+ apply: {
+ value: 'Apply',
+ _llmContext: 'Button text for applying a discount code.',
+ },
fieldRequired: 'This field is required',
},
pricing: {
@@ -40,7 +43,11 @@ export const en = {
taxableAmount: 'Taxable amount',
taxes: 'Taxes',
free: 'Free',
- payWhatYouWant: 'Pay what you want',
+ payWhatYouWant: {
+ value: 'Pay what you want',
+ _llmContext:
+ 'A pricing type where the customer can choose how much to pay.',
+ },
total: 'Total',
everyInterval: 'Every {interval}',
additionalMeteredUsage: 'Additional metered usage',
@@ -196,12 +203,12 @@ export const en = {
},
},
benefitTypes: {
- usage: { displayName: 'Usage' },
- license_keys: { displayName: 'License Keys' },
- github_repository: { displayName: 'GitHub Repository Access' },
- discord: { displayName: 'Discord Invite' },
- downloadables: { displayName: 'File Downloads' },
- custom: { displayName: 'Custom' },
- meter_credit: { displayName: 'Meter Credits' },
+ usage: 'Usage',
+ license_keys: 'License Keys',
+ github_repository: 'GitHub Repository Access',
+ discord: 'Discord Invite',
+ downloadables: 'File Downloads',
+ custom: 'Custom',
+ meter_credit: 'Meter Credits',
},
} as const
diff --git a/clients/packages/i18n/src/locales/es.ts b/clients/packages/i18n/src/locales/es.ts
index 116399d7cf..8184f3de04 100644
--- a/clients/packages/i18n/src/locales/es.ts
+++ b/clients/packages/i18n/src/locales/es.ts
@@ -3,10 +3,10 @@ export const es = {
footer: {
poweredBy: 'Desarrollado por',
merchantOfRecord:
- 'Este pedido es procesado por nuestro distribuidor en línea y comerciante oficial, Polar, quien también gestiona las consultas y devoluciones relacionadas con el pedido.',
+ 'Este pedido es procesado por nuestro revendedor en línea y Comerciante registrado, Polar, quien también gestiona las consultas y devoluciones relacionadas con el pedido.',
},
form: {
- email: 'Correo electrónico',
+ email: 'Email',
cardholderName: 'Nombre del titular de la tarjeta',
purchasingAsBusiness: 'Compro como empresa',
businessName: 'Nombre de la empresa',
@@ -35,7 +35,7 @@ export const es = {
payWhatYouWant: 'Paga lo que quieras',
total: 'Total',
everyInterval: 'Cada {interval}',
- additionalMeteredUsage: 'Uso medido adicional',
+ additionalMeteredUsage: 'Consumo adicional',
perUnit: '/ unidad',
discount: {
duration: {
@@ -105,8 +105,8 @@ export const es = {
granting: 'Concediendo beneficios...',
requestNewInvite: 'Solicitar nueva invitación',
retryIn: {
- '=1': 'Intentar de nuevo en # segundo',
- other: 'Intentar de nuevo en # segundos',
+ '=1': 'Inténtalo de nuevo en # segundo',
+ other: 'Inténtalo de nuevo en # segundos',
_mode: 'plural',
},
connectNewAccount: 'Conectar nueva cuenta',
@@ -145,21 +145,21 @@ export const es = {
},
confirmation: {
confirmPayment: 'Confirmar pago',
- processingTitle: 'Estamos procesando su pedido',
- successTitle: '¡Su pedido se realizó con éxito!',
- failedTitle: 'Ocurrió un problema al procesar su pedido',
- processingDescription: 'Espere mientras confirmamos su pago.',
- successDescription: 'Ahora es elegible para los beneficios de {product}.',
- failedDescription:
- 'Por favor, inténtelo de nuevo o póngase en contacto con soporte.',
+ processingTitle: 'Estamos procesando tu pedido',
+ successTitle: '¡Tu pedido se realizó correctamente!',
+ failedTitle: 'Ocurrió un problema al procesar tu pedido',
+ processingDescription: 'Espera mientras confirmamos tu pago.',
+ successDescription:
+ 'Ahora puedes disfrutar de los beneficios de {product}.',
+ failedDescription: 'Inténtalo de nuevo o contacta con soporte.',
},
loading: {
processingOrder: 'Procesando pedido...',
processingPayment: 'Procesando pago',
paymentSuccessful:
- '¡Pago realizado con éxito! Preparando sus productos...',
+ '¡Pago realizado con éxito! Preparando tus productos...',
confirmationTokenFailed:
- 'No se pudo crear el token de confirmación, inténtelo de nuevo más tarde.',
+ 'Error al crear el token de confirmación, inténtalo de nuevo más tarde.',
},
cta: {
startTrial: 'Iniciar prueba',
@@ -171,10 +171,10 @@ export const es = {
},
intervals: {
short: {
- day: 'día',
+ day: 'd',
week: 'sem',
- month: 'mes',
- year: 'año',
+ month: 'm',
+ year: 'a',
},
long: {
day: 'día',
@@ -183,34 +183,20 @@ export const es = {
year: 'año',
},
frequency: {
- day: 'diariamente',
- week: 'semanalmente',
- month: 'mensualmente',
- year: 'anualmente',
+ day: 'diario',
+ week: 'semanal',
+ month: 'mensual',
+ year: 'anual',
everyOrdinalInterval: 'cada {ordinal} {interval}',
},
},
benefitTypes: {
- usage: {
- displayName: 'Uso',
- },
- license_keys: {
- displayName: 'Claves de licencia',
- },
- github_repository: {
- displayName: 'Acceso a repositorio de GitHub',
- },
- discord: {
- displayName: 'Invitación a Discord',
- },
- downloadables: {
- displayName: 'Descargas de archivos',
- },
- custom: {
- displayName: 'Personalizado',
- },
- meter_credit: {
- displayName: 'Créditos de medición',
- },
+ usage: 'Uso',
+ license_keys: 'Claves de licencia',
+ github_repository: 'Acceso a repositorio de GitHub',
+ discord: 'Invitación a Discord',
+ downloadables: 'Descargas de archivos',
+ custom: 'Personalizado',
+ meter_credit: 'Créditos de consumo',
},
} as const
diff --git a/clients/packages/i18n/src/locales/fr.ts b/clients/packages/i18n/src/locales/fr.ts
index 11bb8f3127..5d2d3811f6 100644
--- a/clients/packages/i18n/src/locales/fr.ts
+++ b/clients/packages/i18n/src/locales/fr.ts
@@ -3,7 +3,7 @@ export const fr = {
footer: {
poweredBy: 'Propulsé par',
merchantOfRecord:
- 'Cette commande est traitée par notre revendeur en ligne et commerçant officiel, Polar, qui gère également les demandes et retours liés à la commande.',
+ 'Cette commande est traitée par notre revendeur en ligne et commerçant enregistré, Polar, qui gère également les demandes et les retours liés à la commande.',
},
form: {
email: 'E-mail',
@@ -21,8 +21,8 @@ export const fr = {
province: 'Province',
stateProvince: 'État / Province',
},
- taxId: "Numéro d'identification fiscale",
- discountCode: 'Code promo',
+ taxId: 'ID fiscal',
+ discountCode: 'Code de réduction',
optional: 'Facultatif',
apply: 'Appliquer',
fieldRequired: 'Ce champ est obligatoire',
@@ -35,7 +35,7 @@ export const fr = {
payWhatYouWant: 'Payez ce que vous voulez',
total: 'Total',
everyInterval: 'Tous les {interval}',
- additionalMeteredUsage: 'Utilisation mesurée supplémentaire',
+ additionalMeteredUsage: 'Consommation supplémentaire',
perUnit: '/ unité',
discount: {
duration: {
@@ -78,7 +78,7 @@ export const fr = {
},
},
pwywForm: {
- label: 'Fixez un prix juste',
+ label: 'Définissez un prix juste',
minimum: '{amount} minimum',
amountMinimum: "Le montant doit être d'au moins {min}",
amountFreeOrMinimum: "Le montant doit être de 0 $ ou d'au moins {min}",
@@ -112,12 +112,12 @@ export const fr = {
connectNewAccount: 'Connecter un nouveau compte',
requestMyInvite: 'Demander mon invitation',
github: {
- connect: 'Connecter le compte GitHub',
- goTo: 'Aller au dépôt {repository}',
+ connect: 'Connecter un compte GitHub',
+ goTo: 'Accéder à {repository}',
selectAccount: 'Sélectionner un compte GitHub',
},
discord: {
- connect: 'Connecter le compte Discord',
+ connect: 'Connecter un compte Discord',
open: 'Ouvrir Discord',
selectAccount: 'Sélectionner un compte Discord',
},
@@ -128,13 +128,13 @@ export const fr = {
'La clé de licence a été copiée dans le presse-papiers',
loading: 'Chargement...',
status: 'Statut',
- statusGranted: 'Accordée',
- statusRevoked: 'Révoquée',
- statusDisabled: 'Désactivée',
+ statusGranted: 'Accordé',
+ statusRevoked: 'Révoqué',
+ statusDisabled: 'Désactivé',
usage: 'Utilisation',
validations: 'Validations',
- validatedAt: 'Validée le',
- neverValidated: 'Jamais validée',
+ validatedAt: 'Validé le',
+ neverValidated: 'Jamais validé',
expiryDate: "Date d'expiration",
noExpiry: "Pas d'expiration",
activations: 'Activations',
@@ -147,7 +147,7 @@ export const fr = {
confirmation: {
confirmPayment: 'Confirmer le paiement',
processingTitle: 'Nous traitons votre commande',
- successTitle: 'Votre commande a été traitée avec succès !',
+ successTitle: 'Votre commande a été effectuée avec succès !',
failedTitle:
'Un problème est survenu lors du traitement de votre commande',
processingDescription:
@@ -164,7 +164,7 @@ export const fr = {
'Échec de la création du jeton de confirmation, veuillez réessayer plus tard.',
},
cta: {
- startTrial: "Démarrer l'essai",
+ startTrial: "Commencer l'essai",
subscribeNow: "S'abonner maintenant",
payNow: 'Payer maintenant',
getFree: 'Obtenir gratuitement',
@@ -185,34 +185,20 @@ export const fr = {
year: 'an',
},
frequency: {
- day: 'quotidien',
- week: 'hebdomadaire',
- month: 'mensuel',
- year: 'annuel',
+ day: 'quotidiennement',
+ week: 'hebdomadairement',
+ month: 'mensuellement',
+ year: 'annuellement',
everyOrdinalInterval: 'tous les {ordinal} {interval}',
},
},
benefitTypes: {
- usage: {
- displayName: 'Utilisation',
- },
- license_keys: {
- displayName: 'Clés de licence',
- },
- github_repository: {
- displayName: 'Accès au dépôt GitHub',
- },
- discord: {
- displayName: 'Invitation Discord',
- },
- downloadables: {
- displayName: 'Téléchargements de fichiers',
- },
- custom: {
- displayName: 'Personnalisé',
- },
- meter_credit: {
- displayName: 'Crédits de compteur',
- },
+ usage: 'Utilisation',
+ license_keys: 'Clés de licence',
+ github_repository: 'Accès au dépôt GitHub',
+ discord: 'Invitation Discord',
+ downloadables: 'Téléchargements de fichiers',
+ custom: 'Personnalisé',
+ meter_credit: 'Crédits de consommation',
},
} as const
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index 351f307002..5f71d4d5c1 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -35,7 +35,7 @@ export const nl = {
payWhatYouWant: 'Betaal wat je wilt',
total: 'Totaal',
everyInterval: 'Elke {interval}',
- additionalMeteredUsage: 'Extra gemeten gebruik',
+ additionalMeteredUsage: 'Aanvullend verbruik',
perUnit: '/ eenheid',
discount: {
duration: {
@@ -79,7 +79,7 @@ export const nl = {
},
pwywForm: {
label: 'Noem een eerlijke prijs',
- minimum: '{amount} minimaal',
+ minimum: 'Minimaal {amount}',
amountMinimum: 'Bedrag moet minimaal {min} zijn',
amountFreeOrMinimum: 'Bedrag moet $0 of minimaal {min} zijn',
},
@@ -118,14 +118,14 @@ export const nl = {
},
discord: {
connect: 'Discord-account koppelen',
- open: 'Open Discord',
+ open: 'Discord openen',
selectAccount: 'Selecteer een Discord-account',
},
licenseKey: {
copy: 'Kopiëren',
copiedToClipboard: 'Gekopieerd naar klembord',
copiedToClipboardDescription:
- 'Licentiesleutel is gekopieerd naar het klembord',
+ 'Licentiesleutel is gekopieerd naar klembord',
loading: 'Laden...',
status: 'Status',
statusGranted: 'Toegekend',
@@ -137,10 +137,10 @@ export const nl = {
neverValidated: 'Nooit gevalideerd',
expiryDate: 'Vervaldatum',
noExpiry: 'Geen vervaldatum',
- activations: 'Activaties',
+ activations: 'Activeringen',
activationDeleted: 'Activering licentiesleutel verwijderd',
activationDeletedDescription: 'Activering succesvol verwijderd',
- activationDeactivationFailed: 'Deactivering activering mislukt',
+ activationDeactivationFailed: 'Deactivering van activatie mislukt',
},
},
confirmation: {
@@ -161,13 +161,13 @@ export const nl = {
paymentSuccessful:
'Betaling succesvol! Uw producten worden klaargemaakt...',
confirmationTokenFailed:
- 'Het aanmaken van een bevestigingstoken is mislukt, probeer het later opnieuw.',
+ 'Mislukt om bevestigingstoken aan te maken, probeer het later opnieuw.',
},
cta: {
startTrial: 'Start proefperiode',
subscribeNow: 'Nu abonneren',
payNow: 'Nu betalen',
- getFree: 'Gratis krijgen',
+ getFree: 'Gratis verkrijgen',
paymentsUnavailable: 'Betalingen zijn momenteel niet beschikbaar',
},
},
@@ -193,26 +193,12 @@ export const nl = {
},
},
benefitTypes: {
- usage: {
- displayName: 'Gebruik',
- },
- license_keys: {
- displayName: 'Licentiesleutels',
- },
- github_repository: {
- displayName: 'Toegang tot GitHub-repository',
- },
- discord: {
- displayName: 'Discord-uitnodiging',
- },
- downloadables: {
- displayName: 'Bestandsdownloads',
- },
- custom: {
- displayName: 'Aangepast',
- },
- meter_credit: {
- displayName: 'Metertegoed',
- },
+ usage: 'Gebruik',
+ license_keys: 'Licentiesleutels',
+ github_repository: 'Toegang tot GitHub-repository',
+ discord: 'Discord-uitnodiging',
+ downloadables: 'Bestandsdownloads',
+ custom: 'Aangepast',
+ meter_credit: 'Metertegoed',
},
} as const
diff --git a/clients/packages/i18n/src/locales/sv.ts b/clients/packages/i18n/src/locales/sv.ts
index fe9edbe02e..8d5f6eb235 100644
--- a/clients/packages/i18n/src/locales/sv.ts
+++ b/clients/packages/i18n/src/locales/sv.ts
@@ -3,7 +3,7 @@ export const sv = {
footer: {
poweredBy: 'Drivs av',
merchantOfRecord:
- 'Denna order behandlas av vår online-återförsäljare och Merchant of Record, Polar, som också hanterar orderrelaterade frågor och returer.',
+ 'Denna beställning behandlas av vår online-återförsäljare & Merchant of Record, Polar, som också hanterar beställningsrelaterade frågor och returer.',
},
form: {
email: 'E-post',
@@ -53,10 +53,10 @@ export const sv = {
},
},
trial: {
- ends: 'Testperioden avslutas {endDate}',
+ ends: 'Testperioden slutar {endDate}',
duration: {
days: {
- '=1': '# dags testperiod',
+ '=1': '# dagars testperiod',
other: '# dagars testperiod',
_mode: 'plural',
},
@@ -81,10 +81,10 @@ export const sv = {
label: 'Ange ett rimligt pris',
minimum: 'Minst {amount}',
amountMinimum: 'Beloppet måste vara minst {min}',
- amountFreeOrMinimum: 'Beloppet måste vara 0 kr eller minst {min}',
+ amountFreeOrMinimum: 'Beloppet måste vara 0 eller minst {min}',
},
productSwitcher: {
- billedRecurring: 'Debiteras {frequency}',
+ billedRecurring: 'Faktureras {frequency}',
oneTimePurchase: 'Engångsköp',
},
card: {
@@ -139,20 +139,20 @@ export const sv = {
activations: 'Aktiveringar',
activationDeleted: 'Licensnyckelaktivering borttagen',
activationDeletedDescription: 'Aktivering borttagen',
- activationDeactivationFailed: 'Deaktivering av aktivering misslyckades',
+ activationDeactivationFailed: 'Avaktivering misslyckades',
},
},
confirmation: {
confirmPayment: 'Bekräfta betalning',
- processingTitle: 'Vi behandlar din order',
- successTitle: 'Din order lyckades!',
- failedTitle: 'Ett problem uppstod vid behandling av din order',
+ processingTitle: 'Vi behandlar din beställning',
+ successTitle: 'Din beställning lyckades!',
+ failedTitle: 'Ett problem uppstod vid behandlingen av din beställning',
processingDescription: 'Vänta medan vi bekräftar din betalning.',
successDescription: 'Du är nu berättigad till förmånerna med {product}.',
- failedDescription: 'Försök igen eller kontakta support.',
+ failedDescription: 'Försök igen eller kontakta supporten.',
},
loading: {
- processingOrder: 'Behandlar order...',
+ processingOrder: 'Behandlar beställning...',
processingPayment: 'Behandlar betalning',
paymentSuccessful: 'Betalning lyckades! Förbereder dina produkter...',
confirmationTokenFailed:
@@ -162,8 +162,8 @@ export const sv = {
startTrial: 'Starta testperiod',
subscribeNow: 'Prenumerera nu',
payNow: 'Betala nu',
- getFree: 'Få gratis',
- paymentsUnavailable: 'Betalningar är för närvarande inte tillgängliga',
+ getFree: 'Skaffa gratis',
+ paymentsUnavailable: 'Betalningar är för närvarande otillgängliga',
},
},
intervals: {
@@ -188,26 +188,12 @@ export const sv = {
},
},
benefitTypes: {
- usage: {
- displayName: 'Användning',
- },
- license_keys: {
- displayName: 'Licensnycklar',
- },
- github_repository: {
- displayName: 'Åtkomst till GitHub-repository',
- },
- discord: {
- displayName: 'Discord-inbjudan',
- },
- downloadables: {
- displayName: 'Filnedladdningar',
- },
- custom: {
- displayName: 'Anpassad',
- },
- meter_credit: {
- displayName: 'Mätarkrediter',
- },
+ usage: 'Användning',
+ license_keys: 'Licensnycklar',
+ github_repository: 'Åtkomst till GitHub-repository',
+ discord: 'Discord-inbjudan',
+ downloadables: 'Filnedladdningar',
+ custom: 'Anpassad',
+ meter_credit: 'Mätarkrediter',
},
} as const
From 43fe6ee72b46ff18afee3f9db7aec74377e17e12 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 14:17:47 +0100
Subject: [PATCH 37/69] Improve street address labels
---
.../packages/i18n/src/locales/config/.cache.json | 16 ++++++++--------
clients/packages/i18n/src/locales/en.ts | 8 ++++----
clients/packages/i18n/src/locales/es.ts | 4 ++--
clients/packages/i18n/src/locales/fr.ts | 4 ++--
clients/packages/i18n/src/locales/nl.ts | 4 ++--
clients/packages/i18n/src/locales/sv.ts | 4 ++--
6 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/clients/packages/i18n/src/locales/config/.cache.json b/clients/packages/i18n/src/locales/config/.cache.json
index ca19ace2f0..e9d46fab5f 100644
--- a/clients/packages/i18n/src/locales/config/.cache.json
+++ b/clients/packages/i18n/src/locales/config/.cache.json
@@ -7,8 +7,8 @@
"checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
"checkout.form.businessName": "Business name",
"checkout.form.billingAddress.label": "Billing address",
- "checkout.form.billingAddress.line1": "Line 1",
- "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.line1": "Street address",
+ "checkout.form.billingAddress.line2": "Apartment or unit number",
"checkout.form.billingAddress.postalCode": "Postal code",
"checkout.form.billingAddress.city": "City",
"checkout.form.billingAddress.country": "Country",
@@ -129,8 +129,8 @@
"checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
"checkout.form.businessName": "Business name",
"checkout.form.billingAddress.label": "Billing address",
- "checkout.form.billingAddress.line1": "Line 1",
- "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.line1": "Street address",
+ "checkout.form.billingAddress.line2": "Apartment or unit number",
"checkout.form.billingAddress.postalCode": "Postal code",
"checkout.form.billingAddress.city": "City",
"checkout.form.billingAddress.country": "Country",
@@ -251,8 +251,8 @@
"checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
"checkout.form.businessName": "Business name",
"checkout.form.billingAddress.label": "Billing address",
- "checkout.form.billingAddress.line1": "Line 1",
- "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.line1": "Street address",
+ "checkout.form.billingAddress.line2": "Apartment or unit number",
"checkout.form.billingAddress.postalCode": "Postal code",
"checkout.form.billingAddress.city": "City",
"checkout.form.billingAddress.country": "Country",
@@ -373,8 +373,8 @@
"checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
"checkout.form.businessName": "Business name",
"checkout.form.billingAddress.label": "Billing address",
- "checkout.form.billingAddress.line1": "Line 1",
- "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.line1": "Street address",
+ "checkout.form.billingAddress.line2": "Apartment or unit number",
"checkout.form.billingAddress.postalCode": "Postal code",
"checkout.form.billingAddress.city": "City",
"checkout.form.billingAddress.country": "Country",
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index c76c7e9d59..236d01de71 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -13,14 +13,14 @@ export const en = {
billingAddress: {
label: 'Billing address',
line1: {
- value: 'Line 1',
+ value: 'Street address',
_llmContext:
- 'The first line of the billing address, typically including street address and number.',
+ 'The first line of the billing address, typically including street address and number. Adjust to fit the most common format for the target locale.',
},
line2: {
- value: 'Line 2',
+ value: 'Apartment or unit number',
_llmContext:
- 'The second line of the billing address, typically used for apartment, suite, unit, building, floor, etc.',
+ 'The second line of the billing address, typically used for apartment, suite, unit, building, floor, etc. Adjust to fit the most common format for the target locale.',
},
postalCode: 'Postal code',
city: 'City',
diff --git a/clients/packages/i18n/src/locales/es.ts b/clients/packages/i18n/src/locales/es.ts
index 8184f3de04..e7595d26bd 100644
--- a/clients/packages/i18n/src/locales/es.ts
+++ b/clients/packages/i18n/src/locales/es.ts
@@ -12,14 +12,14 @@ export const es = {
businessName: 'Nombre de la empresa',
billingAddress: {
label: 'Dirección de facturación',
- line1: 'Línea 1',
- line2: 'Línea 2',
postalCode: 'Código postal',
city: 'Ciudad',
country: 'País',
state: 'Estado',
province: 'Provincia',
stateProvince: 'Estado / Provincia',
+ line1: 'Dirección',
+ line2: 'Apartamento, unidad, piso, etc.',
},
taxId: 'ID fiscal',
discountCode: 'Código de descuento',
diff --git a/clients/packages/i18n/src/locales/fr.ts b/clients/packages/i18n/src/locales/fr.ts
index 5d2d3811f6..409f9dcb0a 100644
--- a/clients/packages/i18n/src/locales/fr.ts
+++ b/clients/packages/i18n/src/locales/fr.ts
@@ -12,14 +12,14 @@ export const fr = {
businessName: "Nom de l'entreprise",
billingAddress: {
label: 'Adresse de facturation',
- line1: 'Ligne 1',
- line2: 'Ligne 2',
postalCode: 'Code postal',
city: 'Ville',
country: 'Pays',
state: 'État',
province: 'Province',
stateProvince: 'État / Province',
+ line1: 'Adresse',
+ line2: "Complément d'adresse",
},
taxId: 'ID fiscal',
discountCode: 'Code de réduction',
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index 5f71d4d5c1..5b497d3729 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -12,14 +12,14 @@ export const nl = {
businessName: 'Bedrijfsnaam',
billingAddress: {
label: 'Factuuradres',
- line1: 'Adresregel 1',
- line2: 'Adresregel 2',
postalCode: 'Postcode',
city: 'Plaats',
country: 'Land',
state: 'Staat',
province: 'Provincie',
stateProvince: 'Staat / Provincie',
+ line1: 'Straatnaam en huisnummer',
+ line2: 'Appartement of busnummer',
},
taxId: 'Btw-nummer',
discountCode: 'Kortingscode',
diff --git a/clients/packages/i18n/src/locales/sv.ts b/clients/packages/i18n/src/locales/sv.ts
index 8d5f6eb235..ee1b8c91b6 100644
--- a/clients/packages/i18n/src/locales/sv.ts
+++ b/clients/packages/i18n/src/locales/sv.ts
@@ -12,14 +12,14 @@ export const sv = {
businessName: 'Företagsnamn',
billingAddress: {
label: 'Faktureringsadress',
- line1: 'Adressrad 1',
- line2: 'Adressrad 2',
postalCode: 'Postnummer',
city: 'Ort',
country: 'Land',
state: 'Delstat',
province: 'Provins',
stateProvince: 'Delstat / Provins',
+ line1: 'Gatuadress',
+ line2: 'Lägenhetsnummer',
},
taxId: 'Momsregistreringsnummer',
discountCode: 'Rabattkod',
From 757abb4f3d6915bef4bd66d3b29b2392650b3a1e Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 14:24:12 +0100
Subject: [PATCH 38/69] Update some Swedish
---
clients/packages/i18n/src/locales/sv.ts | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/clients/packages/i18n/src/locales/sv.ts b/clients/packages/i18n/src/locales/sv.ts
index ee1b8c91b6..a8842ceca3 100644
--- a/clients/packages/i18n/src/locales/sv.ts
+++ b/clients/packages/i18n/src/locales/sv.ts
@@ -6,7 +6,7 @@ export const sv = {
'Denna beställning behandlas av vår online-återförsäljare & Merchant of Record, Polar, som också hanterar beställningsrelaterade frågor och returer.',
},
form: {
- email: 'E-post',
+ email: 'Email',
cardholderName: 'Kortinnehavarens namn',
purchasingAsBusiness: 'Jag köper som företag',
businessName: 'Företagsnamn',
@@ -16,15 +16,15 @@ export const sv = {
city: 'Ort',
country: 'Land',
state: 'Delstat',
- province: 'Provins',
- stateProvince: 'Delstat / Provins',
+ province: 'Län',
+ stateProvince: 'Delstat / Län',
line1: 'Gatuadress',
line2: 'Lägenhetsnummer',
},
taxId: 'Momsregistreringsnummer',
discountCode: 'Rabattkod',
optional: 'Valfritt',
- apply: 'Tillämpa',
+ apply: 'Lägg till',
fieldRequired: 'Detta fält är obligatoriskt',
},
pricing: {
@@ -78,7 +78,7 @@ export const sv = {
},
},
pwywForm: {
- label: 'Ange ett rimligt pris',
+ label: 'Ange pris',
minimum: 'Minst {amount}',
amountMinimum: 'Beloppet måste vara minst {min}',
amountFreeOrMinimum: 'Beloppet måste vara 0 eller minst {min}',
@@ -145,7 +145,7 @@ export const sv = {
confirmation: {
confirmPayment: 'Bekräfta betalning',
processingTitle: 'Vi behandlar din beställning',
- successTitle: 'Din beställning lyckades!',
+ successTitle: 'Din order är klar!',
failedTitle: 'Ett problem uppstod vid behandlingen av din beställning',
processingDescription: 'Vänta medan vi bekräftar din betalning.',
successDescription: 'Du är nu berättigad till förmånerna med {product}.',
From bd45a15ac72364809a9afd55f19875d8c13f82ce Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 20:06:15 +0100
Subject: [PATCH 39/69] Update Swedish feedback
---
clients/packages/i18n/src/locales/sv.ts | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/clients/packages/i18n/src/locales/sv.ts b/clients/packages/i18n/src/locales/sv.ts
index a8842ceca3..117103bd22 100644
--- a/clients/packages/i18n/src/locales/sv.ts
+++ b/clients/packages/i18n/src/locales/sv.ts
@@ -7,13 +7,13 @@ export const sv = {
},
form: {
email: 'Email',
- cardholderName: 'Kortinnehavarens namn',
+ cardholderName: 'Kortinnehavare',
purchasingAsBusiness: 'Jag köper som företag',
businessName: 'Företagsnamn',
billingAddress: {
label: 'Faktureringsadress',
postalCode: 'Postnummer',
- city: 'Ort',
+ city: 'Stad',
country: 'Land',
state: 'Delstat',
province: 'Län',
@@ -123,8 +123,8 @@ export const sv = {
},
licenseKey: {
copy: 'Kopiera',
- copiedToClipboard: 'Kopierat till urklipp',
- copiedToClipboardDescription: 'Licensnyckeln kopierades till urklipp',
+ copiedToClipboard: 'Kopierat',
+ copiedToClipboardDescription: 'Licensnyckeln är kopierad',
loading: 'Laddar...',
status: 'Status',
statusGranted: 'Tilldelad',
From deafce879ea8c0f23db699ce2532050a7aa40ab9 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 20:09:10 +0100
Subject: [PATCH 40/69] Actually import locales
---
clients/packages/i18n/src/index.ts | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index b783986651..d74441688d 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -100,7 +100,10 @@ export function isSupportedLocale(locale: string): locale is SupportedLocale {
}
import { en } from './locales/en'
+import { es } from './locales/es'
+import { fr } from './locales/fr'
import { nl } from './locales/nl'
+import { sv } from './locales/sv'
export type Translations = typeof en
@@ -209,6 +212,9 @@ type TranslateFn = (
const translations: Record> = {
en,
nl,
+ sv,
+ fr,
+ es,
}
export function getTranslations(
From de44fac9dabe59a7b4ba579d91876f61d621177a Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 20:27:03 +0100
Subject: [PATCH 41/69] Fix types
---
clients/packages/i18n/scripts/translate.ts | 15 ++++++++++-----
clients/packages/i18n/src/config.ts | 1 +
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
index a50e8df653..f9a44dba0c 100644
--- a/clients/packages/i18n/scripts/translate.ts
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -22,7 +22,12 @@ import {
unflattenKeys,
} from './utils'
-import { LOCALE_NAMES, SUPPORTED_LOCALES, SupportedLocale } from '../src/config'
+import {
+ DEFAULT_LOCALE,
+ LOCALE_NAMES,
+ SUPPORTED_LOCALES,
+ type TranslatedLocale,
+} from '../src/config'
dotenv.config({ path: path.join(import.meta.dirname, '../.env.local') })
dotenv.config({ path: path.join(import.meta.dirname, '../.env') })
@@ -34,7 +39,7 @@ const LOCKS_FILE = path.join(CONFIG_DIR, 'locks.json')
const CACHE_FILE = path.join(CONFIG_DIR, '.cache.json')
async function callLLM(
- targetLocale: string,
+ targetLocale: TranslatedLocale,
sourceStrings: Record,
prompt: string,
): Promise> {
@@ -149,7 +154,7 @@ async function translate(
en: NestedObject,
sourceKeys: Map,
pluralPaths: Set,
- targetLocales: string[],
+ targetLocales: TranslatedLocale[],
locks: Record,
prompt: string,
cache: TranslationCache,
@@ -257,7 +262,7 @@ async function translate(
function validate(
sourceKeys: Map,
- targetLocales: string[],
+ targetLocales: TranslatedLocale[],
localeData: Map,
): boolean {
const errors: string[] = []
@@ -363,7 +368,7 @@ async function main() {
const sourceKeys = flattenKeys(en)
const pluralPaths = findPluralPaths(en as Record)
const targetLocales = SUPPORTED_LOCALES.filter(
- (l): l is Exclude => l !== 'en',
+ (l): l is TranslatedLocale => l !== DEFAULT_LOCALE,
)
await translate(
diff --git a/clients/packages/i18n/src/config.ts b/clients/packages/i18n/src/config.ts
index 800d2a6dcb..772709386a 100644
--- a/clients/packages/i18n/src/config.ts
+++ b/clients/packages/i18n/src/config.ts
@@ -1,6 +1,7 @@
export const SUPPORTED_LOCALES = ['en', 'nl', 'fr', 'sv', 'es'] as const
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
export const DEFAULT_LOCALE: SupportedLocale = 'en'
+export type TranslatedLocale = Exclude
export const LOCALE_NAMES: Record = {
en: 'English',
From be6592cb449398b468a92832d05aabdce22f4d3b Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 20:38:44 +0100
Subject: [PATCH 42/69] Fix `.env` loading on CI/CD too
---
clients/packages/i18n/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/clients/packages/i18n/package.json b/clients/packages/i18n/package.json
index ee6c2ffe3f..b99e6398cf 100644
--- a/clients/packages/i18n/package.json
+++ b/clients/packages/i18n/package.json
@@ -12,7 +12,7 @@
"directory": "clients/packages/i18n"
},
"scripts": {
- "translate": "tsx --env-file=.env.local scripts/translate.ts",
+ "translate": "tsx scripts/translate.ts",
"validate": "tsx scripts/validate.ts",
"lint": "prettier -c .",
"typecheck": "tsc --noEmit",
From 5759c5a5332f7c540e0789f1cf5530c321ef79c3 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 22:08:53 +0100
Subject: [PATCH 43/69] Revert NL changes to reviewed file from main branch
---
clients/packages/i18n/src/locales/nl.ts | 103 ++++++++++--------------
1 file changed, 43 insertions(+), 60 deletions(-)
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index 351f307002..d8bdc825cf 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -3,19 +3,19 @@ export const nl = {
footer: {
poweredBy: 'Mogelijk gemaakt door',
merchantOfRecord:
- 'Deze bestelling wordt verwerkt door onze online wederverkoper & Merchant of Record, Polar, die ook vragen over bestellingen en retouren afhandelt.',
+ 'Deze bestelling wordt verwerkt door onze online reseller & Merchant of Record, Polar, die ook vragen over bestellingen en terugbetalingen afhandelt.',
},
form: {
- email: 'E-mailadres',
+ email: 'E-mail',
cardholderName: 'Naam kaarthouder',
purchasingAsBusiness: 'Ik koop als bedrijf',
businessName: 'Bedrijfsnaam',
billingAddress: {
label: 'Factuuradres',
- line1: 'Adresregel 1',
- line2: 'Adresregel 2',
+ line1: 'Regel 1',
+ line2: 'Regel 2',
postalCode: 'Postcode',
- city: 'Plaats',
+ city: 'Stad',
country: 'Land',
state: 'Staat',
province: 'Provincie',
@@ -30,24 +30,24 @@ export const nl = {
pricing: {
subtotal: 'Subtotaal',
taxableAmount: 'Belastbaar bedrag',
- taxes: 'Btw',
+ taxes: 'BTW',
free: 'Gratis',
payWhatYouWant: 'Betaal wat je wilt',
total: 'Totaal',
everyInterval: 'Elke {interval}',
- additionalMeteredUsage: 'Extra gemeten gebruik',
+ additionalMeteredUsage: 'Extra verbruikskosten',
perUnit: '/ eenheid',
discount: {
duration: {
months: {
+ _mode: 'plural',
'=1': 'voor de eerste maand',
other: 'voor de eerste # maanden',
- _mode: 'plural',
},
years: {
- '=1': 'voor het eerste jaar',
- other: 'voor de eerste # jaren',
_mode: 'plural',
+ '=1': 'voor het eerste jaar',
+ other: 'voor de eerste # jaar',
},
},
},
@@ -56,35 +56,35 @@ export const nl = {
ends: 'Proefperiode eindigt op {endDate}',
duration: {
days: {
+ _mode: 'plural',
'=1': '# dag proefperiode',
other: '# dagen proefperiode',
- _mode: 'plural',
},
weeks: {
+ _mode: 'plural',
'=1': '# week proefperiode',
other: '# weken proefperiode',
- _mode: 'plural',
},
months: {
+ _mode: 'plural',
'=1': '# maand proefperiode',
other: '# maanden proefperiode',
- _mode: 'plural',
},
years: {
- '=1': '# jaar proefperiode',
- other: '# jaren proefperiode',
_mode: 'plural',
+ '=1': '# jaar proefperiode',
+ other: '# jaar proefperiode',
},
},
},
pwywForm: {
label: 'Noem een eerlijke prijs',
- minimum: '{amount} minimaal',
+ minimum: '{amount} minimum',
amountMinimum: 'Bedrag moet minimaal {min} zijn',
amountFreeOrMinimum: 'Bedrag moet $0 of minimaal {min} zijn',
},
productSwitcher: {
- billedRecurring: 'Wordt {frequency} gefactureerd',
+ billedRecurring: '{frequency} gefactureerd',
oneTimePurchase: 'Eenmalige aankoop',
},
card: {
@@ -92,22 +92,22 @@ export const nl = {
},
benefits: {
moreBenefits: {
+ _mode: 'plural',
'=1': '# extra voordeel',
other: '# extra voordelen',
- _mode: 'plural',
},
showMoreBenefits: {
+ _mode: 'plural',
'=1': 'Toon # extra voordeel',
other: 'Toon # extra voordelen',
- _mode: 'plural',
},
- showLess: 'Minder tonen',
- granting: 'Voordelen toekennen...',
+ showLess: 'Toon minder',
+ granting: 'Voordelen worden toegekend...',
requestNewInvite: 'Nieuwe uitnodiging aanvragen',
retryIn: {
+ _mode: 'plural',
'=1': 'Probeer opnieuw over # seconde',
other: 'Probeer opnieuw over # seconden',
- _mode: 'plural',
},
connectNewAccount: 'Nieuw account koppelen',
requestMyInvite: 'Mijn uitnodiging aanvragen',
@@ -138,42 +138,39 @@ export const nl = {
expiryDate: 'Vervaldatum',
noExpiry: 'Geen vervaldatum',
activations: 'Activaties',
- activationDeleted: 'Activering licentiesleutel verwijderd',
- activationDeletedDescription: 'Activering succesvol verwijderd',
- activationDeactivationFailed: 'Deactivering activering mislukt',
+ activationDeleted: 'Licentiesleutelactivatie verwijderd',
+ activationDeletedDescription: 'Activatie succesvol verwijderd',
+ activationDeactivationFailed: 'Deactivatie mislukt',
},
},
confirmation: {
confirmPayment: 'Betaling bevestigen',
- processingTitle: 'We verwerken uw bestelling',
- successTitle: 'Uw bestelling is succesvol!',
+ processingTitle: 'We verwerken je bestelling',
+ successTitle: 'Je bestelling is geslaagd!',
failedTitle:
- 'Er is een probleem opgetreden bij het verwerken van uw bestelling',
- processingDescription: 'Even geduld terwijl we uw betaling bevestigen.',
- successDescription:
- 'U komt nu in aanmerking voor de voordelen van {product}.',
- failedDescription:
- 'Probeer het opnieuw of neem contact op met de ondersteuning.',
+ 'Er is een probleem opgetreden bij het verwerken van je bestelling',
+ processingDescription: 'Even geduld terwijl we je betaling bevestigen.',
+ successDescription: 'Je hebt nu recht op de voordelen van {product}.',
+ failedDescription: 'Probeer het opnieuw of neem contact op met support.',
},
loading: {
processingOrder: 'Bestelling verwerken...',
processingPayment: 'Betaling verwerken',
- paymentSuccessful:
- 'Betaling succesvol! Uw producten worden klaargemaakt...',
+ paymentSuccessful: 'Betaling geslaagd! Je producten worden klaargezet...',
confirmationTokenFailed:
- 'Het aanmaken van een bevestigingstoken is mislukt, probeer het later opnieuw.',
+ 'Bevestigingstoken aanmaken mislukt, probeer het later opnieuw.',
},
cta: {
- startTrial: 'Start proefperiode',
+ startTrial: 'Proefperiode starten',
subscribeNow: 'Nu abonneren',
payNow: 'Nu betalen',
- getFree: 'Gratis krijgen',
+ getFree: 'Gratis verkrijgen',
paymentsUnavailable: 'Betalingen zijn momenteel niet beschikbaar',
},
},
intervals: {
short: {
- day: 'dg',
+ day: 'dag',
week: 'wk',
month: 'mnd',
year: 'jr',
@@ -193,26 +190,12 @@ export const nl = {
},
},
benefitTypes: {
- usage: {
- displayName: 'Gebruik',
- },
- license_keys: {
- displayName: 'Licentiesleutels',
- },
- github_repository: {
- displayName: 'Toegang tot GitHub-repository',
- },
- discord: {
- displayName: 'Discord-uitnodiging',
- },
- downloadables: {
- displayName: 'Bestandsdownloads',
- },
- custom: {
- displayName: 'Aangepast',
- },
- meter_credit: {
- displayName: 'Metertegoed',
- },
+ usage: { displayName: 'Gebruik' },
+ license_keys: { displayName: 'Licentiesleutels' },
+ github_repository: { displayName: 'Toegang tot GitHub-repository' },
+ discord: { displayName: 'Discord-uitnodiging' },
+ downloadables: { displayName: 'Downloads' },
+ custom: { displayName: 'Custom' },
+ meter_credit: { displayName: 'Verbruikstegoed' },
},
} as const
From b72b7d397e6b7919ba1c56e05d969a0fb0bc6691 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 11:40:30 +0100
Subject: [PATCH 44/69] Import i18n automations
Co-authored-by: sebastianekstrom
---
.github/workflows/i18n_translate.yml | 55 ++
clients/packages/i18n/.env.template | 4 +
clients/packages/i18n/.prettierignore | 1 +
clients/packages/i18n/package.json | 13 +-
clients/packages/i18n/scripts/logger.ts | 119 ++++
clients/packages/i18n/scripts/translate.ts | 406 ++++++++++++
clients/packages/i18n/scripts/utils.test.ts | 624 ++++++++++++++++++
clients/packages/i18n/scripts/utils.ts | 326 +++++++++
clients/packages/i18n/scripts/validate.ts | 136 ++++
clients/packages/i18n/src/config.ts | 10 +
clients/packages/i18n/src/index.ts | 8 +-
.../i18n/src/locales/config/.cache.json | 124 ++++
.../i18n/src/locales/config/locks.json | 3 +
.../i18n/src/locales/config/prompt.md | 197 ++++++
clients/packages/i18n/src/locales/en.ts | 15 -
clients/packages/i18n/src/locales/nl.ts | 116 ++--
clients/packages/i18n/vitest.config.ts | 8 +
clients/pnpm-lock.yaml | 92 ++-
18 files changed, 2178 insertions(+), 79 deletions(-)
create mode 100644 .github/workflows/i18n_translate.yml
create mode 100644 clients/packages/i18n/.env.template
create mode 100644 clients/packages/i18n/scripts/logger.ts
create mode 100644 clients/packages/i18n/scripts/translate.ts
create mode 100644 clients/packages/i18n/scripts/utils.test.ts
create mode 100644 clients/packages/i18n/scripts/utils.ts
create mode 100644 clients/packages/i18n/scripts/validate.ts
create mode 100644 clients/packages/i18n/src/config.ts
create mode 100644 clients/packages/i18n/src/locales/config/.cache.json
create mode 100644 clients/packages/i18n/src/locales/config/locks.json
create mode 100644 clients/packages/i18n/src/locales/config/prompt.md
create mode 100644 clients/packages/i18n/vitest.config.ts
diff --git a/.github/workflows/i18n_translate.yml b/.github/workflows/i18n_translate.yml
new file mode 100644
index 0000000000..53eaed75a5
--- /dev/null
+++ b/.github/workflows/i18n_translate.yml
@@ -0,0 +1,55 @@
+name: Generate Translations
+
+on:
+ pull_request:
+ paths:
+ - 'clients/packages/i18n/src/locales/en.ts'
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ translate:
+ runs-on: ubuntu-latest
+
+ defaults:
+ run:
+ working-directory: ${{ github.workspace }}/clients
+
+ permissions:
+ contents: write
+
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v6
+ with:
+ ref: ${{ github.head_ref }}
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - uses: pnpm/action-setup@v4
+ with:
+ package_json_file: clients/package.json
+
+ - name: Setup Node.js environment
+ uses: actions/setup-node@v6
+ with:
+ node-version-file: clients/.node-version
+ cache: 'pnpm'
+ cache-dependency-path: 'clients/pnpm-lock.yaml'
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Generate translations
+ env:
+ GOOGLE_GENERATIVE_AI_API_KEY: ${{ secrets.GOOGLE_GENERATIVE_AI_API_KEY }}
+ run: pnpm --filter @polar-sh/i18n translate
+
+ - name: Commit translations
+ run: |
+ git config user.name "github-actions[bot]"
+ git config user.email "github-actions[bot]@users.noreply.github.com"
+ git add packages/i18n/
+ git diff --staged --quiet || git commit -m "chore(i18n): update translations"
+ git push
diff --git a/clients/packages/i18n/.env.template b/clients/packages/i18n/.env.template
new file mode 100644
index 0000000000..b25a71076c
--- /dev/null
+++ b/clients/packages/i18n/.env.template
@@ -0,0 +1,4 @@
+# Copy this file to .env or .env.local and replace the values
+# cp .env.template .env.local
+
+GOOGLE_GENERATIVE_AI_API_KEY="*** REPLACE ***"
diff --git a/clients/packages/i18n/.prettierignore b/clients/packages/i18n/.prettierignore
index 849ddff3b7..b1448a4a4c 100644
--- a/clients/packages/i18n/.prettierignore
+++ b/clients/packages/i18n/.prettierignore
@@ -1 +1,2 @@
dist/
+src/locales/config/.cache.json
diff --git a/clients/packages/i18n/package.json b/clients/packages/i18n/package.json
index 2aef39c258..ee6c2ffe3f 100644
--- a/clients/packages/i18n/package.json
+++ b/clients/packages/i18n/package.json
@@ -12,9 +12,13 @@
"directory": "clients/packages/i18n"
},
"scripts": {
+ "translate": "tsx --env-file=.env.local scripts/translate.ts",
+ "validate": "tsx scripts/validate.ts",
"lint": "prettier -c .",
"typecheck": "tsc --noEmit",
- "build": "rm -rf dist && tsup"
+ "build": "rm -rf dist && tsup",
+ "test": "vitest run",
+ "test:watch": "vitest"
},
"exports": {
".": {
@@ -27,12 +31,17 @@
"dist"
],
"devDependencies": {
+ "@ai-sdk/google": "^2.0.46",
"@polar-sh/typescript-config": "workspace:*",
"@types/react": "^19.2.13",
+ "ai": "^5.0.113",
+ "dotenv": "^16.4.5",
"prettier": "^3.7.4",
"react": "^19.2.4",
"tsup": "^8.5.1",
- "typescript": "latest"
+ "tsx": "^4.19.0",
+ "typescript": "latest",
+ "vitest": "^3.2.4"
},
"peerDependencies": {
"react": "^19.2.4"
diff --git a/clients/packages/i18n/scripts/logger.ts b/clients/packages/i18n/scripts/logger.ts
new file mode 100644
index 0000000000..3159b1e3f4
--- /dev/null
+++ b/clients/packages/i18n/scripts/logger.ts
@@ -0,0 +1,119 @@
+/**
+ * Professional CLI logger with colors and formatting
+ */
+
+const colors = {
+ reset: '\x1b[0m',
+ bold: '\x1b[1m',
+ dim: '\x1b[2m',
+ green: '\x1b[32m',
+ yellow: '\x1b[33m',
+ blue: '\x1b[34m',
+ magenta: '\x1b[35m',
+ cyan: '\x1b[36m',
+ gray: '\x1b[90m',
+}
+
+const symbols = {
+ check: '✓',
+ cross: '✗',
+ arrow: '→',
+ bullet: '•',
+ info: 'ℹ',
+ warning: '⚠',
+}
+
+export function bold(text: string): string {
+ return `${colors.bold}${text}${colors.reset}`
+}
+
+export function dim(text: string): string {
+ return `${colors.dim}${text}${colors.reset}`
+}
+
+export function green(text: string): string {
+ return `${colors.green}${text}${colors.reset}`
+}
+
+export function yellow(text: string): string {
+ return `${colors.yellow}${text}${colors.reset}`
+}
+
+export function blue(text: string): string {
+ return `${colors.blue}${text}${colors.reset}`
+}
+
+export function cyan(text: string): string {
+ return `${colors.cyan}${text}${colors.reset}`
+}
+
+export function gray(text: string): string {
+ return `${colors.gray}${text}${colors.reset}`
+}
+
+export function header(title: string): void {
+ console.log()
+ console.log(bold(blue(` ${title}`)))
+ console.log(gray(' ' + '─'.repeat(40)))
+}
+
+export function success(message: string): void {
+ console.log(` ${green(symbols.check)} ${message}`)
+}
+
+export function warning(message: string): void {
+ console.log(` ${yellow(symbols.warning)} ${message}`)
+}
+
+export function error(message: string): void {
+ console.log(
+ ` ${colors.bold}\x1b[31m${symbols.cross}${colors.reset} ${message}`,
+ )
+}
+
+export function info(message: string): void {
+ console.log(` ${cyan(symbols.info)} ${message}`)
+}
+
+export function item(message: string): void {
+ console.log(` ${gray(symbols.bullet)} ${message}`)
+}
+
+export function step(message: string): void {
+ console.log(` ${gray(symbols.arrow)} ${message}`)
+}
+
+export function blank(): void {
+ console.log()
+}
+
+export function summary(stats: {
+ translated: number
+ skipped: number
+ removed: number
+}): void {
+ console.log()
+ console.log(gray(' ' + '─'.repeat(50)))
+ console.log(bold(' Summary'))
+ console.log(` Translated: ${green(stats.translated.toString())} keys`)
+ console.log(
+ ` Skipped: ${gray(stats.skipped.toString())} keys ${dim('(unchanged)')}`,
+ )
+ if (stats.removed > 0) {
+ console.log(
+ ` Removed: ${yellow(stats.removed.toString())} keys ${dim('(orphaned)')}`,
+ )
+ }
+ console.log()
+}
+
+export function localeHeader(locale: string, localeName: string): void {
+ console.log()
+ console.log(` ${bold(locale.toUpperCase())} ${dim(`(${localeName})`)}`)
+}
+
+export function done(message: string): void {
+ console.log()
+ console.log(` ${green(symbols.check)} ${bold(message)}`)
+ console.log()
+}
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
new file mode 100644
index 0000000000..4720862797
--- /dev/null
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -0,0 +1,406 @@
+import { google } from '@ai-sdk/google'
+import { generateText } from 'ai'
+import dotenv from 'dotenv'
+import { execSync } from 'node:child_process'
+import fs from 'node:fs'
+import path from 'node:path'
+import * as log from './logger'
+import {
+ type EntryValue,
+ type NestedObject,
+ type TranslationCache,
+ arraysEqual,
+ extractPlaceholders,
+ findChangedKeys,
+ findOrphanedKeys,
+ findPluralPaths,
+ flattenKeys,
+ flattenKeysToStrings,
+ getStringValue,
+ normalizeResponse,
+ prepareForLLM,
+ unflattenKeys,
+} from './utils'
+
+import { LOCALE_NAMES, SUPPORTED_LOCALES } from '../src/config'
+
+dotenv.config({ path: path.join(import.meta.dirname, '../.env.local') })
+dotenv.config({ path: path.join(import.meta.dirname, '../.env') })
+
+const LOCALES_DIR = path.join(import.meta.dirname, '../src/locales')
+const CONFIG_DIR = path.join(LOCALES_DIR, 'config')
+const PROMPT_FILE = path.join(CONFIG_DIR, 'prompt.md')
+const LOCKS_FILE = path.join(CONFIG_DIR, 'locks.json')
+const CACHE_FILE = path.join(CONFIG_DIR, '.cache.json')
+
+async function callLLM(
+ targetLocale: string,
+ sourceStrings: Record,
+ prompt: string,
+): Promise> {
+ const localeName = LOCALE_NAMES[targetLocale] || targetLocale
+
+ const systemPromptPart = prompt
+ .split('USER')[0]
+ .replace('SYSTEM', '')
+ .replace(/{TARGET_LOCALE}/g, localeName)
+ .replace('{EN_JSON}', JSON.stringify(sourceStrings, null, 2))
+ .trim()
+
+ const userPromptPart = prompt
+ .split('USER')[1]
+ .replace(/{TARGET_LOCALE}/g, localeName)
+ .replace('{EN_JSON}', JSON.stringify(sourceStrings, null, 2))
+ .trim()
+
+ log.step(`Calling Gemini 2.5 Flash...`)
+
+ const { text } = await generateText({
+ model: google('gemini-2.5-flash'),
+ system: systemPromptPart,
+ prompt: userPromptPart,
+ temperature: 0.3,
+ })
+
+ // Strip markdown code fences if present
+ const cleaned = text
+ .replace(/^```(?:json)?\s*\n?/gm, '')
+ .replace(/\n?```\s*$/gm, '')
+ .trim()
+
+ try {
+ const parsed = JSON.parse(cleaned) as Record
+ return normalizeResponse(parsed)
+ } catch {
+ throw new Error(
+ `Invalid JSON response from Gemini for ${targetLocale}: ${cleaned}`,
+ )
+ }
+}
+
+function loadCache(): TranslationCache {
+ if (fs.existsSync(CACHE_FILE)) {
+ return JSON.parse(fs.readFileSync(CACHE_FILE, 'utf-8')) as TranslationCache
+ }
+ return {}
+}
+
+function saveCache(cache: TranslationCache): void {
+ fs.writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2) + '\n')
+}
+
+function writeLocaleFile(locale: string, obj: NestedObject): void {
+ const filePath = path.join(LOCALES_DIR, `${locale}.ts`)
+ const content = `export const ${locale} = ${JSON.stringify(obj, null, 2)} as const\n`
+ fs.writeFileSync(filePath, content)
+
+ // Run prettier on the generated file
+ try {
+ execSync(`npx prettier --write "${filePath}"`, {
+ stdio: 'pipe',
+ cwd: path.join(import.meta.dirname, '..'),
+ })
+ } catch {
+ log.warning(`Prettier formatting failed for ${locale}.ts`)
+ }
+}
+
+async function loadExistingLocale(
+ locale: string,
+): Promise {
+ const filePath = path.join(LOCALES_DIR, `${locale}.ts`)
+ if (!fs.existsSync(filePath)) return null
+
+ try {
+ const mod = await import(`${filePath}?t=${Date.now()}`)
+ return (mod[locale] ?? null) as NestedObject | null
+ } catch {
+ log.warning(`Could not import ${locale}.ts`)
+ return null
+ }
+}
+
+/**
+ * Seed cache from current source values for locales that already have translations.
+ * This prevents re-translating everything on first run when an existing locale file exists.
+ */
+function seedCacheForLocale(
+ locale: string,
+ sourceKeys: Map,
+ existing: NestedObject,
+ cache: TranslationCache,
+): void {
+ const existingKeys = flattenKeys(existing)
+ const localeCache: Record = {}
+
+ for (const [key, value] of sourceKeys) {
+ if (existingKeys.has(key)) {
+ localeCache[key] = getStringValue(value)
+ }
+ }
+
+ if (Object.keys(localeCache).length > 0) {
+ cache[locale] = localeCache
+ log.info(`Seeded cache with ${Object.keys(localeCache).length} keys`)
+ }
+}
+
+async function translate(
+ en: NestedObject,
+ sourceKeys: Map,
+ pluralPaths: Set,
+ targetLocales: string[],
+ locks: Record,
+ prompt: string,
+ cache: TranslationCache,
+) {
+ log.header('Polar i18n')
+ log.info(`Source: ${log.bold(sourceKeys.size.toString())} keys in en.ts`)
+ log.info(`Targets: ${targetLocales.map((l) => log.cyan(l)).join(', ')}`)
+
+ const stats = { translated: 0, skipped: 0, removed: 0 }
+
+ for (const locale of targetLocales) {
+ const localeName = LOCALE_NAMES[locale] || locale
+ log.localeHeader(locale, localeName)
+
+ const lockedKeys = locks[locale] ?? []
+ let localeCache = cache[locale] ?? {}
+
+ const existing = (await loadExistingLocale(locale)) ?? ({} as NestedObject)
+
+ // Seed cache on first run if locale file exists but cache is empty
+ if (
+ Object.keys(localeCache).length === 0 &&
+ Object.keys(existing).length > 0
+ ) {
+ seedCacheForLocale(locale, sourceKeys, existing, cache)
+ localeCache = cache[locale] ?? {}
+ }
+
+ const changedKeys = findChangedKeys(
+ sourceKeys,
+ localeCache,
+ existing,
+ ).filter((key) => !lockedKeys.includes(key))
+
+ const orphanedKeys = findOrphanedKeys(sourceKeys, existing)
+
+ if (changedKeys.length === 0 && orphanedKeys.length === 0) {
+ log.success('Up to date')
+ stats.skipped += sourceKeys.size
+ continue
+ }
+
+ if (changedKeys.length > 0) {
+ log.item(
+ `${changedKeys.length} key${changedKeys.length > 1 ? 's' : ''} to translate`,
+ )
+ }
+ if (orphanedKeys.length > 0) {
+ log.item(
+ `${orphanedKeys.length} orphaned key${orphanedKeys.length > 1 ? 's' : ''} to remove`,
+ )
+ }
+
+ let translations: Record = {}
+ if (changedKeys.length > 0) {
+ const toTranslate = prepareForLLM(sourceKeys, changedKeys)
+ translations = await callLLM(locale, toTranslate, prompt)
+ }
+
+ const existingFlat = flattenKeys(existing)
+ const updatedFlat = new Map()
+
+ for (const [key, value] of existingFlat) {
+ if (!orphanedKeys.includes(key) && !changedKeys.includes(key)) {
+ updatedFlat.set(key, getStringValue(value))
+ }
+ }
+
+ let translatedCount = 0
+ for (const key of changedKeys) {
+ if (translations[key]) {
+ updatedFlat.set(key, translations[key])
+ localeCache[key] = getStringValue(sourceKeys.get(key) as EntryValue)
+ translatedCount++
+ log.item(`${log.dim(key)}`)
+ log.item(
+ ` ${log.gray('en:')} ${getStringValue(sourceKeys.get(key) as EntryValue)}`,
+ )
+ log.item(` ${log.cyan(locale + ':')} ${translations[key]}`)
+ } else {
+ log.warning(`No translation received for "${key}"`)
+ }
+ }
+
+ for (const key of orphanedKeys) {
+ delete localeCache[key]
+ }
+
+ cache[locale] = localeCache
+
+ const updated = unflattenKeys(updatedFlat, pluralPaths)
+ writeLocaleFile(locale, updated)
+
+ stats.translated += translatedCount
+ stats.removed += orphanedKeys.length
+ stats.skipped += sourceKeys.size - changedKeys.length
+
+ log.success(`Written to ${locale}.ts`)
+ }
+
+ saveCache(cache)
+
+ log.summary(stats)
+}
+
+function validate(
+ sourceKeys: Map,
+ targetLocales: string[],
+ localeData: Map,
+): boolean {
+ const errors: string[] = []
+
+ log.blank()
+ log.step('Validating translations...')
+
+ for (const locale of targetLocales) {
+ const translation = localeData.get(locale)
+
+ if (!translation) {
+ errors.push(`${locale}: File does not exist`)
+ log.error(`${locale}: File does not exist`)
+ continue
+ }
+
+ const translationKeys = flattenKeysToStrings(translation)
+
+ const missingKeys: string[] = []
+ for (const key of sourceKeys.keys()) {
+ if (!translationKeys.has(key)) {
+ missingKeys.push(key)
+ }
+ }
+
+ if (missingKeys.length > 0) {
+ errors.push(`${locale}: Missing ${missingKeys.length} keys`)
+ log.warning(
+ `${locale}: Missing ${missingKeys.length} key${missingKeys.length > 1 ? 's' : ''}`,
+ )
+ for (const key of missingKeys) {
+ log.item(log.dim(key))
+ }
+ }
+
+ const extraKeys: string[] = []
+ for (const key of translationKeys.keys()) {
+ if (!sourceKeys.has(key)) {
+ extraKeys.push(key)
+ }
+ }
+
+ if (extraKeys.length > 0) {
+ errors.push(`${locale}: ${extraKeys.length} extra keys`)
+ log.warning(
+ `${locale}: ${extraKeys.length} extra key${extraKeys.length > 1 ? 's' : ''}`,
+ )
+ for (const key of extraKeys) {
+ log.item(log.dim(key))
+ }
+ }
+
+ const sourceStrings = flattenKeysToStrings(
+ localeData.get('en') as NestedObject,
+ )
+ const placeholderErrors: string[] = []
+ for (const [key, sourceValue] of sourceStrings) {
+ const translationValue = translationKeys.get(key)
+ if (!translationValue) continue
+
+ const sourcePlaceholders = extractPlaceholders(sourceValue)
+ const translationPlaceholders = extractPlaceholders(translationValue)
+
+ if (!arraysEqual(sourcePlaceholders, translationPlaceholders)) {
+ placeholderErrors.push(key)
+ errors.push(`${locale}.${key}: Placeholder mismatch`)
+ }
+ }
+
+ if (placeholderErrors.length > 0) {
+ log.warning(
+ `${locale}: ${placeholderErrors.length} placeholder mismatch${placeholderErrors.length > 1 ? 'es' : ''}`,
+ )
+ for (const key of placeholderErrors) {
+ log.item(log.dim(key))
+ }
+ }
+
+ if (
+ missingKeys.length === 0 &&
+ extraKeys.length === 0 &&
+ placeholderErrors.length === 0
+ ) {
+ log.success(`${locale}: All keys valid`)
+ }
+ }
+
+ return errors.length === 0
+}
+
+async function main() {
+ // Import source locale
+ const enModule = await import('../src/locales/en.ts')
+ const en = enModule.en as NestedObject
+
+ const locks = JSON.parse(fs.readFileSync(LOCKS_FILE, 'utf-8')) as Record<
+ string,
+ string[]
+ >
+ const prompt = fs.readFileSync(PROMPT_FILE, 'utf-8')
+ const cache = loadCache()
+
+ const sourceKeys = flattenKeys(en)
+ const pluralPaths = findPluralPaths(en as Record)
+ const targetLocales = SUPPORTED_LOCALES.filter((l): l is string => l !== 'en')
+
+ // Safety guard: never write to en.ts
+ if (targetLocales.includes('en')) {
+ log.error('Cannot translate to English (source locale)')
+ process.exit(1)
+ }
+
+ await translate(
+ en,
+ sourceKeys,
+ pluralPaths,
+ targetLocales,
+ locks,
+ prompt,
+ cache,
+ )
+
+ // Load all locale data for validation
+ const localeData = new Map()
+ localeData.set('en', en)
+ for (const locale of targetLocales) {
+ const data = await loadExistingLocale(locale)
+ if (data) localeData.set(locale, data)
+ }
+
+ const isValid = validate(sourceKeys, targetLocales, localeData)
+
+ if (!isValid) {
+ log.blank()
+ log.error('Validation failed')
+ process.exit(1)
+ }
+
+ log.done('Translation and validation complete')
+}
+
+main().catch((error) => {
+ log.blank()
+ log.error(`Translation failed: ${error.message}`)
+ process.exit(1)
+})
diff --git a/clients/packages/i18n/scripts/utils.test.ts b/clients/packages/i18n/scripts/utils.test.ts
new file mode 100644
index 0000000000..0a16421358
--- /dev/null
+++ b/clients/packages/i18n/scripts/utils.test.ts
@@ -0,0 +1,624 @@
+import { describe, expect, it } from 'vitest'
+import {
+ arraysEqual,
+ extractPlaceholders,
+ findChangedKeys,
+ findOrphanedKeys,
+ findPluralPaths,
+ flattenKeys,
+ flattenKeysToStrings,
+ getStringValue,
+ hasLlmContext,
+ isLeafNode,
+ normalizeResponse,
+ prepareForLLM,
+ unflattenKeys,
+} from './utils'
+
+describe('getStringValue', () => {
+ it('returns string directly when input is string', () => {
+ expect(getStringValue('hello')).toBe('hello')
+ })
+
+ it('extracts value from object with value property', () => {
+ expect(getStringValue({ value: 'hello' })).toBe('hello')
+ })
+
+ it('extracts value from object with value and llmContext', () => {
+ expect(getStringValue({ value: 'hello', llmContext: 'context' })).toBe(
+ 'hello',
+ )
+ })
+})
+
+describe('hasLlmContext', () => {
+ it('returns false for plain strings', () => {
+ expect(hasLlmContext('hello')).toBe(false)
+ })
+
+ it('returns false for object without llmContext', () => {
+ expect(hasLlmContext({ value: 'hello' })).toBe(false)
+ })
+
+ it('returns true for object with llmContext', () => {
+ expect(hasLlmContext({ value: 'hello', llmContext: 'context' })).toBe(true)
+ })
+
+ it('returns false for object with undefined llmContext', () => {
+ expect(hasLlmContext({ value: 'hello', llmContext: undefined })).toBe(false)
+ })
+})
+
+describe('isLeafNode', () => {
+ it('returns true for strings', () => {
+ expect(isLeafNode('hello')).toBe(true)
+ })
+
+ it('returns true for objects with value property', () => {
+ expect(isLeafNode({ value: 'hello' })).toBe(true)
+ })
+
+ it('returns false for nested objects', () => {
+ expect(isLeafNode({ nested: { value: 'hello' } })).toBe(false)
+ })
+
+ it('returns false for null', () => {
+ expect(isLeafNode(null)).toBe(false)
+ })
+
+ it('returns false for arrays', () => {
+ expect(isLeafNode(['hello'])).toBe(false)
+ })
+})
+
+describe('findPluralPaths', () => {
+ it('finds plural objects at top level', () => {
+ const obj = {
+ messages: {
+ _mode: 'plural',
+ '=1': 'One message',
+ other: '# messages',
+ },
+ }
+ expect(findPluralPaths(obj)).toEqual(new Set(['messages']))
+ })
+
+ it('finds nested plural objects', () => {
+ const obj = {
+ checkout: {
+ benefits: {
+ moreBenefits: {
+ _mode: 'plural',
+ '=1': '# more benefit',
+ other: '# more benefits',
+ },
+ },
+ },
+ }
+ expect(findPluralPaths(obj)).toEqual(
+ new Set(['checkout.benefits.moreBenefits']),
+ )
+ })
+
+ it('finds multiple plural objects', () => {
+ const obj = {
+ a: { _mode: 'plural', '=1': 'one', other: 'many' },
+ b: {
+ c: { _mode: 'plural', '=1': 'one', other: 'many' },
+ },
+ }
+ expect(findPluralPaths(obj)).toEqual(new Set(['a', 'b.c']))
+ })
+
+ it('returns empty set when no plurals', () => {
+ const obj = { greeting: 'hello', nested: { farewell: 'goodbye' } }
+ expect(findPluralPaths(obj)).toEqual(new Set())
+ })
+})
+
+describe('flattenKeys', () => {
+ it('flattens simple object', () => {
+ const obj = { greeting: 'hello', farewell: 'goodbye' }
+ const result = flattenKeys(obj)
+
+ expect(result.get('greeting')).toBe('hello')
+ expect(result.get('farewell')).toBe('goodbye')
+ expect(result.size).toBe(2)
+ })
+
+ it('flattens nested objects with dot notation', () => {
+ const obj = {
+ messages: {
+ greeting: 'hello',
+ farewell: 'goodbye',
+ },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('messages.greeting')).toBe('hello')
+ expect(result.get('messages.farewell')).toBe('goodbye')
+ expect(result.size).toBe(2)
+ })
+
+ it('handles deeply nested objects', () => {
+ const obj = {
+ level1: {
+ level2: {
+ level3: 'deep value',
+ },
+ },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('level1.level2.level3')).toBe('deep value')
+ expect(result.size).toBe(1)
+ })
+
+ it('handles object entries with value property', () => {
+ const obj = {
+ greeting: { value: 'hello', llmContext: 'A greeting message' },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('greeting')).toEqual({
+ value: 'hello',
+ llmContext: 'A greeting message',
+ })
+ })
+
+ it('handles mixed string and object entries', () => {
+ const obj = {
+ simple: 'hello',
+ complex: { value: 'world', llmContext: 'context' },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('simple')).toBe('hello')
+ expect(result.get('complex')).toEqual({
+ value: 'world',
+ llmContext: 'context',
+ })
+ })
+
+ it('expands plural objects into separate variant keys', () => {
+ const obj = {
+ messages: {
+ _mode: 'plural' as const,
+ '=1': 'One message',
+ other: '# messages',
+ },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('messages.=1')).toBe('One message')
+ expect(result.get('messages.other')).toBe('# messages')
+ expect(result.has('messages._mode')).toBe(false)
+ expect(result.size).toBe(2)
+ })
+
+ it('expands nested plural objects', () => {
+ const obj = {
+ checkout: {
+ trial: {
+ days: {
+ _mode: 'plural' as const,
+ '=1': '# day trial',
+ other: '# days trial',
+ },
+ },
+ },
+ }
+ const result = flattenKeys(obj)
+
+ expect(result.get('checkout.trial.days.=1')).toBe('# day trial')
+ expect(result.get('checkout.trial.days.other')).toBe('# days trial')
+ expect(result.size).toBe(2)
+ })
+})
+
+describe('flattenKeysToStrings', () => {
+ it('extracts string values from all entries', () => {
+ const obj = {
+ simple: 'hello',
+ complex: { value: 'world', llmContext: 'context' },
+ }
+ const result = flattenKeysToStrings(obj)
+
+ expect(result.get('simple')).toBe('hello')
+ expect(result.get('complex')).toBe('world')
+ })
+
+ it('expands plural objects to string variants', () => {
+ const obj = {
+ messages: {
+ _mode: 'plural' as const,
+ '=0': 'No messages',
+ '=1': 'One message',
+ other: '# messages',
+ },
+ }
+ const result = flattenKeysToStrings(obj)
+
+ expect(result.get('messages.=0')).toBe('No messages')
+ expect(result.get('messages.=1')).toBe('One message')
+ expect(result.get('messages.other')).toBe('# messages')
+ expect(result.size).toBe(3)
+ })
+})
+
+describe('unflattenKeys', () => {
+ it('unflattens simple keys', () => {
+ const map = new Map([
+ ['greeting', 'hello'],
+ ['farewell', 'goodbye'],
+ ])
+ const result = unflattenKeys(map)
+
+ expect(result).toEqual({ greeting: 'hello', farewell: 'goodbye' })
+ })
+
+ it('unflattens dot-notation keys into nested objects', () => {
+ const map = new Map([
+ ['messages.greeting', 'hello'],
+ ['messages.farewell', 'goodbye'],
+ ])
+ const result = unflattenKeys(map)
+
+ expect(result).toEqual({
+ messages: {
+ greeting: 'hello',
+ farewell: 'goodbye',
+ },
+ })
+ })
+
+ it('handles deeply nested keys', () => {
+ const map = new Map([['level1.level2.level3', 'deep value']])
+ const result = unflattenKeys(map)
+
+ expect(result).toEqual({
+ level1: {
+ level2: {
+ level3: 'deep value',
+ },
+ },
+ })
+ })
+
+ it('re-injects _mode: plural at tracked plural paths', () => {
+ const map = new Map([
+ ['messages.=1', 'One message'],
+ ['messages.other', '# messages'],
+ ])
+ const pluralPaths = new Set(['messages'])
+ const result = unflattenKeys(map, pluralPaths)
+
+ expect(result).toEqual({
+ messages: {
+ _mode: 'plural',
+ '=1': 'One message',
+ other: '# messages',
+ },
+ })
+ })
+
+ it('re-injects _mode: plural at nested paths', () => {
+ const map = new Map([
+ ['checkout.trial.days.=1', '# day trial'],
+ ['checkout.trial.days.other', '# days trial'],
+ ])
+ const pluralPaths = new Set(['checkout.trial.days'])
+ const result = unflattenKeys(map, pluralPaths)
+
+ expect(result).toEqual({
+ checkout: {
+ trial: {
+ days: {
+ _mode: 'plural',
+ '=1': '# day trial',
+ other: '# days trial',
+ },
+ },
+ },
+ })
+ })
+
+ it('round-trips with flattenKeysToStrings (no plurals)', () => {
+ const original = {
+ checkout: {
+ email: 'Email',
+ submit: 'Submit',
+ },
+ common: {
+ cancel: 'Cancel',
+ },
+ }
+ const flattened = flattenKeysToStrings(original)
+ const unflattened = unflattenKeys(flattened)
+
+ expect(unflattened).toEqual(original)
+ })
+
+ it('round-trips with flattenKeysToStrings (with plurals)', () => {
+ const original = {
+ checkout: {
+ benefits: {
+ moreBenefits: {
+ _mode: 'plural' as const,
+ '=1': '# more benefit',
+ other: '# more benefits',
+ },
+ },
+ },
+ }
+ const pluralPaths = findPluralPaths(original)
+ const flattened = flattenKeysToStrings(original)
+ const unflattened = unflattenKeys(flattened, pluralPaths)
+
+ expect(unflattened).toEqual(original)
+ })
+})
+
+describe('findChangedKeys', () => {
+ it('returns all keys when cache is empty', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ['farewell', 'goodbye'],
+ ])
+ const cache = {}
+ const existing = {}
+
+ const result = findChangedKeys(sourceKeys, cache, existing)
+
+ expect(result).toEqual(['greeting', 'farewell'])
+ })
+
+ it('returns empty when all keys are cached and unchanged', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+ const cache = { greeting: 'hello' }
+ const existing = { greeting: 'hola' }
+
+ const result = findChangedKeys(sourceKeys, cache, existing)
+
+ expect(result).toEqual([])
+ })
+
+ it('detects changed source values', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello updated'],
+ ])
+ const cache = { greeting: 'hello' }
+ const existing = { greeting: 'hola' }
+
+ const result = findChangedKeys(sourceKeys, cache, existing)
+
+ expect(result).toEqual(['greeting'])
+ })
+
+ it('detects missing translations', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ['farewell', 'goodbye'],
+ ])
+ const cache = { greeting: 'hello', farewell: 'goodbye' }
+ const existing = { greeting: 'hola' } // farewell is missing
+
+ const result = findChangedKeys(sourceKeys, cache, existing)
+
+ expect(result).toEqual(['farewell'])
+ })
+})
+
+describe('findOrphanedKeys', () => {
+ it('returns empty when all translation keys exist in source', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+ const existing = { greeting: 'hola' }
+
+ const result = findOrphanedKeys(sourceKeys, existing)
+
+ expect(result).toEqual([])
+ })
+
+ it('finds keys in translation that do not exist in source', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+ const existing = { greeting: 'hola', oldKey: 'viejo' }
+
+ const result = findOrphanedKeys(sourceKeys, existing)
+
+ expect(result).toEqual(['oldKey'])
+ })
+
+ it('handles nested orphaned keys', () => {
+ const sourceKeys = new Map([
+ ['messages.greeting', 'hello'],
+ ])
+ const existing = {
+ messages: {
+ greeting: 'hola',
+ oldMessage: 'viejo',
+ },
+ }
+
+ const result = findOrphanedKeys(sourceKeys, existing)
+
+ expect(result).toEqual(['messages.oldMessage'])
+ })
+})
+
+describe('prepareForLLM', () => {
+ it('prepares simple strings for LLM', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+
+ const result = prepareForLLM(sourceKeys, ['greeting'])
+
+ expect(result).toEqual({
+ greeting: { value: 'hello' },
+ })
+ })
+
+ it('includes llmContext when available', () => {
+ const sourceKeys = new Map<
+ string,
+ string | { value: string; llmContext?: string }
+ >([['greeting', { value: 'hello', llmContext: 'A friendly greeting' }]])
+
+ const result = prepareForLLM(sourceKeys, ['greeting'])
+
+ expect(result).toEqual({
+ greeting: { value: 'hello', llmContext: 'A friendly greeting' },
+ })
+ })
+
+ it('only includes requested keys', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ['farewell', 'goodbye'],
+ ])
+
+ const result = prepareForLLM(sourceKeys, ['greeting'])
+
+ expect(result).toEqual({
+ greeting: { value: 'hello' },
+ })
+ expect(result.farewell).toBeUndefined()
+ })
+
+ it('skips keys not in sourceKeys', () => {
+ const sourceKeys = new Map([
+ ['greeting', 'hello'],
+ ])
+
+ const result = prepareForLLM(sourceKeys, ['greeting', 'nonexistent'])
+
+ expect(result).toEqual({
+ greeting: { value: 'hello' },
+ })
+ })
+})
+
+describe('normalizeResponse', () => {
+ it('passes through string values', () => {
+ const response = { greeting: 'hola', farewell: 'adios' }
+
+ const result = normalizeResponse(response)
+
+ expect(result).toEqual({ greeting: 'hola', farewell: 'adios' })
+ })
+
+ it('extracts value from object responses', () => {
+ const response = {
+ greeting: { value: 'hola' },
+ farewell: { value: 'adios' },
+ }
+
+ const result = normalizeResponse(response)
+
+ expect(result).toEqual({ greeting: 'hola', farewell: 'adios' })
+ })
+
+ it('handles mixed string and object responses', () => {
+ const response = {
+ greeting: 'hola',
+ farewell: { value: 'adios' },
+ }
+
+ const result = normalizeResponse(response)
+
+ expect(result).toEqual({ greeting: 'hola', farewell: 'adios' })
+ })
+
+ it('ignores invalid values', () => {
+ const response = {
+ greeting: 'hola',
+ invalid: 123,
+ alsoInvalid: null,
+ }
+
+ const result = normalizeResponse(response as Record)
+
+ expect(result).toEqual({ greeting: 'hola' })
+ })
+})
+
+describe('extractPlaceholders', () => {
+ it('returns empty array for strings without placeholders', () => {
+ expect(extractPlaceholders('Hello world')).toEqual([])
+ })
+
+ it('extracts single placeholder', () => {
+ expect(extractPlaceholders('Hello {name}')).toEqual(['name'])
+ })
+
+ it('extracts multiple placeholders', () => {
+ expect(extractPlaceholders('Hello {firstName} {lastName}')).toEqual([
+ 'firstName',
+ 'lastName',
+ ])
+ })
+
+ it('returns sorted and unique placeholders', () => {
+ expect(extractPlaceholders('{b} {a} {b} {c}')).toEqual(['a', 'b', 'c'])
+ })
+
+ it('extracts double-brace placeholders', () => {
+ expect(extractPlaceholders('Hello {{name}}')).toEqual(['name'])
+ })
+
+ it('ignores ICU keywords', () => {
+ expect(
+ extractPlaceholders('{count, plural, one {# item} other {# items}}'),
+ ).toEqual(['#', 'count'])
+ })
+
+ it('handles complex ICU messages', () => {
+ const message =
+ '{name} has {count, plural, one {# message} other {# messages}}'
+ expect(extractPlaceholders(message)).toEqual(['#', 'count', 'name'])
+ })
+
+ it('handles underscores in placeholder names', () => {
+ expect(extractPlaceholders('Hello {first_name}')).toEqual(['first_name'])
+ })
+
+ it('handles numbers in placeholder names', () => {
+ expect(extractPlaceholders('Value: {value1}')).toEqual(['value1'])
+ })
+
+ it('detects # as plural count placeholder', () => {
+ expect(extractPlaceholders('# items remaining')).toEqual(['#'])
+ })
+
+ it('detects # alongside regular placeholders', () => {
+ expect(extractPlaceholders('# results for {query}')).toEqual(['#', 'query'])
+ })
+})
+
+describe('arraysEqual', () => {
+ it('returns true for identical arrays', () => {
+ expect(arraysEqual(['a', 'b', 'c'], ['a', 'b', 'c'])).toBe(true)
+ })
+
+ it('returns true for empty arrays', () => {
+ expect(arraysEqual([], [])).toBe(true)
+ })
+
+ it('returns false for different lengths', () => {
+ expect(arraysEqual(['a', 'b'], ['a', 'b', 'c'])).toBe(false)
+ })
+
+ it('returns false for different elements', () => {
+ expect(arraysEqual(['a', 'b', 'c'], ['a', 'x', 'c'])).toBe(false)
+ })
+
+ it('returns false for same elements in different order', () => {
+ expect(arraysEqual(['a', 'b', 'c'], ['c', 'b', 'a'])).toBe(false)
+ })
+})
diff --git a/clients/packages/i18n/scripts/utils.ts b/clients/packages/i18n/scripts/utils.ts
new file mode 100644
index 0000000000..0bceb54922
--- /dev/null
+++ b/clients/packages/i18n/scripts/utils.ts
@@ -0,0 +1,326 @@
+/**
+ * Shared utility functions for i18n scripts
+ */
+
+export type EntryValue = string | { value: string; llmContext?: string }
+export type NestedObject = { [key: string]: EntryValue | NestedObject }
+export type TranslationCache = Record>
+
+/**
+ * Check if a value is a plural object (has _mode: 'plural')
+ */
+function isPluralObject(
+ value: unknown,
+): value is Record & { _mode: 'plural' } {
+ return (
+ typeof value === 'object' &&
+ value !== null &&
+ '_mode' in value &&
+ (value as Record)._mode === 'plural'
+ )
+}
+
+/**
+ * Extract the string value from an entry (handles both string and object formats)
+ */
+export function getStringValue(entry: EntryValue): string {
+ if (typeof entry === 'string') {
+ return entry
+ }
+ return entry.value
+}
+
+/**
+ * Check if an entry has LLM context metadata
+ */
+export function hasLlmContext(
+ entry: EntryValue,
+): entry is { value: string; llmContext: string } {
+ return (
+ typeof entry === 'object' &&
+ 'llmContext' in entry &&
+ entry.llmContext !== undefined
+ )
+}
+
+/**
+ * Check if value is a leaf node (string or object with 'value' key)
+ */
+export function isLeafNode(value: unknown): value is EntryValue {
+ return (
+ typeof value === 'string' ||
+ (typeof value === 'object' &&
+ value !== null &&
+ !Array.isArray(value) &&
+ 'value' in value)
+ )
+}
+
+/**
+ * Find all paths in a nested object that are plural objects.
+ * Returns a Set of dot-notation paths.
+ */
+export function findPluralPaths(
+ obj: Record,
+ prefix = '',
+): Set {
+ const paths = new Set()
+
+ for (const [key, value] of Object.entries(obj)) {
+ const fullKey = prefix ? `${prefix}.${key}` : key
+
+ if (isPluralObject(value)) {
+ paths.add(fullKey)
+ } else if (typeof value === 'object' && value !== null) {
+ for (const p of findPluralPaths(
+ value as Record,
+ fullKey,
+ )) {
+ paths.add(p)
+ }
+ }
+ }
+
+ return paths
+}
+
+/**
+ * Flatten a nested object into a Map of dot-notation keys to values.
+ * Plural objects are expanded: { _mode: 'plural', '=1': '...', other: '...' }
+ * becomes separate keys like 'path.=1' and 'path.other' (skipping _mode).
+ */
+export function flattenKeys(
+ obj: NestedObject,
+ prefix = '',
+): Map {
+ const result = new Map()
+
+ for (const [key, value] of Object.entries(obj)) {
+ const fullKey = prefix ? `${prefix}.${key}` : key
+
+ if (isPluralObject(value)) {
+ // Expand plural variants as individual flat keys, skip _mode
+ for (const [variant, text] of Object.entries(value)) {
+ if (variant === '_mode') continue
+ result.set(`${fullKey}.${variant}`, text)
+ }
+ } else if (isLeafNode(value)) {
+ result.set(fullKey, value as EntryValue)
+ } else if (typeof value === 'object' && value !== null) {
+ const nested = flattenKeys(value as NestedObject, fullKey)
+ for (const [k, v] of nested) {
+ result.set(k, v)
+ }
+ }
+ }
+
+ return result
+}
+
+/**
+ * Flatten keys but return string values only (for validation)
+ */
+export function flattenKeysToStrings(
+ obj: NestedObject,
+ prefix = '',
+): Map {
+ const result = new Map()
+
+ for (const [key, value] of Object.entries(obj)) {
+ const fullKey = prefix ? `${prefix}.${key}` : key
+
+ if (isPluralObject(value)) {
+ for (const [variant, text] of Object.entries(value)) {
+ if (variant === '_mode') continue
+ result.set(`${fullKey}.${variant}`, text)
+ }
+ } else if (isLeafNode(value)) {
+ result.set(fullKey, getStringValue(value))
+ } else if (typeof value === 'object' && value !== null) {
+ const nested = flattenKeysToStrings(value as NestedObject, fullKey)
+ for (const [k, v] of nested) {
+ result.set(k, v)
+ }
+ }
+ }
+
+ return result
+}
+
+/**
+ * Unflatten a Map of dot-notation keys back into a nested object.
+ * Re-injects _mode: 'plural' at tracked plural paths.
+ */
+export function unflattenKeys(
+ map: Map,
+ pluralPaths: Set = new Set(),
+): NestedObject {
+ const result: NestedObject = {}
+
+ for (const [key, value] of map) {
+ const parts = key.split('.')
+ let current = result as Record
+
+ for (let i = 0; i < parts.length - 1; i++) {
+ const part = parts[i]
+ if (!(part in current)) {
+ current[part] = {}
+ }
+ current = current[part] as Record
+ }
+
+ current[parts[parts.length - 1]] = value
+ }
+
+ // Re-inject _mode: 'plural' at plural paths
+ for (const path of pluralPaths) {
+ const parts = path.split('.')
+ let current = result as Record
+
+ for (const part of parts) {
+ if (!(part in current)) break
+ if (part === parts[parts.length - 1]) {
+ const obj = current[part]
+ if (typeof obj === 'object' && obj !== null) {
+ ;(obj as Record)._mode = 'plural'
+ }
+ } else {
+ current = current[part] as Record
+ }
+ }
+ }
+
+ return result
+}
+
+/**
+ * Find keys that have changed (new, modified, or missing from cache)
+ */
+export function findChangedKeys(
+ sourceKeys: Map,
+ cache: Record,
+ existingTranslation: NestedObject,
+): string[] {
+ const existingKeys = flattenKeys(existingTranslation)
+ const changed: string[] = []
+
+ for (const [key, value] of sourceKeys) {
+ const currentSource = getStringValue(value)
+ const cachedSource = cache[key]
+ const hasExistingTranslation = existingKeys.has(key)
+
+ if (!hasExistingTranslation || cachedSource !== currentSource) {
+ changed.push(key)
+ }
+ }
+
+ return changed
+}
+
+/**
+ * Find keys that exist in translation but not in source (should be removed)
+ */
+export function findOrphanedKeys(
+ sourceKeys: Map,
+ existingTranslation: NestedObject,
+): string[] {
+ const existingKeys = flattenKeys(existingTranslation)
+ const orphaned: string[] = []
+
+ for (const key of existingKeys.keys()) {
+ if (!sourceKeys.has(key)) {
+ orphaned.push(key)
+ }
+ }
+
+ return orphaned
+}
+
+/**
+ * Prepare source strings for LLM translation (include context where available)
+ */
+export function prepareForLLM(
+ sourceKeys: Map,
+ keys: string[],
+): Record {
+ const result: Record = {}
+
+ for (const key of keys) {
+ const entry = sourceKeys.get(key)
+ if (!entry) continue
+
+ if (hasLlmContext(entry)) {
+ result[key] = { value: entry.value, llmContext: entry.llmContext }
+ } else {
+ result[key] = { value: getStringValue(entry) }
+ }
+ }
+
+ return result
+}
+
+/**
+ * Normalize LLM response (handle both string and object formats)
+ */
+export function normalizeResponse(
+ response: Record,
+): Record {
+ const result: Record = {}
+
+ for (const [key, value] of Object.entries(response)) {
+ if (typeof value === 'string') {
+ result[key] = value
+ } else if (
+ typeof value === 'object' &&
+ value !== null &&
+ 'value' in value
+ ) {
+ result[key] = (value as { value: string }).value
+ }
+ }
+
+ return result
+}
+
+/**
+ * Extract placeholders from a string.
+ * Recognizes {name}, {{name}}, ICU patterns, and # (plural count).
+ */
+export function extractPlaceholders(str: string): string[] {
+ const placeholders: string[] = []
+
+ // Match {name} style simple placeholders
+ const simpleMatch = str.matchAll(/\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g)
+ for (const match of simpleMatch) {
+ placeholders.push(match[1])
+ }
+
+ // Match {name, plural/select/selectordinal, ...} style ICU placeholders
+ const icuMatch = str.matchAll(
+ /\{([a-zA-Z_][a-zA-Z0-9_]*),\s*(?:plural|select|selectordinal)/g,
+ )
+ for (const match of icuMatch) {
+ placeholders.push(match[1])
+ }
+
+ // Match {{name}} style placeholders
+ const doubleMatch = str.matchAll(/\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g)
+ for (const match of doubleMatch) {
+ placeholders.push(match[1])
+ }
+
+ // Track presence of # (plural count placeholder)
+ if (/#/.test(str)) {
+ placeholders.push('#')
+ }
+
+ return [...new Set(placeholders)].sort()
+}
+
+/**
+ * Check if two arrays are equal (same elements in same order)
+ */
+export function arraysEqual(a: string[], b: string[]): boolean {
+ if (a.length !== b.length) return false
+ return a.every((val, i) => val === b[i])
+}
diff --git a/clients/packages/i18n/scripts/validate.ts b/clients/packages/i18n/scripts/validate.ts
new file mode 100644
index 0000000000..41aa878404
--- /dev/null
+++ b/clients/packages/i18n/scripts/validate.ts
@@ -0,0 +1,136 @@
+import path from 'node:path'
+import * as log from './logger'
+import {
+ type NestedObject,
+ arraysEqual,
+ extractPlaceholders,
+ flattenKeys,
+ flattenKeysToStrings,
+} from './utils'
+
+import { LOCALE_NAMES, SUPPORTED_LOCALES } from '../src/config'
+
+const LOCALES_DIR = path.join(import.meta.dirname, '../src/locales')
+
+async function loadLocale(locale: string): Promise {
+ const filePath = path.join(LOCALES_DIR, `${locale}.ts`)
+ try {
+ const mod = await import(filePath)
+ return (mod[locale] ?? null) as NestedObject | null
+ } catch {
+ return null
+ }
+}
+
+async function validate() {
+ const errors: string[] = []
+
+ const enModule = await import('../src/locales/en.ts')
+ const en = enModule.en as NestedObject
+
+ const sourceKeys = flattenKeys(en)
+ const sourceStrings = flattenKeysToStrings(en)
+ const targetLocales = SUPPORTED_LOCALES.filter((l): l is string => l !== 'en')
+
+ log.header('Polar i18n Validation')
+ log.info(`Source: ${log.bold(sourceKeys.size.toString())} keys in en.ts`)
+ log.info(`Checking: ${targetLocales.map((l) => log.cyan(l)).join(', ')}`)
+
+ for (const locale of targetLocales) {
+ const localeName = LOCALE_NAMES[locale] || locale
+ log.localeHeader(locale, localeName)
+
+ const translation = await loadLocale(locale)
+
+ if (!translation) {
+ errors.push(`${locale}: File does not exist`)
+ log.error('File does not exist')
+ continue
+ }
+
+ const translationKeys = flattenKeysToStrings(translation)
+
+ const missingKeys: string[] = []
+ for (const key of sourceKeys.keys()) {
+ if (!translationKeys.has(key)) {
+ missingKeys.push(key)
+ }
+ }
+
+ if (missingKeys.length > 0) {
+ errors.push(`${locale}: Missing ${missingKeys.length} keys`)
+ log.warning(
+ `Missing ${missingKeys.length} key${missingKeys.length > 1 ? 's' : ''}`,
+ )
+ for (const key of missingKeys) {
+ log.item(log.dim(key))
+ }
+ }
+
+ const extraKeys: string[] = []
+ for (const key of translationKeys.keys()) {
+ if (!sourceKeys.has(key)) {
+ extraKeys.push(key)
+ }
+ }
+
+ if (extraKeys.length > 0) {
+ errors.push(`${locale}: ${extraKeys.length} extra keys`)
+ log.warning(
+ `${extraKeys.length} extra key${extraKeys.length > 1 ? 's' : ''}`,
+ )
+ for (const key of extraKeys) {
+ log.item(log.dim(key))
+ }
+ }
+
+ const placeholderErrors: string[] = []
+ for (const [key, sourceValue] of sourceStrings) {
+ const translationValue = translationKeys.get(key)
+ if (!translationValue) continue
+
+ const sourcePlaceholders = extractPlaceholders(sourceValue)
+ const translationPlaceholders = extractPlaceholders(translationValue)
+
+ if (!arraysEqual(sourcePlaceholders, translationPlaceholders)) {
+ placeholderErrors.push(key)
+ errors.push(`${locale}.${key}: Placeholder mismatch`)
+ }
+ }
+
+ if (placeholderErrors.length > 0) {
+ log.warning(
+ `${placeholderErrors.length} placeholder mismatch${placeholderErrors.length > 1 ? 'es' : ''}`,
+ )
+ for (const key of placeholderErrors) {
+ log.item(log.dim(key))
+ }
+ }
+
+ if (
+ missingKeys.length === 0 &&
+ extraKeys.length === 0 &&
+ placeholderErrors.length === 0
+ ) {
+ log.success('All keys valid')
+ }
+ }
+
+ log.blank()
+
+ if (errors.length > 0) {
+ log.error(
+ `Validation failed with ${errors.length} error${errors.length > 1 ? 's' : ''}`,
+ )
+ log.blank()
+ process.exit(1)
+ }
+
+ log.done('All translations valid')
+}
+
+validate().catch((error) => {
+ log.blank()
+ log.error(`Validation failed: ${error.message}`)
+ process.exit(1)
+})
diff --git a/clients/packages/i18n/src/config.ts b/clients/packages/i18n/src/config.ts
new file mode 100644
index 0000000000..f0c1aabbe7
--- /dev/null
+++ b/clients/packages/i18n/src/config.ts
@@ -0,0 +1,10 @@
+export const SUPPORTED_LOCALES = ['en', 'nl'] as const
+export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
+export const DEFAULT_LOCALE: SupportedLocale = 'en'
+
+export const LOCALE_NAMES: Record = {
+ nl: 'Dutch',
+ sv: 'Swedish',
+ es: 'Spanish',
+ fr: 'French',
+}
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index eea8af9403..dd2fc40806 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -1,8 +1,10 @@
import { useCallback } from 'react'
-export const SUPPORTED_LOCALES = ['en', 'nl'] as const
-export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
-export const DEFAULT_LOCALE = 'en'
+export { DEFAULT_LOCALE, LOCALE_NAMES, SUPPORTED_LOCALES } from './config'
+export type { SupportedLocale } from './config'
+
+import type { SupportedLocale } from './config'
+import { DEFAULT_LOCALE, SUPPORTED_LOCALES } from './config'
// Expand bare language codes to include region variants,
// but keep region-specific codes (like future 'pt-BR') exact
diff --git a/clients/packages/i18n/src/locales/config/.cache.json b/clients/packages/i18n/src/locales/config/.cache.json
new file mode 100644
index 0000000000..438d4ab895
--- /dev/null
+++ b/clients/packages/i18n/src/locales/config/.cache.json
@@ -0,0 +1,124 @@
+{
+ "nl": {
+ "checkout.footer.poweredBy": "Powered by",
+ "checkout.footer.merchantOfRecord": "This order is processed by our online reseller & Merchant of Record, Polar, who also handles order-related inquiries and returns.",
+ "checkout.form.email": "Email",
+ "checkout.form.cardholderName": "Cardholder name",
+ "checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
+ "checkout.form.businessName": "Business name",
+ "checkout.form.billingAddress.label": "Billing address",
+ "checkout.form.billingAddress.line1": "Line 1",
+ "checkout.form.billingAddress.line2": "Line 2",
+ "checkout.form.billingAddress.postalCode": "Postal code",
+ "checkout.form.billingAddress.city": "City",
+ "checkout.form.billingAddress.country": "Country",
+ "checkout.form.billingAddress.state": "State",
+ "checkout.form.billingAddress.province": "Province",
+ "checkout.form.billingAddress.stateProvince": "State / Province",
+ "checkout.form.taxId": "Tax ID",
+ "checkout.form.discountCode": "Discount code",
+ "checkout.form.optional": "Optional",
+ "checkout.form.apply": "Apply",
+ "checkout.form.fieldRequired": "This field is required",
+ "checkout.pricing.subtotal": "Subtotal",
+ "checkout.pricing.taxableAmount": "Taxable amount",
+ "checkout.pricing.taxes": "Taxes",
+ "checkout.pricing.free": "Free",
+ "checkout.pricing.payWhatYouWant": "Pay what you want",
+ "checkout.pricing.total": "Total",
+ "checkout.pricing.everyInterval": "Every {interval}",
+ "checkout.pricing.additionalMeteredUsage": "Additional metered usage",
+ "checkout.pricing.perUnit": "/ unit",
+ "checkout.pricing.discount.duration.months.=1": "for the first month",
+ "checkout.pricing.discount.duration.months.other": "for the first # months",
+ "checkout.pricing.discount.duration.years.=1": "for the first year",
+ "checkout.pricing.discount.duration.years.other": "for the first # years",
+ "checkout.trial.ends": "Trial ends {endDate}",
+ "checkout.trial.duration.days.=1": "# day trial",
+ "checkout.trial.duration.days.other": "# days trial",
+ "checkout.trial.duration.weeks.=1": "# week trial",
+ "checkout.trial.duration.weeks.other": "# weeks trial",
+ "checkout.trial.duration.months.=1": "# month trial",
+ "checkout.trial.duration.months.other": "# months trial",
+ "checkout.trial.duration.years.=1": "# year trial",
+ "checkout.trial.duration.years.other": "# years trial",
+ "checkout.pwywForm.label": "Name a fair price",
+ "checkout.pwywForm.minimum": "{amount} minimum",
+ "checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.productSwitcher.billedRecurring": "Billed {frequency}",
+ "checkout.productSwitcher.oneTimePurchase": "One-time purchase",
+ "checkout.card.included": "Included",
+ "checkout.benefits.moreBenefits.=1": "# more benefit",
+ "checkout.benefits.moreBenefits.other": "# more benefits",
+ "checkout.benefits.showMoreBenefits.=1": "Show # more benefit",
+ "checkout.benefits.showMoreBenefits.other": "Show # more benefits",
+ "checkout.benefits.showLess": "Show less",
+ "checkout.benefits.granting": "Granting benefits...",
+ "checkout.benefits.requestNewInvite": "Request new invite",
+ "checkout.benefits.retryIn.=1": "Try again in # second",
+ "checkout.benefits.retryIn.other": "Try again in # seconds",
+ "checkout.benefits.connectNewAccount": "Connect new account",
+ "checkout.benefits.requestMyInvite": "Request my invite",
+ "checkout.benefits.github.connect": "Connect GitHub account",
+ "checkout.benefits.github.goTo": "Go to {repository}",
+ "checkout.benefits.github.selectAccount": "Select a GitHub account",
+ "checkout.benefits.discord.connect": "Connect Discord account",
+ "checkout.benefits.discord.open": "Open Discord",
+ "checkout.benefits.discord.selectAccount": "Select a Discord account",
+ "checkout.benefits.licenseKey.copy": "Copy",
+ "checkout.benefits.licenseKey.copiedToClipboard": "Copied To Clipboard",
+ "checkout.benefits.licenseKey.copiedToClipboardDescription": "License Key was copied to clipboard",
+ "checkout.benefits.licenseKey.loading": "Loading...",
+ "checkout.benefits.licenseKey.status": "Status",
+ "checkout.benefits.licenseKey.statusGranted": "Granted",
+ "checkout.benefits.licenseKey.statusRevoked": "Revoked",
+ "checkout.benefits.licenseKey.statusDisabled": "Disabled",
+ "checkout.benefits.licenseKey.usage": "Usage",
+ "checkout.benefits.licenseKey.validations": "Validations",
+ "checkout.benefits.licenseKey.validatedAt": "Validated At",
+ "checkout.benefits.licenseKey.neverValidated": "Never Validated",
+ "checkout.benefits.licenseKey.expiryDate": "Expiry Date",
+ "checkout.benefits.licenseKey.noExpiry": "No Expiry",
+ "checkout.benefits.licenseKey.activations": "Activations",
+ "checkout.benefits.licenseKey.activationDeleted": "License Key Activation Deleted",
+ "checkout.benefits.licenseKey.activationDeletedDescription": "Activation deleted successfully",
+ "checkout.benefits.licenseKey.activationDeactivationFailed": "Activation Deactivation Failed",
+ "checkout.confirmation.confirmPayment": "Confirm payment",
+ "checkout.confirmation.processingTitle": "We are processing your order",
+ "checkout.confirmation.successTitle": "Your order was successful!",
+ "checkout.confirmation.failedTitle": "A problem occurred while processing your order",
+ "checkout.confirmation.processingDescription": "Please wait while we confirm your payment.",
+ "checkout.confirmation.successDescription": "You're now eligible for the benefits of {product}.",
+ "checkout.confirmation.failedDescription": "Please try again or contact support.",
+ "checkout.loading.processingOrder": "Processing order...",
+ "checkout.loading.processingPayment": "Processing payment",
+ "checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
+ "checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
+ "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.subscribeNow": "Subscribe now",
+ "checkout.cta.payNow": "Pay now",
+ "checkout.cta.getFree": "Get for free",
+ "checkout.cta.paymentsUnavailable": "Payments are currently unavailable",
+ "intervals.short.day": "dy",
+ "intervals.short.week": "wk",
+ "intervals.short.month": "mo",
+ "intervals.short.year": "yr",
+ "intervals.long.day": "day",
+ "intervals.long.week": "week",
+ "intervals.long.month": "month",
+ "intervals.long.year": "year",
+ "intervals.frequency.day": "daily",
+ "intervals.frequency.week": "weekly",
+ "intervals.frequency.month": "monthly",
+ "intervals.frequency.year": "yearly",
+ "intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
+ "benefitTypes.usage.displayName": "Usage",
+ "benefitTypes.license_keys.displayName": "License Keys",
+ "benefitTypes.github_repository.displayName": "GitHub Repository Access",
+ "benefitTypes.discord.displayName": "Discord Invite",
+ "benefitTypes.downloadables.displayName": "File Downloads",
+ "benefitTypes.custom.displayName": "Custom",
+ "benefitTypes.meter_credit.displayName": "Meter Credits"
+ }
+}
diff --git a/clients/packages/i18n/src/locales/config/locks.json b/clients/packages/i18n/src/locales/config/locks.json
new file mode 100644
index 0000000000..45441489de
--- /dev/null
+++ b/clients/packages/i18n/src/locales/config/locks.json
@@ -0,0 +1,3 @@
+{
+ "nl": []
+}
diff --git a/clients/packages/i18n/src/locales/config/prompt.md b/clients/packages/i18n/src/locales/config/prompt.md
new file mode 100644
index 0000000000..c30cbd64c4
--- /dev/null
+++ b/clients/packages/i18n/src/locales/config/prompt.md
@@ -0,0 +1,197 @@
+SYSTEM
+You are a senior SaaS localization specialist with deep expertise in digital goods and subscription checkout UX.
+You have translated and reviewed production checkout flows for major platforms selling software, subscriptions, and digital products.
+
+Your priority is NOT literal translation.
+Your priority is using the most common, expected, boring, user-facing terminology that real users see in online checkouts for {TARGET_LOCALE}.
+
+USER
+Task:
+Translate the provided English JSON into {TARGET_LOCALE}.
+
+This JSON contains UI strings for a checkout flow selling DIGITAL GOODS ONLY (software, subscriptions, licenses, downloads). There are NO physical products, NO shipping, and NO physical delivery involved.
+
+The keys are dot-notation paths (e.g., "checkout.form.email"). Translate only the values.
+
+========================
+HARD REQUIREMENTS
+========================
+
+1. Output ONLY valid JSON.
+ - No markdown
+ - No comments
+ - No explanations
+ - No wrapper objects
+
+2. Preserve JSON structure EXACTLY:
+ - Same keys
+ - Same nesting
+ - Same ordering where possible
+ - Translate VALUES ONLY
+
+3. Placeholders MUST be preserved exactly, character-for-character:
+ - Examples: {name}, {count}, {{amount}}, %s, %(name)s, :amount, ${amount}
+ - Do NOT rename, move, duplicate, or remove placeholders
+ - Keep whitespace inside placeholders unchanged
+
+4. The `#` symbol is a COUNT PLACEHOLDER in plural strings.
+ - It will be replaced with a number at runtime.
+ - ALWAYS preserve `#` exactly as-is in translations.
+ - Example: "# items" → "# Artikel" (German), NOT "Nummer items"
+
+5. Preserve markup and formatting exactly:
+ - HTML tags, attributes, entities
+ - Line breaks (\n), , ,
+ - Translate only the human-readable text
+
+6. Do NOT translate:
+ - Brand names
+ - Product names
+ - Plan names
+ - Proper nouns
+ - Technical/API terms
+ unless a widely-used localized form exists in {TARGET_LOCALE} checkout UX.
+
+========================
+CHECKOUT TERMINOLOGY (CRITICAL)
+========================
+
+Terminology accuracy is NON-NEGOTIABLE.
+
+- Use the most common checkout wording used by major ecommerce platforms in {TARGET_LOCALE}.
+- Avoid literal translations that are technically correct but uncommon or awkward in checkout UI.
+- If multiple translations are possible, choose the one users most frequently see in real checkouts.
+- Prefer standard, conservative wording over creative or expressive language.
+
+Key checkout concepts include (but are not limited to):
+
+- checkout
+- order / purchase
+- order summary
+- subtotal
+- total
+- discount / discount code / promo code
+- tax / VAT
+- payment method
+- billing address (NOT shipping address)
+- receipt
+- confirmation
+- refund
+- email receipt
+- continue as guest
+- subscription / subscribe
+- trial / free trial
+- license
+- download
+- access
+
+NOTE: Do NOT use terminology related to physical goods such as:
+
+- shipping / delivery
+- shipping address
+- tracking
+- warehouse
+- inventory
+- in stock / out of stock
+
+Once you pick a translation for a core term, use it CONSISTENTLY across the entire JSON.
+
+========================
+CTA & BUTTON LABEL RULES (VERY IMPORTANT)
+========================
+
+Short verbs and button labels are the most error-prone.
+Treat them as CHECKOUT CTAs, not generic verbs.
+
+Never use rare, formal, academic, or literal translations.
+Never invent wording.
+Never embellish.
+
+CTAs MUST:
+
+- Be short (typically 1–3 words)
+- Match real checkout buttons in {TARGET_LOCALE}
+- Use the standard imperative form for UI buttons in {TARGET_LOCALE}
+- Follow typical capitalization rules for buttons in {TARGET_LOCALE}
+
+The following English strings are SPECIAL and must be translated using the most standard checkout UI equivalent for {TARGET_LOCALE}:
+
+- "Submit"
+- "Continue"
+- "Next"
+- "Back"
+- "Confirm"
+- "Save"
+- "Cancel"
+- "Pay"
+- "Pay now"
+- "Place order"
+- "Complete purchase"
+- "Buy now"
+- "Proceed to checkout"
+- "Apply"
+- "Apply discount"
+- "Remove"
+- "Edit"
+- "Update"
+- "Sign in"
+- "Sign out"
+- "Create account"
+- "Continue as guest"
+- "Subscribe"
+- "Subscribe now"
+- "Start trial"
+- "Start free trial"
+- "Download"
+- "Get access"
+
+SPECIAL RULE FOR "Submit":
+
+- If the English value is exactly "Submit" (case-insensitive),
+ translate it as the most common checkout/form CTA in {TARGET_LOCALE}.
+- Do NOT translate it as a literal equivalent meaning "hand in", "send", or similar.
+- Prefer the equivalent of "Continue" or "Confirm" as commonly used in checkout flows.
+
+========================
+TONE & STYLE
+========================
+
+- Concise
+- Clear
+- Conversion-focused
+- Neutral and professional
+- Not marketing-heavy
+- Not overly formal unless the locale strictly requires it
+
+Error messages:
+
+- Short
+- Direct
+- Actionable
+- No fluff
+
+========================
+GRAMMAR & EDGE CASES
+========================
+
+- If grammar in {TARGET_LOCALE} requires reordering around placeholders, do so WITHOUT changing the placeholder.
+- Handle pluralization naturally, but never modify placeholder tokens.
+- If a string is ambiguous, assume it appears in a digital goods/subscription checkout context and choose accordingly. Never assume physical product context.
+
+========================
+QUALITY CHECK (MENTAL, BEFORE RESPONDING)
+========================
+
+Before outputting:
+
+- Validate the JSON is parseable.
+- Verify every placeholder from the source exists unchanged in the output.
+- Verify every `#` count placeholder is preserved.
+- Confirm no unintended English remains.
+- Confirm CTAs look like real checkout buttons a user would recognize.
+
+========================
+INPUT
+========================
+
+{EN_JSON}
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index 4ebddb1a48..46d5409a79 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -196,19 +196,4 @@ export const en = {
custom: { displayName: 'Custom' },
meter_credit: { displayName: 'Meter Credits' },
},
- playground: {
- interpolation: 'This is a {test}',
- plurals: {
- _mode: 'plural',
- '=0': 'No messages',
- '=1': 'One message',
- other: '# messages',
- },
- pluralsWithInterpolation: {
- _mode: 'plural',
- '=0': 'No results found for {query}',
- '=1': 'One result found for {query}',
- other: '# results found for {query}',
- },
- },
} as const
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index d2c30840a2..351f307002 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -3,19 +3,19 @@ export const nl = {
footer: {
poweredBy: 'Mogelijk gemaakt door',
merchantOfRecord:
- 'Deze bestelling wordt verwerkt door onze online reseller & Merchant of Record, Polar, die ook vragen over bestellingen en terugbetalingen afhandelt.',
+ 'Deze bestelling wordt verwerkt door onze online wederverkoper & Merchant of Record, Polar, die ook vragen over bestellingen en retouren afhandelt.',
},
form: {
- email: 'E-mail',
+ email: 'E-mailadres',
cardholderName: 'Naam kaarthouder',
purchasingAsBusiness: 'Ik koop als bedrijf',
businessName: 'Bedrijfsnaam',
billingAddress: {
label: 'Factuuradres',
- line1: 'Regel 1',
- line2: 'Regel 2',
+ line1: 'Adresregel 1',
+ line2: 'Adresregel 2',
postalCode: 'Postcode',
- city: 'Stad',
+ city: 'Plaats',
country: 'Land',
state: 'Staat',
province: 'Provincie',
@@ -30,24 +30,24 @@ export const nl = {
pricing: {
subtotal: 'Subtotaal',
taxableAmount: 'Belastbaar bedrag',
- taxes: 'BTW',
+ taxes: 'Btw',
free: 'Gratis',
payWhatYouWant: 'Betaal wat je wilt',
total: 'Totaal',
everyInterval: 'Elke {interval}',
- additionalMeteredUsage: 'Extra verbruikskosten',
+ additionalMeteredUsage: 'Extra gemeten gebruik',
perUnit: '/ eenheid',
discount: {
duration: {
months: {
- _mode: 'plural',
'=1': 'voor de eerste maand',
other: 'voor de eerste # maanden',
+ _mode: 'plural',
},
years: {
- _mode: 'plural',
'=1': 'voor het eerste jaar',
- other: 'voor de eerste # jaar',
+ other: 'voor de eerste # jaren',
+ _mode: 'plural',
},
},
},
@@ -56,35 +56,35 @@ export const nl = {
ends: 'Proefperiode eindigt op {endDate}',
duration: {
days: {
- _mode: 'plural',
'=1': '# dag proefperiode',
other: '# dagen proefperiode',
+ _mode: 'plural',
},
weeks: {
- _mode: 'plural',
'=1': '# week proefperiode',
other: '# weken proefperiode',
+ _mode: 'plural',
},
months: {
- _mode: 'plural',
'=1': '# maand proefperiode',
other: '# maanden proefperiode',
+ _mode: 'plural',
},
years: {
- _mode: 'plural',
'=1': '# jaar proefperiode',
- other: '# jaar proefperiode',
+ other: '# jaren proefperiode',
+ _mode: 'plural',
},
},
},
pwywForm: {
label: 'Noem een eerlijke prijs',
- minimum: '{amount} minimum',
+ minimum: '{amount} minimaal',
amountMinimum: 'Bedrag moet minimaal {min} zijn',
amountFreeOrMinimum: 'Bedrag moet $0 of minimaal {min} zijn',
},
productSwitcher: {
- billedRecurring: '{frequency} gefactureerd',
+ billedRecurring: 'Wordt {frequency} gefactureerd',
oneTimePurchase: 'Eenmalige aankoop',
},
card: {
@@ -92,22 +92,22 @@ export const nl = {
},
benefits: {
moreBenefits: {
- _mode: 'plural',
'=1': '# extra voordeel',
other: '# extra voordelen',
+ _mode: 'plural',
},
showMoreBenefits: {
- _mode: 'plural',
'=1': 'Toon # extra voordeel',
other: 'Toon # extra voordelen',
+ _mode: 'plural',
},
- showLess: 'Toon minder',
- granting: 'Voordelen worden toegekend...',
+ showLess: 'Minder tonen',
+ granting: 'Voordelen toekennen...',
requestNewInvite: 'Nieuwe uitnodiging aanvragen',
retryIn: {
- _mode: 'plural',
'=1': 'Probeer opnieuw over # seconde',
other: 'Probeer opnieuw over # seconden',
+ _mode: 'plural',
},
connectNewAccount: 'Nieuw account koppelen',
requestMyInvite: 'Mijn uitnodiging aanvragen',
@@ -138,39 +138,42 @@ export const nl = {
expiryDate: 'Vervaldatum',
noExpiry: 'Geen vervaldatum',
activations: 'Activaties',
- activationDeleted: 'Licentiesleutelactivatie verwijderd',
- activationDeletedDescription: 'Activatie succesvol verwijderd',
- activationDeactivationFailed: 'Deactivatie mislukt',
+ activationDeleted: 'Activering licentiesleutel verwijderd',
+ activationDeletedDescription: 'Activering succesvol verwijderd',
+ activationDeactivationFailed: 'Deactivering activering mislukt',
},
},
confirmation: {
confirmPayment: 'Betaling bevestigen',
- processingTitle: 'We verwerken je bestelling',
- successTitle: 'Je bestelling is geslaagd!',
+ processingTitle: 'We verwerken uw bestelling',
+ successTitle: 'Uw bestelling is succesvol!',
failedTitle:
- 'Er is een probleem opgetreden bij het verwerken van je bestelling',
- processingDescription: 'Even geduld terwijl we je betaling bevestigen.',
- successDescription: 'Je hebt nu recht op de voordelen van {product}.',
- failedDescription: 'Probeer het opnieuw of neem contact op met support.',
+ 'Er is een probleem opgetreden bij het verwerken van uw bestelling',
+ processingDescription: 'Even geduld terwijl we uw betaling bevestigen.',
+ successDescription:
+ 'U komt nu in aanmerking voor de voordelen van {product}.',
+ failedDescription:
+ 'Probeer het opnieuw of neem contact op met de ondersteuning.',
},
loading: {
processingOrder: 'Bestelling verwerken...',
processingPayment: 'Betaling verwerken',
- paymentSuccessful: 'Betaling geslaagd! Je producten worden klaargezet...',
+ paymentSuccessful:
+ 'Betaling succesvol! Uw producten worden klaargemaakt...',
confirmationTokenFailed:
- 'Bevestigingstoken aanmaken mislukt, probeer het later opnieuw.',
+ 'Het aanmaken van een bevestigingstoken is mislukt, probeer het later opnieuw.',
},
cta: {
- startTrial: 'Proefperiode starten',
+ startTrial: 'Start proefperiode',
subscribeNow: 'Nu abonneren',
payNow: 'Nu betalen',
- getFree: 'Gratis verkrijgen',
+ getFree: 'Gratis krijgen',
paymentsUnavailable: 'Betalingen zijn momenteel niet beschikbaar',
},
},
intervals: {
short: {
- day: 'dag',
+ day: 'dg',
week: 'wk',
month: 'mnd',
year: 'jr',
@@ -190,27 +193,26 @@ export const nl = {
},
},
benefitTypes: {
- usage: { displayName: 'Gebruik' },
- license_keys: { displayName: 'Licentiesleutels' },
- github_repository: { displayName: 'Toegang tot GitHub-repository' },
- discord: { displayName: 'Discord-uitnodiging' },
- downloadables: { displayName: 'Downloads' },
- custom: { displayName: 'Custom' },
- meter_credit: { displayName: 'Verbruikstegoed' },
- },
- playground: {
- interpolation: 'Dit is een {test}',
- plurals: {
- _mode: 'plural',
- '=0': 'Geen berichten',
- '=1': 'Eén bericht',
- other: '# berichten',
- },
- pluralsWithInterpolation: {
- _mode: 'plural',
- '=0': 'Geen resultaten gevonden voor {query}',
- '=1': 'Eén resultaat gevonden voor {query}',
- other: '# resultaten gevonden voor {query}',
+ usage: {
+ displayName: 'Gebruik',
+ },
+ license_keys: {
+ displayName: 'Licentiesleutels',
+ },
+ github_repository: {
+ displayName: 'Toegang tot GitHub-repository',
+ },
+ discord: {
+ displayName: 'Discord-uitnodiging',
+ },
+ downloadables: {
+ displayName: 'Bestandsdownloads',
+ },
+ custom: {
+ displayName: 'Aangepast',
+ },
+ meter_credit: {
+ displayName: 'Metertegoed',
},
},
} as const
diff --git a/clients/packages/i18n/vitest.config.ts b/clients/packages/i18n/vitest.config.ts
new file mode 100644
index 0000000000..0dae43e270
--- /dev/null
+++ b/clients/packages/i18n/vitest.config.ts
@@ -0,0 +1,8 @@
+import { defineConfig } from 'vitest/config'
+
+export default defineConfig({
+ test: {
+ globals: true,
+ include: ['scripts/**/*.test.ts'],
+ },
+})
diff --git a/clients/pnpm-lock.yaml b/clients/pnpm-lock.yaml
index d9d32b91bf..5868f898dc 100644
--- a/clients/pnpm-lock.yaml
+++ b/clients/pnpm-lock.yaml
@@ -800,12 +800,21 @@ importers:
packages/i18n:
devDependencies:
+ '@ai-sdk/google':
+ specifier: ^2.0.46
+ version: 2.0.46(zod@4.3.6)
'@polar-sh/typescript-config':
specifier: workspace:*
version: link:../typescript-config
'@types/react':
specifier: 19.2.13
version: 19.2.13
+ ai:
+ specifier: ^5.0.113
+ version: 5.0.113(zod@4.3.6)
+ dotenv:
+ specifier: ^16.4.5
+ version: 16.6.1
prettier:
specifier: ^3.7.4
version: 3.8.1
@@ -815,9 +824,15 @@ importers:
tsup:
specifier: ^8.5.1
version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
+ tsx:
+ specifier: ^4.19.0
+ version: 4.21.0
typescript:
specifier: latest
version: 5.9.3
+ vitest:
+ specifier: ^3.2.4
+ version: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
packages/mdx:
dependencies:
@@ -16820,6 +16835,15 @@ snapshots:
msw: 2.12.7(@types/node@24.10.10)(typescript@5.9.3)
vite: 7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ '@vitest/mocker@3.2.4(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ dependencies:
+ '@vitest/spy': 3.2.4
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ msw: 2.12.7(@types/node@25.0.2)(typescript@5.9.3)
+ vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+
'@vitest/mocker@4.0.18(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@vitest/spy': 4.0.18
@@ -16894,7 +16918,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.15
tinyrainbow: 2.0.0
- vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.10.10)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@24.10.10)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vitest: 3.2.4(@types/debug@4.1.12)(@types/node@25.0.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/utils@2.1.9':
dependencies:
@@ -24165,7 +24189,6 @@ snapshots:
get-tsconfig: 4.13.0
optionalDependencies:
fsevents: 2.3.3
- optional: true
turbo-darwin-64@2.8.3:
optional: true
@@ -24574,6 +24597,27 @@ snapshots:
- tsx
- yaml
+ vite-node@3.2.4(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.3(supports-color@10.2.2)
+ es-module-lexer: 1.7.0
+ pathe: 2.0.3
+ vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ transitivePeerDependencies:
+ - '@types/node'
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.3.0(@types/node@24.10.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
debug: 4.4.3(supports-color@10.2.2)
@@ -24710,6 +24754,50 @@ snapshots:
- tsx
- yaml
+ vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.0.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ dependencies:
+ '@types/chai': 5.2.3
+ '@vitest/expect': 3.2.4
+ '@vitest/mocker': 3.2.4(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(vite@7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@vitest/pretty-format': 3.2.4
+ '@vitest/runner': 3.2.4
+ '@vitest/snapshot': 3.2.4
+ '@vitest/spy': 3.2.4
+ '@vitest/utils': 3.2.4
+ chai: 5.3.3
+ debug: 4.4.3(supports-color@10.2.2)
+ expect-type: 1.3.0
+ magic-string: 0.30.21
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ std-env: 3.10.0
+ tinybench: 2.9.0
+ tinyexec: 0.3.2
+ tinyglobby: 0.2.15
+ tinypool: 1.1.1
+ tinyrainbow: 2.0.0
+ vite: 7.3.0(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite-node: 3.2.4(@types/node@25.0.2)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ why-is-node-running: 2.3.0
+ optionalDependencies:
+ '@types/debug': 4.1.12
+ '@types/node': 25.0.2
+ '@vitest/ui': 3.2.4(vitest@3.2.4)
+ jsdom: 27.4.0(postcss@8.5.6)
+ transitivePeerDependencies:
+ - jiti
+ - less
+ - lightningcss
+ - msw
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.0.2)(jiti@2.6.1)(jsdom@27.4.0(postcss@8.5.6))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.0.2)(typescript@5.9.3))(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@vitest/expect': 4.0.18
From 4df90c1a27598caf26a8cdbf2f5b9b55eac0570b Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 12:48:26 +0100
Subject: [PATCH 45/69] Fix typecheck
---
clients/packages/i18n/scripts/translate.ts | 14 +++++---------
clients/packages/i18n/scripts/validate.ts | 8 +++++---
2 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
index 4720862797..9d2361b7f1 100644
--- a/clients/packages/i18n/scripts/translate.ts
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -22,7 +22,7 @@ import {
unflattenKeys,
} from './utils'
-import { LOCALE_NAMES, SUPPORTED_LOCALES } from '../src/config'
+import { LOCALE_NAMES, SUPPORTED_LOCALES, SupportedLocale } from '../src/config'
dotenv.config({ path: path.join(import.meta.dirname, '../.env.local') })
dotenv.config({ path: path.join(import.meta.dirname, '../.env') })
@@ -350,7 +350,7 @@ function validate(
async function main() {
// Import source locale
- const enModule = await import('../src/locales/en.ts')
+ const enModule = await import('../src/locales/en')
const en = enModule.en as NestedObject
const locks = JSON.parse(fs.readFileSync(LOCKS_FILE, 'utf-8')) as Record<
@@ -362,13 +362,9 @@ async function main() {
const sourceKeys = flattenKeys(en)
const pluralPaths = findPluralPaths(en as Record)
- const targetLocales = SUPPORTED_LOCALES.filter((l): l is string => l !== 'en')
-
- // Safety guard: never write to en.ts
- if (targetLocales.includes('en')) {
- log.error('Cannot translate to English (source locale)')
- process.exit(1)
- }
+ const targetLocales = SUPPORTED_LOCALES.filter(
+ (l): l is Exclude => l !== 'en',
+ )
await translate(
en,
diff --git a/clients/packages/i18n/scripts/validate.ts b/clients/packages/i18n/scripts/validate.ts
index 41aa878404..de6943a4d4 100644
--- a/clients/packages/i18n/scripts/validate.ts
+++ b/clients/packages/i18n/scripts/validate.ts
@@ -8,7 +8,7 @@ import {
flattenKeysToStrings,
} from './utils'
-import { LOCALE_NAMES, SUPPORTED_LOCALES } from '../src/config'
+import { LOCALE_NAMES, SUPPORTED_LOCALES, SupportedLocale } from '../src/config'
const LOCALES_DIR = path.join(import.meta.dirname, '../src/locales')
@@ -25,12 +25,14 @@ async function loadLocale(locale: string): Promise {
async function validate() {
const errors: string[] = []
- const enModule = await import('../src/locales/en.ts')
+ const enModule = await import('../src/locales/en')
const en = enModule.en as NestedObject
const sourceKeys = flattenKeys(en)
const sourceStrings = flattenKeysToStrings(en)
- const targetLocales = SUPPORTED_LOCALES.filter((l): l is string => l !== 'en')
+ const targetLocales = SUPPORTED_LOCALES.filter(
+ (l): l is Exclude => l !== 'en',
+ )
log.header('Polar i18n Validation')
log.info(`Source: ${log.bold(sourceKeys.size.toString())} keys in en.ts`)
From 02967c2072ef55387126d69ae07b4d6c985ccdc5 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 13:44:50 +0100
Subject: [PATCH 46/69] Add `_llmContext` support to the Typescript helpers
---
clients/packages/i18n/scripts/translate.ts | 2 +-
clients/packages/i18n/scripts/utils.test.ts | 61 +++++++++++++++------
clients/packages/i18n/scripts/utils.ts | 14 ++---
clients/packages/i18n/src/index.ts | 52 ++++++++++++------
clients/packages/i18n/src/locales/en.ts | 14 ++++-
5 files changed, 99 insertions(+), 44 deletions(-)
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
index 9d2361b7f1..a50e8df653 100644
--- a/clients/packages/i18n/scripts/translate.ts
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -35,7 +35,7 @@ const CACHE_FILE = path.join(CONFIG_DIR, '.cache.json')
async function callLLM(
targetLocale: string,
- sourceStrings: Record,
+ sourceStrings: Record,
prompt: string,
): Promise> {
const localeName = LOCALE_NAMES[targetLocale] || targetLocale
diff --git a/clients/packages/i18n/scripts/utils.test.ts b/clients/packages/i18n/scripts/utils.test.ts
index 0a16421358..861b2a9fa9 100644
--- a/clients/packages/i18n/scripts/utils.test.ts
+++ b/clients/packages/i18n/scripts/utils.test.ts
@@ -24,8 +24,8 @@ describe('getStringValue', () => {
expect(getStringValue({ value: 'hello' })).toBe('hello')
})
- it('extracts value from object with value and llmContext', () => {
- expect(getStringValue({ value: 'hello', llmContext: 'context' })).toBe(
+ it('extracts value from object with value and _llmContext', () => {
+ expect(getStringValue({ value: 'hello', _llmContext: 'context' })).toBe(
'hello',
)
})
@@ -36,16 +36,18 @@ describe('hasLlmContext', () => {
expect(hasLlmContext('hello')).toBe(false)
})
- it('returns false for object without llmContext', () => {
+ it('returns false for object without _llmContext', () => {
expect(hasLlmContext({ value: 'hello' })).toBe(false)
})
- it('returns true for object with llmContext', () => {
- expect(hasLlmContext({ value: 'hello', llmContext: 'context' })).toBe(true)
+ it('returns true for object with _llmContext', () => {
+ expect(hasLlmContext({ value: 'hello', _llmContext: 'context' })).toBe(true)
})
- it('returns false for object with undefined llmContext', () => {
- expect(hasLlmContext({ value: 'hello', llmContext: undefined })).toBe(false)
+ it('returns false for object with undefined _llmContext', () => {
+ expect(hasLlmContext({ value: 'hello', _llmContext: undefined })).toBe(
+ false,
+ )
})
})
@@ -156,27 +158,27 @@ describe('flattenKeys', () => {
it('handles object entries with value property', () => {
const obj = {
- greeting: { value: 'hello', llmContext: 'A greeting message' },
+ greeting: { value: 'hello', _llmContext: 'A greeting message' },
}
const result = flattenKeys(obj)
expect(result.get('greeting')).toEqual({
value: 'hello',
- llmContext: 'A greeting message',
+ _llmContext: 'A greeting message',
})
})
it('handles mixed string and object entries', () => {
const obj = {
simple: 'hello',
- complex: { value: 'world', llmContext: 'context' },
+ complex: { value: 'world', _llmContext: 'context' },
}
const result = flattenKeys(obj)
expect(result.get('simple')).toBe('hello')
expect(result.get('complex')).toEqual({
value: 'world',
- llmContext: 'context',
+ _llmContext: 'context',
})
})
@@ -220,7 +222,7 @@ describe('flattenKeysToStrings', () => {
it('extracts string values from all entries', () => {
const obj = {
simple: 'hello',
- complex: { value: 'world', llmContext: 'context' },
+ complex: { value: 'world', _llmContext: 'context' },
}
const result = flattenKeysToStrings(obj)
@@ -464,19 +466,46 @@ describe('prepareForLLM', () => {
})
})
- it('includes llmContext when available', () => {
+ it('includes _llmContext when available', () => {
const sourceKeys = new Map<
string,
- string | { value: string; llmContext?: string }
- >([['greeting', { value: 'hello', llmContext: 'A friendly greeting' }]])
+ string | { value: string; _llmContext?: string }
+ >([['greeting', { value: 'hello', _llmContext: 'A friendly greeting' }]])
const result = prepareForLLM(sourceKeys, ['greeting'])
expect(result).toEqual({
- greeting: { value: 'hello', llmContext: 'A friendly greeting' },
+ greeting: { value: 'hello', _llmContext: 'A friendly greeting' },
})
})
+ it('_llmContext survives JSON serialization (as sent to LLM)', () => {
+ const sourceKeys = new Map<
+ string,
+ string | { value: string; _llmContext?: string }
+ >([
+ [
+ 'checkout.form.email',
+ {
+ value: 'Email',
+ _llmContext: 'Label for the email input on checkout',
+ },
+ ],
+ ['checkout.form.submit', 'Submit'],
+ ])
+
+ const result = prepareForLLM(sourceKeys, [
+ 'checkout.form.email',
+ 'checkout.form.submit',
+ ])
+ const json = JSON.parse(JSON.stringify(result))
+
+ expect(json['checkout.form.email']._llmContext).toBe(
+ 'Label for the email input on checkout',
+ )
+ expect(json['checkout.form.submit']._llmContext).toBeUndefined()
+ })
+
it('only includes requested keys', () => {
const sourceKeys = new Map([
['greeting', 'hello'],
diff --git a/clients/packages/i18n/scripts/utils.ts b/clients/packages/i18n/scripts/utils.ts
index 0bceb54922..94e01e8c39 100644
--- a/clients/packages/i18n/scripts/utils.ts
+++ b/clients/packages/i18n/scripts/utils.ts
@@ -2,7 +2,7 @@
* Shared utility functions for i18n scripts
*/
-export type EntryValue = string | { value: string; llmContext?: string }
+export type EntryValue = string | { value: string; _llmContext?: string }
export type NestedObject = { [key: string]: EntryValue | NestedObject }
export type TranslationCache = Record>
@@ -35,11 +35,11 @@ export function getStringValue(entry: EntryValue): string {
*/
export function hasLlmContext(
entry: EntryValue,
-): entry is { value: string; llmContext: string } {
+): entry is { value: string; _llmContext: string } {
return (
typeof entry === 'object' &&
- 'llmContext' in entry &&
- entry.llmContext !== undefined
+ '_llmContext' in entry &&
+ entry._llmContext !== undefined
)
}
@@ -242,15 +242,15 @@ export function findOrphanedKeys(
export function prepareForLLM(
sourceKeys: Map,
keys: string[],
-): Record {
- const result: Record = {}
+): Record {
+ const result: Record = {}
for (const key of keys) {
const entry = sourceKeys.get(key)
if (!entry) continue
if (hasLlmContext(entry)) {
- result[key] = { value: entry.value, llmContext: entry.llmContext }
+ result[key] = { value: entry.value, _llmContext: entry._llmContext }
} else {
result[key] = { value: getStringValue(entry) }
}
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index dd2fc40806..b783986651 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -107,13 +107,17 @@ export type Translations = typeof en
type LeafPaths = T extends object
? '_mode' extends keyof T
? never
- : {
- [K in keyof T & string]: '_mode' extends keyof T[K]
- ? K
- : T[K] extends object
- ? `${K}.${LeafPaths}`
- : K
- }[keyof T & string]
+ : '_llmContext' extends keyof T
+ ? never
+ : {
+ [K in keyof T & string]: '_mode' extends keyof T[K]
+ ? K
+ : '_llmContext' extends keyof T[K]
+ ? K
+ : T[K] extends object
+ ? `${K}.${LeafPaths}`
+ : K
+ }[keyof T & string]
: never
export type TranslationKey = LeafPaths
@@ -159,14 +163,20 @@ type PluralShape = {
: T[K]
}
+type AnnotatedEntryShape =
+ | StringShape
+ | { value: StringShape; _llmContext: string }
+
type LocaleShape = {
[K in keyof T]: T[K] extends { _mode: string }
? PluralShape
- : T[K] extends string
- ? StringShape
- : T[K] extends object
- ? LocaleShape
- : T[K]
+ : T[K] extends { value: string; _llmContext: string }
+ ? AnnotatedEntryShape
+ : T[K] extends string
+ ? StringShape
+ : T[K] extends object
+ ? LocaleShape
+ : T[K]
}
// Get all required interpolation keys for a translation key
@@ -175,9 +185,11 @@ type InterpolationKeys =
ValueAtPath extends infer V
? '_mode' extends keyof V
? 'count' | ExtractPlaceholders] & string>
- : V extends string
- ? ExtractPlaceholders
- : never
+ : V extends { value: infer S extends string }
+ ? ExtractPlaceholders
+ : V extends string
+ ? ExtractPlaceholders
+ : never
: never
type InterpolationValue = string | number | { toString(): string }
@@ -245,8 +257,14 @@ export const useTranslations = (locale: AcceptedLocale): TranslateFn => {
return result
}
- // Regular string template
- const template = value as string
+ // Handle annotated entries — extract the value string
+ const template =
+ typeof value === 'object' &&
+ value !== null &&
+ 'value' in value &&
+ typeof (value as { value: unknown }).value === 'string'
+ ? (value as { value: string }).value
+ : (value as string)
if (!interpolations) {
return template
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index 46d5409a79..ce782c7c58 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -12,8 +12,16 @@ export const en = {
businessName: 'Business name',
billingAddress: {
label: 'Billing address',
- line1: 'Line 1',
- line2: 'Line 2',
+ line1: {
+ value: 'Line 1',
+ _llmContext:
+ 'The first line of the billing address, typically including street address and number.',
+ },
+ line2: {
+ value: 'Line 2',
+ _llmContext:
+ 'The second line of the billing address, typically used for apartment, suite, unit, building, floor, etc.',
+ },
postalCode: 'Postal code',
city: 'City',
country: 'Country',
@@ -159,7 +167,7 @@ export const en = {
'Failed to create confirmation token, please try again later.',
},
cta: {
- startTrial: 'Start Trial',
+ startTrial: 'Start trial',
subscribeNow: 'Subscribe now',
payNow: 'Pay now',
getFree: 'Get for free',
From c2e03da253bea003f63dc949ae93513dfa9dea7d Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 22:08:53 +0100
Subject: [PATCH 47/69] Revert NL changes to reviewed file from main branch
---
clients/packages/i18n/src/locales/nl.ts | 103 ++++++++++--------------
1 file changed, 43 insertions(+), 60 deletions(-)
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index 351f307002..d8bdc825cf 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -3,19 +3,19 @@ export const nl = {
footer: {
poweredBy: 'Mogelijk gemaakt door',
merchantOfRecord:
- 'Deze bestelling wordt verwerkt door onze online wederverkoper & Merchant of Record, Polar, die ook vragen over bestellingen en retouren afhandelt.',
+ 'Deze bestelling wordt verwerkt door onze online reseller & Merchant of Record, Polar, die ook vragen over bestellingen en terugbetalingen afhandelt.',
},
form: {
- email: 'E-mailadres',
+ email: 'E-mail',
cardholderName: 'Naam kaarthouder',
purchasingAsBusiness: 'Ik koop als bedrijf',
businessName: 'Bedrijfsnaam',
billingAddress: {
label: 'Factuuradres',
- line1: 'Adresregel 1',
- line2: 'Adresregel 2',
+ line1: 'Regel 1',
+ line2: 'Regel 2',
postalCode: 'Postcode',
- city: 'Plaats',
+ city: 'Stad',
country: 'Land',
state: 'Staat',
province: 'Provincie',
@@ -30,24 +30,24 @@ export const nl = {
pricing: {
subtotal: 'Subtotaal',
taxableAmount: 'Belastbaar bedrag',
- taxes: 'Btw',
+ taxes: 'BTW',
free: 'Gratis',
payWhatYouWant: 'Betaal wat je wilt',
total: 'Totaal',
everyInterval: 'Elke {interval}',
- additionalMeteredUsage: 'Extra gemeten gebruik',
+ additionalMeteredUsage: 'Extra verbruikskosten',
perUnit: '/ eenheid',
discount: {
duration: {
months: {
+ _mode: 'plural',
'=1': 'voor de eerste maand',
other: 'voor de eerste # maanden',
- _mode: 'plural',
},
years: {
- '=1': 'voor het eerste jaar',
- other: 'voor de eerste # jaren',
_mode: 'plural',
+ '=1': 'voor het eerste jaar',
+ other: 'voor de eerste # jaar',
},
},
},
@@ -56,35 +56,35 @@ export const nl = {
ends: 'Proefperiode eindigt op {endDate}',
duration: {
days: {
+ _mode: 'plural',
'=1': '# dag proefperiode',
other: '# dagen proefperiode',
- _mode: 'plural',
},
weeks: {
+ _mode: 'plural',
'=1': '# week proefperiode',
other: '# weken proefperiode',
- _mode: 'plural',
},
months: {
+ _mode: 'plural',
'=1': '# maand proefperiode',
other: '# maanden proefperiode',
- _mode: 'plural',
},
years: {
- '=1': '# jaar proefperiode',
- other: '# jaren proefperiode',
_mode: 'plural',
+ '=1': '# jaar proefperiode',
+ other: '# jaar proefperiode',
},
},
},
pwywForm: {
label: 'Noem een eerlijke prijs',
- minimum: '{amount} minimaal',
+ minimum: '{amount} minimum',
amountMinimum: 'Bedrag moet minimaal {min} zijn',
amountFreeOrMinimum: 'Bedrag moet $0 of minimaal {min} zijn',
},
productSwitcher: {
- billedRecurring: 'Wordt {frequency} gefactureerd',
+ billedRecurring: '{frequency} gefactureerd',
oneTimePurchase: 'Eenmalige aankoop',
},
card: {
@@ -92,22 +92,22 @@ export const nl = {
},
benefits: {
moreBenefits: {
+ _mode: 'plural',
'=1': '# extra voordeel',
other: '# extra voordelen',
- _mode: 'plural',
},
showMoreBenefits: {
+ _mode: 'plural',
'=1': 'Toon # extra voordeel',
other: 'Toon # extra voordelen',
- _mode: 'plural',
},
- showLess: 'Minder tonen',
- granting: 'Voordelen toekennen...',
+ showLess: 'Toon minder',
+ granting: 'Voordelen worden toegekend...',
requestNewInvite: 'Nieuwe uitnodiging aanvragen',
retryIn: {
+ _mode: 'plural',
'=1': 'Probeer opnieuw over # seconde',
other: 'Probeer opnieuw over # seconden',
- _mode: 'plural',
},
connectNewAccount: 'Nieuw account koppelen',
requestMyInvite: 'Mijn uitnodiging aanvragen',
@@ -138,42 +138,39 @@ export const nl = {
expiryDate: 'Vervaldatum',
noExpiry: 'Geen vervaldatum',
activations: 'Activaties',
- activationDeleted: 'Activering licentiesleutel verwijderd',
- activationDeletedDescription: 'Activering succesvol verwijderd',
- activationDeactivationFailed: 'Deactivering activering mislukt',
+ activationDeleted: 'Licentiesleutelactivatie verwijderd',
+ activationDeletedDescription: 'Activatie succesvol verwijderd',
+ activationDeactivationFailed: 'Deactivatie mislukt',
},
},
confirmation: {
confirmPayment: 'Betaling bevestigen',
- processingTitle: 'We verwerken uw bestelling',
- successTitle: 'Uw bestelling is succesvol!',
+ processingTitle: 'We verwerken je bestelling',
+ successTitle: 'Je bestelling is geslaagd!',
failedTitle:
- 'Er is een probleem opgetreden bij het verwerken van uw bestelling',
- processingDescription: 'Even geduld terwijl we uw betaling bevestigen.',
- successDescription:
- 'U komt nu in aanmerking voor de voordelen van {product}.',
- failedDescription:
- 'Probeer het opnieuw of neem contact op met de ondersteuning.',
+ 'Er is een probleem opgetreden bij het verwerken van je bestelling',
+ processingDescription: 'Even geduld terwijl we je betaling bevestigen.',
+ successDescription: 'Je hebt nu recht op de voordelen van {product}.',
+ failedDescription: 'Probeer het opnieuw of neem contact op met support.',
},
loading: {
processingOrder: 'Bestelling verwerken...',
processingPayment: 'Betaling verwerken',
- paymentSuccessful:
- 'Betaling succesvol! Uw producten worden klaargemaakt...',
+ paymentSuccessful: 'Betaling geslaagd! Je producten worden klaargezet...',
confirmationTokenFailed:
- 'Het aanmaken van een bevestigingstoken is mislukt, probeer het later opnieuw.',
+ 'Bevestigingstoken aanmaken mislukt, probeer het later opnieuw.',
},
cta: {
- startTrial: 'Start proefperiode',
+ startTrial: 'Proefperiode starten',
subscribeNow: 'Nu abonneren',
payNow: 'Nu betalen',
- getFree: 'Gratis krijgen',
+ getFree: 'Gratis verkrijgen',
paymentsUnavailable: 'Betalingen zijn momenteel niet beschikbaar',
},
},
intervals: {
short: {
- day: 'dg',
+ day: 'dag',
week: 'wk',
month: 'mnd',
year: 'jr',
@@ -193,26 +190,12 @@ export const nl = {
},
},
benefitTypes: {
- usage: {
- displayName: 'Gebruik',
- },
- license_keys: {
- displayName: 'Licentiesleutels',
- },
- github_repository: {
- displayName: 'Toegang tot GitHub-repository',
- },
- discord: {
- displayName: 'Discord-uitnodiging',
- },
- downloadables: {
- displayName: 'Bestandsdownloads',
- },
- custom: {
- displayName: 'Aangepast',
- },
- meter_credit: {
- displayName: 'Metertegoed',
- },
+ usage: { displayName: 'Gebruik' },
+ license_keys: { displayName: 'Licentiesleutels' },
+ github_repository: { displayName: 'Toegang tot GitHub-repository' },
+ discord: { displayName: 'Discord-uitnodiging' },
+ downloadables: { displayName: 'Downloads' },
+ custom: { displayName: 'Custom' },
+ meter_credit: { displayName: 'Verbruikstegoed' },
},
} as const
From 7c9e60c124d41652f31cba25b06fdba43a612d24 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 14:45:26 +0100
Subject: [PATCH 48/69] Add German translations
---
clients/packages/i18n/src/config.ts | 3 +-
.../i18n/src/locales/config/.cache.json | 122 +++++++++++
clients/packages/i18n/src/locales/de.ts | 206 ++++++++++++++++++
3 files changed, 330 insertions(+), 1 deletion(-)
create mode 100644 clients/packages/i18n/src/locales/de.ts
diff --git a/clients/packages/i18n/src/config.ts b/clients/packages/i18n/src/config.ts
index 772709386a..53b85b20b6 100644
--- a/clients/packages/i18n/src/config.ts
+++ b/clients/packages/i18n/src/config.ts
@@ -1,4 +1,4 @@
-export const SUPPORTED_LOCALES = ['en', 'nl', 'fr', 'sv', 'es'] as const
+export const SUPPORTED_LOCALES = ['en', 'nl', 'fr', 'sv', 'es', 'de'] as const
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
export const DEFAULT_LOCALE: SupportedLocale = 'en'
export type TranslatedLocale = Exclude
@@ -9,4 +9,5 @@ export const LOCALE_NAMES: Record = {
sv: 'Swedish',
es: 'Spanish',
fr: 'French',
+ de: 'German',
}
diff --git a/clients/packages/i18n/src/locales/config/.cache.json b/clients/packages/i18n/src/locales/config/.cache.json
index e9d46fab5f..ed83c2e74b 100644
--- a/clients/packages/i18n/src/locales/config/.cache.json
+++ b/clients/packages/i18n/src/locales/config/.cache.json
@@ -486,5 +486,127 @@
"benefitTypes.downloadables": "File Downloads",
"benefitTypes.custom": "Custom",
"benefitTypes.meter_credit": "Meter Credits"
+ },
+ "de": {
+ "checkout.footer.poweredBy": "Powered by",
+ "checkout.footer.merchantOfRecord": "This order is processed by our online reseller & Merchant of Record, Polar, who also handles order-related inquiries and returns.",
+ "checkout.form.email": "Email",
+ "checkout.form.cardholderName": "Cardholder name",
+ "checkout.form.purchasingAsBusiness": "I'm purchasing as a business",
+ "checkout.form.businessName": "Business name",
+ "checkout.form.billingAddress.label": "Billing address",
+ "checkout.form.billingAddress.line1": "Street address",
+ "checkout.form.billingAddress.line2": "Apartment or unit number",
+ "checkout.form.billingAddress.postalCode": "Postal code",
+ "checkout.form.billingAddress.city": "City",
+ "checkout.form.billingAddress.country": "Country",
+ "checkout.form.billingAddress.state": "State",
+ "checkout.form.billingAddress.province": "Province",
+ "checkout.form.billingAddress.stateProvince": "State / Province",
+ "checkout.form.taxId": "Tax ID",
+ "checkout.form.discountCode": "Discount code",
+ "checkout.form.optional": "Optional",
+ "checkout.form.apply": "Apply",
+ "checkout.form.fieldRequired": "This field is required",
+ "checkout.pricing.subtotal": "Subtotal",
+ "checkout.pricing.taxableAmount": "Taxable amount",
+ "checkout.pricing.taxes": "Taxes",
+ "checkout.pricing.free": "Free",
+ "checkout.pricing.payWhatYouWant": "Pay what you want",
+ "checkout.pricing.total": "Total",
+ "checkout.pricing.everyInterval": "Every {interval}",
+ "checkout.pricing.additionalMeteredUsage": "Additional metered usage",
+ "checkout.pricing.perUnit": "/ unit",
+ "checkout.pricing.discount.duration.months.=1": "for the first month",
+ "checkout.pricing.discount.duration.months.other": "for the first # months",
+ "checkout.pricing.discount.duration.years.=1": "for the first year",
+ "checkout.pricing.discount.duration.years.other": "for the first # years",
+ "checkout.trial.ends": "Trial ends {endDate}",
+ "checkout.trial.duration.days.=1": "# day trial",
+ "checkout.trial.duration.days.other": "# days trial",
+ "checkout.trial.duration.weeks.=1": "# week trial",
+ "checkout.trial.duration.weeks.other": "# weeks trial",
+ "checkout.trial.duration.months.=1": "# month trial",
+ "checkout.trial.duration.months.other": "# months trial",
+ "checkout.trial.duration.years.=1": "# year trial",
+ "checkout.trial.duration.years.other": "# years trial",
+ "checkout.pwywForm.label": "Name a fair price",
+ "checkout.pwywForm.minimum": "{amount} minimum",
+ "checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.productSwitcher.billedRecurring": "Billed {frequency}",
+ "checkout.productSwitcher.oneTimePurchase": "One-time purchase",
+ "checkout.card.included": "Included",
+ "checkout.benefits.moreBenefits.=1": "# more benefit",
+ "checkout.benefits.moreBenefits.other": "# more benefits",
+ "checkout.benefits.showMoreBenefits.=1": "Show # more benefit",
+ "checkout.benefits.showMoreBenefits.other": "Show # more benefits",
+ "checkout.benefits.showLess": "Show less",
+ "checkout.benefits.granting": "Granting benefits...",
+ "checkout.benefits.requestNewInvite": "Request new invite",
+ "checkout.benefits.retryIn.=1": "Try again in # second",
+ "checkout.benefits.retryIn.other": "Try again in # seconds",
+ "checkout.benefits.connectNewAccount": "Connect new account",
+ "checkout.benefits.requestMyInvite": "Request my invite",
+ "checkout.benefits.github.connect": "Connect GitHub account",
+ "checkout.benefits.github.goTo": "Go to {repository}",
+ "checkout.benefits.github.selectAccount": "Select a GitHub account",
+ "checkout.benefits.discord.connect": "Connect Discord account",
+ "checkout.benefits.discord.open": "Open Discord",
+ "checkout.benefits.discord.selectAccount": "Select a Discord account",
+ "checkout.benefits.licenseKey.copy": "Copy",
+ "checkout.benefits.licenseKey.copiedToClipboard": "Copied To Clipboard",
+ "checkout.benefits.licenseKey.copiedToClipboardDescription": "License Key was copied to clipboard",
+ "checkout.benefits.licenseKey.loading": "Loading...",
+ "checkout.benefits.licenseKey.status": "Status",
+ "checkout.benefits.licenseKey.statusGranted": "Granted",
+ "checkout.benefits.licenseKey.statusRevoked": "Revoked",
+ "checkout.benefits.licenseKey.statusDisabled": "Disabled",
+ "checkout.benefits.licenseKey.usage": "Usage",
+ "checkout.benefits.licenseKey.validations": "Validations",
+ "checkout.benefits.licenseKey.validatedAt": "Validated At",
+ "checkout.benefits.licenseKey.neverValidated": "Never Validated",
+ "checkout.benefits.licenseKey.expiryDate": "Expiry Date",
+ "checkout.benefits.licenseKey.noExpiry": "No Expiry",
+ "checkout.benefits.licenseKey.activations": "Activations",
+ "checkout.benefits.licenseKey.activationDeleted": "License Key Activation Deleted",
+ "checkout.benefits.licenseKey.activationDeletedDescription": "Activation deleted successfully",
+ "checkout.benefits.licenseKey.activationDeactivationFailed": "Activation Deactivation Failed",
+ "checkout.confirmation.confirmPayment": "Confirm payment",
+ "checkout.confirmation.processingTitle": "We are processing your order",
+ "checkout.confirmation.successTitle": "Your order was successful!",
+ "checkout.confirmation.failedTitle": "A problem occurred while processing your order",
+ "checkout.confirmation.processingDescription": "Please wait while we confirm your payment.",
+ "checkout.confirmation.successDescription": "You're now eligible for the benefits of {product}.",
+ "checkout.confirmation.failedDescription": "Please try again or contact support.",
+ "checkout.loading.processingOrder": "Processing order...",
+ "checkout.loading.processingPayment": "Processing payment",
+ "checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
+ "checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
+ "checkout.cta.startTrial": "Start trial",
+ "checkout.cta.subscribeNow": "Subscribe now",
+ "checkout.cta.payNow": "Pay now",
+ "checkout.cta.getFree": "Get for free",
+ "checkout.cta.paymentsUnavailable": "Payments are currently unavailable",
+ "intervals.short.day": "dy",
+ "intervals.short.week": "wk",
+ "intervals.short.month": "mo",
+ "intervals.short.year": "yr",
+ "intervals.long.day": "day",
+ "intervals.long.week": "week",
+ "intervals.long.month": "month",
+ "intervals.long.year": "year",
+ "intervals.frequency.day": "daily",
+ "intervals.frequency.week": "weekly",
+ "intervals.frequency.month": "monthly",
+ "intervals.frequency.year": "yearly",
+ "intervals.frequency.everyOrdinalInterval": "every {ordinal} {interval}",
+ "benefitTypes.usage": "Usage",
+ "benefitTypes.license_keys": "License Keys",
+ "benefitTypes.github_repository": "GitHub Repository Access",
+ "benefitTypes.discord": "Discord Invite",
+ "benefitTypes.downloadables": "File Downloads",
+ "benefitTypes.custom": "Custom",
+ "benefitTypes.meter_credit": "Meter Credits"
}
}
diff --git a/clients/packages/i18n/src/locales/de.ts b/clients/packages/i18n/src/locales/de.ts
new file mode 100644
index 0000000000..28f34a1b59
--- /dev/null
+++ b/clients/packages/i18n/src/locales/de.ts
@@ -0,0 +1,206 @@
+export const de = {
+ checkout: {
+ footer: {
+ poweredBy: 'Bereitgestellt von',
+ merchantOfRecord:
+ 'Diese Bestellung wird von unserem Online-Reseller & Merchant of Record, Polar, bearbeitet, der auch Anfragen und Rücksendungen im Zusammenhang mit der Bestellung abwickelt.',
+ },
+ form: {
+ email: 'E-Mail',
+ cardholderName: 'Karteninhabername',
+ purchasingAsBusiness: 'Ich kaufe als Unternehmen',
+ businessName: 'Firmenname',
+ billingAddress: {
+ label: 'Rechnungsadresse',
+ line1: 'Straße und Hausnummer',
+ line2: 'Adresszusatz',
+ postalCode: 'Postleitzahl',
+ city: 'Ort',
+ country: 'Land',
+ state: 'Bundesland',
+ province: 'Provinz',
+ stateProvince: 'Bundesland / Provinz',
+ },
+ taxId: 'Steuer-ID',
+ discountCode: 'Rabattcode',
+ optional: 'Optional',
+ apply: 'Anwenden',
+ fieldRequired: 'Dieses Feld ist erforderlich',
+ },
+ pricing: {
+ subtotal: 'Zwischensumme',
+ taxableAmount: 'Steuerpflichtiger Betrag',
+ taxes: 'Steuern',
+ free: 'Kostenlos',
+ payWhatYouWant: 'Zahle, was du möchtest',
+ total: 'Gesamtbetrag',
+ everyInterval: 'Alle {interval}',
+ additionalMeteredUsage: 'Zusätzliche nutzungsbasierte Abrechnung',
+ perUnit: '/ Einheit',
+ discount: {
+ duration: {
+ months: {
+ '=1': 'für den ersten Monat',
+ other: 'für die ersten # Monate',
+ _mode: 'plural',
+ },
+ years: {
+ '=1': 'für das erste Jahr',
+ other: 'für die ersten # Jahre',
+ _mode: 'plural',
+ },
+ },
+ },
+ },
+ trial: {
+ ends: 'Testphase endet am {endDate}',
+ duration: {
+ days: {
+ '=1': '# Tag Testphase',
+ other: '# Tage Testphase',
+ _mode: 'plural',
+ },
+ weeks: {
+ '=1': '# Woche Testphase',
+ other: '# Wochen Testphase',
+ _mode: 'plural',
+ },
+ months: {
+ '=1': '# Monat Testphase',
+ other: '# Monate Testphase',
+ _mode: 'plural',
+ },
+ years: {
+ '=1': '# Jahr Testphase',
+ other: '# Jahre Testphase',
+ _mode: 'plural',
+ },
+ },
+ },
+ pwywForm: {
+ label: 'Nenne einen fairen Preis',
+ minimum: 'Mindestens {amount}',
+ amountMinimum: 'Der Betrag muss mindestens {min} betragen',
+ amountFreeOrMinimum: 'Der Betrag muss 0 $ oder mindestens {min} betragen',
+ },
+ productSwitcher: {
+ billedRecurring: 'Abrechnung {frequency}',
+ oneTimePurchase: 'Einmaliger Kauf',
+ },
+ card: {
+ included: 'Inbegriffen',
+ },
+ benefits: {
+ moreBenefits: {
+ '=1': '# weiterer Vorteil',
+ other: '# weitere Vorteile',
+ _mode: 'plural',
+ },
+ showMoreBenefits: {
+ '=1': '# weiteren Vorteil anzeigen',
+ other: '# weitere Vorteile anzeigen',
+ _mode: 'plural',
+ },
+ showLess: 'Weniger anzeigen',
+ granting: 'Vorteile werden gewährt...',
+ requestNewInvite: 'Neue Einladung anfordern',
+ retryIn: {
+ '=1': 'Erneut versuchen in # Sekunde',
+ other: 'Erneut versuchen in # Sekunden',
+ _mode: 'plural',
+ },
+ connectNewAccount: 'Neues Konto verbinden',
+ requestMyInvite: 'Meine Einladung anfordern',
+ github: {
+ connect: 'GitHub-Konto verbinden',
+ goTo: 'Zu {repository} gehen',
+ selectAccount: 'GitHub-Konto auswählen',
+ },
+ discord: {
+ connect: 'Discord-Konto verbinden',
+ open: 'Discord öffnen',
+ selectAccount: 'Discord-Konto auswählen',
+ },
+ licenseKey: {
+ copy: 'Kopieren',
+ copiedToClipboard: 'In die Zwischenablage kopiert',
+ copiedToClipboardDescription:
+ 'Lizenzschlüssel wurde in die Zwischenablage kopiert',
+ loading: 'Wird geladen...',
+ status: 'Status',
+ statusGranted: 'Gewährt',
+ statusRevoked: 'Widerrufen',
+ statusDisabled: 'Deaktiviert',
+ usage: 'Nutzung',
+ validations: 'Validierungen',
+ validatedAt: 'Validiert am',
+ neverValidated: 'Nie validiert',
+ expiryDate: 'Ablaufdatum',
+ noExpiry: 'Kein Ablaufdatum',
+ activations: 'Aktivierungen',
+ activationDeleted: 'Lizenzschlüssel-Aktivierung gelöscht',
+ activationDeletedDescription: 'Aktivierung erfolgreich gelöscht',
+ activationDeactivationFailed:
+ 'Deaktivierung der Aktivierung fehlgeschlagen',
+ },
+ },
+ confirmation: {
+ confirmPayment: 'Zahlung bestätigen',
+ processingTitle: 'Wir bearbeiten Ihre Bestellung',
+ successTitle: 'Ihre Bestellung war erfolgreich!',
+ failedTitle:
+ 'Bei der Bearbeitung Ihrer Bestellung ist ein Problem aufgetreten',
+ processingDescription:
+ 'Bitte warten Sie, während wir Ihre Zahlung bestätigen.',
+ successDescription:
+ 'Sie sind nun berechtigt, die Vorteile von {product} zu nutzen.',
+ failedDescription:
+ 'Bitte versuchen Sie es erneut oder kontaktieren Sie den Support.',
+ },
+ loading: {
+ processingOrder: 'Bestellung wird bearbeitet...',
+ processingPayment: 'Zahlung wird bearbeitet',
+ paymentSuccessful:
+ 'Zahlung erfolgreich! Ihre Produkte werden vorbereitet...',
+ confirmationTokenFailed:
+ 'Bestätigungstoken konnte nicht erstellt werden, bitte versuchen Sie es später erneut.',
+ },
+ cta: {
+ startTrial: 'Testphase starten',
+ subscribeNow: 'Jetzt abonnieren',
+ payNow: 'Jetzt bezahlen',
+ getFree: 'Kostenlos erhalten',
+ paymentsUnavailable: 'Zahlungen sind derzeit nicht verfügbar',
+ },
+ },
+ intervals: {
+ short: {
+ day: 'Tg',
+ week: 'Wo',
+ month: 'Mon',
+ year: 'J',
+ },
+ long: {
+ day: 'Tag',
+ week: 'Woche',
+ month: 'Monat',
+ year: 'Jahr',
+ },
+ frequency: {
+ day: 'täglich',
+ week: 'wöchentlich',
+ month: 'monatlich',
+ year: 'jährlich',
+ everyOrdinalInterval: 'alle {ordinal} {interval}',
+ },
+ },
+ benefitTypes: {
+ usage: 'Nutzung',
+ license_keys: 'Lizenzschlüssel',
+ github_repository: 'GitHub-Repository-Zugang',
+ discord: 'Discord-Einladung',
+ downloadables: 'Dateidownloads',
+ custom: 'Benutzerdefiniert',
+ meter_credit: 'Verbrauchsguthaben',
+ },
+} as const
From 28ec72193f96757609ab5ed338284e3da9c368aa Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 21:13:14 +0100
Subject: [PATCH 49/69] Fix build
---
clients/packages/i18n/src/index.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/clients/packages/i18n/src/index.ts b/clients/packages/i18n/src/index.ts
index d74441688d..3f951466d3 100644
--- a/clients/packages/i18n/src/index.ts
+++ b/clients/packages/i18n/src/index.ts
@@ -99,6 +99,7 @@ export function isSupportedLocale(locale: string): locale is SupportedLocale {
return SUPPORTED_LOCALES.includes(locale as SupportedLocale)
}
+import { de } from './locales/de'
import { en } from './locales/en'
import { es } from './locales/es'
import { fr } from './locales/fr'
@@ -215,6 +216,7 @@ const translations: Record> = {
sv,
fr,
es,
+ de,
}
export function getTranslations(
From d22047b952b067acd829952921f6f627d35806bf Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Wed, 11 Feb 2026 21:15:37 +0100
Subject: [PATCH 50/69] Process feedback
---
clients/packages/i18n/src/locales/de.ts | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/clients/packages/i18n/src/locales/de.ts b/clients/packages/i18n/src/locales/de.ts
index 28f34a1b59..341e707af1 100644
--- a/clients/packages/i18n/src/locales/de.ts
+++ b/clients/packages/i18n/src/locales/de.ts
@@ -8,7 +8,7 @@ export const de = {
form: {
email: 'E-Mail',
cardholderName: 'Karteninhabername',
- purchasingAsBusiness: 'Ich kaufe als Unternehmen',
+ purchasingAsBusiness: 'Als Unternehmen kaufen',
businessName: 'Firmenname',
billingAddress: {
label: 'Rechnungsadresse',
@@ -35,7 +35,7 @@ export const de = {
payWhatYouWant: 'Zahle, was du möchtest',
total: 'Gesamtbetrag',
everyInterval: 'Alle {interval}',
- additionalMeteredUsage: 'Zusätzliche nutzungsbasierte Abrechnung',
+ additionalMeteredUsage: 'Zusätzliche Nutzung',
perUnit: '/ Einheit',
discount: {
duration: {
@@ -140,13 +140,12 @@ export const de = {
activations: 'Aktivierungen',
activationDeleted: 'Lizenzschlüssel-Aktivierung gelöscht',
activationDeletedDescription: 'Aktivierung erfolgreich gelöscht',
- activationDeactivationFailed:
- 'Deaktivierung der Aktivierung fehlgeschlagen',
+ activationDeactivationFailed: 'Deaktivierung fehlgeschlagen',
},
},
confirmation: {
confirmPayment: 'Zahlung bestätigen',
- processingTitle: 'Wir bearbeiten Ihre Bestellung',
+ processingTitle: 'Bestellung in Bearbeitung',
successTitle: 'Ihre Bestellung war erfolgreich!',
failedTitle:
'Bei der Bearbeitung Ihrer Bestellung ist ein Problem aufgetreten',
@@ -175,9 +174,9 @@ export const de = {
},
intervals: {
short: {
- day: 'Tg',
- week: 'Wo',
- month: 'Mon',
+ day: 'T.',
+ week: 'W.',
+ month: 'M.',
year: 'J',
},
long: {
From 49bb158c253977c410eafba55979b872b9ff11f8 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 12 Feb 2026 09:27:08 +0100
Subject: [PATCH 51/69] Cherry-pick automation changes from #9502
---
clients/packages/i18n/package.json | 2 +-
clients/packages/i18n/scripts/translate.ts | 51 +++++++++----------
clients/packages/i18n/src/config.ts | 11 ++--
.../i18n/src/locales/config/prompt.md | 1 +
4 files changed, 33 insertions(+), 32 deletions(-)
diff --git a/clients/packages/i18n/package.json b/clients/packages/i18n/package.json
index ee6c2ffe3f..b99e6398cf 100644
--- a/clients/packages/i18n/package.json
+++ b/clients/packages/i18n/package.json
@@ -12,7 +12,7 @@
"directory": "clients/packages/i18n"
},
"scripts": {
- "translate": "tsx --env-file=.env.local scripts/translate.ts",
+ "translate": "tsx scripts/translate.ts",
"validate": "tsx scripts/validate.ts",
"lint": "prettier -c .",
"typecheck": "tsc --noEmit",
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
index a50e8df653..86e2adbe20 100644
--- a/clients/packages/i18n/scripts/translate.ts
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -22,7 +22,13 @@ import {
unflattenKeys,
} from './utils'
-import { LOCALE_NAMES, SUPPORTED_LOCALES, SupportedLocale } from '../src/config'
+import {
+ DEFAULT_LOCALE,
+ LOCALE_NAMES,
+ SUPPORTED_LOCALES,
+ SupportedLocale,
+ type TranslatedLocale,
+} from '../src/config'
dotenv.config({ path: path.join(import.meta.dirname, '../.env.local') })
dotenv.config({ path: path.join(import.meta.dirname, '../.env') })
@@ -34,7 +40,7 @@ const LOCKS_FILE = path.join(CONFIG_DIR, 'locks.json')
const CACHE_FILE = path.join(CONFIG_DIR, '.cache.json')
async function callLLM(
- targetLocale: string,
+ targetLocale: TranslatedLocale,
sourceStrings: Record,
prompt: string,
): Promise> {
@@ -106,7 +112,7 @@ function writeLocaleFile(locale: string, obj: NestedObject): void {
}
async function loadExistingLocale(
- locale: string,
+ locale: SupportedLocale,
): Promise {
const filePath = path.join(LOCALES_DIR, `${locale}.ts`)
if (!fs.existsSync(filePath)) return null
@@ -146,16 +152,17 @@ function seedCacheForLocale(
}
async function translate(
- en: NestedObject,
sourceKeys: Map,
pluralPaths: Set,
- targetLocales: string[],
+ targetLocales: TranslatedLocale[],
locks: Record,
prompt: string,
cache: TranslationCache,
) {
log.header('Polar i18n')
- log.info(`Source: ${log.bold(sourceKeys.size.toString())} keys in en.ts`)
+ log.info(
+ `Source: ${log.bold(sourceKeys.size.toString())} keys in ${DEFAULT_LOCALE}.ts`,
+ )
log.info(`Targets: ${targetLocales.map((l) => log.cyan(l)).join(', ')}`)
const stats = { translated: 0, skipped: 0, removed: 0 }
@@ -226,7 +233,7 @@ async function translate(
translatedCount++
log.item(`${log.dim(key)}`)
log.item(
- ` ${log.gray('en:')} ${getStringValue(sourceKeys.get(key) as EntryValue)}`,
+ ` ${log.gray(DEFAULT_LOCALE + ':')} ${getStringValue(sourceKeys.get(key) as EntryValue)}`,
)
log.item(` ${log.cyan(locale + ':')} ${translations[key]}`)
} else {
@@ -257,8 +264,8 @@ async function translate(
function validate(
sourceKeys: Map,
- targetLocales: string[],
- localeData: Map,
+ targetLocales: TranslatedLocale[],
+ localeData: Map,
): boolean {
const errors: string[] = []
@@ -311,7 +318,7 @@ function validate(
}
const sourceStrings = flattenKeysToStrings(
- localeData.get('en') as NestedObject,
+ localeData.get(DEFAULT_LOCALE) as NestedObject,
)
const placeholderErrors: string[] = []
for (const [key, sourceValue] of sourceStrings) {
@@ -350,8 +357,8 @@ function validate(
async function main() {
// Import source locale
- const enModule = await import('../src/locales/en')
- const en = enModule.en as NestedObject
+ const defaultLocaleModule = await import(`../src/locales/${DEFAULT_LOCALE}`)
+ const defaultLocale = defaultLocaleModule[DEFAULT_LOCALE] as NestedObject
const locks = JSON.parse(fs.readFileSync(LOCKS_FILE, 'utf-8')) as Record<
string,
@@ -360,25 +367,17 @@ async function main() {
const prompt = fs.readFileSync(PROMPT_FILE, 'utf-8')
const cache = loadCache()
- const sourceKeys = flattenKeys(en)
- const pluralPaths = findPluralPaths(en as Record)
+ const sourceKeys = flattenKeys(defaultLocale)
+ const pluralPaths = findPluralPaths(defaultLocale as Record)
const targetLocales = SUPPORTED_LOCALES.filter(
- (l): l is Exclude => l !== 'en',
+ (l): l is TranslatedLocale => l !== DEFAULT_LOCALE,
)
- await translate(
- en,
- sourceKeys,
- pluralPaths,
- targetLocales,
- locks,
- prompt,
- cache,
- )
+ await translate(sourceKeys, pluralPaths, targetLocales, locks, prompt, cache)
// Load all locale data for validation
- const localeData = new Map()
- localeData.set('en', en)
+ const localeData = new Map()
+ localeData.set(DEFAULT_LOCALE, defaultLocale)
for (const locale of targetLocales) {
const data = await loadExistingLocale(locale)
if (data) localeData.set(locale, data)
diff --git a/clients/packages/i18n/src/config.ts b/clients/packages/i18n/src/config.ts
index f0c1aabbe7..a764f2110e 100644
--- a/clients/packages/i18n/src/config.ts
+++ b/clients/packages/i18n/src/config.ts
@@ -1,10 +1,11 @@
export const SUPPORTED_LOCALES = ['en', 'nl'] as const
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]
-export const DEFAULT_LOCALE: SupportedLocale = 'en'
-export const LOCALE_NAMES: Record = {
+export const DEFAULT_LOCALE = 'en' satisfies SupportedLocale
+
+export type TranslatedLocale = Exclude
+
+export const LOCALE_NAMES: Record = {
+ en: 'English',
nl: 'Dutch',
- sv: 'Swedish',
- es: 'Spanish',
- fr: 'French',
}
diff --git a/clients/packages/i18n/src/locales/config/prompt.md b/clients/packages/i18n/src/locales/config/prompt.md
index c30cbd64c4..690735d800 100644
--- a/clients/packages/i18n/src/locales/config/prompt.md
+++ b/clients/packages/i18n/src/locales/config/prompt.md
@@ -43,6 +43,7 @@ HARD REQUIREMENTS
- HTML tags, attributes, entities
- Line breaks (\n), , ,
- Translate only the human-readable text
+ - If the value starts with a lowercase letter, also start the translated string with a lowercase letter, except when the {TARGET_LOCALE} explicitly requires an uppercase letter (like for nouns in German)
6. Do NOT translate:
- Brand names
From 4adc9b47b729a3c741b0dafad6de5396879b2d73 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 12 Feb 2026 10:34:20 +0100
Subject: [PATCH 52/69] Switch to Gemini 3 Pro
---
clients/packages/i18n/scripts/translate.ts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
index a50e8df653..2630c1663c 100644
--- a/clients/packages/i18n/scripts/translate.ts
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -53,10 +53,10 @@ async function callLLM(
.replace('{EN_JSON}', JSON.stringify(sourceStrings, null, 2))
.trim()
- log.step(`Calling Gemini 2.5 Flash...`)
+ log.step(`Calling Gemini 3 Pro (Preview)...`)
const { text } = await generateText({
- model: google('gemini-2.5-flash'),
+ model: google('gemini-3-pro-preview'),
system: systemPromptPart,
prompt: userPromptPart,
temperature: 0.3,
From 382b1895900cd81d15e0001b04f3777e1a393f5c Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 12 Feb 2026 10:34:44 +0100
Subject: [PATCH 53/69] Re-run NL
---
.../i18n/src/locales/config/.cache.json | 2 +-
clients/packages/i18n/src/locales/en.ts | 14 ++--
clients/packages/i18n/src/locales/nl.ts | 65 ++++++++++---------
3 files changed, 41 insertions(+), 40 deletions(-)
diff --git a/clients/packages/i18n/src/locales/config/.cache.json b/clients/packages/i18n/src/locales/config/.cache.json
index 438d4ab895..97a4d5f519 100644
--- a/clients/packages/i18n/src/locales/config/.cache.json
+++ b/clients/packages/i18n/src/locales/config/.cache.json
@@ -95,7 +95,7 @@
"checkout.loading.processingPayment": "Processing payment",
"checkout.loading.paymentSuccessful": "Payment successful! Getting your products ready...",
"checkout.loading.confirmationTokenFailed": "Failed to create confirmation token, please try again later.",
- "checkout.cta.startTrial": "Start Trial",
+ "checkout.cta.startTrial": "Start trial",
"checkout.cta.subscribeNow": "Subscribe now",
"checkout.cta.payNow": "Pay now",
"checkout.cta.getFree": "Get for free",
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index ce782c7c58..2cb6b8b1f1 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -196,12 +196,12 @@ export const en = {
},
},
benefitTypes: {
- usage: { displayName: 'Usage' },
- license_keys: { displayName: 'License Keys' },
- github_repository: { displayName: 'GitHub Repository Access' },
- discord: { displayName: 'Discord Invite' },
- downloadables: { displayName: 'File Downloads' },
- custom: { displayName: 'Custom' },
- meter_credit: { displayName: 'Meter Credits' },
+ usage: 'Usage',
+ license_keys: 'License Keys',
+ github_repository: 'GitHub Repository Access',
+ discord: 'Discord Invite',
+ downloadables: 'File Downloads',
+ custom: 'Custom',
+ meter_credit: 'Meter Credits',
},
} as const
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index d8bdc825cf..6e01b98ad6 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -3,19 +3,19 @@ export const nl = {
footer: {
poweredBy: 'Mogelijk gemaakt door',
merchantOfRecord:
- 'Deze bestelling wordt verwerkt door onze online reseller & Merchant of Record, Polar, die ook vragen over bestellingen en terugbetalingen afhandelt.',
+ 'Deze bestelling wordt verwerkt door onze online wederverkoper & Merchant of Record, Polar, die ook bestelgerelateerde vragen en terugbetalingen afhandelt.',
},
form: {
- email: 'E-mail',
+ email: 'E-mailadres',
cardholderName: 'Naam kaarthouder',
purchasingAsBusiness: 'Ik koop als bedrijf',
businessName: 'Bedrijfsnaam',
billingAddress: {
label: 'Factuuradres',
- line1: 'Regel 1',
- line2: 'Regel 2',
+ line1: 'Adresregel 1',
+ line2: 'Adresregel 2',
postalCode: 'Postcode',
- city: 'Stad',
+ city: 'Plaats',
country: 'Land',
state: 'Staat',
province: 'Provincie',
@@ -34,20 +34,20 @@ export const nl = {
free: 'Gratis',
payWhatYouWant: 'Betaal wat je wilt',
total: 'Totaal',
- everyInterval: 'Elke {interval}',
+ everyInterval: 'Per {interval}',
additionalMeteredUsage: 'Extra verbruikskosten',
perUnit: '/ eenheid',
discount: {
duration: {
months: {
- _mode: 'plural',
'=1': 'voor de eerste maand',
other: 'voor de eerste # maanden',
+ _mode: 'plural',
},
years: {
- _mode: 'plural',
'=1': 'voor het eerste jaar',
other: 'voor de eerste # jaar',
+ _mode: 'plural',
},
},
},
@@ -56,30 +56,30 @@ export const nl = {
ends: 'Proefperiode eindigt op {endDate}',
duration: {
days: {
- _mode: 'plural',
'=1': '# dag proefperiode',
other: '# dagen proefperiode',
+ _mode: 'plural',
},
weeks: {
- _mode: 'plural',
'=1': '# week proefperiode',
other: '# weken proefperiode',
+ _mode: 'plural',
},
months: {
- _mode: 'plural',
'=1': '# maand proefperiode',
other: '# maanden proefperiode',
+ _mode: 'plural',
},
years: {
- _mode: 'plural',
'=1': '# jaar proefperiode',
other: '# jaar proefperiode',
+ _mode: 'plural',
},
},
},
pwywForm: {
- label: 'Noem een eerlijke prijs',
- minimum: '{amount} minimum',
+ label: 'Kies een eerlijke prijs',
+ minimum: 'minimaal {amount}',
amountMinimum: 'Bedrag moet minimaal {min} zijn',
amountFreeOrMinimum: 'Bedrag moet $0 of minimaal {min} zijn',
},
@@ -92,22 +92,22 @@ export const nl = {
},
benefits: {
moreBenefits: {
- _mode: 'plural',
'=1': '# extra voordeel',
other: '# extra voordelen',
+ _mode: 'plural',
},
showMoreBenefits: {
- _mode: 'plural',
'=1': 'Toon # extra voordeel',
other: 'Toon # extra voordelen',
+ _mode: 'plural',
},
showLess: 'Toon minder',
- granting: 'Voordelen worden toegekend...',
+ granting: 'Voordelen toekennen...',
requestNewInvite: 'Nieuwe uitnodiging aanvragen',
retryIn: {
- _mode: 'plural',
'=1': 'Probeer opnieuw over # seconde',
other: 'Probeer opnieuw over # seconden',
+ _mode: 'plural',
},
connectNewAccount: 'Nieuw account koppelen',
requestMyInvite: 'Mijn uitnodiging aanvragen',
@@ -118,14 +118,14 @@ export const nl = {
},
discord: {
connect: 'Discord-account koppelen',
- open: 'Open Discord',
+ open: 'Discord openen',
selectAccount: 'Selecteer een Discord-account',
},
licenseKey: {
copy: 'Kopiëren',
copiedToClipboard: 'Gekopieerd naar klembord',
copiedToClipboardDescription:
- 'Licentiesleutel is gekopieerd naar het klembord',
+ 'Licentiesleutel is gekopieerd naar klembord',
loading: 'Laden...',
status: 'Status',
statusGranted: 'Toegekend',
@@ -136,11 +136,11 @@ export const nl = {
validatedAt: 'Gevalideerd op',
neverValidated: 'Nooit gevalideerd',
expiryDate: 'Vervaldatum',
- noExpiry: 'Geen vervaldatum',
+ noExpiry: 'Verloopt niet',
activations: 'Activaties',
activationDeleted: 'Licentiesleutelactivatie verwijderd',
activationDeletedDescription: 'Activatie succesvol verwijderd',
- activationDeactivationFailed: 'Deactivatie mislukt',
+ activationDeactivationFailed: 'Deactiveren mislukt',
},
},
confirmation: {
@@ -149,8 +149,9 @@ export const nl = {
successTitle: 'Je bestelling is geslaagd!',
failedTitle:
'Er is een probleem opgetreden bij het verwerken van je bestelling',
- processingDescription: 'Even geduld terwijl we je betaling bevestigen.',
- successDescription: 'Je hebt nu recht op de voordelen van {product}.',
+ processingDescription:
+ 'Een ogenblik geduld terwijl we je betaling bevestigen.',
+ successDescription: 'Je hebt nu toegang tot de voordelen van {product}.',
failedDescription: 'Probeer het opnieuw of neem contact op met support.',
},
loading: {
@@ -170,7 +171,7 @@ export const nl = {
},
intervals: {
short: {
- day: 'dag',
+ day: 'dg',
week: 'wk',
month: 'mnd',
year: 'jr',
@@ -190,12 +191,12 @@ export const nl = {
},
},
benefitTypes: {
- usage: { displayName: 'Gebruik' },
- license_keys: { displayName: 'Licentiesleutels' },
- github_repository: { displayName: 'Toegang tot GitHub-repository' },
- discord: { displayName: 'Discord-uitnodiging' },
- downloadables: { displayName: 'Downloads' },
- custom: { displayName: 'Custom' },
- meter_credit: { displayName: 'Verbruikstegoed' },
+ usage: 'Verbruik',
+ license_keys: 'Licentiesleutels',
+ github_repository: 'Toegang tot GitHub-repository',
+ discord: 'Discord-uitnodiging',
+ downloadables: 'Bestandsdownloads',
+ custom: 'Aangepast',
+ meter_credit: 'Verbruikstegoeden',
},
} as const
From 8b5683c58138ec596459bc503b15e928a0307fa0 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 12 Feb 2026 10:43:34 +0100
Subject: [PATCH 54/69] Process FR feedback
---
clients/packages/i18n/src/locales/fr.ts | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/clients/packages/i18n/src/locales/fr.ts b/clients/packages/i18n/src/locales/fr.ts
index 409f9dcb0a..33157a2062 100644
--- a/clients/packages/i18n/src/locales/fr.ts
+++ b/clients/packages/i18n/src/locales/fr.ts
@@ -21,21 +21,21 @@ export const fr = {
line1: 'Adresse',
line2: "Complément d'adresse",
},
- taxId: 'ID fiscal',
+ taxId: 'Numéro de TVA intracommunautaire',
discountCode: 'Code de réduction',
optional: 'Facultatif',
- apply: 'Appliquer',
+ apply: 'Valider',
fieldRequired: 'Ce champ est obligatoire',
},
pricing: {
subtotal: 'Sous-total',
- taxableAmount: 'Montant imposable',
- taxes: 'Taxes',
+ taxableAmount: 'Total HT',
+ taxes: 'TVA',
free: 'Gratuit',
payWhatYouWant: 'Payez ce que vous voulez',
total: 'Total',
everyInterval: 'Tous les {interval}',
- additionalMeteredUsage: 'Consommation supplémentaire',
+ additionalMeteredUsage: "Facturation à l'usage",
perUnit: '/ unité',
discount: {
duration: {
@@ -102,7 +102,7 @@ export const fr = {
_mode: 'plural',
},
showLess: 'Afficher moins',
- granting: 'Octroi des avantages...',
+ granting: 'Activation des avantages...',
requestNewInvite: 'Demander une nouvelle invitation',
retryIn: {
'=1': 'Réessayer dans # seconde',
@@ -197,8 +197,8 @@ export const fr = {
license_keys: 'Clés de licence',
github_repository: 'Accès au dépôt GitHub',
discord: 'Invitation Discord',
- downloadables: 'Téléchargements de fichiers',
+ downloadables: 'Fichiers',
custom: 'Personnalisé',
- meter_credit: 'Crédits de consommation',
+ meter_credit: 'Crédits prépayés',
},
} as const
From 5834d4fbb057c55d960c9df1a6ee1242a6deafaa Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 12 Feb 2026 10:53:31 +0100
Subject: [PATCH 55/69] Remove hardcoded dollar value
---
.../packages/checkout/src/components/CheckoutPWYWForm.tsx | 1 +
clients/packages/i18n/src/locales/de.ts | 3 ++-
clients/packages/i18n/src/locales/en.ts | 8 ++++++--
clients/packages/i18n/src/locales/es.ts | 2 +-
clients/packages/i18n/src/locales/fr.ts | 2 +-
clients/packages/i18n/src/locales/nl.ts | 2 +-
clients/packages/i18n/src/locales/sv.ts | 2 +-
7 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
index f02f01f31b..a7cd4d4c22 100644
--- a/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
+++ b/clients/packages/checkout/src/components/CheckoutPWYWForm.tsx
@@ -51,6 +51,7 @@ export const CheckoutPWYWForm = ({
if (minimumAmount === 0 && value > 0 && value < 50) {
return t('checkout.pwywForm.amountFreeOrMinimum', {
min: formatCurrency('compact', locale)(50, checkout.currency),
+ zero: formatCurrency('compact', locale)(0, checkout.currency),
})
}
diff --git a/clients/packages/i18n/src/locales/de.ts b/clients/packages/i18n/src/locales/de.ts
index 341e707af1..05825bfae3 100644
--- a/clients/packages/i18n/src/locales/de.ts
+++ b/clients/packages/i18n/src/locales/de.ts
@@ -81,7 +81,8 @@ export const de = {
label: 'Nenne einen fairen Preis',
minimum: 'Mindestens {amount}',
amountMinimum: 'Der Betrag muss mindestens {min} betragen',
- amountFreeOrMinimum: 'Der Betrag muss 0 $ oder mindestens {min} betragen',
+ amountFreeOrMinimum:
+ 'Der Betrag muss {zero} oder mindestens {min} betragen',
},
productSwitcher: {
billedRecurring: 'Abrechnung {frequency}',
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index 236d01de71..f3c10e603e 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -41,7 +41,11 @@ export const en = {
pricing: {
subtotal: 'Subtotal',
taxableAmount: 'Taxable amount',
- taxes: 'Taxes',
+ taxes: {
+ value: 'Taxes',
+ _llmContext:
+ 'Taxes applied to the order. This is VAT or sales tax. Prefer the specific term used in the target locale over a generic taxes (e.g. TVA in French, BTW in Dutch, etc.)',
+ },
free: 'Free',
payWhatYouWant: {
value: 'Pay what you want',
@@ -96,7 +100,7 @@ export const en = {
label: 'Name a fair price',
minimum: '{amount} minimum',
amountMinimum: 'Amount must be at least {min}',
- amountFreeOrMinimum: 'Amount must be $0 or at least {min}',
+ amountFreeOrMinimum: 'Amount must be {zero} or at least {min}',
},
productSwitcher: {
billedRecurring: 'Billed {frequency}',
diff --git a/clients/packages/i18n/src/locales/es.ts b/clients/packages/i18n/src/locales/es.ts
index e7595d26bd..da9f7d8f0c 100644
--- a/clients/packages/i18n/src/locales/es.ts
+++ b/clients/packages/i18n/src/locales/es.ts
@@ -81,7 +81,7 @@ export const es = {
label: 'Pon un precio justo',
minimum: '{amount} mínimo',
amountMinimum: 'El importe debe ser al menos {min}',
- amountFreeOrMinimum: 'El importe debe ser $0 o al menos {min}',
+ amountFreeOrMinimum: 'El importe debe ser {zero} o al menos {min}',
},
productSwitcher: {
billedRecurring: 'Facturado {frequency}',
diff --git a/clients/packages/i18n/src/locales/fr.ts b/clients/packages/i18n/src/locales/fr.ts
index 33157a2062..ca99e58f53 100644
--- a/clients/packages/i18n/src/locales/fr.ts
+++ b/clients/packages/i18n/src/locales/fr.ts
@@ -81,7 +81,7 @@ export const fr = {
label: 'Définissez un prix juste',
minimum: '{amount} minimum',
amountMinimum: "Le montant doit être d'au moins {min}",
- amountFreeOrMinimum: "Le montant doit être de 0 $ ou d'au moins {min}",
+ amountFreeOrMinimum: "Le montant doit être de {zero} ou d'au moins {min}",
},
productSwitcher: {
billedRecurring: 'Facturé {frequency}',
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index d04cac2d49..56d1ea6b02 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -81,7 +81,7 @@ export const nl = {
label: 'Kies een eerlijke prijs',
minimum: 'minimaal {amount}',
amountMinimum: 'Bedrag moet minimaal {min} zijn',
- amountFreeOrMinimum: 'Bedrag moet $0 of minimaal {min} zijn',
+ amountFreeOrMinimum: 'Bedrag moet {zero} of minimaal {min} zijn',
},
productSwitcher: {
billedRecurring: '{frequency} gefactureerd',
diff --git a/clients/packages/i18n/src/locales/sv.ts b/clients/packages/i18n/src/locales/sv.ts
index 117103bd22..d34ec86736 100644
--- a/clients/packages/i18n/src/locales/sv.ts
+++ b/clients/packages/i18n/src/locales/sv.ts
@@ -81,7 +81,7 @@ export const sv = {
label: 'Ange pris',
minimum: 'Minst {amount}',
amountMinimum: 'Beloppet måste vara minst {min}',
- amountFreeOrMinimum: 'Beloppet måste vara 0 eller minst {min}',
+ amountFreeOrMinimum: 'Beloppet måste vara {zero} eller minst {min}',
},
productSwitcher: {
billedRecurring: 'Faktureras {frequency}',
From efd91ad7ada8d1ce7478e00c9ca755cd9b7ce8f1 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
Date: Thu, 12 Feb 2026 09:55:53 +0000
Subject: [PATCH 56/69] chore(i18n): update translations
---
clients/packages/i18n/src/locales/config/.cache.json | 10 +++++-----
clients/packages/i18n/src/locales/fr.ts | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/clients/packages/i18n/src/locales/config/.cache.json b/clients/packages/i18n/src/locales/config/.cache.json
index ed83c2e74b..967743e675 100644
--- a/clients/packages/i18n/src/locales/config/.cache.json
+++ b/clients/packages/i18n/src/locales/config/.cache.json
@@ -45,7 +45,7 @@
"checkout.pwywForm.label": "Name a fair price",
"checkout.pwywForm.minimum": "{amount} minimum",
"checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
- "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be {zero} or at least {min}",
"checkout.productSwitcher.billedRecurring": "Billed {frequency}",
"checkout.productSwitcher.oneTimePurchase": "One-time purchase",
"checkout.card.included": "Included",
@@ -167,7 +167,7 @@
"checkout.pwywForm.label": "Name a fair price",
"checkout.pwywForm.minimum": "{amount} minimum",
"checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
- "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be {zero} or at least {min}",
"checkout.productSwitcher.billedRecurring": "Billed {frequency}",
"checkout.productSwitcher.oneTimePurchase": "One-time purchase",
"checkout.card.included": "Included",
@@ -289,7 +289,7 @@
"checkout.pwywForm.label": "Name a fair price",
"checkout.pwywForm.minimum": "{amount} minimum",
"checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
- "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be {zero} or at least {min}",
"checkout.productSwitcher.billedRecurring": "Billed {frequency}",
"checkout.productSwitcher.oneTimePurchase": "One-time purchase",
"checkout.card.included": "Included",
@@ -411,7 +411,7 @@
"checkout.pwywForm.label": "Name a fair price",
"checkout.pwywForm.minimum": "{amount} minimum",
"checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
- "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be {zero} or at least {min}",
"checkout.productSwitcher.billedRecurring": "Billed {frequency}",
"checkout.productSwitcher.oneTimePurchase": "One-time purchase",
"checkout.card.included": "Included",
@@ -533,7 +533,7 @@
"checkout.pwywForm.label": "Name a fair price",
"checkout.pwywForm.minimum": "{amount} minimum",
"checkout.pwywForm.amountMinimum": "Amount must be at least {min}",
- "checkout.pwywForm.amountFreeOrMinimum": "Amount must be $0 or at least {min}",
+ "checkout.pwywForm.amountFreeOrMinimum": "Amount must be {zero} or at least {min}",
"checkout.productSwitcher.billedRecurring": "Billed {frequency}",
"checkout.productSwitcher.oneTimePurchase": "One-time purchase",
"checkout.card.included": "Included",
diff --git a/clients/packages/i18n/src/locales/fr.ts b/clients/packages/i18n/src/locales/fr.ts
index ca99e58f53..1c32fc9b0b 100644
--- a/clients/packages/i18n/src/locales/fr.ts
+++ b/clients/packages/i18n/src/locales/fr.ts
@@ -81,7 +81,7 @@ export const fr = {
label: 'Définissez un prix juste',
minimum: '{amount} minimum',
amountMinimum: "Le montant doit être d'au moins {min}",
- amountFreeOrMinimum: "Le montant doit être de {zero} ou d'au moins {min}",
+ amountFreeOrMinimum: 'Le montant doit être {zero} ou au moins {min}',
},
productSwitcher: {
billedRecurring: 'Facturé {frequency}',
From 0264989433b0f3a7ba3fb4cf4ff1ddfbe7f1785f Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 12 Feb 2026 11:16:21 +0100
Subject: [PATCH 57/69] Remove nonexisting benefitType
---
clients/packages/i18n/src/locales/de.ts | 1 -
clients/packages/i18n/src/locales/en.ts | 1 -
clients/packages/i18n/src/locales/es.ts | 1 -
clients/packages/i18n/src/locales/fr.ts | 1 -
clients/packages/i18n/src/locales/nl.ts | 1 -
clients/packages/i18n/src/locales/sv.ts | 1 -
6 files changed, 6 deletions(-)
diff --git a/clients/packages/i18n/src/locales/de.ts b/clients/packages/i18n/src/locales/de.ts
index 05825bfae3..754537e794 100644
--- a/clients/packages/i18n/src/locales/de.ts
+++ b/clients/packages/i18n/src/locales/de.ts
@@ -195,7 +195,6 @@ export const de = {
},
},
benefitTypes: {
- usage: 'Nutzung',
license_keys: 'Lizenzschlüssel',
github_repository: 'GitHub-Repository-Zugang',
discord: 'Discord-Einladung',
diff --git a/clients/packages/i18n/src/locales/en.ts b/clients/packages/i18n/src/locales/en.ts
index f3c10e603e..91346d9502 100644
--- a/clients/packages/i18n/src/locales/en.ts
+++ b/clients/packages/i18n/src/locales/en.ts
@@ -207,7 +207,6 @@ export const en = {
},
},
benefitTypes: {
- usage: 'Usage',
license_keys: 'License Keys',
github_repository: 'GitHub Repository Access',
discord: 'Discord Invite',
diff --git a/clients/packages/i18n/src/locales/es.ts b/clients/packages/i18n/src/locales/es.ts
index da9f7d8f0c..15421d1bbd 100644
--- a/clients/packages/i18n/src/locales/es.ts
+++ b/clients/packages/i18n/src/locales/es.ts
@@ -191,7 +191,6 @@ export const es = {
},
},
benefitTypes: {
- usage: 'Uso',
license_keys: 'Claves de licencia',
github_repository: 'Acceso a repositorio de GitHub',
discord: 'Invitación a Discord',
diff --git a/clients/packages/i18n/src/locales/fr.ts b/clients/packages/i18n/src/locales/fr.ts
index 1c32fc9b0b..35734c2826 100644
--- a/clients/packages/i18n/src/locales/fr.ts
+++ b/clients/packages/i18n/src/locales/fr.ts
@@ -193,7 +193,6 @@ export const fr = {
},
},
benefitTypes: {
- usage: 'Utilisation',
license_keys: 'Clés de licence',
github_repository: 'Accès au dépôt GitHub',
discord: 'Invitation Discord',
diff --git a/clients/packages/i18n/src/locales/nl.ts b/clients/packages/i18n/src/locales/nl.ts
index 56d1ea6b02..5e59dec945 100644
--- a/clients/packages/i18n/src/locales/nl.ts
+++ b/clients/packages/i18n/src/locales/nl.ts
@@ -191,7 +191,6 @@ export const nl = {
},
},
benefitTypes: {
- usage: 'Verbruik',
license_keys: 'Licentiesleutels',
github_repository: 'Toegang tot GitHub-repository',
discord: 'Discord-uitnodiging',
diff --git a/clients/packages/i18n/src/locales/sv.ts b/clients/packages/i18n/src/locales/sv.ts
index d34ec86736..353c09c682 100644
--- a/clients/packages/i18n/src/locales/sv.ts
+++ b/clients/packages/i18n/src/locales/sv.ts
@@ -188,7 +188,6 @@ export const sv = {
},
},
benefitTypes: {
- usage: 'Användning',
license_keys: 'Licensnycklar',
github_repository: 'Åtkomst till GitHub-repository',
discord: 'Discord-inbjudan',
From 6097bc4106ef55dcbdab619953e90094ec2c742a Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 12 Feb 2026 14:32:08 +0100
Subject: [PATCH 58/69] Fix Github Action
---
.github/workflows/i18n_translate.yml | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/i18n_translate.yml b/.github/workflows/i18n_translate.yml
index 53eaed75a5..dc6c5da9e0 100644
--- a/.github/workflows/i18n_translate.yml
+++ b/.github/workflows/i18n_translate.yml
@@ -3,7 +3,8 @@ name: Generate Translations
on:
pull_request:
paths:
- - 'clients/packages/i18n/src/locales/en.ts'
+ - "clients/packages/i18n/src/locales/en.ts"
+ - "clients/packages/i18n/src/config.ts"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -35,11 +36,11 @@ jobs:
uses: actions/setup-node@v6
with:
node-version-file: clients/.node-version
- cache: 'pnpm'
- cache-dependency-path: 'clients/pnpm-lock.yaml'
+ cache: "pnpm"
+ cache-dependency-path: "clients/pnpm-lock.yaml"
- name: Install dependencies
- run: pnpm install
+ run: pnpm install --ignore-scripts
- name: Generate translations
env:
From f3b74bc8becfb9483d1c2e9a3805fbb689eab373 Mon Sep 17 00:00:00 2001
From: Pieter Beulque
Date: Thu, 12 Feb 2026 14:33:46 +0100
Subject: [PATCH 59/69] Switch to default exports
---
clients/packages/i18n/scripts/translate.ts | 55 +++++++++++-----------
clients/packages/i18n/scripts/validate.ts | 23 +++++----
clients/packages/i18n/src/config.ts | 7 ++-
clients/packages/i18n/src/index.ts | 4 +-
clients/packages/i18n/src/locales/en.ts | 2 +-
clients/packages/i18n/src/locales/nl.ts | 2 +-
6 files changed, 49 insertions(+), 44 deletions(-)
diff --git a/clients/packages/i18n/scripts/translate.ts b/clients/packages/i18n/scripts/translate.ts
index 2630c1663c..9b753588ad 100644
--- a/clients/packages/i18n/scripts/translate.ts
+++ b/clients/packages/i18n/scripts/translate.ts
@@ -22,7 +22,13 @@ import {
unflattenKeys,
} from './utils'
-import { LOCALE_NAMES, SUPPORTED_LOCALES, SupportedLocale } from '../src/config'
+import {
+ DEFAULT_LOCALE,
+ LOCALE_NAMES,
+ SUPPORTED_LOCALES,
+ SupportedLocale,
+ type TranslatedLocale,
+} from '../src/config'
dotenv.config({ path: path.join(import.meta.dirname, '../.env.local') })
dotenv.config({ path: path.join(import.meta.dirname, '../.env') })
@@ -34,7 +40,7 @@ const LOCKS_FILE = path.join(CONFIG_DIR, 'locks.json')
const CACHE_FILE = path.join(CONFIG_DIR, '.cache.json')
async function callLLM(
- targetLocale: string,
+ targetLocale: TranslatedLocale,
sourceStrings: Record,
prompt: string,
): Promise> {
@@ -91,7 +97,7 @@ function saveCache(cache: TranslationCache): void {
function writeLocaleFile(locale: string, obj: NestedObject): void {
const filePath = path.join(LOCALES_DIR, `${locale}.ts`)
- const content = `export const ${locale} = ${JSON.stringify(obj, null, 2)} as const\n`
+ const content = `export default ${JSON.stringify(obj, null, 2)} as const\n`
fs.writeFileSync(filePath, content)
// Run prettier on the generated file
@@ -106,14 +112,14 @@ function writeLocaleFile(locale: string, obj: NestedObject): void {
}
async function loadExistingLocale(
- locale: string,
+ locale: SupportedLocale,
): Promise