From a741f62196abe83ca22940e3c2bee51a6d419b20 Mon Sep 17 00:00:00 2001
From: DIYgod
Date: Fri, 14 Mar 2025 14:00:17 +0800
Subject: [PATCH 001/123] chore: dependabot ignore @shopify/flash-list
---
.github/dependabot.yaml | 2 +
package.json | 1 +
pnpm-lock.yaml | 239 ++++++++++++++++++++--------------------
3 files changed, 123 insertions(+), 119 deletions(-)
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index b92751c8ff..04297e44ad 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -18,6 +18,8 @@ updates:
versions: [">=19.0.0"]
- dependency-name: "@types/react-dom"
versions: [">=19.0.0"]
+ - dependency-name: "@shopify/flash-list"
+ versions: [">1.7.3"]
# Stuck by tailwindcss 4
- dependency-name: tailwindcss
diff --git a/package.json b/package.json
index 0227eae772..abfcd6637a 100644
--- a/package.json
+++ b/package.json
@@ -104,6 +104,7 @@
},
"overrides": {
"@electron/node-gyp": "10.2.0-electron.2",
+ "expo-dev-menu": "6.0.21",
"is-core-module": "npm:@nolyfill/is-core-module@1",
"isarray": "npm:@nolyfill/isarray@1",
"react": "18.3.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4dad35f25f..499efacb08 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,6 +6,7 @@ settings:
overrides:
'@electron/node-gyp': 10.2.0-electron.2
+ expo-dev-menu: 6.0.21
is-core-module: npm:@nolyfill/is-core-module@1
isarray: npm:@nolyfill/isarray@1
react: 18.3.1
@@ -2459,7 +2460,7 @@ packages:
'@egoist/tipc@0.3.2':
resolution: {integrity: sha512-p8g35BhErVkYIgDqkw/HQJSli1TOsZRIUU9U7PYnYfwru6J/Ep1lwFGH2N6+sQMFi1HkqGTTUlJEISJ1DClfQw==}
peerDependencies:
- electron: '>=26.0.0'
+ electron: 34.2.0
'@electron-forge/cli@7.7.0':
resolution: {integrity: sha512-QfnjghmlHMb7dyArR5cbPA+MP9ff/ulWZi6R/a5MkHlKyhrysRfjzDtZDsmkEv9mGQgRwylssgXrZrKHGlxFkw==}
@@ -2543,7 +2544,7 @@ packages:
'@electron-toolkit/preload@3.0.1':
resolution: {integrity: sha512-EzoQmpK8jqqU8YnM5jRe0GJjGVJPke2KtANqz8QtN2JPT96ViOvProBdK5C6riCm0j1T8jjAGVQCZLQy9OVoIA==}
peerDependencies:
- electron: '>=13.0.0'
+ electron: 34.2.0
'@electron-toolkit/tsconfig@1.0.1':
resolution: {integrity: sha512-M0Mol3odspvtCuheyujLNAW7bXq7KFNYVMRtpjFa4ZfES4MuklXBC7Nli/omvc+PRKlrklgAGx3l4VakjNo8jg==}
@@ -3214,20 +3215,20 @@ packages:
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint-react/ast@1.32.1':
- resolution: {integrity: sha512-dYpSkHK0D/kCynCy34lTywrENMHrYJj8Q+/uUNaVSnrVNTfh8LCMIIjnhSfKzsQsQe09risiGwm5HiryN7EwGw==}
+ '@eslint-react/ast@1.33.0':
+ resolution: {integrity: sha512-5cscyN/svvFIrMADzTcd5yTCRQRf6s7mhcLNQSOqzPoZJ/r/u+6+IbehDIFlX8EYEC5CJGy/x2K3rkiaRqhPlw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/core@1.32.1':
- resolution: {integrity: sha512-rPvdQ66SQzfQg+4/1fkZWQwDjMSsxQJeyZDkEYtvaKSZDPFcPgpp1P2vth5Znn47DcFBIuDUNCnnlnb2R2IcMQ==}
+ '@eslint-react/core@1.33.0':
+ resolution: {integrity: sha512-wUKbpMhGcM2mdZKsIzhH81iZ3Jt5EyRwU8aeTM/Jh3kYpCMcQ3co4X3Sk11oJjO1cF4Gy5mFf7EjTv+i+X4P6w==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/eff@1.32.1':
- resolution: {integrity: sha512-cvNOn5wLDpSbBqs0Tt84DjHD+bOXr75MkVpBk8UzCzqio8WuxqKdlhRCfQoedpVVrGlRHPJsrxlXX3pmvoIfHw==}
+ '@eslint-react/eff@1.33.0':
+ resolution: {integrity: sha512-Nj9QZ0j4yltQPgLTW3uGS087hxHetmrylnpLx1LtznEoEXF7QEkN0VokBAyABalTl7iU4zIiUfhwYhW6IeEOcQ==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/eslint-plugin@1.32.1':
- resolution: {integrity: sha512-Z6wu6irFxP1ckEtzkDK6NIvgrU2350yzVAMCBKc9TL7gbpdoqVPTvQD55VtNNfvHyaXkFTIf2cV/ARm+vm0baw==}
+ '@eslint-react/eslint-plugin@1.33.0':
+ resolution: {integrity: sha512-uckmb1y3ded+pOmHxSmwLp8hJYN41ZpFmD9mjcFrGDlPJnVZjr0+QCKYVlY/nAG4Du2gXOcRSccx5UFOoVzObw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -3236,16 +3237,16 @@ packages:
typescript:
optional: true
- '@eslint-react/jsx@1.32.1':
- resolution: {integrity: sha512-uQ7GNo0g+DXPLeqlCLWqCod1JiSqO8HXHQhhC75WaS+3mQOo8lBfYYV+6r4Dn/QP4MufWwy7tneHu6D583K0ag==}
+ '@eslint-react/jsx@1.33.0':
+ resolution: {integrity: sha512-CEkusLd5LMEvLl4XDMNrxsiW90oMYblslgi4kXtXlqD8gRIN7CfjT51RivP473qN2bNSXIYXayu9zZQ3DvlJMg==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/shared@1.32.1':
- resolution: {integrity: sha512-pt9s7YzSdPNmie6ZnAmmLlzNwS6GKTR4DZxCx4DuAcHUutK5sWwU5u0lJHo98oyfxsOnWBK6gB7mHqwXYFdfNg==}
+ '@eslint-react/shared@1.33.0':
+ resolution: {integrity: sha512-33q+zZv4Um/jbYHmjRjF8NxVa/v1xIUaFWTam5XbToMzPaHNmg0KiFGi2zL+tgnNZAH5g+a9cy687+nPpG8W6Q==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/var@1.32.1':
- resolution: {integrity: sha512-vD+PqNbb7sHv8u6aaPO6q4mkQS4UByXlHH2bkUFQhDYBYLRBK5QDq8hqpKPERwaxTQMEufufwMuUGhtZm5pMaA==}
+ '@eslint-react/var@1.33.0':
+ resolution: {integrity: sha512-4bN084jzM1VmlyO8E3OFu6tHC3Njp6hNkVPrVa2ptk72IunJfe56IbptZOt9k/H3gUkCOhrXzeurFkx4FgiBgA==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
'@eslint/compat@1.2.7':
@@ -4668,7 +4669,7 @@ packages:
'@radix-ui/react-compose-refs@1.1.1':
resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==}
peerDependencies:
- '@types/react': '*'
+ '@types/react': npm:@types/react@18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -4690,7 +4691,7 @@ packages:
'@radix-ui/react-context@1.1.1':
resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==}
peerDependencies:
- '@types/react': '*'
+ '@types/react': npm:@types/react@18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -4747,7 +4748,7 @@ packages:
'@radix-ui/react-focus-guards@1.1.1':
resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==}
peerDependencies:
- '@types/react': '*'
+ '@types/react': npm:@types/react@18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -5035,7 +5036,7 @@ packages:
'@radix-ui/react-use-controllable-state@1.1.0':
resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
peerDependencies:
- '@types/react': '*'
+ '@types/react': npm:@types/react@18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -8328,8 +8329,8 @@ packages:
resolution: {integrity: sha512-Ok0bF13WWdTzZi9rCtPN8wUfwx+yDMmV6PAnCMqjNRKEXHmklW/rV+6DofV/Vf5qoAh+Bl9Bj7dQ+0W+IL2psg==}
engines: {node: '>=20'}
- electron-to-chromium@1.5.116:
- resolution: {integrity: sha512-mufxTCJzLBQVvSdZzX1s5YAuXsN1M4tTyYxOOL1TcSKtIzQ9rjIrm7yFK80rN5dwGTePgdoABDSHpuVtRQh0Zw==}
+ electron-to-chromium@1.5.118:
+ resolution: {integrity: sha512-yNDUus0iultYyVoEFLnQeei7LOQkL8wg8GQpkPCRrOlJXlcCwa6eGKZkxQ9ciHsqZyYbj8Jd94X1CTPzGm+uIA==}
electron-updater@6.3.9:
resolution: {integrity: sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==}
@@ -8847,8 +8848,8 @@ packages:
peerDependencies:
eslint: '>=7'
- eslint-plugin-react-debug@1.32.1:
- resolution: {integrity: sha512-5RFiww2CH+8DAG4lXyWAC5dZS+zO8/zf6zSDrbuI51zAJibz7g34m1QkI2F2omYw9GSELirIG9u8DOzCcmcNcA==}
+ eslint-plugin-react-debug@1.33.0:
+ resolution: {integrity: sha512-XVfAazHA2YYyWa3tMNn7DJPaAkokYnebA9uNRfv9j5IQP9nf6Hi8wwIp9x4C7KchXnd2PQZFfXZRS+7/OfcZSw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8857,8 +8858,8 @@ packages:
typescript:
optional: true
- eslint-plugin-react-dom@1.32.1:
- resolution: {integrity: sha512-zYuemcywET3l+yi5UNRgyZDiOUhIvECZxZiMBt01VgY4Xk1515XrbFmcICnU/Wr2dBbFRYKFBORaYC0R+mUoeQ==}
+ eslint-plugin-react-dom@1.33.0:
+ resolution: {integrity: sha512-U7Gg0xH17Y1+wVRlg6E7P10MYttaE5p09/iEGCvfMcW38LHr+clSJK7fi+RD9WHaMwLVpGhgoDhZ2aJWpTDv9Q==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8873,8 +8874,8 @@ packages:
peerDependencies:
eslint: '>=7'
- eslint-plugin-react-hooks-extra@1.32.1:
- resolution: {integrity: sha512-taBv82VC/8OChI+OYR66Kc/ARZ0sQNmIGXLxPuPR2iuRwg5OkhX04SdjJGyA3us9aNWkI269NF/nSecc0jcQ0A==}
+ eslint-plugin-react-hooks-extra@1.33.0:
+ resolution: {integrity: sha512-QXcmjnXNm76iNT1t3FGvYYlV4QTdYINa3nIct7ofJXR10VudYKEI/fQrfUpBAmkD9DkQWOauv3f2cjDZOtfZFQ==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8895,8 +8896,8 @@ packages:
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
- eslint-plugin-react-naming-convention@1.32.1:
- resolution: {integrity: sha512-54wxWTNcWZY06hgQUxsuoylGepbydfqPa1IUAFBqgUT5QuomxODE27ni3jEBvrR6B8o9oohSWDoPgf+sllyk+Q==}
+ eslint-plugin-react-naming-convention@1.33.0:
+ resolution: {integrity: sha512-MFyJP/oWThG5nsohWYYRVGX2y1/CUxmpzj8AQvsPVTrOC8lYERGBZ49HL8emToT4aV4i2IDgaNIyn8+pvrMUKw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8918,8 +8919,8 @@ packages:
peerDependencies:
eslint: '>=8.40'
- eslint-plugin-react-web-api@1.32.1:
- resolution: {integrity: sha512-GchxgN47RGMolZNyEUVOJbT3DO8q0xyCesmkug7uyvFKPRerPZYvhhkhZShfyRIjEO7JL21vZrXjLBB4j7qjWw==}
+ eslint-plugin-react-web-api@1.33.0:
+ resolution: {integrity: sha512-I5c+2LfMfBFJ2HzFyI3XXqMJ52FGy1EtOsIKDBQ41cVJi5YpLJwWxxCzHMiJLDaTMyKxh22tdZG3Q+nwGt9frw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8928,8 +8929,8 @@ packages:
typescript:
optional: true
- eslint-plugin-react-x@1.32.1:
- resolution: {integrity: sha512-+bZ+rveU+ugu5yuG35HgHFpBQlNrfN8OY7kPisuuPDYRFw7NI+I//yG3QQ8YsbhmUEEBl25JBpkP+/eXx8CZ1g==}
+ eslint-plugin-react-x@1.33.0:
+ resolution: {integrity: sha512-KwgLNLyyk3N53+hqVfHRwG7+4RMN2sKPj3BhYRXmacVLOCM8WWH3BD9ZuSHzs1aU+vTXr+2GdDF0UrGeqCbfcg==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -9168,8 +9169,8 @@ packages:
peerDependencies:
expo: '*'
- expo-dev-menu@6.0.19:
- resolution: {integrity: sha512-CzjsiUne/Zwr7/AqI5JwcocV2NKQ3lZ3GteVc7ksORU7UZr0a0uTgcmA4ogqbBnFebBRVntxPR6zKXYlsvUGow==}
+ expo-dev-menu@6.0.21:
+ resolution: {integrity: sha512-HO5UpNqGXBFWqGoGQhlvarJLI0jZpXkIXBvl60QGiIwbpSRThVI5jjZ5iCFmrpSJjlSXczaid31ZfKGtggiVdA==}
peerDependencies:
expo: '*'
@@ -9625,8 +9626,8 @@ packages:
flow-enums-runtime@0.0.6:
resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==}
- flow-parser@0.264.0:
- resolution: {integrity: sha512-ic38pWErePVYNrZZlcOLPW9vjJXcq7a1kZJyoSZE2xXioNd2FuGA09Y7iBfHiwpVb67Av2KgBkhwbdcRVflWKw==}
+ flow-parser@0.265.0:
+ resolution: {integrity: sha512-C+bg/TZsDVlLMF14+q9P9FB2pjQSgWwYs0pkIMPE1FsZWS4A0kk1M28V6YphpxAPr3AISVRZ6VgpDepvCk6dGw==}
engines: {node: '>=0.4.0'}
fmix@0.1.0:
@@ -17807,9 +17808,9 @@ snapshots:
'@eslint-community/regexpp@4.12.1': {}
- '@eslint-react/ast@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/ast@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/eff': 1.32.1
+ '@eslint-react/eff': 1.33.0
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2)
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -17820,13 +17821,13 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/core@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/core@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
- '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -17838,34 +17839,34 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/eff@1.32.1': {}
+ '@eslint-react/eff@1.33.0': {}
- '@eslint-react/eslint-plugin@1.32.1(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)':
+ '@eslint-react/eslint-plugin@1.33.0(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/eff': 1.32.1
- '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
eslint: 9.22.0(jiti@2.4.2)
- eslint-plugin-react-debug: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-dom: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-hooks-extra: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-naming-convention: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-web-api: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-x: 1.32.1(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)
+ eslint-plugin-react-debug: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-dom: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-hooks-extra: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-naming-convention: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-web-api: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-x: 1.33.0(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)
optionalDependencies:
typescript: 5.8.2
transitivePeerDependencies:
- supports-color
- ts-api-utils
- '@eslint-react/jsx@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/jsx@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
- '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -17875,9 +17876,9 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/shared@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/shared@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/eff': 1.32.1
+ '@eslint-react/eff': 1.33.0
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
picomatch: 4.0.2
ts-pattern: 5.6.2
@@ -17886,10 +17887,10 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/var@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/var@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -17968,7 +17969,7 @@ snapshots:
'@expo/env': 0.4.2
'@expo/image-utils': 0.6.5
'@expo/json-file': 9.0.2
- '@expo/metro-config': 0.19.12
+ '@expo/metro-config': 0.19.10
'@expo/osascript': 2.1.6
'@expo/package-manager': 1.7.2
'@expo/plist': 0.2.2
@@ -21897,7 +21898,7 @@ snapshots:
dependencies:
'@tsslint/types': 1.5.8
error-stack-parser: 2.1.4
- esbuild: 0.25.1
+ esbuild: 0.24.2
minimatch: 10.0.1
'@tsslint/eslint@1.5.8(jiti@2.4.2)(typescript@5.8.2)':
@@ -23316,7 +23317,7 @@ snapshots:
browserslist@4.24.4:
dependencies:
caniuse-lite: 1.0.30001704
- electron-to-chromium: 1.5.116
+ electron-to-chromium: 1.5.118
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.24.4)
@@ -24878,7 +24879,7 @@ snapshots:
conf: 13.1.0
type-fest: 4.37.0
- electron-to-chromium@1.5.116: {}
+ electron-to-chromium@1.5.118: {}
electron-updater@6.3.9:
dependencies:
@@ -25357,7 +25358,7 @@ snapshots:
eslint-config-hyoban@4.0.1(@types/estree@1.0.6)(@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/eslint-plugin': 1.32.1(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)
+ '@eslint-react/eslint-plugin': 1.33.0(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)
'@eslint/js': 9.22.0
'@stylistic/eslint-plugin': 4.2.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25579,14 +25580,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-debug@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-debug@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
- '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25599,14 +25600,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-dom@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-dom@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
- '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -25624,14 +25625,14 @@ snapshots:
eslint: 9.22.0(jiti@2.4.2)
requireindex: 1.2.0
- eslint-plugin-react-hooks-extra@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-hooks-extra@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
- '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25652,14 +25653,14 @@ snapshots:
dependencies:
eslint: 9.22.0(jiti@2.4.2)
- eslint-plugin-react-naming-convention@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-naming-convention@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
- '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25683,14 +25684,14 @@ snapshots:
dependencies:
eslint: 9.22.0(jiti@2.4.2)
- eslint-plugin-react-web-api@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-web-api@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
- '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -25702,14 +25703,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-x@1.32.1(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2):
+ eslint-plugin-react-x@1.33.0(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.32.1
- '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.33.0
+ '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -26029,7 +26030,7 @@ snapshots:
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-dev-launcher: 5.0.29(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-dev-menu: 6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-menu: 6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-dev-menu-interface: 1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-updates-interface: 1.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -26040,7 +26041,7 @@ snapshots:
dependencies:
ajv: 8.11.0
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu: 6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-menu: 6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
resolve-from: 5.0.0
transitivePeerDependencies:
@@ -26050,7 +26051,7 @@ snapshots:
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu@6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-menu@6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-dev-menu-interface: 1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -26739,7 +26740,7 @@ snapshots:
flow-enums-runtime@0.0.6: {}
- flow-parser@0.264.0: {}
+ flow-parser@0.265.0: {}
fmix@0.1.0:
dependencies:
@@ -27141,7 +27142,7 @@ snapshots:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.3.2
+ fast-glob: 3.3.3
ignore: 5.3.0
merge2: 1.4.1
slash: 3.0.0
@@ -28412,7 +28413,7 @@ snapshots:
'@babel/register': 7.25.9(@babel/core@7.26.10)
babel-core: 7.0.0-bridge.0(@babel/core@7.26.10)
chalk: 4.1.2
- flow-parser: 0.264.0
+ flow-parser: 0.265.0
graceful-fs: 4.2.11
micromatch: 4.0.8
neo-async: 2.6.2
@@ -28435,7 +28436,7 @@ snapshots:
'@babel/preset-flow': 7.25.9(@babel/core@7.26.10)
'@babel/preset-typescript': 7.26.0(@babel/core@7.26.10)
'@babel/register': 7.25.9(@babel/core@7.26.10)
- flow-parser: 0.264.0
+ flow-parser: 0.265.0
graceful-fs: 4.2.11
micromatch: 4.0.8
neo-async: 2.6.2
From 5a6c04af478115c10bf0628658cc52563b890f37 Mon Sep 17 00:00:00 2001
From: DIYgod
Date: Fri, 14 Mar 2025 14:41:18 +0800
Subject: [PATCH 002/123] chore: pnpm lock
---
eslint.config.mjs | 1 +
package.json | 2 +-
pnpm-lock.yaml | 214 +++++++++++++++++++++++-----------------------
3 files changed, 109 insertions(+), 108 deletions(-)
diff --git a/eslint.config.mjs b/eslint.config.mjs
index 003b5405e9..d21de4f80f 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -42,6 +42,7 @@ export default defineConfig(
"no-debug/no-debug-stack": "error",
"@eslint-react/no-clone-element": 0,
"@eslint-react/hooks-extra/no-direct-set-state-in-use-effect": 0,
+ "@eslint-react/dom/no-flush-sync": 1,
// NOTE: Disable this temporarily
"react-compiler/react-compiler": 0,
"no-restricted-syntax": 0,
diff --git a/package.json b/package.json
index abfcd6637a..592464239a 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "@follow/monorepo",
"type": "module",
"private": true,
- "packageManager": "pnpm@9.12.3",
+ "packageManager": "pnpm@10.6.3+sha512.bb45e34d50a9a76e858a95837301bfb6bd6d35aea2c5d52094fa497a467c43f5c440103ce2511e9e0a2f89c3d6071baac3358fc68ac6fb75e2ceb3d2736065e6",
"description": "Follow everything in one place",
"author": "Follow Team",
"license": "GPL-3.0-only",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 499efacb08..6a6b479818 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -16,43 +16,43 @@ overrides:
patchedDependencies:
'@microflash/remark-callout-directives':
- hash: bl6uhe4vs4xm3d2jmecdpzbh2m
+ hash: 6160b1cf0eab6deca36415693dda703746edcd42e0e64b9174294e2210481396
path: patches/@microflash__remark-callout-directives.patch
'@mozilla/readability':
- hash: 43niildbdafdxi7qfcwhpkkxwa
+ hash: b3cfe10b464e980acbe8cc8bbeeab3e1b468381e75d161005192ea3c994eef56
path: patches/@mozilla__readability.patch
'@pengx17/electron-forge-maker-appimage':
- hash: vov3v67fgv3lrfz3n24bnubw4m
+ hash: 5b5ab1ba36e8c0d7ffee912ebf29c1a18bc101c9c661ceb1bb0bda3deaf4c667
path: patches/@pengx17__electron-forge-maker-appimage.patch
daisyui:
- hash: igsntdatmoaxzwxof4bkkh35fy
+ hash: 3a8f5f7ef76a29355b99bb425ff894e55ccab4335656eedbce80ef95f3e2e3f8
path: patches/daisyui.patch
devlop:
- hash: xzgzapu45daboiid4fiusduvwa
+ hash: 85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295
path: patches/devlop.patch
electron-context-menu:
- hash: c53at4t5fflixuwjz35hmcqdu4
+ hash: c02f44f34d5af2bce9cc9df045523cf9802abd17ae9477959e950f48e370ddfe
path: patches/electron-context-menu.patch
hono:
- hash: qptujxncoai6tukc4qaqsrqk24
+ hash: 6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7
path: patches/hono.patch
immer@10.1.1:
- hash: og7mbnoo5vh43tjlw5rbmrdbvu
+ hash: 594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c
path: patches/immer@10.1.1.patch
jsonpointer:
- hash: prxuhlhyjugus5tiew4vc3pahu
+ hash: ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1
path: patches/jsonpointer.patch
re-resizable:
- hash: yitcmpfwcomg2fky72uc3lhk2i
+ hash: 3ade7aa99a03addf6dd453360e3cebfbaa12c907b138352110ad38cd65495c0d
path: patches/re-resizable@6.9.17.patch
react-native-sheet-transitions:
- hash: xmkq4ssu3mefxtr2e65xl27hxi
+ hash: eea5876801b0aa7bd33f0ddfe1a350a37e2bf54a1d4e78537713693db7c79265
path: patches/react-native-sheet-transitions.patch
react-native-track-player:
- hash: ul2ym56izpf2mkfucn2nug6afu
+ hash: debcf90daeaf7d38c744ecb11cded73b5bfc671b8d0937865ec21307414761b3
path: patches/react-native-track-player.patch
workbox-precaching:
- hash: frtipzgil4wle57aliuhcr746e
+ hash: 51e57c78af317e292b43fca4b72f57b247b7b1a1faa8b03c8881ddb798c7c52f
path: patches/workbox-precaching.patch
importers:
@@ -263,7 +263,7 @@ importers:
version: link:../../packages/utils
'@pengx17/electron-forge-maker-appimage':
specifier: 1.2.1
- version: 1.2.1(patch_hash=vov3v67fgv3lrfz3n24bnubw4m)(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)
+ version: 1.2.1(patch_hash=5b5ab1ba36e8c0d7ffee912ebf29c1a18bc101c9c661ceb1bb0bda3deaf4c667)(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)
'@sentry/vite-plugin':
specifier: 3.2.2
version: 3.2.2(encoding@0.1.13)
@@ -296,7 +296,7 @@ importers:
version: 16.4.7
drizzle-orm:
specifier: 0.40.0
- version: 0.40.0(lfgoa6uvatktntjnogv3tipozy)
+ version: 0.40.0(2f5793c88ca65eb1a65de6180ad9846f)
electron:
specifier: 35.0.1
version: 35.0.1
@@ -317,7 +317,7 @@ importers:
version: 17.4.4
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
html-minifier-terser:
specifier: 7.2.0
version: 7.2.0
@@ -380,7 +380,7 @@ importers:
version: 2.0.0
electron-context-menu:
specifier: 4.0.5
- version: 4.0.5(patch_hash=c53at4t5fflixuwjz35hmcqdu4)
+ version: 4.0.5(patch_hash=c02f44f34d5af2bce9cc9df045523cf9802abd17ae9477959e950f48e370ddfe)
electron-log:
specifier: 5.3.2
version: 5.3.2
@@ -453,7 +453,7 @@ importers:
version: 4.0.0
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
apps/desktop/src/renderer:
dependencies:
@@ -612,7 +612,7 @@ importers:
version: 6.2.1
immer:
specifier: 10.1.1
- version: 10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu)
+ version: 10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c)
jotai:
specifier: 2.12.2
version: 2.12.2(@types/react@18.3.12)(react@18.3.1)
@@ -639,7 +639,7 @@ importers:
version: 0.2.0(shiki@3.2.1)
re-resizable:
specifier: 6.11.2
- version: 6.11.2(patch_hash=yitcmpfwcomg2fky72uc3lhk2i)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 6.11.2(patch_hash=3ade7aa99a03addf6dd453360e3cebfbaa12c907b138352110ad38cd65495c0d)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-blurhash:
specifier: 0.3.0
version: 0.3.0(blurhash@2.0.5)(react@18.3.1)
@@ -699,7 +699,7 @@ importers:
version: 3.24.2
zustand:
specifier: 5.0.3
- version: 5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1))
+ version: 5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1))
devDependencies:
'@follow/atoms':
specifier: workspace:*
@@ -784,10 +784,10 @@ importers:
version: 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@react-native-firebase/app-check':
specifier: 21.12.0
- version: 21.12.0(6ygf4ptwpdh2nniv3d2maydqua)
+ version: 21.12.0(a7dd10b17d6ba1584cd0fa20a8498305)
'@react-native-firebase/crashlytics':
specifier: 21.12.0
- version: 21.12.0(6ygf4ptwpdh2nniv3d2maydqua)
+ version: 21.12.0(a7dd10b17d6ba1584cd0fa20a8498305)
'@react-native-picker/picker':
specifier: 2.11.0
version: 2.11.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -796,7 +796,7 @@ importers:
version: 7.2.1(@react-navigation/native@7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-safe-area-context@5.3.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-screens@4.9.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@react-navigation/drawer':
specifier: 7.1.2
- version: 7.1.2(4ztb7iay4vytkaghefpiejcvpm)
+ version: 7.1.2(d2457ef92a2057a0f140a0056c3f1984)
'@react-navigation/native':
specifier: 7.0.15
version: 7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -838,7 +838,7 @@ importers:
version: 7.1.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-av:
specifier: 15.0.2
- version: 15.0.2(sihtl4ayi55bcc6wwo2cffir5a)
+ version: 15.0.2(d89995febf7032ff96b1906d5ce870a1)
expo-blur:
specifier: 14.0.3
version: 14.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -865,7 +865,7 @@ importers:
version: 14.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-image:
specifier: 2.0.6
- version: 2.0.6(sihtl4ayi55bcc6wwo2cffir5a)
+ version: 2.0.6(d89995febf7032ff96b1906d5ce870a1)
expo-image-manipulator:
specifier: 13.0.6
version: 13.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -886,7 +886,7 @@ importers:
version: 17.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-router:
specifier: 4.0.18
- version: 4.0.18(qmbbmoiaq3uvnntmmbx4dnsk2i)
+ version: 4.0.18(1f6365e72b969f147e1d8e49baebaa8f)
expo-secure-store:
specifier: 14.0.1
version: 14.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -916,10 +916,10 @@ importers:
version: 14.0.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
immer:
specifier: 10.1.1
- version: 10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu)
+ version: 10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c)
jotai:
specifier: 2.12.2
version: 2.12.2(@types/react@18.3.12)(react@18.3.1)
@@ -994,16 +994,16 @@ importers:
version: 4.9.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-sheet-transitions:
specifier: 0.1.2
- version: 0.1.2(patch_hash=xmkq4ssu3mefxtr2e65xl27hxi)(react-native-gesture-handler@2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 0.1.2(patch_hash=eea5876801b0aa7bd33f0ddfe1a350a37e2bf54a1d4e78537713693db7c79265)(react-native-gesture-handler@2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-svg:
specifier: 15.11.2
version: 15.11.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-track-player:
specifier: 4.1.1
- version: 4.1.1(patch_hash=ul2ym56izpf2mkfucn2nug6afu)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 4.1.1(patch_hash=debcf90daeaf7d38c744ecb11cded73b5bfc671b8d0937865ec21307414761b3)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-uikit-colors:
specifier: 0.3.8
- version: 0.3.8(r6t6da3bcwna5z5fajkzt5tali)
+ version: 0.3.8(d4c721057694a6ad309a156a4338c29b)
react-native-video:
specifier: 6.10.2
version: 6.10.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -1027,13 +1027,13 @@ importers:
version: 3.1.1(react@18.3.1)
zeego:
specifier: 3.0.5
- version: 3.0.5(r6gcii3uu7jnmmaigjmuiyjoqi)
+ version: 3.0.5(1fe76bcff8498ac2ea4487aabed25813)
zod:
specifier: 3.24.2
version: 3.24.2
zustand:
specifier: 5.0.3
- version: 5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1))
+ version: 5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1))
devDependencies:
'@babel/core':
specifier: 7.26.10
@@ -1074,7 +1074,7 @@ importers:
devDependencies:
expo-module-scripts:
specifier: 4.0.4
- version: 4.0.4(iwnafyibvcklawoco7ng3lqlmm)
+ version: 4.0.4(3850c4a434d4dbe941b2deafddaa124f)
apps/mobile/web-app: {}
@@ -1206,7 +1206,7 @@ importers:
version: 4.0.3
daisyui:
specifier: 4.12.23
- version: 4.12.23(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3)
+ version: 4.12.23(patch_hash=3a8f5f7ef76a29355b99bb425ff894e55ccab4335656eedbce80ef95f3e2e3f8)(postcss@8.5.3)
dotenv-flow:
specifier: 4.1.0
version: 4.1.0
@@ -1284,7 +1284,7 @@ importers:
version: 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@microflash/remark-callout-directives':
specifier: 4.3.3
- version: 4.3.3(patch_hash=bl6uhe4vs4xm3d2jmecdpzbh2m)
+ version: 4.3.3(patch_hash=6160b1cf0eab6deca36415693dda703746edcd42e0e64b9174294e2210481396)
'@radix-ui/react-avatar':
specifier: 1.1.3
version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1492,7 +1492,7 @@ importers:
version: link:../utils
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
packages/shared:
dependencies:
@@ -1504,7 +1504,7 @@ importers:
version: 1.0.1(@types/node@22.13.10)
'@hono/node-server':
specifier: 1.13.8
- version: 1.13.8(hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24))
+ version: 1.13.8(hono@4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7))
'@t3-oss/env-core':
specifier: 0.12.0
version: 0.12.0(typescript@5.8.2)(valibot@1.0.0-beta.15(typescript@5.8.2))(zod@3.24.2)
@@ -1513,10 +1513,10 @@ importers:
version: 1.2.4(typescript@5.8.2)
drizzle-orm:
specifier: 0.40.0
- version: 0.40.0(lfgoa6uvatktntjnogv3tipozy)
+ version: 0.40.0(2f5793c88ca65eb1a65de6180ad9846f)
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
sonner:
specifier: 2.0.1
version: 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1536,7 +1536,7 @@ importers:
version: link:../types
'@mozilla/readability':
specifier: 0.6.0
- version: 0.6.0(patch_hash=43niildbdafdxi7qfcwhpkkxwa)
+ version: 0.6.0(patch_hash=b3cfe10b464e980acbe8cc8bbeeab3e1b468381e75d161005192ea3c994eef56)
chardet:
specifier: 2.1.0
version: 2.1.0
@@ -2460,7 +2460,7 @@ packages:
'@egoist/tipc@0.3.2':
resolution: {integrity: sha512-p8g35BhErVkYIgDqkw/HQJSli1TOsZRIUU9U7PYnYfwru6J/Ep1lwFGH2N6+sQMFi1HkqGTTUlJEISJ1DClfQw==}
peerDependencies:
- electron: 34.2.0
+ electron: '>=26.0.0'
'@electron-forge/cli@7.7.0':
resolution: {integrity: sha512-QfnjghmlHMb7dyArR5cbPA+MP9ff/ulWZi6R/a5MkHlKyhrysRfjzDtZDsmkEv9mGQgRwylssgXrZrKHGlxFkw==}
@@ -2544,7 +2544,7 @@ packages:
'@electron-toolkit/preload@3.0.1':
resolution: {integrity: sha512-EzoQmpK8jqqU8YnM5jRe0GJjGVJPke2KtANqz8QtN2JPT96ViOvProBdK5C6riCm0j1T8jjAGVQCZLQy9OVoIA==}
peerDependencies:
- electron: 34.2.0
+ electron: '>=13.0.0'
'@electron-toolkit/tsconfig@1.0.1':
resolution: {integrity: sha512-M0Mol3odspvtCuheyujLNAW7bXq7KFNYVMRtpjFa4ZfES4MuklXBC7Nli/omvc+PRKlrklgAGx3l4VakjNo8jg==}
@@ -4669,7 +4669,7 @@ packages:
'@radix-ui/react-compose-refs@1.1.1':
resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==}
peerDependencies:
- '@types/react': npm:@types/react@18.3.12
+ '@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -4691,7 +4691,7 @@ packages:
'@radix-ui/react-context@1.1.1':
resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==}
peerDependencies:
- '@types/react': npm:@types/react@18.3.12
+ '@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -4748,7 +4748,7 @@ packages:
'@radix-ui/react-focus-guards@1.1.1':
resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==}
peerDependencies:
- '@types/react': npm:@types/react@18.3.12
+ '@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -5036,7 +5036,7 @@ packages:
'@radix-ui/react-use-controllable-state@1.1.0':
resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
peerDependencies:
- '@types/react': npm:@types/react@18.3.12
+ '@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -16026,7 +16026,7 @@ snapshots:
dependencies:
ajv: 8.17.1
json-schema: 0.4.0
- jsonpointer: 5.0.1(patch_hash=prxuhlhyjugus5tiew4vc3pahu)
+ jsonpointer: 5.0.1(patch_hash=ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1)
leven: 3.1.0
'@babel/cli@7.26.4(@babel/core@7.26.10)':
@@ -19286,9 +19286,9 @@ snapshots:
'@hexagon/base64@1.1.28': {}
- '@hono/node-server@1.13.8(hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24))':
+ '@hono/node-server@1.13.8(hono@4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7))':
dependencies:
- hono: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ hono: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
'@hookform/resolvers@4.1.3(react-hook-form@7.54.2(react@18.3.1))':
dependencies:
@@ -19702,7 +19702,7 @@ snapshots:
- encoding
- supports-color
- '@microflash/remark-callout-directives@4.3.3(patch_hash=bl6uhe4vs4xm3d2jmecdpzbh2m)':
+ '@microflash/remark-callout-directives@4.3.3(patch_hash=6160b1cf0eab6deca36415693dda703746edcd42e0e64b9174294e2210481396)':
dependencies:
defu: 6.1.4
hastscript: 9.0.1
@@ -19711,7 +19711,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@mozilla/readability@0.6.0(patch_hash=43niildbdafdxi7qfcwhpkkxwa)': {}
+ '@mozilla/readability@0.6.0(patch_hash=b3cfe10b464e980acbe8cc8bbeeab3e1b468381e75d161005192ea3c994eef56)': {}
'@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3':
optional: true
@@ -20249,7 +20249,7 @@ snapshots:
pvtsutils: 1.3.6
tslib: 2.8.1
- '@pengx17/electron-forge-maker-appimage@1.2.1(patch_hash=vov3v67fgv3lrfz3n24bnubw4m)(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)':
+ '@pengx17/electron-forge-maker-appimage@1.2.1(patch_hash=5b5ab1ba36e8c0d7ffee912ebf29c1a18bc101c9c661ceb1bb0bda3deaf4c667)(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)':
dependencies:
'@electron-forge/maker-base': 7.7.0
'@electron-forge/shared-types': 7.7.0
@@ -20942,7 +20942,7 @@ snapshots:
'@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
superstruct: 2.0.2
- '@react-native-firebase/app-check@21.12.0(6ygf4ptwpdh2nniv3d2maydqua)':
+ '@react-native-firebase/app-check@21.12.0(a7dd10b17d6ba1584cd0fa20a8498305)':
dependencies:
'@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
optionalDependencies:
@@ -20958,7 +20958,7 @@ snapshots:
transitivePeerDependencies:
- '@react-native-async-storage/async-storage'
- '@react-native-firebase/crashlytics@21.12.0(6ygf4ptwpdh2nniv3d2maydqua)':
+ '@react-native-firebase/crashlytics@21.12.0(a7dd10b17d6ba1584cd0fa20a8498305)':
dependencies:
'@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
stacktrace-js: 2.0.2
@@ -21236,7 +21236,7 @@ snapshots:
use-latest-callback: 0.2.3(react@18.3.1)
use-sync-external-store: 1.4.0(react@18.3.1)
- '@react-navigation/drawer@7.1.2(4ztb7iay4vytkaghefpiejcvpm)':
+ '@react-navigation/drawer@7.1.2(d2457ef92a2057a0f140a0056c3f1984)':
dependencies:
'@react-navigation/elements': 2.2.6(@react-navigation/native@7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-safe-area-context@5.3.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@react-navigation/native': 7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -21898,7 +21898,7 @@ snapshots:
dependencies:
'@tsslint/types': 1.5.8
error-stack-parser: 2.1.4
- esbuild: 0.24.2
+ esbuild: 0.25.1
minimatch: 10.0.1
'@tsslint/eslint@1.5.8(jiti@2.4.2)(typescript@5.8.2)':
@@ -24319,7 +24319,7 @@ snapshots:
culori@3.3.0: {}
- daisyui@4.12.23(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3):
+ daisyui@4.12.23(patch_hash=3a8f5f7ef76a29355b99bb425ff894e55ccab4335656eedbce80ef95f3e2e3f8)(postcss@8.5.3):
dependencies:
css-selector-tokenizer: 0.8.0
culori: 3.3.0
@@ -24519,7 +24519,7 @@ snapshots:
detect-node@2.1.0:
optional: true
- devlop@1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa):
+ devlop@1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295):
dependencies:
dequal: 2.0.3
@@ -24670,7 +24670,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.40.0(lfgoa6uvatktntjnogv3tipozy):
+ drizzle-orm@0.40.0(2f5793c88ca65eb1a65de6180ad9846f):
optionalDependencies:
'@opentelemetry/api': 1.9.0
'@types/pg': 8.6.1
@@ -24821,7 +24821,7 @@ snapshots:
- dmg-builder
- supports-color
- electron-context-menu@4.0.5(patch_hash=c53at4t5fflixuwjz35hmcqdu4):
+ electron-context-menu@4.0.5(patch_hash=c02f44f34d5af2bce9cc9df045523cf9802abd17ae9477959e950f48e370ddfe):
dependencies:
cli-truncate: 4.0.0
electron-dl: 4.0.0
@@ -25982,7 +25982,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- expo-av@15.0.2(sihtl4ayi55bcc6wwo2cffir5a):
+ expo-av@15.0.2(d89995febf7032ff96b1906d5ce870a1):
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
@@ -26112,7 +26112,7 @@ snapshots:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-image-loader: 5.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-image@2.0.6(sihtl4ayi55bcc6wwo2cffir5a):
+ expo-image@2.0.6(d89995febf7032ff96b1906d5ce870a1):
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
@@ -26167,7 +26167,7 @@ snapshots:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
- expo-module-scripts@4.0.4(iwnafyibvcklawoco7ng3lqlmm):
+ expo-module-scripts@4.0.4(3850c4a434d4dbe941b2deafddaa124f):
dependencies:
'@babel/cli': 7.26.4(@babel/core@7.26.10)
'@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10)
@@ -26182,7 +26182,7 @@ snapshots:
commander: 12.1.0
eslint-config-universe: 14.0.0(@types/eslint@9.6.1)(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3)(typescript@5.8.2)
glob: 10.4.5
- jest-expo: 52.0.6(kkpktwcy2szkho27app4jecqwi)
+ jest-expo: 52.0.6(5f24dce313b65d87a76923ff4f801b6f)
jest-snapshot-prettier: prettier@2.8.8
jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))
resolve-workspace-root: 2.0.0
@@ -26243,7 +26243,7 @@ snapshots:
dependencies:
invariant: 2.2.4
- expo-router@4.0.18(qmbbmoiaq3uvnntmmbx4dnsk2i):
+ expo-router@4.0.18(1f6365e72b969f147e1d8e49baebaa8f):
dependencies:
'@expo/metro-runtime': 4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
'@expo/server': 0.5.2
@@ -26264,7 +26264,7 @@ snapshots:
semver: 7.6.3
server-only: 0.0.1
optionalDependencies:
- '@react-navigation/drawer': 7.1.2(4ztb7iay4vytkaghefpiejcvpm)
+ '@react-navigation/drawer': 7.1.2(d2457ef92a2057a0f140a0056c3f1984)
react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -27245,7 +27245,7 @@ snapshots:
hast-util-from-html@2.0.3:
dependencies:
'@types/hast': 3.0.4
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
hast-util-from-parse5: 8.0.3
parse5: 7.2.1
vfile: 5.3.7
@@ -27255,7 +27255,7 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
'@types/unist': 3.0.3
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
hastscript: 9.0.1
property-information: 7.0.0
vfile: 5.3.7
@@ -27307,7 +27307,7 @@ snapshots:
bcp-47-match: 2.0.3
comma-separated-tokens: 2.0.3
css-selector-parser: 3.0.5
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
direction: 2.0.1
hast-util-has-property: 3.0.0
hast-util-to-string: 3.0.1
@@ -27338,7 +27338,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/unist': 3.0.3
comma-separated-tokens: 2.0.3
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
estree-util-is-identifier-name: 3.0.0
hast-util-whitespace: 3.0.0
mdast-util-mdx-expression: 2.0.1
@@ -27422,7 +27422,7 @@ snapshots:
dependencies:
react-is: 16.13.1
- hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24): {}
+ hono@4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7): {}
hosted-git-info@2.8.9: {}
@@ -27585,7 +27585,7 @@ snapshots:
immediate@3.0.6: {}
- immer@10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu): {}
+ immer@10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c): {}
import-fresh@2.0.0:
dependencies:
@@ -27789,7 +27789,7 @@ snapshots:
generate-function: 2.3.1
generate-object-property: 1.2.0
is-my-ip-valid: 1.0.1
- jsonpointer: 5.0.1(patch_hash=prxuhlhyjugus5tiew4vc3pahu)
+ jsonpointer: 5.0.1(patch_hash=ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1)
xtend: 4.0.2
optional: true
@@ -28086,7 +28086,7 @@ snapshots:
jest-mock: 29.7.0
jest-util: 29.7.0
- jest-expo@52.0.6(kkpktwcy2szkho27app4jecqwi):
+ jest-expo@52.0.6(5f24dce313b65d87a76923ff4f801b6f):
dependencies:
'@expo/config': 10.0.11
'@expo/json-file': 9.0.2
@@ -28541,7 +28541,7 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
- jsonpointer@5.0.1(patch_hash=prxuhlhyjugus5tiew4vc3pahu): {}
+ jsonpointer@5.0.1(patch_hash=ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1): {}
jsonwebtoken@9.0.0:
dependencies:
@@ -29068,7 +29068,7 @@ snapshots:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
ccount: 2.0.1
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
parse-entities: 4.0.2
@@ -29089,7 +29089,7 @@ snapshots:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
decode-named-character-reference: 1.1.0
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
mdast-util-to-string: 4.0.0
micromark: 4.0.2
micromark-util-decode-numeric-character-reference: 2.0.2
@@ -29105,14 +29105,14 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
ccount: 2.0.1
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
mdast-util-find-and-replace: 3.0.2
micromark-util-character: 2.1.1
mdast-util-gfm-footnote@2.1.0:
dependencies:
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
micromark-util-normalize-identifier: 2.0.1
@@ -29130,7 +29130,7 @@ snapshots:
mdast-util-gfm-table@2.0.0:
dependencies:
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
markdown-table: 3.0.4
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
@@ -29140,7 +29140,7 @@ snapshots:
mdast-util-gfm-task-list-item@2.0.0:
dependencies:
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
@@ -29163,7 +29163,7 @@ snapshots:
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
@@ -29176,7 +29176,7 @@ snapshots:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
ccount: 2.0.1
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
parse-entities: 4.0.2
@@ -29191,7 +29191,7 @@ snapshots:
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
@@ -29207,7 +29207,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
'@ungap/structured-clone': 1.3.0
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-util-sanitize-uri: 2.0.1
trim-lines: 3.0.1
unist-util-position: 5.0.0
@@ -29427,7 +29427,7 @@ snapshots:
micromark-core-commonmark@2.0.3:
dependencies:
decode-named-character-reference: 1.1.0
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-factory-destination: 2.0.1
micromark-factory-label: 2.0.1
micromark-factory-space: 2.0.1
@@ -29445,7 +29445,7 @@ snapshots:
micromark-extension-directive@4.0.0:
dependencies:
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-factory-space: 2.0.1
micromark-factory-whitespace: 2.0.1
micromark-util-character: 2.1.1
@@ -29462,7 +29462,7 @@ snapshots:
micromark-extension-gfm-footnote@2.1.0:
dependencies:
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
@@ -29473,7 +29473,7 @@ snapshots:
micromark-extension-gfm-strikethrough@2.1.0:
dependencies:
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-util-chunked: 2.0.1
micromark-util-classify-character: 2.0.1
micromark-util-resolve-all: 2.0.1
@@ -29482,7 +29482,7 @@ snapshots:
micromark-extension-gfm-table@2.1.1:
dependencies:
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
@@ -29494,7 +29494,7 @@ snapshots:
micromark-extension-gfm-task-list-item@2.1.0:
dependencies:
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
@@ -29519,7 +29519,7 @@ snapshots:
micromark-factory-label@2.0.1:
dependencies:
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
micromark-util-types: 2.0.2
@@ -29594,7 +29594,7 @@ snapshots:
micromark-util-subtokenize@2.1.0:
dependencies:
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-util-chunked: 2.0.1
micromark-util-symbol: 2.0.1
micromark-util-types: 2.0.2
@@ -29608,7 +29608,7 @@ snapshots:
'@types/debug': 4.1.12
debug: 4.4.0(supports-color@8.1.1)
decode-named-character-reference: 1.1.0
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
@@ -31129,7 +31129,7 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
- re-resizable@6.11.2(patch_hash=yitcmpfwcomg2fky72uc3lhk2i)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ re-resizable@6.11.2(patch_hash=3ade7aa99a03addf6dd453360e3cebfbaa12c907b138352110ad38cd65495c0d)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -31364,7 +31364,7 @@ snapshots:
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
warn-once: 0.1.1
- react-native-sheet-transitions@0.1.2(patch_hash=xmkq4ssu3mefxtr2e65xl27hxi)(react-native-gesture-handler@2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ react-native-sheet-transitions@0.1.2(patch_hash=eea5876801b0aa7bd33f0ddfe1a350a37e2bf54a1d4e78537713693db7c79265)(react-native-gesture-handler@2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
@@ -31379,12 +31379,12 @@ snapshots:
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
warn-once: 0.1.1
- react-native-track-player@4.1.1(patch_hash=ul2ym56izpf2mkfucn2nug6afu)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ react-native-track-player@4.1.1(patch_hash=debcf90daeaf7d38c744ecb11cded73b5bfc671b8d0937865ec21307414761b3)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
- react-native-uikit-colors@0.3.8(r6t6da3bcwna5z5fajkzt5tali):
+ react-native-uikit-colors@0.3.8(d4c721057694a6ad309a156a4338c29b):
dependencies:
apple-uikit-colors: 0.3.8
nativewind: 4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-safe-area-context@5.3.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-svg@15.11.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))
@@ -33418,7 +33418,7 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
bail: 2.0.2
- devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
+ devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
extend: 3.0.2
is-plain-obj: 4.1.0
trough: 2.2.0
@@ -34038,7 +34038,7 @@ snapshots:
workbox-expiration: 7.3.0
workbox-google-analytics: 7.3.0
workbox-navigation-preload: 7.3.0
- workbox-precaching: 7.3.0(patch_hash=frtipzgil4wle57aliuhcr746e)
+ workbox-precaching: 7.3.0(patch_hash=51e57c78af317e292b43fca4b72f57b247b7b1a1faa8b03c8881ddb798c7c52f)
workbox-range-requests: 7.3.0
workbox-recipes: 7.3.0
workbox-routing: 7.3.0
@@ -34072,7 +34072,7 @@ snapshots:
dependencies:
workbox-core: 7.3.0
- workbox-precaching@7.3.0(patch_hash=frtipzgil4wle57aliuhcr746e):
+ workbox-precaching@7.3.0(patch_hash=51e57c78af317e292b43fca4b72f57b247b7b1a1faa8b03c8881ddb798c7c52f):
dependencies:
workbox-core: 7.3.0
workbox-routing: 7.3.0
@@ -34087,7 +34087,7 @@ snapshots:
workbox-cacheable-response: 7.3.0
workbox-core: 7.3.0
workbox-expiration: 7.3.0
- workbox-precaching: 7.3.0(patch_hash=frtipzgil4wle57aliuhcr746e)
+ workbox-precaching: 7.3.0(patch_hash=51e57c78af317e292b43fca4b72f57b247b7b1a1faa8b03c8881ddb798c7c52f)
workbox-routing: 7.3.0
workbox-strategies: 7.3.0
@@ -34273,7 +34273,7 @@ snapshots:
yoga-wasm-web@0.3.3: {}
- zeego@3.0.5(r6gcii3uu7jnmmaigjmuiyjoqi):
+ zeego@3.0.5(1fe76bcff8498ac2ea4487aabed25813):
dependencies:
'@radix-ui/react-context-menu': 2.2.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-dropdown-menu': 2.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -34300,10 +34300,10 @@ snapshots:
zod@3.24.2: {}
- zustand@5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)):
+ zustand@5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)):
optionalDependencies:
'@types/react': 18.3.12
- immer: 10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu)
+ immer: 10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c)
react: 18.3.1
use-sync-external-store: 1.4.0(react@18.3.1)
From ed49c788c7447310ab99d2d102d1326904035366 Mon Sep 17 00:00:00 2001
From: DIYgod
Date: Fri, 14 Mar 2025 15:07:40 +0800
Subject: [PATCH 003/123] chore: revert
---
package.json | 3 +-
pnpm-lock.yaml | 425 ++++++++++++++++++++++++-------------------------
2 files changed, 213 insertions(+), 215 deletions(-)
diff --git a/package.json b/package.json
index 592464239a..0227eae772 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "@follow/monorepo",
"type": "module",
"private": true,
- "packageManager": "pnpm@10.6.3+sha512.bb45e34d50a9a76e858a95837301bfb6bd6d35aea2c5d52094fa497a467c43f5c440103ce2511e9e0a2f89c3d6071baac3358fc68ac6fb75e2ceb3d2736065e6",
+ "packageManager": "pnpm@9.12.3",
"description": "Follow everything in one place",
"author": "Follow Team",
"license": "GPL-3.0-only",
@@ -104,7 +104,6 @@
},
"overrides": {
"@electron/node-gyp": "10.2.0-electron.2",
- "expo-dev-menu": "6.0.21",
"is-core-module": "npm:@nolyfill/is-core-module@1",
"isarray": "npm:@nolyfill/isarray@1",
"react": "18.3.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 6a6b479818..4dad35f25f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,7 +6,6 @@ settings:
overrides:
'@electron/node-gyp': 10.2.0-electron.2
- expo-dev-menu: 6.0.21
is-core-module: npm:@nolyfill/is-core-module@1
isarray: npm:@nolyfill/isarray@1
react: 18.3.1
@@ -16,43 +15,43 @@ overrides:
patchedDependencies:
'@microflash/remark-callout-directives':
- hash: 6160b1cf0eab6deca36415693dda703746edcd42e0e64b9174294e2210481396
+ hash: bl6uhe4vs4xm3d2jmecdpzbh2m
path: patches/@microflash__remark-callout-directives.patch
'@mozilla/readability':
- hash: b3cfe10b464e980acbe8cc8bbeeab3e1b468381e75d161005192ea3c994eef56
+ hash: 43niildbdafdxi7qfcwhpkkxwa
path: patches/@mozilla__readability.patch
'@pengx17/electron-forge-maker-appimage':
- hash: 5b5ab1ba36e8c0d7ffee912ebf29c1a18bc101c9c661ceb1bb0bda3deaf4c667
+ hash: vov3v67fgv3lrfz3n24bnubw4m
path: patches/@pengx17__electron-forge-maker-appimage.patch
daisyui:
- hash: 3a8f5f7ef76a29355b99bb425ff894e55ccab4335656eedbce80ef95f3e2e3f8
+ hash: igsntdatmoaxzwxof4bkkh35fy
path: patches/daisyui.patch
devlop:
- hash: 85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295
+ hash: xzgzapu45daboiid4fiusduvwa
path: patches/devlop.patch
electron-context-menu:
- hash: c02f44f34d5af2bce9cc9df045523cf9802abd17ae9477959e950f48e370ddfe
+ hash: c53at4t5fflixuwjz35hmcqdu4
path: patches/electron-context-menu.patch
hono:
- hash: 6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7
+ hash: qptujxncoai6tukc4qaqsrqk24
path: patches/hono.patch
immer@10.1.1:
- hash: 594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c
+ hash: og7mbnoo5vh43tjlw5rbmrdbvu
path: patches/immer@10.1.1.patch
jsonpointer:
- hash: ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1
+ hash: prxuhlhyjugus5tiew4vc3pahu
path: patches/jsonpointer.patch
re-resizable:
- hash: 3ade7aa99a03addf6dd453360e3cebfbaa12c907b138352110ad38cd65495c0d
+ hash: yitcmpfwcomg2fky72uc3lhk2i
path: patches/re-resizable@6.9.17.patch
react-native-sheet-transitions:
- hash: eea5876801b0aa7bd33f0ddfe1a350a37e2bf54a1d4e78537713693db7c79265
+ hash: xmkq4ssu3mefxtr2e65xl27hxi
path: patches/react-native-sheet-transitions.patch
react-native-track-player:
- hash: debcf90daeaf7d38c744ecb11cded73b5bfc671b8d0937865ec21307414761b3
+ hash: ul2ym56izpf2mkfucn2nug6afu
path: patches/react-native-track-player.patch
workbox-precaching:
- hash: 51e57c78af317e292b43fca4b72f57b247b7b1a1faa8b03c8881ddb798c7c52f
+ hash: frtipzgil4wle57aliuhcr746e
path: patches/workbox-precaching.patch
importers:
@@ -263,7 +262,7 @@ importers:
version: link:../../packages/utils
'@pengx17/electron-forge-maker-appimage':
specifier: 1.2.1
- version: 1.2.1(patch_hash=5b5ab1ba36e8c0d7ffee912ebf29c1a18bc101c9c661ceb1bb0bda3deaf4c667)(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)
+ version: 1.2.1(patch_hash=vov3v67fgv3lrfz3n24bnubw4m)(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)
'@sentry/vite-plugin':
specifier: 3.2.2
version: 3.2.2(encoding@0.1.13)
@@ -296,7 +295,7 @@ importers:
version: 16.4.7
drizzle-orm:
specifier: 0.40.0
- version: 0.40.0(2f5793c88ca65eb1a65de6180ad9846f)
+ version: 0.40.0(lfgoa6uvatktntjnogv3tipozy)
electron:
specifier: 35.0.1
version: 35.0.1
@@ -317,7 +316,7 @@ importers:
version: 17.4.4
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
+ version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
html-minifier-terser:
specifier: 7.2.0
version: 7.2.0
@@ -380,7 +379,7 @@ importers:
version: 2.0.0
electron-context-menu:
specifier: 4.0.5
- version: 4.0.5(patch_hash=c02f44f34d5af2bce9cc9df045523cf9802abd17ae9477959e950f48e370ddfe)
+ version: 4.0.5(patch_hash=c53at4t5fflixuwjz35hmcqdu4)
electron-log:
specifier: 5.3.2
version: 5.3.2
@@ -453,7 +452,7 @@ importers:
version: 4.0.0
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
+ version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
apps/desktop/src/renderer:
dependencies:
@@ -612,7 +611,7 @@ importers:
version: 6.2.1
immer:
specifier: 10.1.1
- version: 10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c)
+ version: 10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu)
jotai:
specifier: 2.12.2
version: 2.12.2(@types/react@18.3.12)(react@18.3.1)
@@ -639,7 +638,7 @@ importers:
version: 0.2.0(shiki@3.2.1)
re-resizable:
specifier: 6.11.2
- version: 6.11.2(patch_hash=3ade7aa99a03addf6dd453360e3cebfbaa12c907b138352110ad38cd65495c0d)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 6.11.2(patch_hash=yitcmpfwcomg2fky72uc3lhk2i)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-blurhash:
specifier: 0.3.0
version: 0.3.0(blurhash@2.0.5)(react@18.3.1)
@@ -699,7 +698,7 @@ importers:
version: 3.24.2
zustand:
specifier: 5.0.3
- version: 5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1))
+ version: 5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1))
devDependencies:
'@follow/atoms':
specifier: workspace:*
@@ -784,10 +783,10 @@ importers:
version: 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@react-native-firebase/app-check':
specifier: 21.12.0
- version: 21.12.0(a7dd10b17d6ba1584cd0fa20a8498305)
+ version: 21.12.0(6ygf4ptwpdh2nniv3d2maydqua)
'@react-native-firebase/crashlytics':
specifier: 21.12.0
- version: 21.12.0(a7dd10b17d6ba1584cd0fa20a8498305)
+ version: 21.12.0(6ygf4ptwpdh2nniv3d2maydqua)
'@react-native-picker/picker':
specifier: 2.11.0
version: 2.11.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -796,7 +795,7 @@ importers:
version: 7.2.1(@react-navigation/native@7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-safe-area-context@5.3.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-screens@4.9.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@react-navigation/drawer':
specifier: 7.1.2
- version: 7.1.2(d2457ef92a2057a0f140a0056c3f1984)
+ version: 7.1.2(4ztb7iay4vytkaghefpiejcvpm)
'@react-navigation/native':
specifier: 7.0.15
version: 7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -838,7 +837,7 @@ importers:
version: 7.1.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-av:
specifier: 15.0.2
- version: 15.0.2(d89995febf7032ff96b1906d5ce870a1)
+ version: 15.0.2(sihtl4ayi55bcc6wwo2cffir5a)
expo-blur:
specifier: 14.0.3
version: 14.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -865,7 +864,7 @@ importers:
version: 14.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-image:
specifier: 2.0.6
- version: 2.0.6(d89995febf7032ff96b1906d5ce870a1)
+ version: 2.0.6(sihtl4ayi55bcc6wwo2cffir5a)
expo-image-manipulator:
specifier: 13.0.6
version: 13.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -886,7 +885,7 @@ importers:
version: 17.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-router:
specifier: 4.0.18
- version: 4.0.18(1f6365e72b969f147e1d8e49baebaa8f)
+ version: 4.0.18(qmbbmoiaq3uvnntmmbx4dnsk2i)
expo-secure-store:
specifier: 14.0.1
version: 14.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -916,10 +915,10 @@ importers:
version: 14.0.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
+ version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
immer:
specifier: 10.1.1
- version: 10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c)
+ version: 10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu)
jotai:
specifier: 2.12.2
version: 2.12.2(@types/react@18.3.12)(react@18.3.1)
@@ -994,16 +993,16 @@ importers:
version: 4.9.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-sheet-transitions:
specifier: 0.1.2
- version: 0.1.2(patch_hash=eea5876801b0aa7bd33f0ddfe1a350a37e2bf54a1d4e78537713693db7c79265)(react-native-gesture-handler@2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 0.1.2(patch_hash=xmkq4ssu3mefxtr2e65xl27hxi)(react-native-gesture-handler@2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-svg:
specifier: 15.11.2
version: 15.11.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-track-player:
specifier: 4.1.1
- version: 4.1.1(patch_hash=debcf90daeaf7d38c744ecb11cded73b5bfc671b8d0937865ec21307414761b3)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 4.1.1(patch_hash=ul2ym56izpf2mkfucn2nug6afu)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-uikit-colors:
specifier: 0.3.8
- version: 0.3.8(d4c721057694a6ad309a156a4338c29b)
+ version: 0.3.8(r6t6da3bcwna5z5fajkzt5tali)
react-native-video:
specifier: 6.10.2
version: 6.10.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -1027,13 +1026,13 @@ importers:
version: 3.1.1(react@18.3.1)
zeego:
specifier: 3.0.5
- version: 3.0.5(1fe76bcff8498ac2ea4487aabed25813)
+ version: 3.0.5(r6gcii3uu7jnmmaigjmuiyjoqi)
zod:
specifier: 3.24.2
version: 3.24.2
zustand:
specifier: 5.0.3
- version: 5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1))
+ version: 5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1))
devDependencies:
'@babel/core':
specifier: 7.26.10
@@ -1074,7 +1073,7 @@ importers:
devDependencies:
expo-module-scripts:
specifier: 4.0.4
- version: 4.0.4(3850c4a434d4dbe941b2deafddaa124f)
+ version: 4.0.4(iwnafyibvcklawoco7ng3lqlmm)
apps/mobile/web-app: {}
@@ -1206,7 +1205,7 @@ importers:
version: 4.0.3
daisyui:
specifier: 4.12.23
- version: 4.12.23(patch_hash=3a8f5f7ef76a29355b99bb425ff894e55ccab4335656eedbce80ef95f3e2e3f8)(postcss@8.5.3)
+ version: 4.12.23(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3)
dotenv-flow:
specifier: 4.1.0
version: 4.1.0
@@ -1284,7 +1283,7 @@ importers:
version: 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@microflash/remark-callout-directives':
specifier: 4.3.3
- version: 4.3.3(patch_hash=6160b1cf0eab6deca36415693dda703746edcd42e0e64b9174294e2210481396)
+ version: 4.3.3(patch_hash=bl6uhe4vs4xm3d2jmecdpzbh2m)
'@radix-ui/react-avatar':
specifier: 1.1.3
version: 1.1.3(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1492,7 +1491,7 @@ importers:
version: link:../utils
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
+ version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
packages/shared:
dependencies:
@@ -1504,7 +1503,7 @@ importers:
version: 1.0.1(@types/node@22.13.10)
'@hono/node-server':
specifier: 1.13.8
- version: 1.13.8(hono@4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7))
+ version: 1.13.8(hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24))
'@t3-oss/env-core':
specifier: 0.12.0
version: 0.12.0(typescript@5.8.2)(valibot@1.0.0-beta.15(typescript@5.8.2))(zod@3.24.2)
@@ -1513,10 +1512,10 @@ importers:
version: 1.2.4(typescript@5.8.2)
drizzle-orm:
specifier: 0.40.0
- version: 0.40.0(2f5793c88ca65eb1a65de6180ad9846f)
+ version: 0.40.0(lfgoa6uvatktntjnogv3tipozy)
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
+ version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
sonner:
specifier: 2.0.1
version: 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1536,7 +1535,7 @@ importers:
version: link:../types
'@mozilla/readability':
specifier: 0.6.0
- version: 0.6.0(patch_hash=b3cfe10b464e980acbe8cc8bbeeab3e1b468381e75d161005192ea3c994eef56)
+ version: 0.6.0(patch_hash=43niildbdafdxi7qfcwhpkkxwa)
chardet:
specifier: 2.1.0
version: 2.1.0
@@ -3215,20 +3214,20 @@ packages:
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint-react/ast@1.33.0':
- resolution: {integrity: sha512-5cscyN/svvFIrMADzTcd5yTCRQRf6s7mhcLNQSOqzPoZJ/r/u+6+IbehDIFlX8EYEC5CJGy/x2K3rkiaRqhPlw==}
+ '@eslint-react/ast@1.32.1':
+ resolution: {integrity: sha512-dYpSkHK0D/kCynCy34lTywrENMHrYJj8Q+/uUNaVSnrVNTfh8LCMIIjnhSfKzsQsQe09risiGwm5HiryN7EwGw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/core@1.33.0':
- resolution: {integrity: sha512-wUKbpMhGcM2mdZKsIzhH81iZ3Jt5EyRwU8aeTM/Jh3kYpCMcQ3co4X3Sk11oJjO1cF4Gy5mFf7EjTv+i+X4P6w==}
+ '@eslint-react/core@1.32.1':
+ resolution: {integrity: sha512-rPvdQ66SQzfQg+4/1fkZWQwDjMSsxQJeyZDkEYtvaKSZDPFcPgpp1P2vth5Znn47DcFBIuDUNCnnlnb2R2IcMQ==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/eff@1.33.0':
- resolution: {integrity: sha512-Nj9QZ0j4yltQPgLTW3uGS087hxHetmrylnpLx1LtznEoEXF7QEkN0VokBAyABalTl7iU4zIiUfhwYhW6IeEOcQ==}
+ '@eslint-react/eff@1.32.1':
+ resolution: {integrity: sha512-cvNOn5wLDpSbBqs0Tt84DjHD+bOXr75MkVpBk8UzCzqio8WuxqKdlhRCfQoedpVVrGlRHPJsrxlXX3pmvoIfHw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/eslint-plugin@1.33.0':
- resolution: {integrity: sha512-uckmb1y3ded+pOmHxSmwLp8hJYN41ZpFmD9mjcFrGDlPJnVZjr0+QCKYVlY/nAG4Du2gXOcRSccx5UFOoVzObw==}
+ '@eslint-react/eslint-plugin@1.32.1':
+ resolution: {integrity: sha512-Z6wu6irFxP1ckEtzkDK6NIvgrU2350yzVAMCBKc9TL7gbpdoqVPTvQD55VtNNfvHyaXkFTIf2cV/ARm+vm0baw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -3237,16 +3236,16 @@ packages:
typescript:
optional: true
- '@eslint-react/jsx@1.33.0':
- resolution: {integrity: sha512-CEkusLd5LMEvLl4XDMNrxsiW90oMYblslgi4kXtXlqD8gRIN7CfjT51RivP473qN2bNSXIYXayu9zZQ3DvlJMg==}
+ '@eslint-react/jsx@1.32.1':
+ resolution: {integrity: sha512-uQ7GNo0g+DXPLeqlCLWqCod1JiSqO8HXHQhhC75WaS+3mQOo8lBfYYV+6r4Dn/QP4MufWwy7tneHu6D583K0ag==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/shared@1.33.0':
- resolution: {integrity: sha512-33q+zZv4Um/jbYHmjRjF8NxVa/v1xIUaFWTam5XbToMzPaHNmg0KiFGi2zL+tgnNZAH5g+a9cy687+nPpG8W6Q==}
+ '@eslint-react/shared@1.32.1':
+ resolution: {integrity: sha512-pt9s7YzSdPNmie6ZnAmmLlzNwS6GKTR4DZxCx4DuAcHUutK5sWwU5u0lJHo98oyfxsOnWBK6gB7mHqwXYFdfNg==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
- '@eslint-react/var@1.33.0':
- resolution: {integrity: sha512-4bN084jzM1VmlyO8E3OFu6tHC3Njp6hNkVPrVa2ptk72IunJfe56IbptZOt9k/H3gUkCOhrXzeurFkx4FgiBgA==}
+ '@eslint-react/var@1.32.1':
+ resolution: {integrity: sha512-vD+PqNbb7sHv8u6aaPO6q4mkQS4UByXlHH2bkUFQhDYBYLRBK5QDq8hqpKPERwaxTQMEufufwMuUGhtZm5pMaA==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
'@eslint/compat@1.2.7':
@@ -8329,8 +8328,8 @@ packages:
resolution: {integrity: sha512-Ok0bF13WWdTzZi9rCtPN8wUfwx+yDMmV6PAnCMqjNRKEXHmklW/rV+6DofV/Vf5qoAh+Bl9Bj7dQ+0W+IL2psg==}
engines: {node: '>=20'}
- electron-to-chromium@1.5.118:
- resolution: {integrity: sha512-yNDUus0iultYyVoEFLnQeei7LOQkL8wg8GQpkPCRrOlJXlcCwa6eGKZkxQ9ciHsqZyYbj8Jd94X1CTPzGm+uIA==}
+ electron-to-chromium@1.5.116:
+ resolution: {integrity: sha512-mufxTCJzLBQVvSdZzX1s5YAuXsN1M4tTyYxOOL1TcSKtIzQ9rjIrm7yFK80rN5dwGTePgdoABDSHpuVtRQh0Zw==}
electron-updater@6.3.9:
resolution: {integrity: sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==}
@@ -8848,8 +8847,8 @@ packages:
peerDependencies:
eslint: '>=7'
- eslint-plugin-react-debug@1.33.0:
- resolution: {integrity: sha512-XVfAazHA2YYyWa3tMNn7DJPaAkokYnebA9uNRfv9j5IQP9nf6Hi8wwIp9x4C7KchXnd2PQZFfXZRS+7/OfcZSw==}
+ eslint-plugin-react-debug@1.32.1:
+ resolution: {integrity: sha512-5RFiww2CH+8DAG4lXyWAC5dZS+zO8/zf6zSDrbuI51zAJibz7g34m1QkI2F2omYw9GSELirIG9u8DOzCcmcNcA==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8858,8 +8857,8 @@ packages:
typescript:
optional: true
- eslint-plugin-react-dom@1.33.0:
- resolution: {integrity: sha512-U7Gg0xH17Y1+wVRlg6E7P10MYttaE5p09/iEGCvfMcW38LHr+clSJK7fi+RD9WHaMwLVpGhgoDhZ2aJWpTDv9Q==}
+ eslint-plugin-react-dom@1.32.1:
+ resolution: {integrity: sha512-zYuemcywET3l+yi5UNRgyZDiOUhIvECZxZiMBt01VgY4Xk1515XrbFmcICnU/Wr2dBbFRYKFBORaYC0R+mUoeQ==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8874,8 +8873,8 @@ packages:
peerDependencies:
eslint: '>=7'
- eslint-plugin-react-hooks-extra@1.33.0:
- resolution: {integrity: sha512-QXcmjnXNm76iNT1t3FGvYYlV4QTdYINa3nIct7ofJXR10VudYKEI/fQrfUpBAmkD9DkQWOauv3f2cjDZOtfZFQ==}
+ eslint-plugin-react-hooks-extra@1.32.1:
+ resolution: {integrity: sha512-taBv82VC/8OChI+OYR66Kc/ARZ0sQNmIGXLxPuPR2iuRwg5OkhX04SdjJGyA3us9aNWkI269NF/nSecc0jcQ0A==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8896,8 +8895,8 @@ packages:
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
- eslint-plugin-react-naming-convention@1.33.0:
- resolution: {integrity: sha512-MFyJP/oWThG5nsohWYYRVGX2y1/CUxmpzj8AQvsPVTrOC8lYERGBZ49HL8emToT4aV4i2IDgaNIyn8+pvrMUKw==}
+ eslint-plugin-react-naming-convention@1.32.1:
+ resolution: {integrity: sha512-54wxWTNcWZY06hgQUxsuoylGepbydfqPa1IUAFBqgUT5QuomxODE27ni3jEBvrR6B8o9oohSWDoPgf+sllyk+Q==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8919,8 +8918,8 @@ packages:
peerDependencies:
eslint: '>=8.40'
- eslint-plugin-react-web-api@1.33.0:
- resolution: {integrity: sha512-I5c+2LfMfBFJ2HzFyI3XXqMJ52FGy1EtOsIKDBQ41cVJi5YpLJwWxxCzHMiJLDaTMyKxh22tdZG3Q+nwGt9frw==}
+ eslint-plugin-react-web-api@1.32.1:
+ resolution: {integrity: sha512-GchxgN47RGMolZNyEUVOJbT3DO8q0xyCesmkug7uyvFKPRerPZYvhhkhZShfyRIjEO7JL21vZrXjLBB4j7qjWw==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -8929,8 +8928,8 @@ packages:
typescript:
optional: true
- eslint-plugin-react-x@1.33.0:
- resolution: {integrity: sha512-KwgLNLyyk3N53+hqVfHRwG7+4RMN2sKPj3BhYRXmacVLOCM8WWH3BD9ZuSHzs1aU+vTXr+2GdDF0UrGeqCbfcg==}
+ eslint-plugin-react-x@1.32.1:
+ resolution: {integrity: sha512-+bZ+rveU+ugu5yuG35HgHFpBQlNrfN8OY7kPisuuPDYRFw7NI+I//yG3QQ8YsbhmUEEBl25JBpkP+/eXx8CZ1g==}
engines: {bun: '>=1.0.15', node: '>=18.18.0'}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -9169,8 +9168,8 @@ packages:
peerDependencies:
expo: '*'
- expo-dev-menu@6.0.21:
- resolution: {integrity: sha512-HO5UpNqGXBFWqGoGQhlvarJLI0jZpXkIXBvl60QGiIwbpSRThVI5jjZ5iCFmrpSJjlSXczaid31ZfKGtggiVdA==}
+ expo-dev-menu@6.0.19:
+ resolution: {integrity: sha512-CzjsiUne/Zwr7/AqI5JwcocV2NKQ3lZ3GteVc7ksORU7UZr0a0uTgcmA4ogqbBnFebBRVntxPR6zKXYlsvUGow==}
peerDependencies:
expo: '*'
@@ -9626,8 +9625,8 @@ packages:
flow-enums-runtime@0.0.6:
resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==}
- flow-parser@0.265.0:
- resolution: {integrity: sha512-C+bg/TZsDVlLMF14+q9P9FB2pjQSgWwYs0pkIMPE1FsZWS4A0kk1M28V6YphpxAPr3AISVRZ6VgpDepvCk6dGw==}
+ flow-parser@0.264.0:
+ resolution: {integrity: sha512-ic38pWErePVYNrZZlcOLPW9vjJXcq7a1kZJyoSZE2xXioNd2FuGA09Y7iBfHiwpVb67Av2KgBkhwbdcRVflWKw==}
engines: {node: '>=0.4.0'}
fmix@0.1.0:
@@ -16026,7 +16025,7 @@ snapshots:
dependencies:
ajv: 8.17.1
json-schema: 0.4.0
- jsonpointer: 5.0.1(patch_hash=ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1)
+ jsonpointer: 5.0.1(patch_hash=prxuhlhyjugus5tiew4vc3pahu)
leven: 3.1.0
'@babel/cli@7.26.4(@babel/core@7.26.10)':
@@ -17808,9 +17807,9 @@ snapshots:
'@eslint-community/regexpp@4.12.1': {}
- '@eslint-react/ast@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/ast@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/eff': 1.33.0
+ '@eslint-react/eff': 1.32.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2)
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -17821,13 +17820,13 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/core@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/core@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
- '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -17839,34 +17838,34 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/eff@1.33.0': {}
+ '@eslint-react/eff@1.32.1': {}
- '@eslint-react/eslint-plugin@1.33.0(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)':
+ '@eslint-react/eslint-plugin@1.32.1(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/eff': 1.33.0
- '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
eslint: 9.22.0(jiti@2.4.2)
- eslint-plugin-react-debug: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-dom: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-hooks-extra: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-naming-convention: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-web-api: 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- eslint-plugin-react-x: 1.33.0(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)
+ eslint-plugin-react-debug: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-dom: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-hooks-extra: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-naming-convention: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-web-api: 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ eslint-plugin-react-x: 1.32.1(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)
optionalDependencies:
typescript: 5.8.2
transitivePeerDependencies:
- supports-color
- ts-api-utils
- '@eslint-react/jsx@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/jsx@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
- '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -17876,9 +17875,9 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/shared@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/shared@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/eff': 1.33.0
+ '@eslint-react/eff': 1.32.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
picomatch: 4.0.2
ts-pattern: 5.6.2
@@ -17887,10 +17886,10 @@ snapshots:
- supports-color
- typescript
- '@eslint-react/var@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
+ '@eslint-react/var@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)':
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -17969,7 +17968,7 @@ snapshots:
'@expo/env': 0.4.2
'@expo/image-utils': 0.6.5
'@expo/json-file': 9.0.2
- '@expo/metro-config': 0.19.10
+ '@expo/metro-config': 0.19.12
'@expo/osascript': 2.1.6
'@expo/package-manager': 1.7.2
'@expo/plist': 0.2.2
@@ -19286,9 +19285,9 @@ snapshots:
'@hexagon/base64@1.1.28': {}
- '@hono/node-server@1.13.8(hono@4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7))':
+ '@hono/node-server@1.13.8(hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24))':
dependencies:
- hono: 4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7)
+ hono: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
'@hookform/resolvers@4.1.3(react-hook-form@7.54.2(react@18.3.1))':
dependencies:
@@ -19702,7 +19701,7 @@ snapshots:
- encoding
- supports-color
- '@microflash/remark-callout-directives@4.3.3(patch_hash=6160b1cf0eab6deca36415693dda703746edcd42e0e64b9174294e2210481396)':
+ '@microflash/remark-callout-directives@4.3.3(patch_hash=bl6uhe4vs4xm3d2jmecdpzbh2m)':
dependencies:
defu: 6.1.4
hastscript: 9.0.1
@@ -19711,7 +19710,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@mozilla/readability@0.6.0(patch_hash=b3cfe10b464e980acbe8cc8bbeeab3e1b468381e75d161005192ea3c994eef56)': {}
+ '@mozilla/readability@0.6.0(patch_hash=43niildbdafdxi7qfcwhpkkxwa)': {}
'@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3':
optional: true
@@ -20249,7 +20248,7 @@ snapshots:
pvtsutils: 1.3.6
tslib: 2.8.1
- '@pengx17/electron-forge-maker-appimage@1.2.1(patch_hash=5b5ab1ba36e8c0d7ffee912ebf29c1a18bc101c9c661ceb1bb0bda3deaf4c667)(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)':
+ '@pengx17/electron-forge-maker-appimage@1.2.1(patch_hash=vov3v67fgv3lrfz3n24bnubw4m)(dmg-builder@24.13.3)(electron-builder-squirrel-windows@24.13.3)':
dependencies:
'@electron-forge/maker-base': 7.7.0
'@electron-forge/shared-types': 7.7.0
@@ -20942,7 +20941,7 @@ snapshots:
'@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
superstruct: 2.0.2
- '@react-native-firebase/app-check@21.12.0(a7dd10b17d6ba1584cd0fa20a8498305)':
+ '@react-native-firebase/app-check@21.12.0(6ygf4ptwpdh2nniv3d2maydqua)':
dependencies:
'@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
optionalDependencies:
@@ -20958,7 +20957,7 @@ snapshots:
transitivePeerDependencies:
- '@react-native-async-storage/async-storage'
- '@react-native-firebase/crashlytics@21.12.0(a7dd10b17d6ba1584cd0fa20a8498305)':
+ '@react-native-firebase/crashlytics@21.12.0(6ygf4ptwpdh2nniv3d2maydqua)':
dependencies:
'@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
stacktrace-js: 2.0.2
@@ -21236,7 +21235,7 @@ snapshots:
use-latest-callback: 0.2.3(react@18.3.1)
use-sync-external-store: 1.4.0(react@18.3.1)
- '@react-navigation/drawer@7.1.2(d2457ef92a2057a0f140a0056c3f1984)':
+ '@react-navigation/drawer@7.1.2(4ztb7iay4vytkaghefpiejcvpm)':
dependencies:
'@react-navigation/elements': 2.2.6(@react-navigation/native@7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-safe-area-context@5.3.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@react-navigation/native': 7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -23317,7 +23316,7 @@ snapshots:
browserslist@4.24.4:
dependencies:
caniuse-lite: 1.0.30001704
- electron-to-chromium: 1.5.118
+ electron-to-chromium: 1.5.116
node-releases: 2.0.19
update-browserslist-db: 1.1.3(browserslist@4.24.4)
@@ -24319,7 +24318,7 @@ snapshots:
culori@3.3.0: {}
- daisyui@4.12.23(patch_hash=3a8f5f7ef76a29355b99bb425ff894e55ccab4335656eedbce80ef95f3e2e3f8)(postcss@8.5.3):
+ daisyui@4.12.23(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3):
dependencies:
css-selector-tokenizer: 0.8.0
culori: 3.3.0
@@ -24519,7 +24518,7 @@ snapshots:
detect-node@2.1.0:
optional: true
- devlop@1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295):
+ devlop@1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa):
dependencies:
dequal: 2.0.3
@@ -24670,7 +24669,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.40.0(2f5793c88ca65eb1a65de6180ad9846f):
+ drizzle-orm@0.40.0(lfgoa6uvatktntjnogv3tipozy):
optionalDependencies:
'@opentelemetry/api': 1.9.0
'@types/pg': 8.6.1
@@ -24821,7 +24820,7 @@ snapshots:
- dmg-builder
- supports-color
- electron-context-menu@4.0.5(patch_hash=c02f44f34d5af2bce9cc9df045523cf9802abd17ae9477959e950f48e370ddfe):
+ electron-context-menu@4.0.5(patch_hash=c53at4t5fflixuwjz35hmcqdu4):
dependencies:
cli-truncate: 4.0.0
electron-dl: 4.0.0
@@ -24879,7 +24878,7 @@ snapshots:
conf: 13.1.0
type-fest: 4.37.0
- electron-to-chromium@1.5.118: {}
+ electron-to-chromium@1.5.116: {}
electron-updater@6.3.9:
dependencies:
@@ -25358,7 +25357,7 @@ snapshots:
eslint-config-hyoban@4.0.1(@types/estree@1.0.6)(@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/eslint-plugin': 1.33.0(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)
+ '@eslint-react/eslint-plugin': 1.32.1(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2)
'@eslint/js': 9.22.0
'@stylistic/eslint-plugin': 4.2.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25580,14 +25579,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-debug@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-debug@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
- '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25600,14 +25599,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-dom@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-dom@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
- '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -25625,14 +25624,14 @@ snapshots:
eslint: 9.22.0(jiti@2.4.2)
requireindex: 1.2.0
- eslint-plugin-react-hooks-extra@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-hooks-extra@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
- '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25653,14 +25652,14 @@ snapshots:
dependencies:
eslint: 9.22.0(jiti@2.4.2)
- eslint-plugin-react-naming-convention@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-naming-convention@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
- '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25684,14 +25683,14 @@ snapshots:
dependencies:
eslint: 9.22.0(jiti@2.4.2)
- eslint-plugin-react-web-api@1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
+ eslint-plugin-react-web-api@1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
- '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/types': 8.26.1
'@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
@@ -25703,14 +25702,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-react-x@1.33.0(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2):
+ eslint-plugin-react-x@1.32.1(eslint@9.22.0(jiti@2.4.2))(ts-api-utils@2.0.1(typescript@5.8.2))(typescript@5.8.2):
dependencies:
- '@eslint-react/ast': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/core': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/eff': 1.33.0
- '@eslint-react/jsx': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/shared': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
- '@eslint-react/var': 1.33.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/ast': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/core': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/eff': 1.32.1
+ '@eslint-react/jsx': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/shared': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
+ '@eslint-react/var': 1.32.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/scope-manager': 8.26.1
'@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)
'@typescript-eslint/types': 8.26.1
@@ -25982,7 +25981,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- expo-av@15.0.2(d89995febf7032ff96b1906d5ce870a1):
+ expo-av@15.0.2(sihtl4ayi55bcc6wwo2cffir5a):
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
@@ -26030,7 +26029,7 @@ snapshots:
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-dev-launcher: 5.0.29(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-dev-menu: 6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-menu: 6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-dev-menu-interface: 1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-updates-interface: 1.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -26041,7 +26040,7 @@ snapshots:
dependencies:
ajv: 8.11.0
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu: 6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-menu: 6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
resolve-from: 5.0.0
transitivePeerDependencies:
@@ -26051,7 +26050,7 @@ snapshots:
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu@6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-menu@6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-dev-menu-interface: 1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -26112,7 +26111,7 @@ snapshots:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-image-loader: 5.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-image@2.0.6(d89995febf7032ff96b1906d5ce870a1):
+ expo-image@2.0.6(sihtl4ayi55bcc6wwo2cffir5a):
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
@@ -26167,7 +26166,7 @@ snapshots:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
- expo-module-scripts@4.0.4(3850c4a434d4dbe941b2deafddaa124f):
+ expo-module-scripts@4.0.4(iwnafyibvcklawoco7ng3lqlmm):
dependencies:
'@babel/cli': 7.26.4(@babel/core@7.26.10)
'@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10)
@@ -26182,7 +26181,7 @@ snapshots:
commander: 12.1.0
eslint-config-universe: 14.0.0(@types/eslint@9.6.1)(eslint@9.22.0(jiti@2.4.2))(prettier@3.5.3)(typescript@5.8.2)
glob: 10.4.5
- jest-expo: 52.0.6(5f24dce313b65d87a76923ff4f801b6f)
+ jest-expo: 52.0.6(kkpktwcy2szkho27app4jecqwi)
jest-snapshot-prettier: prettier@2.8.8
jest-watch-typeahead: 2.2.1(jest@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))
resolve-workspace-root: 2.0.0
@@ -26243,7 +26242,7 @@ snapshots:
dependencies:
invariant: 2.2.4
- expo-router@4.0.18(1f6365e72b969f147e1d8e49baebaa8f):
+ expo-router@4.0.18(qmbbmoiaq3uvnntmmbx4dnsk2i):
dependencies:
'@expo/metro-runtime': 4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
'@expo/server': 0.5.2
@@ -26264,7 +26263,7 @@ snapshots:
semver: 7.6.3
server-only: 0.0.1
optionalDependencies:
- '@react-navigation/drawer': 7.1.2(d2457ef92a2057a0f140a0056c3f1984)
+ '@react-navigation/drawer': 7.1.2(4ztb7iay4vytkaghefpiejcvpm)
react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -26740,7 +26739,7 @@ snapshots:
flow-enums-runtime@0.0.6: {}
- flow-parser@0.265.0: {}
+ flow-parser@0.264.0: {}
fmix@0.1.0:
dependencies:
@@ -27142,7 +27141,7 @@ snapshots:
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
- fast-glob: 3.3.3
+ fast-glob: 3.3.2
ignore: 5.3.0
merge2: 1.4.1
slash: 3.0.0
@@ -27245,7 +27244,7 @@ snapshots:
hast-util-from-html@2.0.3:
dependencies:
'@types/hast': 3.0.4
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
hast-util-from-parse5: 8.0.3
parse5: 7.2.1
vfile: 5.3.7
@@ -27255,7 +27254,7 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
'@types/unist': 3.0.3
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
hastscript: 9.0.1
property-information: 7.0.0
vfile: 5.3.7
@@ -27307,7 +27306,7 @@ snapshots:
bcp-47-match: 2.0.3
comma-separated-tokens: 2.0.3
css-selector-parser: 3.0.5
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
direction: 2.0.1
hast-util-has-property: 3.0.0
hast-util-to-string: 3.0.1
@@ -27338,7 +27337,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/unist': 3.0.3
comma-separated-tokens: 2.0.3
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
estree-util-is-identifier-name: 3.0.0
hast-util-whitespace: 3.0.0
mdast-util-mdx-expression: 2.0.1
@@ -27422,7 +27421,7 @@ snapshots:
dependencies:
react-is: 16.13.1
- hono@4.7.4(patch_hash=6047bef19d376e1a11e462a082e491d7320d00056c604b105cb9a04be4657bb7): {}
+ hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24): {}
hosted-git-info@2.8.9: {}
@@ -27585,7 +27584,7 @@ snapshots:
immediate@3.0.6: {}
- immer@10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c): {}
+ immer@10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu): {}
import-fresh@2.0.0:
dependencies:
@@ -27789,7 +27788,7 @@ snapshots:
generate-function: 2.3.1
generate-object-property: 1.2.0
is-my-ip-valid: 1.0.1
- jsonpointer: 5.0.1(patch_hash=ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1)
+ jsonpointer: 5.0.1(patch_hash=prxuhlhyjugus5tiew4vc3pahu)
xtend: 4.0.2
optional: true
@@ -28086,7 +28085,7 @@ snapshots:
jest-mock: 29.7.0
jest-util: 29.7.0
- jest-expo@52.0.6(5f24dce313b65d87a76923ff4f801b6f):
+ jest-expo@52.0.6(kkpktwcy2szkho27app4jecqwi):
dependencies:
'@expo/config': 10.0.11
'@expo/json-file': 9.0.2
@@ -28413,7 +28412,7 @@ snapshots:
'@babel/register': 7.25.9(@babel/core@7.26.10)
babel-core: 7.0.0-bridge.0(@babel/core@7.26.10)
chalk: 4.1.2
- flow-parser: 0.265.0
+ flow-parser: 0.264.0
graceful-fs: 4.2.11
micromatch: 4.0.8
neo-async: 2.6.2
@@ -28436,7 +28435,7 @@ snapshots:
'@babel/preset-flow': 7.25.9(@babel/core@7.26.10)
'@babel/preset-typescript': 7.26.0(@babel/core@7.26.10)
'@babel/register': 7.25.9(@babel/core@7.26.10)
- flow-parser: 0.265.0
+ flow-parser: 0.264.0
graceful-fs: 4.2.11
micromatch: 4.0.8
neo-async: 2.6.2
@@ -28541,7 +28540,7 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
- jsonpointer@5.0.1(patch_hash=ad796d54956ca5a7e9e5232503e5f22d4ffa732fc4552a7e53121ea5fa81d6c1): {}
+ jsonpointer@5.0.1(patch_hash=prxuhlhyjugus5tiew4vc3pahu): {}
jsonwebtoken@9.0.0:
dependencies:
@@ -29068,7 +29067,7 @@ snapshots:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
ccount: 2.0.1
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
parse-entities: 4.0.2
@@ -29089,7 +29088,7 @@ snapshots:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
decode-named-character-reference: 1.1.0
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
mdast-util-to-string: 4.0.0
micromark: 4.0.2
micromark-util-decode-numeric-character-reference: 2.0.2
@@ -29105,14 +29104,14 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
ccount: 2.0.1
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
mdast-util-find-and-replace: 3.0.2
micromark-util-character: 2.1.1
mdast-util-gfm-footnote@2.1.0:
dependencies:
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
micromark-util-normalize-identifier: 2.0.1
@@ -29130,7 +29129,7 @@ snapshots:
mdast-util-gfm-table@2.0.0:
dependencies:
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
markdown-table: 3.0.4
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
@@ -29140,7 +29139,7 @@ snapshots:
mdast-util-gfm-task-list-item@2.0.0:
dependencies:
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
@@ -29163,7 +29162,7 @@ snapshots:
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
@@ -29176,7 +29175,7 @@ snapshots:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
ccount: 2.0.1
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
parse-entities: 4.0.2
@@ -29191,7 +29190,7 @@ snapshots:
'@types/estree-jsx': 1.0.5
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
mdast-util-from-markdown: 2.0.2
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
@@ -29207,7 +29206,7 @@ snapshots:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
'@ungap/structured-clone': 1.3.0
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-util-sanitize-uri: 2.0.1
trim-lines: 3.0.1
unist-util-position: 5.0.0
@@ -29427,7 +29426,7 @@ snapshots:
micromark-core-commonmark@2.0.3:
dependencies:
decode-named-character-reference: 1.1.0
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-factory-destination: 2.0.1
micromark-factory-label: 2.0.1
micromark-factory-space: 2.0.1
@@ -29445,7 +29444,7 @@ snapshots:
micromark-extension-directive@4.0.0:
dependencies:
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-factory-space: 2.0.1
micromark-factory-whitespace: 2.0.1
micromark-util-character: 2.1.1
@@ -29462,7 +29461,7 @@ snapshots:
micromark-extension-gfm-footnote@2.1.0:
dependencies:
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
@@ -29473,7 +29472,7 @@ snapshots:
micromark-extension-gfm-strikethrough@2.1.0:
dependencies:
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-util-chunked: 2.0.1
micromark-util-classify-character: 2.0.1
micromark-util-resolve-all: 2.0.1
@@ -29482,7 +29481,7 @@ snapshots:
micromark-extension-gfm-table@2.1.1:
dependencies:
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
@@ -29494,7 +29493,7 @@ snapshots:
micromark-extension-gfm-task-list-item@2.1.0:
dependencies:
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
@@ -29519,7 +29518,7 @@ snapshots:
micromark-factory-label@2.0.1:
dependencies:
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-util-character: 2.1.1
micromark-util-symbol: 2.0.1
micromark-util-types: 2.0.2
@@ -29594,7 +29593,7 @@ snapshots:
micromark-util-subtokenize@2.1.0:
dependencies:
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-util-chunked: 2.0.1
micromark-util-symbol: 2.0.1
micromark-util-types: 2.0.2
@@ -29608,7 +29607,7 @@ snapshots:
'@types/debug': 4.1.12
debug: 4.4.0(supports-color@8.1.1)
decode-named-character-reference: 1.1.0
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
@@ -31129,7 +31128,7 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
- re-resizable@6.11.2(patch_hash=3ade7aa99a03addf6dd453360e3cebfbaa12c907b138352110ad38cd65495c0d)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ re-resizable@6.11.2(patch_hash=yitcmpfwcomg2fky72uc3lhk2i)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -31364,7 +31363,7 @@ snapshots:
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
warn-once: 0.1.1
- react-native-sheet-transitions@0.1.2(patch_hash=eea5876801b0aa7bd33f0ddfe1a350a37e2bf54a1d4e78537713693db7c79265)(react-native-gesture-handler@2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ react-native-sheet-transitions@0.1.2(patch_hash=xmkq4ssu3mefxtr2e65xl27hxi)(react-native-gesture-handler@2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
@@ -31379,12 +31378,12 @@ snapshots:
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
warn-once: 0.1.1
- react-native-track-player@4.1.1(patch_hash=debcf90daeaf7d38c744ecb11cded73b5bfc671b8d0937865ec21307414761b3)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ react-native-track-player@4.1.1(patch_hash=ul2ym56izpf2mkfucn2nug6afu)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
- react-native-uikit-colors@0.3.8(d4c721057694a6ad309a156a4338c29b):
+ react-native-uikit-colors@0.3.8(r6t6da3bcwna5z5fajkzt5tali):
dependencies:
apple-uikit-colors: 0.3.8
nativewind: 4.1.23(react-native-reanimated@3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-safe-area-context@5.3.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-svg@15.11.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))
@@ -33418,7 +33417,7 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
bail: 2.0.2
- devlop: 1.1.0(patch_hash=85f2288a0e6d458382af88dcb0cc3faa8a122712c1c5eddda2b9a75379176295)
+ devlop: 1.1.0(patch_hash=xzgzapu45daboiid4fiusduvwa)
extend: 3.0.2
is-plain-obj: 4.1.0
trough: 2.2.0
@@ -34038,7 +34037,7 @@ snapshots:
workbox-expiration: 7.3.0
workbox-google-analytics: 7.3.0
workbox-navigation-preload: 7.3.0
- workbox-precaching: 7.3.0(patch_hash=51e57c78af317e292b43fca4b72f57b247b7b1a1faa8b03c8881ddb798c7c52f)
+ workbox-precaching: 7.3.0(patch_hash=frtipzgil4wle57aliuhcr746e)
workbox-range-requests: 7.3.0
workbox-recipes: 7.3.0
workbox-routing: 7.3.0
@@ -34072,7 +34071,7 @@ snapshots:
dependencies:
workbox-core: 7.3.0
- workbox-precaching@7.3.0(patch_hash=51e57c78af317e292b43fca4b72f57b247b7b1a1faa8b03c8881ddb798c7c52f):
+ workbox-precaching@7.3.0(patch_hash=frtipzgil4wle57aliuhcr746e):
dependencies:
workbox-core: 7.3.0
workbox-routing: 7.3.0
@@ -34087,7 +34086,7 @@ snapshots:
workbox-cacheable-response: 7.3.0
workbox-core: 7.3.0
workbox-expiration: 7.3.0
- workbox-precaching: 7.3.0(patch_hash=51e57c78af317e292b43fca4b72f57b247b7b1a1faa8b03c8881ddb798c7c52f)
+ workbox-precaching: 7.3.0(patch_hash=frtipzgil4wle57aliuhcr746e)
workbox-routing: 7.3.0
workbox-strategies: 7.3.0
@@ -34273,7 +34272,7 @@ snapshots:
yoga-wasm-web@0.3.3: {}
- zeego@3.0.5(1fe76bcff8498ac2ea4487aabed25813):
+ zeego@3.0.5(r6gcii3uu7jnmmaigjmuiyjoqi):
dependencies:
'@radix-ui/react-context-menu': 2.2.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-dropdown-menu': 2.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -34300,10 +34299,10 @@ snapshots:
zod@3.24.2: {}
- zustand@5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)):
+ zustand@5.0.3(@types/react@18.3.12)(immer@10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu))(react@18.3.1)(use-sync-external-store@1.4.0(react@18.3.1)):
optionalDependencies:
'@types/react': 18.3.12
- immer: 10.1.1(patch_hash=594c60b929bc0a3b56576f1a1787da1aec2a1fba51e3c21ec09c0ed38280af6c)
+ immer: 10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu)
react: 18.3.1
use-sync-external-store: 1.4.0(react@18.3.1)
From 0dc73f1e293138af49406475141e2a3e8b16342e Mon Sep 17 00:00:00 2001
From: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Date: Fri, 14 Mar 2025 16:57:40 +0800
Subject: [PATCH 004/123] fix(mobile): allow scroll in login page (#3126)
---
apps/mobile/src/modules/login/index.tsx | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/apps/mobile/src/modules/login/index.tsx b/apps/mobile/src/modules/login/index.tsx
index 60cc7bd91a..84ec60eb75 100644
--- a/apps/mobile/src/modules/login/index.tsx
+++ b/apps/mobile/src/modules/login/index.tsx
@@ -5,6 +5,7 @@ import { KeyboardController } from "react-native-keyboard-controller"
import Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanimated"
import * as ContextMenu from "zeego/context-menu"
+import { SafeNavigationScrollView } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { Logo } from "@/src/components/ui/logo"
import { TermsMarkdown } from "@/src/screens/(headless)/terms"
@@ -13,7 +14,7 @@ import { SocialLogin } from "./social"
export function Login() {
return (
-
+
{
KeyboardController.dismiss()
@@ -38,7 +39,7 @@ export function Login() {
-
+
)
}
From 5129e5aeb4ebbe910921e0d3fa3e05a85c7a98f5 Mon Sep 17 00:00:00 2001
From: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Date: Fri, 14 Mar 2025 17:10:10 +0800
Subject: [PATCH 005/123] Revert "fix(mobile): allow scroll in login page
(#3126)" (#3127)
This reverts commit 0dc73f1e293138af49406475141e2a3e8b16342e.
---
apps/mobile/src/modules/login/index.tsx | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/apps/mobile/src/modules/login/index.tsx b/apps/mobile/src/modules/login/index.tsx
index 84ec60eb75..60cc7bd91a 100644
--- a/apps/mobile/src/modules/login/index.tsx
+++ b/apps/mobile/src/modules/login/index.tsx
@@ -5,7 +5,6 @@ import { KeyboardController } from "react-native-keyboard-controller"
import Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanimated"
import * as ContextMenu from "zeego/context-menu"
-import { SafeNavigationScrollView } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { Logo } from "@/src/components/ui/logo"
import { TermsMarkdown } from "@/src/screens/(headless)/terms"
@@ -14,7 +13,7 @@ import { SocialLogin } from "./social"
export function Login() {
return (
-
+
{
KeyboardController.dismiss()
@@ -39,7 +38,7 @@ export function Login() {
-
+
)
}
From bfec384151a31fedb4eb7404c8971400c61ce6be Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 14 Mar 2025 18:42:41 +0800
Subject: [PATCH 006/123] build(deps): bump the patch group across 1 directory
with 9 updates (#3124)
---
apps/desktop/src/main/package.json | 2 +-
apps/desktop/src/renderer/package.json | 4 +-
apps/mobile/package.json | 4 +-
apps/ssr/package.json | 6 +-
package.json | 11 +-
pnpm-lock.yaml | 465 +++++++------------------
6 files changed, 136 insertions(+), 356 deletions(-)
diff --git a/apps/desktop/src/main/package.json b/apps/desktop/src/main/package.json
index 12fb3fba54..278d785d1a 100644
--- a/apps/desktop/src/main/package.json
+++ b/apps/desktop/src/main/package.json
@@ -40,7 +40,7 @@
"es-toolkit": "1.33.0",
"fast-folder-size": "2.4.0",
"font-list": "1.5.1",
- "i18next": "24.2.2",
+ "i18next": "24.2.3",
"js-yaml": "4.1.0",
"linkedom": "0.18.9",
"lowdb": "7.0.1",
diff --git a/apps/desktop/src/renderer/package.json b/apps/desktop/src/renderer/package.json
index 4e39fc018c..b4b1baac11 100644
--- a/apps/desktop/src/renderer/package.json
+++ b/apps/desktop/src/renderer/package.json
@@ -38,7 +38,7 @@
"@tanstack/react-query": "5.67.3",
"@tanstack/react-query-devtools": "5.67.3",
"@tanstack/react-query-persist-client": "5.67.3",
- "@tanstack/react-virtual": "3.13.3",
+ "@tanstack/react-virtual": "3.13.4",
"@use-gesture/react": "10.3.1",
"@welldone-software/why-did-you-render": "10.0.1",
"@yornaath/batshit": "0.10.1",
@@ -60,7 +60,7 @@
"fuse.js": "7.1.0",
"hast-util-to-jsx-runtime": "2.3.6",
"hast-util-to-mdast": "10.1.2",
- "i18next": "24.2.2",
+ "i18next": "24.2.3",
"i18next-browser-languagedetector": "8.0.4",
"idb-keyval": "6.2.1",
"immer": "10.1.1",
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index 59b68fcd83..72f59f8069 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -51,7 +51,7 @@
"expo-build-properties": "0.13.2",
"expo-clipboard": "7.0.1",
"expo-constants": "17.0.8",
- "expo-dev-client": "5.0.12",
+ "expo-dev-client": "5.0.14",
"expo-document-picker": "13.0.3",
"expo-file-system": "18.0.11",
"expo-haptics": "14.0.1",
@@ -121,7 +121,7 @@
"drizzle-kit": "0.30.5",
"eas-cli": "15.0.15",
"expo-drizzle-studio-plugin": "0.1.1",
- "postcss": "8.5.2"
+ "postcss": "8.5.3"
},
"appName": "Follow",
"expo": {
diff --git a/apps/ssr/package.json b/apps/ssr/package.json
index 65b2445621..2020466693 100644
--- a/apps/ssr/package.json
+++ b/apps/ssr/package.json
@@ -21,7 +21,7 @@
"dayjs": "1.11.13",
"fastify": "5.2.1",
"framer-motion": "12.5.0",
- "i18next": "24.2.2",
+ "i18next": "24.2.3",
"jotai": "2.12.2",
"kose-font": "1.0.0",
"linkedom": "0.18.9",
@@ -52,7 +52,7 @@
"@types/html-minifier-terser": "7.0.2",
"@types/react-google-recaptcha": "2.1.9",
"chokidar": "4.0.3",
- "daisyui": "4.12.23",
+ "daisyui": "4.12.24",
"dotenv-flow": "4.1.0",
"es-toolkit": "1.33.0",
"fast-glob": "3.3.3",
@@ -64,6 +64,6 @@
"path-to-regexp": "8.2.0",
"tsup": "8.4.0",
"tsx": "4.19.3",
- "vite": "6.2.1"
+ "vite": "6.2.2"
}
}
diff --git a/package.json b/package.json
index 0227eae772..aea3dc43ca 100644
--- a/package.json
+++ b/package.json
@@ -50,7 +50,7 @@
"@types/node": "22.13.10",
"@types/react": "18.3.12",
"@types/react-dom": "18.3.1",
- "@vercel/node": "5.1.13",
+ "@vercel/node": "5.1.14",
"async-es": "3.2.6",
"autoprefixer": "10.4.21",
"cross-env": "7.0.3",
@@ -61,7 +61,7 @@
"fast-glob": "3.3.3",
"lint-staged": "15.5.0",
"nbump": "2.0.7",
- "postcss": "8.5.2",
+ "postcss": "8.5.3",
"postcss-js": "4.0.1",
"prettier": "3.5.3",
"prettier-plugin-tailwindcss": "0.6.11",
@@ -79,9 +79,9 @@
"tsx": "4.19.3",
"turbo": "2.4.4",
"typescript": "5.8.2",
- "vite": "6.2.1",
- "vite-bundle-analyzer": "0.17.1",
- "vite-plugin-mkcert": "1.17.7",
+ "vite": "6.2.2",
+ "vite-bundle-analyzer": "0.17.3",
+ "vite-plugin-mkcert": "1.17.8",
"vite-plugin-pwa": "0.21.1",
"vite-tsconfig-paths": "5.1.4",
"vitest": "3.0.8"
@@ -104,6 +104,7 @@
},
"overrides": {
"@electron/node-gyp": "10.2.0-electron.2",
+ "expo-dev-menu": "6.0.21",
"is-core-module": "npm:@nolyfill/is-core-module@1",
"isarray": "npm:@nolyfill/isarray@1",
"react": "18.3.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4dad35f25f..da57a1fe30 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,6 +6,7 @@ settings:
overrides:
'@electron/node-gyp': 10.2.0-electron.2
+ expo-dev-menu: 6.0.21
is-core-module: npm:@nolyfill/is-core-module@1
isarray: npm:@nolyfill/isarray@1
react: 18.3.1
@@ -101,20 +102,20 @@ importers:
specifier: 18.3.1
version: 18.3.1
'@vercel/node':
- specifier: 5.1.13
- version: 5.1.13(encoding@0.1.13)(rollup@2.79.2)
+ specifier: 5.1.14
+ version: 5.1.14(encoding@0.1.13)(rollup@2.79.2)
async-es:
specifier: 3.2.6
version: 3.2.6
autoprefixer:
specifier: 10.4.21
- version: 10.4.21(postcss@8.5.2)
+ version: 10.4.21(postcss@8.5.3)
cross-env:
specifier: 7.0.3
version: 7.0.3
cssnano:
specifier: 7.0.6
- version: 7.0.6(postcss@8.5.2)
+ version: 7.0.6(postcss@8.5.3)
eslint:
specifier: 9.22.0
version: 9.22.0(jiti@2.4.2)
@@ -134,11 +135,11 @@ importers:
specifier: 2.0.7
version: 2.0.7(conventional-commits-filter@5.0.0)
postcss:
- specifier: 8.5.2
- version: 8.5.2
+ specifier: 8.5.3
+ version: 8.5.3
postcss-js:
specifier: 4.0.1
- version: 4.0.1(postcss@8.5.2)
+ version: 4.0.1(postcss@8.5.3)
prettier:
specifier: 3.5.3
version: 3.5.3
@@ -188,20 +189,20 @@ importers:
specifier: 5.8.2
version: 5.8.2
vite:
- specifier: 6.2.1
- version: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ specifier: 6.2.2
+ version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
vite-bundle-analyzer:
- specifier: 0.17.1
- version: 0.17.1
+ specifier: 0.17.3
+ version: 0.17.3
vite-plugin-mkcert:
- specifier: 1.17.7
- version: 1.17.7(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ specifier: 1.17.8
+ version: 1.17.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
vite-plugin-pwa:
specifier: 0.21.1
- version: 0.21.1(@vite-pwa/assets-generator@0.2.6)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
+ version: 0.21.1(@vite-pwa/assets-generator@0.2.6)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
vite-tsconfig-paths:
specifier: 5.1.4
- version: 5.1.4(typescript@5.8.2)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
vitest:
specifier: 3.0.8
version: 3.0.8(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.13.10)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@20.0.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
@@ -277,10 +278,10 @@ importers:
version: 2.1.9
'@vitejs/plugin-legacy':
specifier: 6.0.2
- version: 6.0.2(terser@5.39.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 6.0.2(terser@5.39.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
'@vitejs/plugin-react':
specifier: 4.3.4
- version: 4.3.4(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 4.3.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
autoprefixer:
specifier: 10.4.21
version: 10.4.21(postcss@8.5.3)
@@ -307,7 +308,7 @@ importers:
version: 0.6.0
electron-vite:
specifier: 3.0.0
- version: 3.0.0(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 3.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
fake-indexeddb:
specifier: 6.0.0
version: 6.0.0
@@ -402,8 +403,8 @@ importers:
specifier: 1.5.1
version: 1.5.1
i18next:
- specifier: 24.2.2
- version: 24.2.2(typescript@5.8.2)
+ specifier: 24.2.3
+ version: 24.2.3(typescript@5.8.2)
js-yaml:
specifier: 4.1.0
version: 4.1.0
@@ -535,8 +536,8 @@ importers:
specifier: 5.67.3
version: 5.67.3(@tanstack/react-query@5.67.3(react@18.3.1))(react@18.3.1)
'@tanstack/react-virtual':
- specifier: 3.13.3
- version: 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: 3.13.4
+ version: 3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@use-gesture/react':
specifier: 10.3.1
version: 10.3.1(react@18.3.1)
@@ -601,8 +602,8 @@ importers:
specifier: 10.1.2
version: 10.1.2
i18next:
- specifier: 24.2.2
- version: 24.2.2(typescript@5.8.2)
+ specifier: 24.2.3
+ version: 24.2.3(typescript@5.8.2)
i18next-browser-languagedetector:
specifier: 8.0.4
version: 8.0.4
@@ -653,7 +654,7 @@ importers:
version: 4.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-i18next:
specifier: 15.4.1
- version: 15.4.1(i18next@24.2.2(typescript@5.8.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 15.4.1(i18next@24.2.3(typescript@5.8.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-intersection-observer:
specifier: 9.16.0
version: 9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -851,8 +852,8 @@ importers:
specifier: 17.0.8
version: 17.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-dev-client:
- specifier: 5.0.12
- version: 5.0.12(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ specifier: 5.0.14
+ version: 5.0.14(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-document-picker:
specifier: 13.0.3
version: 13.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -1056,8 +1057,8 @@ importers:
specifier: 0.1.1
version: 0.1.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
postcss:
- specifier: 8.5.2
- version: 8.5.2
+ specifier: 8.5.3
+ version: 8.5.3
apps/mobile/native:
dependencies:
@@ -1116,8 +1117,8 @@ importers:
specifier: 12.5.0
version: 12.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
i18next:
- specifier: 24.2.2
- version: 24.2.2(typescript@5.8.2)
+ specifier: 24.2.3
+ version: 24.2.3(typescript@5.8.2)
jotai:
specifier: 2.12.2
version: 2.12.2(@types/react@18.3.12)(react@18.3.1)
@@ -1147,7 +1148,7 @@ importers:
version: 4.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-i18next:
specifier: 15.4.1
- version: 15.4.1(i18next@24.2.2(typescript@5.8.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 15.4.1(i18next@24.2.3(typescript@5.8.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-photo-view:
specifier: 1.2.7
version: 1.2.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1204,8 +1205,8 @@ importers:
specifier: 4.0.3
version: 4.0.3
daisyui:
- specifier: 4.12.23
- version: 4.12.23(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3)
+ specifier: 4.12.24
+ version: 4.12.24(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3)
dotenv-flow:
specifier: 4.1.0
version: 4.1.0
@@ -1240,8 +1241,8 @@ importers:
specifier: 4.19.3
version: 4.19.3
vite:
- specifier: 6.2.1
- version: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ specifier: 6.2.2
+ version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
packages/atoms:
dependencies:
@@ -1388,7 +1389,7 @@ importers:
version: 7.54.2(react@18.3.1)
react-i18next:
specifier: 15.4.1
- version: 15.4.1(i18next@24.2.2(typescript@5.8.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 15.4.1(i18next@24.2.3(typescript@5.8.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
rehype-infer-description-meta:
specifier: 2.0.0
version: 2.0.0
@@ -4668,7 +4669,7 @@ packages:
'@radix-ui/react-compose-refs@1.1.1':
resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==}
peerDependencies:
- '@types/react': '*'
+ '@types/react': npm:@types/react@18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -4690,7 +4691,7 @@ packages:
'@radix-ui/react-context@1.1.1':
resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==}
peerDependencies:
- '@types/react': '*'
+ '@types/react': npm:@types/react@18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -4747,7 +4748,7 @@ packages:
'@radix-ui/react-focus-guards@1.1.1':
resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==}
peerDependencies:
- '@types/react': '*'
+ '@types/react': npm:@types/react@18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -5035,7 +5036,7 @@ packages:
'@radix-ui/react-use-controllable-state@1.1.0':
resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
peerDependencies:
- '@types/react': '*'
+ '@types/react': npm:@types/react@18.3.12
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -5887,14 +5888,14 @@ packages:
peerDependencies:
react: 18.3.1
- '@tanstack/react-virtual@3.13.3':
- resolution: {integrity: sha512-khJmiDJCkklsDTvXxTZHfEa7H161e94eDKxKyXqg9/3LstIbRg4JWBxPD2/e3LKtklC5dxkoYzNllCMVR904FA==}
+ '@tanstack/react-virtual@3.13.4':
+ resolution: {integrity: sha512-jPWC3BXvVLHsMX67NEHpJaZ+/FySoNxFfBEiF4GBc1+/nVwdRm+UcSCYnKP3pXQr0eEsDpXi/PQZhNfJNopH0g==}
peerDependencies:
react: 18.3.1
react-dom: 18.3.1
- '@tanstack/virtual-core@3.13.3':
- resolution: {integrity: sha512-9kfCeSG6zUx1I1iF4RKZrquNog3Eho1T6+LyJEDYpHjNNdDlRhXyqzTod5u6LCEBSeG0f2txkNjAq0tFbCJ4bA==}
+ '@tanstack/virtual-core@3.13.4':
+ resolution: {integrity: sha512-fNGO9fjjSLns87tlcto106enQQLycCKR4DPNpgq3djP5IdcPFdPAmaKjsgzIeRhH7hWrELgW12hYnRthS5kLUw==}
'@testing-library/react-native@12.9.0':
resolution: {integrity: sha512-wIn/lB1FjV2N4Q7i9PWVRck3Ehwq5pkhAef5X5/bmQ78J/NoOsGbVY2/DG5Y9Lxw+RfE+GvSEh/fe5Tz6sKSvw==}
@@ -6254,8 +6255,8 @@ packages:
peerDependencies:
react: 18.3.1
- '@vercel/build-utils@10.5.0':
- resolution: {integrity: sha512-oJ2pDppFAXJI2sglV9PdSUYgccX7DMG084D6qffQgVayrl8/YXbn0iOtEFy0NL3ewrqBFXKQi3sOuk5NcFwofQ==}
+ '@vercel/build-utils@10.5.1':
+ resolution: {integrity: sha512-BtqwEmU1AoITpd0KxYrdQOwyKZL8RKba+bWxI8mr3gXPQZWRAE9ok1zF0AXfvMGCstYPHBPNolZGDSfWmY2jqg==}
'@vercel/error-utils@2.0.3':
resolution: {integrity: sha512-CqC01WZxbLUxoiVdh9B/poPbNpY9U+tO1N9oWHwTl5YAZxcqXmmWJ8KNMFItJCUUWdY3J3xv8LvAuQv2KZ5YdQ==}
@@ -6265,8 +6266,8 @@ packages:
engines: {node: '>=16'}
hasBin: true
- '@vercel/node@5.1.13':
- resolution: {integrity: sha512-3Ojnnfd3z8e2iu3Pbu5lZgig6kkPRK0HaOqbmMG0iEHjE+ukkJ12DoHrmdqz9A/e2bINEkqsHMaMTmWP2N86/w==}
+ '@vercel/node@5.1.14':
+ resolution: {integrity: sha512-kLXAR4ZtNSXJw5ffIzKPDAVHD4/Dwxw/287ZCnQlqtOQzY3IH1E5QM3nxn0LGfTkYxXpQFFOOcXL7fZW7MjC6A==}
'@vercel/static-config@3.0.0':
resolution: {integrity: sha512-2qtvcBJ1bGY0dYGYh3iM7yGKkk971FujLEDXzuW5wcZsPr1GSEjO/w2iSr3qve6nDDtBImsGoDEnus5FI4+fIw==}
@@ -7819,8 +7820,8 @@ packages:
resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- daisyui@4.12.23:
- resolution: {integrity: sha512-EM38duvxutJ5PD65lO/AFMpcw+9qEy6XAZrTpzp7WyaPeO/l+F/Qiq0ECHHmFNcFXh5aVoALY4MGrrxtCiaQCQ==}
+ daisyui@4.12.24:
+ resolution: {integrity: sha512-JYg9fhQHOfXyLadrBrEqCDM6D5dWCSSiM6eTNCRrBRzx/VlOCrLS8eDfIw9RVvs64v2mJdLooKXY8EwQzoszAA==}
engines: {node: '>=16.9.0'}
data-urls@3.0.2:
@@ -9153,13 +9154,13 @@ packages:
expo: '*'
react-native: '*'
- expo-dev-client@5.0.12:
- resolution: {integrity: sha512-F8Pz3ppxq0vhwVK2XgzmDUfxW1MEFpUdTLl+Pjwp9FDB+Br1wqyIz1yKshD7Hv1i/SR2BwjlJcriOPWt9NREuA==}
+ expo-dev-client@5.0.14:
+ resolution: {integrity: sha512-L57x2CrMb2tYsOSWc4zAvaGZ1+H7pZlGVvuDC1KzEsVCC2KjW1YUSEX9H5Zg+61Y4YUlHZ3h5rM5Eu/aCZmkZA==}
peerDependencies:
expo: '*'
- expo-dev-launcher@5.0.29:
- resolution: {integrity: sha512-wb48vIXUwuqD0Z2xvdkNt+o7OLT7FtMoSwYVkx28linG+9Sn2Zgjbs4SVnJYkpRfZZh9unOIRqB9EsJhM12Lzg==}
+ expo-dev-launcher@5.0.30:
+ resolution: {integrity: sha512-II2qQkTelIzaB9nWQJJwbRLSsDYDz3gRuFJ/wZpzX8/5CzsimvhbMslb6Zx8jAiBEzs+fquTmZSOhpYPKtGCiQ==}
peerDependencies:
expo: '*'
@@ -9168,8 +9169,8 @@ packages:
peerDependencies:
expo: '*'
- expo-dev-menu@6.0.19:
- resolution: {integrity: sha512-CzjsiUne/Zwr7/AqI5JwcocV2NKQ3lZ3GteVc7ksORU7UZr0a0uTgcmA4ogqbBnFebBRVntxPR6zKXYlsvUGow==}
+ expo-dev-menu@6.0.21:
+ resolution: {integrity: sha512-HO5UpNqGXBFWqGoGQhlvarJLI0jZpXkIXBvl60QGiIwbpSRThVI5jjZ5iCFmrpSJjlSXczaid31ZfKGtggiVdA==}
peerDependencies:
expo: '*'
@@ -9629,6 +9630,10 @@ packages:
resolution: {integrity: sha512-ic38pWErePVYNrZZlcOLPW9vjJXcq7a1kZJyoSZE2xXioNd2FuGA09Y7iBfHiwpVb67Av2KgBkhwbdcRVflWKw==}
engines: {node: '>=0.4.0'}
+ flow-parser@0.265.0:
+ resolution: {integrity: sha512-C+bg/TZsDVlLMF14+q9P9FB2pjQSgWwYs0pkIMPE1FsZWS4A0kk1M28V6YphpxAPr3AISVRZ6VgpDepvCk6dGw==}
+ engines: {node: '>=0.4.0'}
+
fmix@0.1.0:
resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==}
@@ -10246,8 +10251,8 @@ packages:
i18next-browser-languagedetector@8.0.4:
resolution: {integrity: sha512-f3frU3pIxD50/Tz20zx9TD9HobKYg47fmAETb117GKGPrhwcSSPJDoCposXlVycVebQ9GQohC3Efbpq7/nnJ5w==}
- i18next@24.2.2:
- resolution: {integrity: sha512-NE6i86lBCKRYZa5TaUDkU5S4HFgLIEJRLr3Whf2psgaxBleQ2LC1YW1Vc+SCgkAW7VEzndT6al6+CzegSUHcTQ==}
+ i18next@24.2.3:
+ resolution: {integrity: sha512-lfbf80OzkocvX7nmZtu7nSTNbrTYR52sLWxPtlXX1zAhVw8WEnFk4puUkCR4B1dNQwbSpEHHHemcZu//7EcB7A==}
peerDependencies:
typescript: ^5
peerDependenciesMeta:
@@ -12888,10 +12893,6 @@ packages:
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
engines: {node: ^10 || ^12 || >=14}
- postcss@8.5.2:
- resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==}
- engines: {node: ^10 || ^12 || >=14}
-
postcss@8.5.3:
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
engines: {node: ^10 || ^12 || >=14}
@@ -15455,8 +15456,8 @@ packages:
vfile@5.3.7:
resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==}
- vite-bundle-analyzer@0.17.1:
- resolution: {integrity: sha512-ubjLhkuRgOSBNck+6xBbQmjmh8SeLTG4alEM5PX2TNzyGhKLwWlyCz1YG0an3RQnscbhVzSb6kYteoHXhP///A==}
+ vite-bundle-analyzer@0.17.3:
+ resolution: {integrity: sha512-auy3vYMXErXYf78e12cAaaD7JmGaTa0DOipKRKx83KSR4kEttJ416HH/OmmzjWa0XI2AH5f21ax+WkVFPsB0fw==}
hasBin: true
vite-node@3.0.8:
@@ -15464,8 +15465,8 @@ packages:
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
- vite-plugin-mkcert@1.17.7:
- resolution: {integrity: sha512-w6897ZmEbn1dzQxY9fxXZBMEFNxeHWYDLJb42DBHSbLx+ASRnq5Mfy4v9bDMhqIGDz9ufhm2qXbVoCFe+8dazg==}
+ vite-plugin-mkcert@1.17.8:
+ resolution: {integrity: sha512-S+4tNEyGqdZQ3RLAG54ETeO2qyURHWrVjUWKYikLAbmhh/iJ+36gDEja4OWwFyXNuvyXcZwNt5TZZR9itPeG5Q==}
engines: {node: '>=v16.7.0'}
peerDependencies:
vite: '>=3'
@@ -15490,8 +15491,8 @@ packages:
vite:
optional: true
- vite@6.2.1:
- resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==}
+ vite@6.2.2:
+ resolution: {integrity: sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
@@ -19279,7 +19280,7 @@ snapshots:
'@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/focus': 3.20.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@react-aria/interactions': 3.24.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@tanstack/react-virtual': 3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@tanstack/react-virtual': 3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -19312,7 +19313,7 @@ snapshots:
'@hyoban/eslint-plugin-tailwindcss@3.18.0(tailwindcss@3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))':
dependencies:
fast-glob: 3.3.3
- postcss: 8.5.2
+ postcss: 8.5.3
tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2))
'@iconify-json/logos@1.2.4':
@@ -21833,13 +21834,13 @@ snapshots:
'@tanstack/query-core': 5.67.3
react: 18.3.1
- '@tanstack/react-virtual@3.13.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@tanstack/react-virtual@3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@tanstack/virtual-core': 3.13.3
+ '@tanstack/virtual-core': 3.13.4
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- '@tanstack/virtual-core@3.13.3': {}
+ '@tanstack/virtual-core@3.13.4': {}
'@testing-library/react-native@12.9.0(jest@29.7.0(@types/node@22.13.10)(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react-test-renderer@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
@@ -21897,7 +21898,7 @@ snapshots:
dependencies:
'@tsslint/types': 1.5.8
error-stack-parser: 2.1.4
- esbuild: 0.25.1
+ esbuild: 0.24.2
minimatch: 10.0.1
'@tsslint/eslint@1.5.8(jiti@2.4.2)(typescript@5.8.2)':
@@ -22298,7 +22299,7 @@ snapshots:
'@use-gesture/core': 10.3.1
react: 18.3.1
- '@vercel/build-utils@10.5.0': {}
+ '@vercel/build-utils@10.5.1': {}
'@vercel/error-utils@2.0.3': {}
@@ -22321,13 +22322,13 @@ snapshots:
- rollup
- supports-color
- '@vercel/node@5.1.13(encoding@0.1.13)(rollup@2.79.2)':
+ '@vercel/node@5.1.14(encoding@0.1.13)(rollup@2.79.2)':
dependencies:
'@edge-runtime/node-utils': 2.3.0
'@edge-runtime/primitives': 4.1.0
'@edge-runtime/vm': 3.2.0
'@types/node': 16.18.11
- '@vercel/build-utils': 10.5.0
+ '@vercel/build-utils': 10.5.1
'@vercel/error-utils': 2.0.3
'@vercel/nft': 0.27.10(encoding@0.1.13)(rollup@2.79.2)
'@vercel/static-config': 3.0.0
@@ -22368,7 +22369,7 @@ snapshots:
transitivePeerDependencies:
- bare-buffer
- '@vitejs/plugin-legacy@6.0.2(terser@5.39.0)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
+ '@vitejs/plugin-legacy@6.0.2(terser@5.39.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies:
'@babel/core': 7.26.10
'@babel/preset-env': 7.26.9(@babel/core@7.26.10)
@@ -22379,18 +22380,18 @@ snapshots:
regenerator-runtime: 0.14.1
systemjs: 6.15.1
terser: 5.39.0
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-react@4.3.4(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
+ '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies:
'@babel/core': 7.26.10
'@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10)
'@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
@@ -22401,13 +22402,13 @@ snapshots:
chai: 5.2.0
tinyrainbow: 2.0.0
- '@vitest/mocker@3.0.8(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
+ '@vitest/mocker@3.0.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies:
'@vitest/spy': 3.0.8
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
'@vitest/pretty-format@3.0.8':
dependencies:
@@ -22943,16 +22944,6 @@ snapshots:
author-regex@1.0.0: {}
- autoprefixer@10.4.21(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- caniuse-lite: 1.0.30001704
- fraction.js: 4.3.7
- normalize-range: 0.1.2
- picocolors: 1.1.1
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
autoprefixer@10.4.21(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
@@ -24149,10 +24140,6 @@ snapshots:
css-color-keywords@1.0.0: {}
- css-declaration-sorter@7.2.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
-
css-declaration-sorter@7.2.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
@@ -24214,40 +24201,6 @@ snapshots:
cssfilter@0.0.10: {}
- cssnano-preset-default@7.0.6(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- css-declaration-sorter: 7.2.0(postcss@8.5.2)
- cssnano-utils: 5.0.0(postcss@8.5.2)
- postcss: 8.5.2
- postcss-calc: 10.1.1(postcss@8.5.2)
- postcss-colormin: 7.0.2(postcss@8.5.2)
- postcss-convert-values: 7.0.4(postcss@8.5.2)
- postcss-discard-comments: 7.0.3(postcss@8.5.2)
- postcss-discard-duplicates: 7.0.1(postcss@8.5.2)
- postcss-discard-empty: 7.0.0(postcss@8.5.2)
- postcss-discard-overridden: 7.0.0(postcss@8.5.2)
- postcss-merge-longhand: 7.0.4(postcss@8.5.2)
- postcss-merge-rules: 7.0.4(postcss@8.5.2)
- postcss-minify-font-values: 7.0.0(postcss@8.5.2)
- postcss-minify-gradients: 7.0.0(postcss@8.5.2)
- postcss-minify-params: 7.0.2(postcss@8.5.2)
- postcss-minify-selectors: 7.0.4(postcss@8.5.2)
- postcss-normalize-charset: 7.0.0(postcss@8.5.2)
- postcss-normalize-display-values: 7.0.0(postcss@8.5.2)
- postcss-normalize-positions: 7.0.0(postcss@8.5.2)
- postcss-normalize-repeat-style: 7.0.0(postcss@8.5.2)
- postcss-normalize-string: 7.0.0(postcss@8.5.2)
- postcss-normalize-timing-functions: 7.0.0(postcss@8.5.2)
- postcss-normalize-unicode: 7.0.2(postcss@8.5.2)
- postcss-normalize-url: 7.0.0(postcss@8.5.2)
- postcss-normalize-whitespace: 7.0.0(postcss@8.5.2)
- postcss-ordered-values: 7.0.1(postcss@8.5.2)
- postcss-reduce-initial: 7.0.2(postcss@8.5.2)
- postcss-reduce-transforms: 7.0.0(postcss@8.5.2)
- postcss-svgo: 7.0.1(postcss@8.5.2)
- postcss-unique-selectors: 7.0.3(postcss@8.5.2)
-
cssnano-preset-default@7.0.6(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
@@ -24282,20 +24235,10 @@ snapshots:
postcss-svgo: 7.0.1(postcss@8.5.3)
postcss-unique-selectors: 7.0.3(postcss@8.5.3)
- cssnano-utils@5.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
-
cssnano-utils@5.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
- cssnano@7.0.6(postcss@8.5.2):
- dependencies:
- cssnano-preset-default: 7.0.6(postcss@8.5.2)
- lilconfig: 3.1.3
- postcss: 8.5.2
-
cssnano@7.0.6(postcss@8.5.3):
dependencies:
cssnano-preset-default: 7.0.6(postcss@8.5.3)
@@ -24318,7 +24261,7 @@ snapshots:
culori@3.3.0: {}
- daisyui@4.12.23(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3):
+ daisyui@4.12.24(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3):
dependencies:
css-selector-tokenizer: 0.8.0
culori: 3.3.0
@@ -24893,7 +24836,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- electron-vite@3.0.0(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
+ electron-vite@3.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
dependencies:
'@babel/core': 7.26.10
'@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10)
@@ -24901,7 +24844,7 @@ snapshots:
esbuild: 0.24.2
magic-string: 0.30.17
picocolors: 1.1.1
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
@@ -26025,22 +25968,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
- expo-dev-client@5.0.12(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-client@5.0.14(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-launcher: 5.0.29(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-dev-menu: 6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-launcher: 5.0.30(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-menu: 6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-dev-menu-interface: 1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-updates-interface: 1.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
transitivePeerDependencies:
- supports-color
- expo-dev-launcher@5.0.29(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-launcher@5.0.30(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
ajv: 8.11.0
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu: 6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-menu: 6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
resolve-from: 5.0.0
transitivePeerDependencies:
@@ -26050,7 +25993,7 @@ snapshots:
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu@6.0.19(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-menu@6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-dev-menu-interface: 1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
@@ -26741,6 +26684,8 @@ snapshots:
flow-parser@0.264.0: {}
+ flow-parser@0.265.0: {}
+
fmix@0.1.0:
dependencies:
imul: 1.0.1
@@ -27543,7 +27488,7 @@ snapshots:
dependencies:
'@babel/runtime': 7.26.10
- i18next@24.2.2(typescript@5.8.2):
+ i18next@24.2.3(typescript@5.8.2):
dependencies:
'@babel/runtime': 7.26.10
optionalDependencies:
@@ -28412,7 +28357,7 @@ snapshots:
'@babel/register': 7.25.9(@babel/core@7.26.10)
babel-core: 7.0.0-bridge.0(@babel/core@7.26.10)
chalk: 4.1.2
- flow-parser: 0.264.0
+ flow-parser: 0.265.0
graceful-fs: 4.2.11
micromatch: 4.0.8
neo-async: 2.6.2
@@ -30519,26 +30464,12 @@ snapshots:
possible-typed-array-names@1.1.0: {}
- postcss-calc@10.1.1(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-selector-parser: 7.1.0
- postcss-value-parser: 4.2.0
-
postcss-calc@10.1.1(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-selector-parser: 7.1.0
postcss-value-parser: 4.2.0
- postcss-colormin@7.0.2(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- caniuse-api: 3.0.0
- colord: 2.9.3
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-colormin@7.0.2(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
@@ -30547,75 +30478,47 @@ snapshots:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-convert-values@7.0.4(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-convert-values@7.0.4(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-discard-comments@7.0.3(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-selector-parser: 6.1.2
-
postcss-discard-comments@7.0.3(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-selector-parser: 6.1.2
- postcss-discard-duplicates@7.0.1(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
-
postcss-discard-duplicates@7.0.1(postcss@8.5.3):
dependencies:
postcss: 8.5.3
- postcss-discard-empty@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
-
postcss-discard-empty@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
- postcss-discard-overridden@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
-
postcss-discard-overridden@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
- postcss-import@15.1.0(postcss@8.5.2):
+ postcss-import@15.1.0(postcss@8.5.3):
dependencies:
- postcss: 8.5.2
+ postcss: 8.5.3
postcss-value-parser: 4.2.0
read-cache: 1.0.0
resolve: 1.22.10
- postcss-js@4.0.1(postcss@8.5.2):
- dependencies:
- camelcase-css: 2.0.1
- postcss: 8.5.2
-
postcss-js@4.0.1(postcss@8.5.3):
dependencies:
camelcase-css: 2.0.1
postcss: 8.5.3
- postcss-load-config@4.0.2(postcss@8.5.2)(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)):
+ postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2)):
dependencies:
lilconfig: 3.1.3
yaml: 2.7.0
optionalDependencies:
- postcss: 8.5.2
+ postcss: 8.5.3
ts-node: 10.9.2(@types/node@22.13.10)(typescript@5.8.2)
postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.3)(yaml@2.7.0):
@@ -30627,26 +30530,12 @@ snapshots:
tsx: 4.19.3
yaml: 2.7.0
- postcss-merge-longhand@7.0.4(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
- stylehacks: 7.0.4(postcss@8.5.2)
-
postcss-merge-longhand@7.0.4(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
stylehacks: 7.0.4(postcss@8.5.3)
- postcss-merge-rules@7.0.4(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- caniuse-api: 3.0.0
- cssnano-utils: 5.0.0(postcss@8.5.2)
- postcss: 8.5.2
- postcss-selector-parser: 6.1.2
-
postcss-merge-rules@7.0.4(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
@@ -30655,23 +30544,11 @@ snapshots:
postcss: 8.5.3
postcss-selector-parser: 6.1.2
- postcss-minify-font-values@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-minify-font-values@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-minify-gradients@7.0.0(postcss@8.5.2):
- dependencies:
- colord: 2.9.3
- cssnano-utils: 5.0.0(postcss@8.5.2)
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-minify-gradients@7.0.0(postcss@8.5.3):
dependencies:
colord: 2.9.3
@@ -30679,13 +30556,6 @@ snapshots:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-minify-params@7.0.2(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- cssnano-utils: 5.0.0(postcss@8.5.2)
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-minify-params@7.0.2(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
@@ -30693,142 +30563,74 @@ snapshots:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-minify-selectors@7.0.4(postcss@8.5.2):
- dependencies:
- cssesc: 3.0.0
- postcss: 8.5.2
- postcss-selector-parser: 6.1.2
-
postcss-minify-selectors@7.0.4(postcss@8.5.3):
dependencies:
cssesc: 3.0.0
postcss: 8.5.3
postcss-selector-parser: 6.1.2
- postcss-nested@6.2.0(postcss@8.5.2):
+ postcss-nested@6.2.0(postcss@8.5.3):
dependencies:
- postcss: 8.5.2
+ postcss: 8.5.3
postcss-selector-parser: 6.1.2
- postcss-normalize-charset@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
-
postcss-normalize-charset@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
- postcss-normalize-display-values@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-normalize-display-values@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-normalize-positions@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-normalize-positions@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-normalize-repeat-style@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-normalize-repeat-style@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-normalize-string@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-normalize-string@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-normalize-timing-functions@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-normalize-timing-functions@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-normalize-unicode@7.0.2(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-normalize-unicode@7.0.2(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-normalize-url@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-normalize-url@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-normalize-whitespace@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-normalize-whitespace@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-ordered-values@7.0.1(postcss@8.5.2):
- dependencies:
- cssnano-utils: 5.0.0(postcss@8.5.2)
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-ordered-values@7.0.1(postcss@8.5.3):
dependencies:
cssnano-utils: 5.0.0(postcss@8.5.3)
postcss: 8.5.3
postcss-value-parser: 4.2.0
- postcss-reduce-initial@7.0.2(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- caniuse-api: 3.0.0
- postcss: 8.5.2
-
postcss-reduce-initial@7.0.2(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
caniuse-api: 3.0.0
postcss: 8.5.3
- postcss-reduce-transforms@7.0.0(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
-
postcss-reduce-transforms@7.0.0(postcss@8.5.3):
dependencies:
postcss: 8.5.3
@@ -30849,23 +30651,12 @@ snapshots:
cssesc: 3.0.0
util-deprecate: 1.0.2
- postcss-svgo@7.0.1(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-value-parser: 4.2.0
- svgo: 3.3.2
-
postcss-svgo@7.0.1(postcss@8.5.3):
dependencies:
postcss: 8.5.3
postcss-value-parser: 4.2.0
svgo: 3.3.2
- postcss-unique-selectors@7.0.3(postcss@8.5.2):
- dependencies:
- postcss: 8.5.2
- postcss-selector-parser: 6.1.2
-
postcss-unique-selectors@7.0.3(postcss@8.5.3):
dependencies:
postcss: 8.5.3
@@ -30879,12 +30670,6 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
- postcss@8.5.2:
- dependencies:
- nanoid: 3.3.9
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
postcss@8.5.3:
dependencies:
nanoid: 3.3.9
@@ -31200,11 +30985,11 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- react-i18next@15.4.1(i18next@24.2.2(typescript@5.8.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ react-i18next@15.4.1(i18next@24.2.3(typescript@5.8.2))(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
'@babel/runtime': 7.26.10
html-parse-stringify: 3.0.1
- i18next: 24.2.2(typescript@5.8.2)
+ i18next: 24.2.3(typescript@5.8.2)
react: 18.3.1
optionalDependencies:
react-dom: 18.3.1(react@18.3.1)
@@ -32739,12 +32524,6 @@ snapshots:
dependencies:
inline-style-parser: 0.2.4
- stylehacks@7.0.4(postcss@8.5.2):
- dependencies:
- browserslist: 4.24.4
- postcss: 8.5.2
- postcss-selector-parser: 6.1.2
-
stylehacks@7.0.4(postcss@8.5.3):
dependencies:
browserslist: 4.24.4
@@ -32857,11 +32636,11 @@ snapshots:
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.1.1
- postcss: 8.5.2
- postcss-import: 15.1.0(postcss@8.5.2)
- postcss-js: 4.0.1(postcss@8.5.2)
- postcss-load-config: 4.0.2(postcss@8.5.2)(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2))
- postcss-nested: 6.2.0(postcss@8.5.2)
+ postcss: 8.5.3
+ postcss-import: 15.1.0(postcss@8.5.3)
+ postcss-js: 4.0.1(postcss@8.5.3)
+ postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2))
+ postcss-nested: 6.2.0(postcss@8.5.3)
postcss-selector-parser: 6.1.2
resolve: 1.22.10
sucrase: 3.35.0
@@ -33692,7 +33471,7 @@ snapshots:
unist-util-stringify-position: 3.0.3
vfile-message: 3.1.4
- vite-bundle-analyzer@0.17.1: {}
+ vite-bundle-analyzer@0.17.3: {}
vite-node@3.0.8(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
@@ -33700,7 +33479,7 @@ snapshots:
debug: 4.4.0(supports-color@8.1.1)
es-module-lexer: 1.6.0
pathe: 2.0.3
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -33715,21 +33494,21 @@ snapshots:
- tsx
- yaml
- vite-plugin-mkcert@1.17.7(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
+ vite-plugin-mkcert@1.17.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
dependencies:
axios: 1.8.3(debug@4.4.0)
debug: 4.4.0(supports-color@8.1.1)
picocolors: 1.1.1
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
- vite-plugin-pwa@0.21.1(@vite-pwa/assets-generator@0.2.6)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0):
+ vite-plugin-pwa@0.21.1(@vite-pwa/assets-generator@0.2.6)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0):
dependencies:
debug: 4.4.0(supports-color@8.1.1)
pretty-bytes: 6.1.1
tinyglobby: 0.2.12
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
workbox-build: 7.3.0(@types/babel__core@7.20.5)
workbox-window: 7.3.0
optionalDependencies:
@@ -33737,18 +33516,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
+ vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
dependencies:
debug: 4.4.0(supports-color@8.1.1)
globrex: 0.1.2
tsconfck: 3.1.5(typescript@5.8.2)
optionalDependencies:
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
- typescript
- vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
+ vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
esbuild: 0.25.1
postcss: 8.5.3
@@ -33765,7 +33544,7 @@ snapshots:
vitest@3.0.8(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.13.10)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@20.0.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
'@vitest/expect': 3.0.8
- '@vitest/mocker': 3.0.8(vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ '@vitest/mocker': 3.0.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
'@vitest/pretty-format': 3.0.8
'@vitest/runner': 3.0.8
'@vitest/snapshot': 3.0.8
@@ -33781,7 +33560,7 @@ snapshots:
tinyexec: 0.3.2
tinypool: 1.0.2
tinyrainbow: 2.0.0
- vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
vite-node: 3.0.8(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
why-is-node-running: 2.3.0
optionalDependencies:
From 883ed75bd4bfd4712907aac8a1466b2cad51833d Mon Sep 17 00:00:00 2001
From: Innei
Date: Fri, 14 Mar 2025 22:20:08 +0800
Subject: [PATCH 007/123] refactor(mobile): improve navigation header and
layout components
- Updated `NavigationHeader` to enhance modal presentation handling and UI customization.
- Adjusted `getDefaultHeaderHeight` function to simplify header height calculations for iOS devices.
- Integrated `NativeNavigationHeader` in the terms screen for consistent header behavior.
- Cleaned up layout files by removing unused imports and optimizing component structure.
This refactor aims to streamline navigation and improve the overall user experience across mobile screens.
Signed-off-by: Innei
---
.../layouts/header/NavigationHeader.tsx | 35 +++++++++++++++----
.../src/components/layouts/utils/index.tsx | 2 +-
.../views/SafeNavigationScrollView.tsx | 1 +
apps/mobile/src/modules/login/email.tsx | 2 +-
.../mobile/src/screens/(headless)/_layout.tsx | 8 +----
apps/mobile/src/screens/(headless)/terms.tsx | 23 ++++--------
apps/mobile/src/screens/(modal)/_layout.tsx | 9 +++++
apps/mobile/src/screens/_layout.tsx | 1 +
8 files changed, 49 insertions(+), 32 deletions(-)
diff --git a/apps/mobile/src/components/layouts/header/NavigationHeader.tsx b/apps/mobile/src/components/layouts/header/NavigationHeader.tsx
index b18ab6fcfd..fa783267be 100644
--- a/apps/mobile/src/components/layouts/header/NavigationHeader.tsx
+++ b/apps/mobile/src/components/layouts/header/NavigationHeader.tsx
@@ -1,6 +1,6 @@
import { cn } from "@follow/utils"
-import { getDefaultHeaderHeight, HeaderTitle } from "@react-navigation/elements"
-import { router, useNavigation } from "expo-router"
+import { HeaderTitle } from "@react-navigation/elements"
+import { router, Stack, useNavigation } from "expo-router"
import type { FC, PropsWithChildren, ReactNode } from "react"
import { createElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react"
import type { LayoutChangeEvent } from "react-native"
@@ -14,12 +14,14 @@ import Animated, {
} from "react-native-reanimated"
import type { DefaultStyle } from "react-native-reanimated/lib/typescript/hook/commonTypes"
import { useSafeAreaFrame, useSafeAreaInsets } from "react-native-safe-area-context"
+import type { NativeStackNavigationOptions } from "react-native-screens/lib/typescript/native-stack/types"
import type { ViewProps } from "react-native-svg/lib/typescript/fabric/utils"
import { useColor } from "react-native-uikit-colors"
import { MingcuteLeftLineIcon } from "@/src/icons/mingcute_left_line"
import { ThemedBlurView } from "../../common/ThemedBlurView"
+import { getDefaultHeaderHeight } from "../utils"
import { NavigationContext } from "../views/NavigationContext"
import { SetNavigationHeaderHeightContext } from "../views/NavigationHeaderContext"
@@ -137,9 +139,10 @@ export const InternalNavigationHeader = ({
const insets = useSafeAreaInsets()
const frame = useSafeAreaFrame()
const defaultHeight = useMemo(
- () => getDefaultHeaderHeight(frame, modal, insets.top),
+ () => getDefaultHeaderHeight(frame, modal, modal ? 0 : insets.top),
[frame, insets.top, modal],
)
+
const border = useColor("opaqueSeparator")
const opacityAnimated = useSharedValue(0)
const { scrollY } = useContext(NavigationContext)!
@@ -172,11 +175,8 @@ export const InternalNavigationHeader = ({
)
const rootTitleBarStyle = useAnimatedStyle(() => {
const styles = {
- paddingTop: insets.top,
-
- minHeight: defaultHeight,
+ paddingTop: modal ? 0 : insets.top,
position: "relative",
-
overflow: "hidden",
} satisfies DefaultStyle
if (hideableBottom) {
@@ -316,3 +316,24 @@ export const UINavigationHeaderActionButton = ({
)
}
const Noop = () => null
+
+/**
+ * NativeNavigationHeader wrapped react navigation native-stack is universal in modal and stack, but there are significant limitations in UI customization.
+ */
+export interface NativeNavigationHeaderProps
+ extends Pick {}
+export const NativeNavigationHeader: FC = (props) => {
+ const navigation = useNavigation()
+ return (
+ ,
+ headerTransparent: true,
+ headerBlurEffect: "systemChromeMaterial",
+ ...props,
+ }}
+ />
+ )
+}
diff --git a/apps/mobile/src/components/layouts/utils/index.tsx b/apps/mobile/src/components/layouts/utils/index.tsx
index c52d867b86..9ca411d584 100644
--- a/apps/mobile/src/components/layouts/utils/index.tsx
+++ b/apps/mobile/src/components/layouts/utils/index.tsx
@@ -18,7 +18,7 @@ export function getDefaultHeaderHeight(
const isLandscape = layout.width > layout.height
- if (Platform.OS === "ios" && (Platform.isPad || Platform.isTV)) {
+ if (Platform.OS === "ios" && Platform.isPad) {
if (modalPresentation) {
headerHeight = 56
} else {
diff --git a/apps/mobile/src/components/layouts/views/SafeNavigationScrollView.tsx b/apps/mobile/src/components/layouts/views/SafeNavigationScrollView.tsx
index 35f1a20bf2..ce4a03f4d9 100644
--- a/apps/mobile/src/components/layouts/views/SafeNavigationScrollView.tsx
+++ b/apps/mobile/src/components/layouts/views/SafeNavigationScrollView.tsx
@@ -137,6 +137,7 @@ export const NavigationBlurEffectHeader = ({
router.push("/sign-up")}>
- Don't have an account? Sign Up
+ Don't have an account?
router.push("/forget-password")}>
Forgot password?
diff --git a/apps/mobile/src/screens/(headless)/_layout.tsx b/apps/mobile/src/screens/(headless)/_layout.tsx
index ed7a8a6b74..12c91e7d25 100644
--- a/apps/mobile/src/screens/(headless)/_layout.tsx
+++ b/apps/mobile/src/screens/(headless)/_layout.tsx
@@ -1,16 +1,10 @@
import { Stack } from "expo-router"
-import { useColorScheme } from "react-native"
-
-import { getSystemBackgroundColor } from "@/src/theme/utils"
export default function HeadlessLayout() {
- useColorScheme()
- const systemBackgroundColor = getSystemBackgroundColor()
-
return (
diff --git a/apps/mobile/src/screens/(headless)/terms.tsx b/apps/mobile/src/screens/(headless)/terms.tsx
index 1581f1db75..6480cc206a 100644
--- a/apps/mobile/src/screens/(headless)/terms.tsx
+++ b/apps/mobile/src/screens/(headless)/terms.tsx
@@ -1,11 +1,6 @@
-import { useMemo } from "react"
-import { useAnimatedValue } from "react-native"
-
-import { NavigationContext } from "@/src/components/layouts/views/NavigationContext"
-import {
- NavigationBlurEffectHeader,
- SafeNavigationScrollView,
-} from "@/src/components/layouts/views/SafeNavigationScrollView"
+import { ScrollView } from "react-native"
+
+import { NativeNavigationHeader } from "@/src/components/layouts/header/NavigationHeader"
import { Markdown } from "@/src/components/ui/typography/Markdown"
const txt = `# Terms of Service
@@ -96,15 +91,11 @@ export const TermsMarkdown = () => {
}
export default function Teams() {
- const scrollY = useAnimatedValue(100)
-
return (
- ({ scrollY }), [scrollY])}>
-
-
+
+
-
-
-
+
+
)
}
diff --git a/apps/mobile/src/screens/(modal)/_layout.tsx b/apps/mobile/src/screens/(modal)/_layout.tsx
index fc5e1f8512..15ea5ced08 100644
--- a/apps/mobile/src/screens/(modal)/_layout.tsx
+++ b/apps/mobile/src/screens/(modal)/_layout.tsx
@@ -9,30 +9,35 @@ export default function ModalLayout() {
name="add"
options={{
title: "Add Subscription",
+ presentation: "modal",
}}
/>
@@ -42,6 +47,7 @@ export default function ModalLayout() {
headerShown: true,
title: "",
headerTransparent: true,
+ presentation: "modal",
headerLeft: ModalHeaderCloseButton,
}}
/>
@@ -51,6 +57,7 @@ export default function ModalLayout() {
headerShown: true,
title: "",
headerTransparent: true,
+ presentation: "modal",
headerLeft: ModalHeaderCloseButton,
}}
/>
@@ -61,6 +68,7 @@ export default function ModalLayout() {
title: "",
headerTransparent: true,
headerLeft: ModalHeaderCloseButton,
+ presentation: "modal",
}}
/>
diff --git a/apps/mobile/src/screens/_layout.tsx b/apps/mobile/src/screens/_layout.tsx
index 0229323ac7..0e1360aa91 100644
--- a/apps/mobile/src/screens/_layout.tsx
+++ b/apps/mobile/src/screens/_layout.tsx
@@ -36,6 +36,7 @@ export default function RootLayout() {
+
{__DEV__ && }
From ca897ebf2cd25722b2b25a1b9ea46d51e663903e Mon Sep 17 00:00:00 2001
From: DIYgod
Date: Fri, 14 Mar 2025 23:01:39 +0800
Subject: [PATCH 008/123] chore: update patch (#3129)
* chore: update patch
* fix
* fix
---
package.json | 8 +--
patches/@mozilla__readability.patch | 13 ----
patches/@mozilla__readability@0.6.0.patch | 12 ++++
.../{daisyui.patch => daisyui@4.12.24.patch} | 19 ++----
...atch => electron-context-menu@4.0.5.patch} | 2 +-
patches/hono.patch | 4 +-
...6.9.17.patch => re-resizable@6.11.2.patch} | 11 ++--
pnpm-lock.yaml | 60 +++++++++----------
8 files changed, 61 insertions(+), 68 deletions(-)
delete mode 100644 patches/@mozilla__readability.patch
create mode 100644 patches/@mozilla__readability@0.6.0.patch
rename patches/{daisyui.patch => daisyui@4.12.24.patch} (67%)
rename patches/{electron-context-menu.patch => electron-context-menu@4.0.5.patch} (73%)
rename patches/{re-resizable@6.9.17.patch => re-resizable@6.11.2.patch} (81%)
diff --git a/package.json b/package.json
index aea3dc43ca..894303b0c5 100644
--- a/package.json
+++ b/package.json
@@ -89,11 +89,11 @@
"pnpm": {
"patchedDependencies": {
"immer@10.1.1": "patches/immer@10.1.1.patch",
- "re-resizable": "patches/re-resizable@6.9.17.patch",
+ "re-resizable@6.11.2": "patches/re-resizable@6.11.2.patch",
"hono": "patches/hono.patch",
- "electron-context-menu": "patches/electron-context-menu.patch",
- "@mozilla/readability": "patches/@mozilla__readability.patch",
- "daisyui": "patches/daisyui.patch",
+ "electron-context-menu@4.0.5": "patches/electron-context-menu@4.0.5.patch",
+ "@mozilla/readability@0.6.0": "patches/@mozilla__readability@0.6.0.patch",
+ "daisyui@4.12.24": "patches/daisyui@4.12.24.patch",
"jsonpointer": "patches/jsonpointer.patch",
"workbox-precaching": "patches/workbox-precaching.patch",
"@pengx17/electron-forge-maker-appimage": "patches/@pengx17__electron-forge-maker-appimage.patch",
diff --git a/patches/@mozilla__readability.patch b/patches/@mozilla__readability.patch
deleted file mode 100644
index d40b5b3211..0000000000
--- a/patches/@mozilla__readability.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/Readability-readerable.js b/Readability-readerable.js
-index 892169fb94999987e895846b7605f9c4cf32802c..6c75e61f3c5e0b6143860fa1aa8c652548a78760 100644
---- a/Readability-readerable.js
-+++ b/Readability-readerable.js
-@@ -29,7 +29,7 @@ var REGEXPS = {
- function isNodeVisible(node) {
- // Have to null-check node.style and node.className.indexOf to deal with SVG and MathML nodes.
- return (!node.style || node.style.display != "none")
-- && !node.hasAttribute("hidden")
-+ && !(node.hasAttribute("hidden") && !node.id.startsWith("S:"))
- //check for "fallback-image" so that wikimedia math images are displayed
- && (!node.hasAttribute("aria-hidden") || node.getAttribute("aria-hidden") != "true" || (node.className && node.className.indexOf && node.className.indexOf("fallback-image") !== -1));
- }
diff --git a/patches/@mozilla__readability@0.6.0.patch b/patches/@mozilla__readability@0.6.0.patch
new file mode 100644
index 0000000000..d44c250391
--- /dev/null
+++ b/patches/@mozilla__readability@0.6.0.patch
@@ -0,0 +1,12 @@
+diff --git a/Readability-readerable.js b/Readability-readerable.js
+index e50a6e8a9b6e409a39adff0b77d35159cd9deb74..ae4496260700b09d5028616f30f4dd32f401feab 100644
+--- a/Readability-readerable.js
++++ b/Readability-readerable.js
+@@ -32,6 +32,7 @@ function isNodeVisible(node) {
+ return (
+ (!node.style || node.style.display != "none") &&
+ !node.hasAttribute("hidden") &&
++ !node.id.startsWith("S:") &&
+ //check for "fallback-image" so that wikimedia math images are displayed
+ (!node.hasAttribute("aria-hidden") ||
+ node.getAttribute("aria-hidden") != "true" ||
diff --git a/patches/daisyui.patch b/patches/daisyui@4.12.24.patch
similarity index 67%
rename from patches/daisyui.patch
rename to patches/daisyui@4.12.24.patch
index 44088b564a..4f1cfc8f7e 100644
--- a/patches/daisyui.patch
+++ b/patches/daisyui@4.12.24.patch
@@ -1,18 +1,11 @@
diff --git a/src/index.js b/src/index.js
-index 18ee99048c31ab0e8e82601cb8021bd54cb5d780..4ff72db4c66ce9549dce240f19eef15b43a26774 100644
+index 18ee99048c31ab0e8e82601cb8021bd54cb5d780..0c8d04d9b615a9e894c3b860b44dd67844471f23 100644
--- a/src/index.js
+++ b/src/index.js
-@@ -125,23 +125,27 @@ const mainFunction = ({ addBase, addComponents, config }) => {
- }
- }
-
-+
- module.exports = tailwindPlugin(mainFunction, {
- theme: {
- extend: {
+@@ -131,17 +131,21 @@ module.exports = tailwindPlugin(mainFunction, {
colors: {
...colorObject,
-- // adding all Tailwind `neutral` shades here so they don't get overridden by daisyUI `neutral` color
+ // adding all Tailwind `neutral` shades here so they don't get overridden by daisyUI `neutral` color
- "neutral-50": "#fafafa",
- "neutral-100": "#f5f5f5",
- "neutral-200": "#e5e5e5",
@@ -26,7 +19,7 @@ index 18ee99048c31ab0e8e82601cb8021bd54cb5d780..4ff72db4c66ce9549dce240f19eef15b
- "neutral-950": "#0a0a0a",
+ "neutral": {
+ DEFAULT: "var(--fallback-n,oklch(var(--n)/))",
-+ 50: "#fafafa",
++ 50: "#fafafa",
+ 100: "#f5f5f5",
+ 200: "#e5e5e5",
+ 300: "#d4d4d4",
@@ -37,8 +30,8 @@ index 18ee99048c31ab0e8e82601cb8021bd54cb5d780..4ff72db4c66ce9549dce240f19eef15b
+ 800: "#262626",
+ 900: "#171717",
+ 950: "#0a0a0a",
-+ },
-+ "neutral-content": "var(--fallback-nc,oklch(var(--nc)/))",
++ },
++ "neutral-content": "var(--fallback-nc,oklch(var(--nc)/))",
},
...utilityClasses,
},
diff --git a/patches/electron-context-menu.patch b/patches/electron-context-menu@4.0.5.patch
similarity index 73%
rename from patches/electron-context-menu.patch
rename to patches/electron-context-menu@4.0.5.patch
index 01d80b8c0c..5bf3e4910d 100644
--- a/patches/electron-context-menu.patch
+++ b/patches/electron-context-menu@4.0.5.patch
@@ -1,5 +1,5 @@
diff --git a/index.js b/index.js
-index b10daea2fbcee2eaeed9c61103eb89d93d4ee50d..5392745cdcdead1fbb39c17c42f3ed15f4141e35 100644
+index 8ec2624b2ed049733788311aed0852432dbefb42..d872e82d5a12d175d17579e7449fe38de5f02bde 100644
--- a/index.js
+++ b/index.js
@@ -378,6 +378,7 @@ export default function contextMenu(options = {}) {
diff --git a/patches/hono.patch b/patches/hono.patch
index 8d3b80d1ea..23e38360da 100644
--- a/patches/hono.patch
+++ b/patches/hono.patch
@@ -1,8 +1,8 @@
diff --git a/dist/types/client/types.d.ts b/dist/types/client/types.d.ts
-index 35e2c7a1dccc9f148c87ba07d71d7f6101106f2d..5c52cd70594e57d8c375f2c048dd337eaa55e906 100644
+index fb6f879fd1975b72b6c392e540dc3e2a1110e589..827da42e242012a69ad554f866fcfb7fd58692ff 100644
--- a/dist/types/client/types.d.ts
+++ b/dist/types/client/types.d.ts
-@@ -52,7 +52,7 @@ type ClientResponseOfEndpoint = T extends {
+@@ -51,7 +51,7 @@ type ClientResponseOfEndpoint = T extends {
output: infer O;
outputFormat: infer F;
status: infer S;
diff --git a/patches/re-resizable@6.9.17.patch b/patches/re-resizable@6.11.2.patch
similarity index 81%
rename from patches/re-resizable@6.9.17.patch
rename to patches/re-resizable@6.11.2.patch
index be8b84d828..5484571e4d 100644
--- a/patches/re-resizable@6.9.17.patch
+++ b/patches/re-resizable@6.11.2.patch
@@ -1,9 +1,9 @@
diff --git a/lib/resizer.js b/lib/resizer.js
-index a051e406e92de35277d9aa335302a9216943f5b4..6214d334cf4840748e0ea192ace51129b414acc8 100644
+index c465561d31edf2087c45cdf7b7a2af16e3edd9c3..31c0a258f0c8176eb274e4b292fde1b12040891e 100644
--- a/lib/resizer.js
+++ b/lib/resizer.js
-@@ -25,32 +25,32 @@ var __assign = (this && this.__assign) || function () {
- import * as React from 'react';
+@@ -13,33 +13,33 @@ import { jsx as _jsx } from "react/jsx-runtime";
+ import { memo, useCallback, useMemo } from 'react';
var rowSizeBase = {
width: '100%',
- height: '10px',
@@ -26,6 +26,7 @@ index a051e406e92de35277d9aa335302a9216943f5b4..6214d334cf4840748e0ea192ace51129
+ width: '40px',
+ height: '40px',
position: 'absolute',
+ zIndex: 1,
};
var styles = {
- top: __assign(__assign({}, rowSizeBase), { top: '-5px' }),
@@ -45,5 +46,5 @@ index a051e406e92de35277d9aa335302a9216943f5b4..6214d334cf4840748e0ea192ace51129
+ bottomLeft: __assign(__assign({}, edgeBase), { left: '-20px', bottom: '-20px', cursor: 'sw-resize' }),
+ topLeft: __assign(__assign({}, edgeBase), { left: '-20px', top: '-20px', cursor: 'nw-resize' }),
};
- var Resizer = /** @class */ (function (_super) {
- __extends(Resizer, _super);
+ export var Resizer = memo(function (props) {
+ var onResizeStart = props.onResizeStart, direction = props.direction, children = props.children, replaceStyles = props.replaceStyles, className = props.className;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index da57a1fe30..9468674013 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -18,23 +18,23 @@ patchedDependencies:
'@microflash/remark-callout-directives':
hash: bl6uhe4vs4xm3d2jmecdpzbh2m
path: patches/@microflash__remark-callout-directives.patch
- '@mozilla/readability':
- hash: 43niildbdafdxi7qfcwhpkkxwa
- path: patches/@mozilla__readability.patch
+ '@mozilla/readability@0.6.0':
+ hash: tcrtng7itw73xfw4zpcltvxf4e
+ path: patches/@mozilla__readability@0.6.0.patch
'@pengx17/electron-forge-maker-appimage':
hash: vov3v67fgv3lrfz3n24bnubw4m
path: patches/@pengx17__electron-forge-maker-appimage.patch
- daisyui:
- hash: igsntdatmoaxzwxof4bkkh35fy
- path: patches/daisyui.patch
+ daisyui@4.12.24:
+ hash: kauabb6uyb6mqty5xbraxqjogy
+ path: patches/daisyui@4.12.24.patch
devlop:
hash: xzgzapu45daboiid4fiusduvwa
path: patches/devlop.patch
- electron-context-menu:
- hash: c53at4t5fflixuwjz35hmcqdu4
- path: patches/electron-context-menu.patch
+ electron-context-menu@4.0.5:
+ hash: idx5ni4vivbczlm3odxrcnocbm
+ path: patches/electron-context-menu@4.0.5.patch
hono:
- hash: qptujxncoai6tukc4qaqsrqk24
+ hash: ilgmwbmxq7ndzom6bsxwnexiky
path: patches/hono.patch
immer@10.1.1:
hash: og7mbnoo5vh43tjlw5rbmrdbvu
@@ -42,9 +42,9 @@ patchedDependencies:
jsonpointer:
hash: prxuhlhyjugus5tiew4vc3pahu
path: patches/jsonpointer.patch
- re-resizable:
- hash: yitcmpfwcomg2fky72uc3lhk2i
- path: patches/re-resizable@6.9.17.patch
+ re-resizable@6.11.2:
+ hash: yyoomfolrhjt3tvpzaxibro3iu
+ path: patches/re-resizable@6.11.2.patch
react-native-sheet-transitions:
hash: xmkq4ssu3mefxtr2e65xl27hxi
path: patches/react-native-sheet-transitions.patch
@@ -317,7 +317,7 @@ importers:
version: 17.4.4
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky)
html-minifier-terser:
specifier: 7.2.0
version: 7.2.0
@@ -380,7 +380,7 @@ importers:
version: 2.0.0
electron-context-menu:
specifier: 4.0.5
- version: 4.0.5(patch_hash=c53at4t5fflixuwjz35hmcqdu4)
+ version: 4.0.5(patch_hash=idx5ni4vivbczlm3odxrcnocbm)
electron-log:
specifier: 5.3.2
version: 5.3.2
@@ -453,7 +453,7 @@ importers:
version: 4.0.0
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky)
apps/desktop/src/renderer:
dependencies:
@@ -639,7 +639,7 @@ importers:
version: 0.2.0(shiki@3.2.1)
re-resizable:
specifier: 6.11.2
- version: 6.11.2(patch_hash=yitcmpfwcomg2fky72uc3lhk2i)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 6.11.2(patch_hash=yyoomfolrhjt3tvpzaxibro3iu)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-blurhash:
specifier: 0.3.0
version: 0.3.0(blurhash@2.0.5)(react@18.3.1)
@@ -916,7 +916,7 @@ importers:
version: 14.0.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky)
immer:
specifier: 10.1.1
version: 10.1.1(patch_hash=og7mbnoo5vh43tjlw5rbmrdbvu)
@@ -1206,7 +1206,7 @@ importers:
version: 4.0.3
daisyui:
specifier: 4.12.24
- version: 4.12.24(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3)
+ version: 4.12.24(patch_hash=kauabb6uyb6mqty5xbraxqjogy)(postcss@8.5.3)
dotenv-flow:
specifier: 4.1.0
version: 4.1.0
@@ -1492,7 +1492,7 @@ importers:
version: link:../utils
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky)
packages/shared:
dependencies:
@@ -1504,7 +1504,7 @@ importers:
version: 1.0.1(@types/node@22.13.10)
'@hono/node-server':
specifier: 1.13.8
- version: 1.13.8(hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24))
+ version: 1.13.8(hono@4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky))
'@t3-oss/env-core':
specifier: 0.12.0
version: 0.12.0(typescript@5.8.2)(valibot@1.0.0-beta.15(typescript@5.8.2))(zod@3.24.2)
@@ -1516,7 +1516,7 @@ importers:
version: 0.40.0(lfgoa6uvatktntjnogv3tipozy)
hono:
specifier: 4.7.4
- version: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ version: 4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky)
sonner:
specifier: 2.0.1
version: 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1536,7 +1536,7 @@ importers:
version: link:../types
'@mozilla/readability':
specifier: 0.6.0
- version: 0.6.0(patch_hash=43niildbdafdxi7qfcwhpkkxwa)
+ version: 0.6.0(patch_hash=tcrtng7itw73xfw4zpcltvxf4e)
chardet:
specifier: 2.1.0
version: 2.1.0
@@ -19286,9 +19286,9 @@ snapshots:
'@hexagon/base64@1.1.28': {}
- '@hono/node-server@1.13.8(hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24))':
+ '@hono/node-server@1.13.8(hono@4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky))':
dependencies:
- hono: 4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24)
+ hono: 4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky)
'@hookform/resolvers@4.1.3(react-hook-form@7.54.2(react@18.3.1))':
dependencies:
@@ -19711,7 +19711,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@mozilla/readability@0.6.0(patch_hash=43niildbdafdxi7qfcwhpkkxwa)': {}
+ '@mozilla/readability@0.6.0(patch_hash=tcrtng7itw73xfw4zpcltvxf4e)': {}
'@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3':
optional: true
@@ -24261,7 +24261,7 @@ snapshots:
culori@3.3.0: {}
- daisyui@4.12.24(patch_hash=igsntdatmoaxzwxof4bkkh35fy)(postcss@8.5.3):
+ daisyui@4.12.24(patch_hash=kauabb6uyb6mqty5xbraxqjogy)(postcss@8.5.3):
dependencies:
css-selector-tokenizer: 0.8.0
culori: 3.3.0
@@ -24763,7 +24763,7 @@ snapshots:
- dmg-builder
- supports-color
- electron-context-menu@4.0.5(patch_hash=c53at4t5fflixuwjz35hmcqdu4):
+ electron-context-menu@4.0.5(patch_hash=idx5ni4vivbczlm3odxrcnocbm):
dependencies:
cli-truncate: 4.0.0
electron-dl: 4.0.0
@@ -27366,7 +27366,7 @@ snapshots:
dependencies:
react-is: 16.13.1
- hono@4.7.4(patch_hash=qptujxncoai6tukc4qaqsrqk24): {}
+ hono@4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky): {}
hosted-git-info@2.8.9: {}
@@ -30913,7 +30913,7 @@ snapshots:
minimist: 1.2.8
strip-json-comments: 2.0.1
- re-resizable@6.11.2(patch_hash=yitcmpfwcomg2fky72uc3lhk2i)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ re-resizable@6.11.2(patch_hash=yyoomfolrhjt3tvpzaxibro3iu)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
From 9f07a3b0fd4de6d3d2d24f093b8335c27fcf6745 Mon Sep 17 00:00:00 2001
From: Whitewater
Date: Sat, 15 Mar 2025 00:40:55 +0800
Subject: [PATCH 009/123] feat(mobile): implement language-based preset feeds
for onboarding (#3109)
* feat(mobile): implement language-based preset feeds for onboarding
* fix: enhance useIsNewUser hook to accept enabled parameter
* refactor(mobile): streamline subscription handling in StepInterests component
* fix(mobile): correct feedId values in English feeds JSON
---
.../src/modules/onboarding/feeds-english.json | 263 +++
apps/mobile/src/modules/onboarding/feeds.json | 1438 +++++++++++++++++
apps/mobile/src/modules/onboarding/preset.ts | 129 +-
.../src/modules/onboarding/step-interests.tsx | 60 +-
apps/mobile/src/store/user/hooks.ts | 6 +-
5 files changed, 1755 insertions(+), 141 deletions(-)
create mode 100644 apps/mobile/src/modules/onboarding/feeds-english.json
create mode 100644 apps/mobile/src/modules/onboarding/feeds.json
diff --git a/apps/mobile/src/modules/onboarding/feeds-english.json b/apps/mobile/src/modules/onboarding/feeds-english.json
new file mode 100644
index 0000000000..126457dd70
--- /dev/null
+++ b/apps/mobile/src/modules/onboarding/feeds-english.json
@@ -0,0 +1,263 @@
+[
+ {
+ "feedId": "43255084704601095",
+ "title": "a16z Podcast",
+ "url": "https://feeds.simplecast.com/JGE3yC0V",
+ "language": "English"
+ },
+ {
+ "feedId": "83007794771225600",
+ "title": "Andrew Huberman - YouTube",
+ "url": "rsshub://youtube/user/@hubermanlab",
+ "language": "English",
+ "view": 3
+ },
+ {
+ "feedId": "62128288597853189",
+ "title": "Cal Newport",
+ "url": "https://calnewport.com/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "43881675446885376",
+ "title": "Collab Fund",
+ "url": "http://feeds.feedburner.com/collabfund",
+ "language": "English"
+ },
+ {
+ "feedId": "41359648684677175",
+ "title": "Derek Sivers blog",
+ "url": "https://sive.rs/en.atom",
+ "language": "English"
+ },
+ {
+ "feedId": "52325519371718656",
+ "title": "Hacker News",
+ "url": "rsshub://hackernews",
+ "language": "English"
+ },
+ {
+ "feedId": "41381007770949636",
+ "title": "IGN Articles",
+ "url": "https://www.ign.com/rss/articles/feed?tags=games",
+ "language": "English"
+ },
+ {
+ "feedId": "59461847827447808",
+ "title": "International homepage",
+ "url": "https://www.ft.com/rss/home",
+ "language": "English"
+ },
+ {
+ "feedId": "52333046926856207",
+ "title": "Kotaku",
+ "url": "https://kotaku.com/rss",
+ "language": "English"
+ },
+ {
+ "feedId": "41768239731545104",
+ "title": "LessWrong",
+ "url": "https://www.lesswrong.com/feed.xml?view=curated-rss",
+ "language": "English"
+ },
+ {
+ "feedId": "41375850878492672",
+ "title": "Lex Fridman - YouTube",
+ "url": "rsshub://youtube/user/%40lexfridman",
+ "language": "English",
+ "view": 3
+ },
+ {
+ "feedId": "55258726035912721",
+ "title": "Marginal REVOLUTION",
+ "url": "https://marginalrevolution.com/feed",
+ "language": "English"
+ },
+ {
+ "feedId": "42109057149046784",
+ "title": "Marques Brownlee - YouTube",
+ "url": "rsshub://youtube/user/@mkbhd",
+ "language": "English",
+ "view": 3
+ },
+ {
+ "feedId": "41768239731545089",
+ "title": "MIT Technology Review",
+ "url": "https://www.technologyreview.com/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "42127302309630072",
+ "title": "Mr. Money Mustache",
+ "url": "https://feeds.feedburner.com/mrmoneymustache",
+ "language": "English"
+ },
+ {
+ "feedId": "41356263889737728",
+ "title": "NASA Astronomy Picture of the Day",
+ "url": "rsshub://nasa/apod",
+ "language": "English"
+ },
+ {
+ "feedId": "55130722692595739",
+ "title": "Nassim Taleb",
+ "url": "https://nassimtaleb.org/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "41699925856588800",
+ "title": "Nat Geo Photo of the Day",
+ "url": "rsshub://natgeo/dailyphoto",
+ "language": "English"
+ },
+ {
+ "feedId": "42127302309630013",
+ "title": "Nautilus",
+ "url": "https://nautil.us/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "41147805276726370",
+ "title": "Obsidian Changelog",
+ "url": "https://obsidian.md/changelog.xml",
+ "language": "English"
+ },
+ {
+ "feedId": "41468521403732992",
+ "title": "Paul Graham - Essays",
+ "url": "rsshub://paulgraham/articles",
+ "language": "English"
+ },
+ {
+ "feedId": "55130722692595736",
+ "title": "Peter Attia",
+ "url": "https://peterattiamd.com/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "41382261184290816",
+ "title": "Product Hunt — The best new products, every day",
+ "url": "https://www.producthunt.com/feed",
+ "language": "English"
+ },
+ {
+ "feedId": "43254816999905282",
+ "title": "Research & Insights",
+ "url": "https://www.bridgewater.com/research-and-insights.rss",
+ "language": "English"
+ },
+ {
+ "feedId": "41147805276726402",
+ "title": "RSSHub has new routes",
+ "url": "rsshub://rsshub/routes",
+ "language": "English"
+ },
+ {
+ "feedId": "66860831563739166",
+ "title": "Sabine Hossenfelder",
+ "url": "https://www.youtube.com/feeds/videos.xml?channel_id=UC1yNl2E66ZzKApQdRuTQ4tw",
+ "language": "English",
+ "view": 3
+ },
+ {
+ "feedId": "49470377330653207",
+ "title": "Seth's Blog",
+ "url": "https://seths.blog/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "41795937311945747",
+ "title": "Stratechery by Ben Thompson",
+ "url": "https://stratechery.com/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "59299066394742784",
+ "title": "TechCrunch",
+ "url": "https://techcrunch.com/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "49470377330653193",
+ "title": "The Blog of Author Tim Ferriss",
+ "url": "https://tim.blog/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "57993144602143744",
+ "title": "The Memo by Howard Marks",
+ "url": "https://rss.art19.com/the-memo-by-howard-marks",
+ "language": "English"
+ },
+ {
+ "feedId": "100080366298125312",
+ "title": "The Verge",
+ "url": "https://www.theverge.com/rss/index.xml",
+ "language": "English"
+ },
+ {
+ "feedId": "41572238278099968",
+ "title": "The world in brief | The Economist",
+ "url": "rsshub://economist/espresso",
+ "language": "English"
+ },
+ {
+ "feedId": "41368476124603392",
+ "title": "Trending repositories on GitHub this week · GitHub",
+ "url": "rsshub://github/trending/weekly/any",
+ "language": "English"
+ },
+ {
+ "feedId": "41461870197170196",
+ "title": "Trending repositories on GitHub today · GitHub",
+ "url": "rsshub://github/trending/daily/any",
+ "language": "English"
+ },
+ {
+ "feedId": "87076619508029440",
+ "title": "Twitter @Balaji",
+ "url": "rsshub://twitter/user/balajis",
+ "language": "English",
+ "view": 1
+ },
+ {
+ "feedId": "59795737540541440",
+ "title": "Twitter @David Sinclair",
+ "url": "rsshub://twitter/user/davidasinclair",
+ "language": "English",
+ "view": 1
+ },
+ {
+ "feedId": "100411504863520768",
+ "title": "Twitter @Elon Musk",
+ "url": "rsshub://twitter/user/elonmusk",
+ "language": "English",
+ "view": 1
+ },
+ {
+ "feedId": "41215396143077382",
+ "title": "Twitter @Follow",
+ "url": "rsshub://twitter/user/follow_app_",
+ "language": "English",
+ "view": 1
+ },
+ {
+ "feedId": "55866936513101824",
+ "title": "Twitter @James Clear",
+ "url": "rsshub://twitter/user/JamesClear",
+ "language": "English",
+ "view": 1
+ },
+ {
+ "feedId": "41342818712721408",
+ "title": "Wait But Why",
+ "url": "https://waitbutwhy.com/feed?code=c6f56c4214621ab98b86acbcae6b4405",
+ "language": "English"
+ },
+ {
+ "feedId": "41965184796582014",
+ "title": "WIRED",
+ "url": "https://www.wired.com/feed/rss",
+ "language": "English"
+ }
+]
diff --git a/apps/mobile/src/modules/onboarding/feeds.json b/apps/mobile/src/modules/onboarding/feeds.json
new file mode 100644
index 0000000000..00717d3050
--- /dev/null
+++ b/apps/mobile/src/modules/onboarding/feeds.json
@@ -0,0 +1,1438 @@
+[
+ {
+ "feedId": "41358761177015296",
+ "title": "知乎热榜 - 全站",
+ "url": "rsshub://zhihu/hot/total",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805268337669",
+ "title": "V2EX-最热主题",
+ "url": "rsshub://v2ex/topics/hot",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805276726272",
+ "title": "少数派",
+ "url": "rsshub://sspai/index",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41374278075966464",
+ "title": "V2EX-最新主题",
+ "url": "rsshub://v2ex/topics/latest",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "64124473013636098",
+ "title": "Followin",
+ "url": "rsshub://followin/news",
+ "language": "English"
+ },
+ {
+ "feedId": "78806242632741888",
+ "title": "bilibili 排行榜-全站",
+ "url": "rsshub://bilibili/ranking/0",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "41358830592746496",
+ "title": "微博热搜榜",
+ "url": "rsshub://weibo/search/hot",
+ "language": "Chinese",
+ "view": 1
+ },
+ {
+ "feedId": "41719081557593134",
+ "title": "小众软件",
+ "url": "https://feeds.appinn.com/appinns/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41443203209057309",
+ "title": "财新网 - 最新文章",
+ "url": "rsshub://caixin/latest",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100411504863520768",
+ "title": "Twitter @Elon Musk",
+ "url": "rsshub://twitter/user/elonmusk",
+ "language": "English",
+ "view": 1
+ },
+ {
+ "feedId": "100020530265058357",
+ "title": "阮一峰的网络日志",
+ "url": "https://feeds.feedburner.com/ruanyifeng",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41324816676184077",
+ "title": "Twitter @DIŸgöd ☀️",
+ "url": "rsshub://twitter/user/DIYgod",
+ "language": "Chinese",
+ "view": 1
+ },
+ {
+ "feedId": "41147805276726311",
+ "title": "Twitter @Joshua Meng 🟠",
+ "url": "rsshub://twitter/user/JoshuaRSS3",
+ "language": "English",
+ "view": 1
+ },
+ {
+ "feedId": "41147805276726275",
+ "title": "潮流周刊",
+ "url": "https://weekly.tw93.fun/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41223694984583170",
+ "title": "Hi, DIYgod",
+ "url": "https://diygod.cc/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "56445572623398912",
+ "title": "简书首页",
+ "url": "rsshub://jianshu/home",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "60338304723722240",
+ "title": "实时财经快讯 - FastBull",
+ "url": "rsshub://fastbull/express-news",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55611390687386624",
+ "title": "格隆汇快讯-7x24小时市场快讯-财经市场热点",
+ "url": "rsshub://gelonghui/live",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "49375919416104960",
+ "title": "深潮TechFlow - 快讯",
+ "url": "rsshub://techflowpost/express",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55982073122828305",
+ "title": "TED Talks Daily",
+ "url": "https://feeds.acast.com/public/shows/67587e77c705e441797aff96",
+ "language": "English"
+ },
+ {
+ "feedId": "72541715399995392",
+ "title": "TheBlockBeats - 快讯",
+ "url": "rsshub://theblockbeats/newsflash/0",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100184911354754055",
+ "title": "小Lin说",
+ "url": "https://www.youtube.com/feeds/videos.xml?channel_id=UCilwQlk62k1z7aUEZPOB6yw",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100185810923910148",
+ "title": "张小珺Jùn|商业访谈录",
+ "url": "https://feed.xyzfm.space/dk4yh3pkpjp3",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "56584656988676096",
+ "title": "迷因电波",
+ "url": "rsshub://xiaoyuzhou/podcast/61d52b3bee197a3aac3dac44",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "76051724651752448",
+ "title": "极致音乐汇 的 bilibili 空间",
+ "url": "rsshub://bilibili/user/video/1691501735",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "56141546151433216",
+ "title": "胡子观币 - YouTube",
+ "url": "rsshub://youtube/user/%40huziguanbi",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "66701376672681984",
+ "title": "AP Top News - AP News",
+ "url": "rsshub://apnews/api/apf-topnews",
+ "language": "English"
+ },
+ {
+ "feedId": "44366244616936448",
+ "title": "金十数据",
+ "url": "rsshub://jin10",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "52325519371718656",
+ "title": "Hacker News",
+ "url": "rsshub://hackernews",
+ "language": "English"
+ },
+ {
+ "feedId": "41359648684677132",
+ "title": "介绍 on SuperTechFans",
+ "url": "https://www.supertechfans.com/cn/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805276726279",
+ "title": "律动BlockBeats",
+ "url": "https://api.theblockbeats.news/v1/open-api/home-xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "54390728350522368",
+ "title": "New Cryptocurrency Listing",
+ "url": "rsshub://binance/announcement/new-cryptocurrency-listing",
+ "language": ""
+ },
+ {
+ "feedId": "41572238278099968",
+ "title": "The world in brief | The Economist",
+ "url": "rsshub://economist/espresso",
+ "language": "English"
+ },
+ {
+ "feedId": "72635895363612672",
+ "title": "Stock Edge",
+ "url": "rsshub://stockedge/daily-updates/news",
+ "language": "English"
+ },
+ {
+ "feedId": "72541421314282496",
+ "title": "Bloomberg - News",
+ "url": "rsshub://bloomberg/%2F",
+ "language": "English"
+ },
+ {
+ "feedId": "74739941830489088",
+ "title": "少数派",
+ "url": "https://sspai.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41489882518602759",
+ "title": "36氪 - 24小时热榜",
+ "url": "rsshub://36kr/hot-list",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41356263889737728",
+ "title": "NASA Astronomy Picture of the Day",
+ "url": "rsshub://nasa/apod",
+ "language": "English",
+ "view": 2
+ },
+ {
+ "feedId": "41719081557593132",
+ "title": "异次元软件世界",
+ "url": "https://feed.iplaysoft.com/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55304291112288259",
+ "title": "每日一图-北京天文馆",
+ "url": "rsshub://bjp/apod",
+ "language": "Chinese",
+ "view": 2
+ },
+ {
+ "feedId": "100011185145959424",
+ "title": "知乎每日精选",
+ "url": "https://www.zhihu.com/rss",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "60275763819153427",
+ "title": "爱范儿",
+ "url": "https://www.ifanr.com/feed",
+ "language": ""
+ },
+ {
+ "feedId": "41147805276726402",
+ "title": "RSSHub has new routes",
+ "url": "rsshub://rsshub/routes",
+ "language": "English"
+ },
+ {
+ "feedId": "63585517712903168",
+ "title": "AInvest - Latest News",
+ "url": "rsshub://ainvest/news",
+ "language": "English"
+ },
+ {
+ "feedId": "41374973344769024",
+ "title": "阮一峰的网络日志",
+ "url": "https://www.ruanyifeng.com/blog/atom.xml?code=2eb8b88b9919b38e2ce2269980fba393",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100372081228582912",
+ "title": "极客公园",
+ "url": "https://www.geekpark.net/rss",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41215011978385465",
+ "title": "阮一峰的网络日志",
+ "url": "http://www.ruanyifeng.com/blog/atom.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41443203209057308",
+ "title": "纽约时报中文网",
+ "url": "rsshub://nytimes",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41572238273905680",
+ "title": "IT之家",
+ "url": "https://www.ithome.com/rss/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "42520977153904661",
+ "title": "今日热门-什么值得买好文",
+ "url": "rsshub://smzdm/haowen/1",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41486365723425792",
+ "title": "信息差——独立开发者出海周刊",
+ "url": "https://gapis.money/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55653085540614144",
+ "title": "影视飓风 的 bilibili 空间",
+ "url": "rsshub://bilibili/user/video/946974",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "41147805276726276",
+ "title": "美团技术团队",
+ "url": "https://tech.meituan.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818708527117",
+ "title": "宝玉的分享",
+ "url": "https://s.baoyu.io/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41215011978385440",
+ "title": "Pseudoyu",
+ "url": "https://www.pseudoyu.com/zh/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41477724771147777",
+ "title": "老胡的周刊",
+ "url": "https://weekly.howie6879.com/rss/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805268337688",
+ "title": "Owen的博客",
+ "url": "https://www.owenyoung.com/atom.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "56535849521479680",
+ "title": "有知有行 - 全部",
+ "url": "rsshub://youzhiyouxing/materials/0",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "58477260865774592",
+ "title": "奇客的资讯,重要的东西",
+ "url": "rsshub://solidot/www",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41503779521380352",
+ "title": "Epic Games Store - Free Games",
+ "url": "rsshub://epicgames/freegames/en-US/US",
+ "language": "English"
+ },
+ {
+ "feedId": "41397727810093057",
+ "title": "奇客Solidot–传递最新科技情报",
+ "url": "https://www.solidot.org/index.rss",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818712721411",
+ "title": "月光博客",
+ "url": "https://www.williamlong.info/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41461870197170196",
+ "title": "Trending repositories on GitHub today · GitHub",
+ "url": "rsshub://github/trending/daily/any",
+ "language": "English"
+ },
+ {
+ "feedId": "73553160421921792",
+ "title": "少数派 - 派早报",
+ "url": "https://feeds.feedburner.com/sspai/paizaobao",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "72485769266542592",
+ "title": "资讯列表 - 人人影视",
+ "url": "rsshub://yyets/article/all",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41377721131229184",
+ "title": "小Lin说 - YouTube",
+ "url": "rsshub://youtube/user/%40xiao_lin_shuo",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "41572238273905683",
+ "title": "InfoQ 推荐",
+ "url": "rsshub://infoq/recommend",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818708527107",
+ "title": "虹线",
+ "url": "https://1q43.blog/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41492096674907154",
+ "title": "科技圈🎗在花频道📮 - Telegram Channel",
+ "url": "rsshub://telegram/channel/TestFlightCN",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "56531023179226112",
+ "title": "HelloGitHub 月刊",
+ "url": "https://hellogithub.com/rss",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "58463916731079680",
+ "title": "技术爬爬虾 的 bilibili 空间",
+ "url": "rsshub://bilibili/user/video/316183842",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "59403591690626048",
+ "title": "阮一峰的网络日志",
+ "url": "http://feeds.feedburner.com/ruanyifeng",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818704332814",
+ "title": " 太隐 ",
+ "url": "https://wangyurui.com/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41373653871256591",
+ "title": "竹新社 - Telegram Channel",
+ "url": "rsshub://telegram/channel/tnews365",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "43254215382531115",
+ "title": "Decohack",
+ "url": "https://decohack.com/feed/",
+ "language": "English"
+ },
+ {
+ "feedId": "41147805272531976",
+ "title": "Tw93 Blog",
+ "url": "https://tw93.fun/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805272531968",
+ "title": "Randy's Blog",
+ "url": "https://lutaonan.com/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "59241875117740032",
+ "title": "分享创造日报",
+ "url": "https://v2ex-create.nexmm.com/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41364963690045440",
+ "title": "王志安 - YouTube",
+ "url": "rsshub://youtube/user/%40wangzhian",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "71830193505483776",
+ "title": "McKinsey Greater China - 洞见",
+ "url": "rsshub://mckinsey/cn/25",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "56701589104355328",
+ "title": "金色财经 - 全部",
+ "url": "rsshub://jinse/lives/0",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100344100469080064",
+ "title": "机核",
+ "url": "https://www.gcores.com/rss",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41370691926515712",
+ "title": "小众软件",
+ "url": "https://www.appinn.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "43301307059705856",
+ "title": "站酷总榜设计_创意作品榜_第411期-站酷ZCOOL",
+ "url": "rsshub://zcool/top/design",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100020530265058356",
+ "title": "让小产品的独立变现更简单 - ezindie.com",
+ "url": "https://www.ezindie.com/feed/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41707595233790976",
+ "title": "司机社综合周排行榜",
+ "url": "rsshub://xsijishe/rank/weekly",
+ "language": "English"
+ },
+ {
+ "feedId": "57030789598275584",
+ "title": "专题报告 - AI量化知识库 - BigQuant",
+ "url": "rsshub://bigquant/collections",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41795937307751551",
+ "title": "AIGC Weekly",
+ "url": "https://quaily.com/op7418/feed/atom",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818708527124",
+ "title": "槿呈Goidea",
+ "url": "https://justgoidea.com/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41382542902990938",
+ "title": "云风的 BLOG",
+ "url": "https://blog.codingnow.com/atom.xml",
+ "language": ""
+ },
+ {
+ "feedId": "41368476124603392",
+ "title": "Trending repositories on GitHub this week · GitHub",
+ "url": "rsshub://github/trending/weekly/any",
+ "language": "English"
+ },
+ {
+ "feedId": "41427688948323328",
+ "title": "pixiv 日排行",
+ "url": "rsshub://pixiv/ranking/day",
+ "language": "Japanese",
+ "view": 2
+ },
+ {
+ "feedId": "41423034778090522",
+ "title": "周热门-什么值得买好文",
+ "url": "rsshub://smzdm/haowen/7",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "52347176714948614",
+ "title": "Readhub - 每日早报 - Readhub",
+ "url": "rsshub://readhub/daily",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805272531983",
+ "title": "印记",
+ "url": "https://yinji.org/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "57678974871415816",
+ "title": "7x24小时快讯",
+ "url": "rsshub://fx678/kx",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41343619752158231",
+ "title": "酷 壳 – CoolShell",
+ "url": "https://coolshell.cn/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "53014658920611840",
+ "title": "V2EX",
+ "url": "https://www.v2ex.com/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41470051648495616",
+ "title": "ahhhhfs|A姐分享 - Telegram Channel",
+ "url": "rsshub://telegram/channel/abskoop",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100020530265058354",
+ "title": "理想生活实验室",
+ "url": "https://www.toodaylab.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41343619752158230",
+ "title": "BMPI",
+ "url": "https://www.bmpi.dev/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "53352050212694016",
+ "title": "小声逼逼· 软件|资讯|抽奖 - Telegram Channel",
+ "url": "rsshub://telegram/channel/me888888888888",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41470869403557888",
+ "title": "LINUX DO - 最新话题",
+ "url": "https://linux.do/latest.rss",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55086756782700544",
+ "title": "阿里、夸克、百度等网盘4K影视资源 - Telegram Channel",
+ "url": "rsshub://telegram/channel/Aliyun_4K_Movies",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "61661363869599744",
+ "title": "社群 - 韭研公社-研究共享,茁壮成长(原韭菜公社)",
+ "url": "rsshub://jiuyangongshe/community",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818704332815",
+ "title": "Another Dayu",
+ "url": "https://anotherdayu.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "53033422584152064",
+ "title": "热帖 - 雪球",
+ "url": "rsshub://xueqiu/hots",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805272531984",
+ "title": "张鑫旭-鑫空间-鑫生活",
+ "url": "https://www.zhangxinxu.com/wordpress/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100020530265058315",
+ "title": "发现频道 - 小众软件官方论坛",
+ "url": "https://meta.appinn.net/c/faxian/10.rss",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "42855045334971393",
+ "title": "知乎日报",
+ "url": "https://feedx.net/rss/zhihudaily.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "54799935373253632",
+ "title": "阿里云盘吧 - Telegram Channel",
+ "url": "rsshub://telegram/channel/Q66Share",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41381007770949637",
+ "title": "Mac玩儿法",
+ "url": "https://www.waerfa.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "54410158488493056",
+ "title": "零度解说 - YouTube",
+ "url": "rsshub://youtube/user/%40%E9%9B%B6%E5%BA%A6%E8%A7%A3%E8%AF%B4",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "52340201851637826",
+ "title": "1Link.Fun 科技周刊 | 每天获取一条高质量的链接",
+ "url": "https://1link.fun/rss/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41358489461613605",
+ "title": "CatCoding",
+ "url": "https://catcoding.me/atom.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "52324311483129856",
+ "title": "阿里云盘发布频道 - Telegram Channel",
+ "url": "rsshub://telegram/channel/shareAliyun",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "42176727619514397",
+ "title": "晚点 - 最新报道",
+ "url": "rsshub://latepost",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41501088760162311",
+ "title": "一觉醒来发生了什么 - 即刻圈子",
+ "url": "rsshub://jike/topic/553870e8e4b0cafb0a1bef68",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41511702474276884",
+ "title": "司机社综合月排行榜",
+ "url": "rsshub://xsijishe/rank/monthly",
+ "language": "English"
+ },
+ {
+ "feedId": "42177758872391680",
+ "title": "Mediastorm影视飓风 - YouTube",
+ "url": "rsshub://youtube/user/%40mediastorm6801",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "41359648684677181",
+ "title": "编程随想的博客",
+ "url": "https://feeds2.feedburner.com/programthink",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41215396143077382",
+ "title": "Twitter @Follow",
+ "url": "rsshub://twitter/user/follow_app_",
+ "language": "English",
+ "view": 1
+ },
+ {
+ "feedId": "41492096674907156",
+ "title": "即刻精选 - Telegram Channel",
+ "url": "rsshub://telegram/channel/jike_collection",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "44920595085335552",
+ "title": "虎嗅网",
+ "url": "https://www.huxiu.com/rss/0.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41382542902990947",
+ "title": "土木坛子",
+ "url": "https://tumutanzi.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55765163242101760",
+ "title": "cnBeta.COM - 中文业界资讯站",
+ "url": "rsshub://cnbeta",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41719104290720768",
+ "title": "[今日主题] 技術討論區 | 草榴社區 - t66y.com",
+ "url": "rsshub://t66y/7",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41472267692906513",
+ "title": "二丫讲梵",
+ "url": "https://wiki.eryajf.net/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805272531986",
+ "title": "椒盐豆豉",
+ "url": "https://blog.douchi.space/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "57995444932781056",
+ "title": "GQ",
+ "url": "rsshub://gq/news",
+ "language": "English"
+ },
+ {
+ "feedId": "41383550788723712",
+ "title": " Airing 的博客 ",
+ "url": "https://blog.ursb.me/feed.xml",
+ "language": "English"
+ },
+ {
+ "feedId": "41572238273905689",
+ "title": "澎湃新闻 - 首页头条",
+ "url": "rsshub://thepaper/featured",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100020530265058329",
+ "title": "卡瓦邦噶!",
+ "url": "https://www.kawabangga.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55216086191994902",
+ "title": "有用经验",
+ "url": "https://yyjingyan.com/index.php/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41343619752158241",
+ "title": " 61’s life ",
+ "url": "https://61.life/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "65017927657675779",
+ "title": "36氪",
+ "url": "https://36kr.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "54851744068228138",
+ "title": "极客湾Geekerwan 的 bilibili 空间",
+ "url": "rsshub://bilibili/user/video/25876945",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "67804472989767680",
+ "title": "36氪资讯热榜",
+ "url": "https://feeds.feedburner.com/36kr/hot-list",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359836954400775",
+ "title": "胡涂说",
+ "url": "https://hutusi.com/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41572238273905693",
+ "title": "纽约时报中文网 - 中英对照版",
+ "url": "rsshub://nytimes/dual",
+ "language": "English"
+ },
+ {
+ "feedId": "57966370728127498",
+ "title": "Breaking News Headlines | Latest Views | Reuters",
+ "url": "rsshub://reuters/breakingviews",
+ "language": "English"
+ },
+ {
+ "feedId": "54737464283059214",
+ "title": "精品MAC应用分享",
+ "url": "https://xclient.info/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41425168656712704",
+ "title": "RSSHub 有新路由啦",
+ "url": "rsshub://rsshub/routes/zh",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41374014364620801",
+ "title": "槽边往事",
+ "url": "https://www.hecaitou.com/feeds/posts/default",
+ "language": "English"
+ },
+ {
+ "feedId": "55160895115655188",
+ "title": "人民日报",
+ "url": "https://plink.anyfeeder.com/people-daily",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "58488203296243712",
+ "title": "人人影视-今日播出",
+ "url": "rsshub://yyets/today",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "54772566650461198",
+ "title": "CnGal - 每周速报",
+ "url": "rsshub://cngal/weekly",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "84458689264416768",
+ "title": " 虎嗅 ",
+ "url": "https://rss.huxiu.com/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359690177602678",
+ "title": "MacTalk-池建强的随想录",
+ "url": "https://macshuo.com/?feed=rss2",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "48039983835900989",
+ "title": "電腦玩物",
+ "url": "http://feeds.feedburner.com/playpc",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41397727810093071",
+ "title": "见字如面",
+ "url": "https://hiwannz.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359648680482843",
+ "title": "拾月",
+ "url": "https://www.skyue.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55116179974345728",
+ "title": "彭博社最新报道",
+ "url": "https://bloombergnew.buzzing.cc/feed.xml",
+ "language": "English"
+ },
+ {
+ "feedId": "64999354512147456",
+ "title": "财新周刊 Caixin Weekly",
+ "url": "https://the.bi/s/rawatssj2a2mog",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100020530265058314",
+ "title": "#UNTAG",
+ "url": "https://rss.utgd.net/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41374113210459144",
+ "title": "Twitter @宝玉",
+ "url": "rsshub://twitter/user/dotey",
+ "language": "English"
+ },
+ {
+ "feedId": "42331815237783605",
+ "title": "莫比乌斯",
+ "url": "https://onojyun.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41699925856588800",
+ "title": "Nat Geo Photo of the Day",
+ "url": "rsshub://natgeo/dailyphoto",
+ "language": "English"
+ },
+ {
+ "feedId": "42864851888759808",
+ "title": "积薪 - 文章",
+ "url": "https://darmau.co/zh/article/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "52347176714948645",
+ "title": "如有乐享",
+ "url": "https://51.ruyo.net/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805276726317",
+ "title": "pixiv 周排行",
+ "url": "rsshub://pixiv/ranking/week",
+ "language": "Yoruba",
+ "view": 2
+ },
+ {
+ "feedId": "41359836954400804",
+ "title": "王登科-DK博客",
+ "url": "https://greatdk.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100020530265058337",
+ "title": "离别歌",
+ "url": "https://www.leavesongs.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "43236301826954240",
+ "title": "不良林 - YouTube",
+ "url": "rsshub://youtube/user/%40bulianglin",
+ "language": "Chinese",
+ "view": 3
+ },
+ {
+ "feedId": "41719081557593137",
+ "title": "我不是咕咕鸽",
+ "url": "https://blog.laoda.de/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "42006425715388416",
+ "title": "pinlei榜-11-3小时",
+ "url": "rsshub://smzdm/ranking/pinlei/11/3",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41373653871256582",
+ "title": "风向旗参考快讯 - Telegram Channel",
+ "url": "rsshub://telegram/channel/xhqcankao",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "54349807700270080",
+ "title": "知行小酒馆",
+ "url": "rsshub://xiaoyuzhou/podcast/6013f9f58e2f7ee375cf4216",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41343619752158234",
+ "title": "大破进击",
+ "url": "https://jesor.me/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41424303016727552",
+ "title": "老高與小茉 Mr & Mrs Gao - YouTube",
+ "url": "rsshub://youtube/user/%40laogao",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55064361156653076",
+ "title": "子舒的博客",
+ "url": "https://zishu.me/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359690177602681",
+ "title": "奔跑中的奶酪",
+ "url": "https://www.runningcheese.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "42579624844251167",
+ "title": "东西智库 – 专注中国制造业高质量发展",
+ "url": "rsshub://dx2025",
+ "language": "English"
+ },
+ {
+ "feedId": "100020530265058338",
+ "title": "Sam Altman",
+ "url": "https://blog.samaltman.com/posts.atom",
+ "language": "English"
+ },
+ {
+ "feedId": "41343619752158254",
+ "title": "OneV's Den",
+ "url": "https://onevcat.com/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359648684677164",
+ "title": "KAIX.IN",
+ "url": "https://kaix.in/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "60954952175832064",
+ "title": "每日一拍",
+ "url": "rsshub://500px/tribe/set/302261e93f0441c9a5323a565279b0e3",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41461870201364486",
+ "title": "少数派 -- Matrix",
+ "url": "rsshub://sspai/matrix",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818704332817",
+ "title": "Limboy's Essays",
+ "url": "https://limboy.me/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41440449356332064",
+ "title": "Blog | Phodal - A Growth Engineer",
+ "url": "https://www.phodal.com/blog/feeds/rss/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "57164874420868096",
+ "title": "小Lin说 的 bilibili 空间",
+ "url": "rsshub://bilibili/user/video/520819684",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41343619752158232",
+ "title": "罗磊的独立博客",
+ "url": "https://luolei.org/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41423034778090515",
+ "title": "四火的唠叨",
+ "url": "https://www.raychase.net/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41465715829593091",
+ "title": "华尔街日报",
+ "url": "https://feedx.net/rss/wsj.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818716915713",
+ "title": "0x01 byte",
+ "url": "https://1byte.io/articles/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "52508301310328842",
+ "title": "南方周末-新闻",
+ "url": "rsshub://infzm/2",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41358489461613601",
+ "title": "可能吧",
+ "url": "https://feeds.feedburner.com/kenengbarss",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41388765730464778",
+ "title": "GeekPlux",
+ "url": "https://geekplux.com/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41223694984583197",
+ "title": "静かな森",
+ "url": "https://innei.in/feed",
+ "language": "English"
+ },
+ {
+ "feedId": "41461870201364482",
+ "title": "《联合早报》-中港台-即时",
+ "url": "rsshub://zaobao/realtime/china",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41391604968812544",
+ "title": "纵横四海",
+ "url": "rsshub://xiaoyuzhou/podcast/62694abdb221dd5908417d1e",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55855418052542483",
+ "title": "Elmagnifico's Blog",
+ "url": "https://elmagnifico.tech/feed.xml",
+ "language": "English"
+ },
+ {
+ "feedId": "41459996870678548",
+ "title": "掘金本周最热",
+ "url": "https://rsshub.bestblogs.dev/juejin/trending/all/weekly",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805268337670",
+ "title": "小米有品众筹",
+ "url": "rsshub://xiaomiyoupin/crowdfunding",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "48039983835900987",
+ "title": "分享创造",
+ "url": "https://www.v2ex.com/feed/create.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100191225529340928",
+ "title": "游研社",
+ "url": "https://www.yystv.cn/rss/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41380827636851712",
+ "title": "声动早咖啡",
+ "url": "rsshub://xiaoyuzhou/podcast/60de7c003dd577b40d5a40f3",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41667838436032513",
+ "title": "小球飞鱼",
+ "url": "https://mantyke.icu/index.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "61937382761420802",
+ "title": "蓝点网",
+ "url": "https://www.landiannews.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "48039983835900988",
+ "title": "书伴",
+ "url": "https://feeds.feedburner.com/bookfere",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55311155740901376",
+ "title": "有知有行 - 全部",
+ "url": "rsshub://youzhiyouxing/materials",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100157598308965376",
+ "title": "V2EX - 创意",
+ "url": "https://www.v2ex.com/feed/tab/creative.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41798923170845776",
+ "title": "初之音",
+ "url": "https://www.himiku.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "57419814936869901",
+ "title": "不死鸟 - 分享为王官网",
+ "url": "https://iui.su/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "70126938108248064",
+ "title": "财联社快讯",
+ "url": "https://feeds.crabpi.com/cls-telegraph",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41461870197170197",
+ "title": "豌豆花下猫",
+ "url": "https://pythoncat.top/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "54083984224404480",
+ "title": "酷安图文 - 编辑精选",
+ "url": "rsshub://coolapk/tuwen",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359690177602682",
+ "title": "唐巧的博客",
+ "url": "https://blog.devtang.com/atom.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "69670759328198656",
+ "title": "IMDb Top 250 Movies",
+ "url": "rsshub://imdb/chart/top",
+ "language": "English"
+ },
+ {
+ "feedId": "100020530265058320",
+ "title": "卢昌海个人主页",
+ "url": "https://www.changhai.org/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100080366298125312",
+ "title": "The Verge",
+ "url": "https://www.theverge.com/rss/index.xml",
+ "language": "English"
+ },
+ {
+ "feedId": "41527687227405342",
+ "title": "吾爱破解论坛",
+ "url": "https://wechat2rss.xlab.app/feed/90c827b8290310a96ef80a13df9dbcc06ab69892.xml",
+ "language": "English"
+ },
+ {
+ "feedId": "54945423970185247",
+ "title": "晚晴幽草轩",
+ "url": "https://www.jeffjade.com/atom.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "67048226833723428",
+ "title": "ahhhhfs",
+ "url": "https://www.ahhhhfs.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "42331815237783583",
+ "title": "木木木木木",
+ "url": "https://immmmm.com/atom.xml",
+ "language": "English"
+ },
+ {
+ "feedId": "41768239731545103",
+ "title": "laike9m's blog",
+ "url": "https://laike9m.com/blog/rss/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55576111518416909",
+ "title": "豆瓣电影本周口碑榜",
+ "url": "https://feedx.net/rss/doubanmvweek.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41147805272531974",
+ "title": "t9t.io",
+ "url": "https://blog.t9t.io/atom.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359836954400809",
+ "title": "月球背面",
+ "url": "https://moonvy.com/blog/rss.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41459996870678529",
+ "title": "量子位",
+ "url": "https://www.qbitai.com/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41376358301079552",
+ "title": "三联生活周刊",
+ "url": "https://plink.anyfeeder.com/weixin/lifeweek",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41768239731545124",
+ "title": "依云's Blog",
+ "url": "https://blog.lilydjwg.me/feed?code=c6f56c4214621ab98b86acbcae6b4405",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359648684677153",
+ "title": "海德沙龙(HeadSalon)",
+ "url": "https://headsalon.org/feed",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41667283719128072",
+ "title": "技术小黑屋",
+ "url": "https://droidyue.com/atom.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41342818704332811",
+ "title": "陈仓颉",
+ "url": "https://imzm.im/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55130722692595719",
+ "title": "笨方法学写作",
+ "url": "https://www.cnfeat.com/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55877082660306949",
+ "title": "数据发布 - 国家统计局",
+ "url": "rsshub://gov/stats/sj/zxfb",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "43789642870889493",
+ "title": "Tony Bai",
+ "url": "https://tonybai.com/feed/",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "55157116408461312",
+ "title": "Macin",
+ "url": "https://macin.org/atom.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100020530265058312",
+ "title": "歸藏的AI工具箱",
+ "url": "https://werss.bestblogs.dev/feeds/MP_WXS_3540975510.atom",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41324816676184075",
+ "title": "Yu’s Life - Telegram Channel",
+ "url": "rsshub://telegram/channel/pseudoyulife",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "43374760408291328",
+ "title": "Epic Games Store - Free Games",
+ "url": "rsshub://epicgames/freegames/zh-CN/CN",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "100127086160845862",
+ "title": "一天一篇经济学人(双语)",
+ "url": "https://plink.anyfeeder.com/weixin/Economist_fans",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "56587971459683328",
+ "title": "技术爬爬虾 TechShrimp - YouTube",
+ "url": "rsshub://youtube/user/%40Tech_Shrimp",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41359648684677157",
+ "title": "阳志平的网志",
+ "url": "https://www.yangzhiping.com/feed.xml",
+ "language": "Chinese"
+ },
+ {
+ "feedId": "41459996870678583",
+ "title": "机器之心",
+ "url": "https://www.jiqizhixin.com/rss",
+ "language": "Chinese"
+ }
+]
diff --git a/apps/mobile/src/modules/onboarding/preset.ts b/apps/mobile/src/modules/onboarding/preset.ts
index bfbafb49c2..66fc146c98 100644
--- a/apps/mobile/src/modules/onboarding/preset.ts
+++ b/apps/mobile/src/modules/onboarding/preset.ts
@@ -1,4 +1,8 @@
import { FeedViewType } from "@follow/constants"
+import { getLocales } from "expo-localization"
+
+import feeds from "./feeds.json"
+import englishFeeds from "./feeds-english.json"
export type PresetFeedConfig = {
title: string
@@ -7,116 +11,21 @@ export type PresetFeedConfig = {
view: FeedViewType
}
-export const presetFeeds: PresetFeedConfig[] = [
- {
- feedId: "41358761177015296",
- title: "知乎热榜 - 全站",
- url: "rsshub://zhihu/hot/total",
- view: FeedViewType.Articles,
- },
- {
- feedId: "100020530265058357",
- title: "阮一峰的网络日志",
- url: "https://feeds.feedburner.com/ruanyifeng",
- view: FeedViewType.Articles,
- },
+export const englishPresetFeeds: PresetFeedConfig[] = englishFeeds.map((feed) => ({
+ view: FeedViewType.Articles,
+ ...feed,
+}))
- {
- feedId: "41358830592746496",
- title: "微博热搜榜",
- url: "rsshub://weibo/search/hot",
- view: FeedViewType.SocialMedia,
- },
- {
- feedId: "100411504863520768",
- title: "Twitter @Elon Musk",
- url: "rsshub://twitter/user/elonmusk",
- view: FeedViewType.SocialMedia,
- },
- {
- feedId: "41324816676184077",
- title: "Twitter @DIŸgöd ☀️",
- url: "rsshub://twitter/user/DIYgod",
- view: FeedViewType.SocialMedia,
- },
+export const otherPresetFeeds: PresetFeedConfig[] = feeds
+ // .filter((feed) => feed.language === "Chinese")
+ .map((feed) => ({
+ view: FeedViewType.Articles,
+ ...feed,
+ }))
- {
- feedId: "78806242632741888",
- title: "bilibili 排行榜-全站",
- url: "rsshub://bilibili/ranking/0",
- view: FeedViewType.Videos,
- },
+const locales = getLocales()
+// `getLocales` guaranteed to contain at least 1 element.
+const languageTag = locales[0]?.languageTag || "en-US"
+const isEnglishUser = languageTag.startsWith("en")
- {
- feedId: "60338304723722240",
- title: "实时财经快讯 - FastBull",
- url: "rsshub://fastbull/express-news",
- view: FeedViewType.Articles,
- },
- {
- feedId: "55611390687386624",
- title: "格隆汇快讯-7x24小时市场快讯-财经市场热点",
- url: "rsshub://gelonghui/live",
- view: FeedViewType.Articles,
- },
- {
- feedId: "49375919416104960",
- title: "深潮TechFlow - 快讯",
- url: "rsshub://techflowpost/express",
- view: FeedViewType.Articles,
- },
- {
- feedId: "55982073122828305",
- title: "TED Talks Daily",
- url: "https://feeds.acast.com/public/shows/67587e77c705e441797aff96",
- view: FeedViewType.Articles,
- },
- {
- feedId: "72541715399995392",
- title: "TheBlockBeats - 快讯",
- url: "rsshub://theblockbeats/newsflash/0",
- view: FeedViewType.Articles,
- },
- {
- feedId: "100184911354754055",
- title: "小Lin说",
- url: "https://www.youtube.com/feeds/videos.xml?channel_id=UCilwQlk62k1z7aUEZPOB6yw",
- view: FeedViewType.Videos,
- },
- {
- feedId: "100185810923910148",
- title: "张小珺Jùn|商业访谈录",
- url: "https://feed.xyzfm.space/dk4yh3pkpjp3",
- view: FeedViewType.Articles,
- },
- {
- feedId: "56584656988676096",
- title: "迷因电波",
- url: "rsshub://xiaoyuzhou/podcast/61d52b3bee197a3aac3dac44",
- view: FeedViewType.Articles,
- },
- {
- feedId: "76051724651752448",
- title: "极致音乐汇 的 bilibili 空间",
- url: "rsshub://bilibili/user/video/1691501735",
- view: FeedViewType.Videos,
- },
- {
- feedId: "66701376672681984",
- title: "AP Top News - AP News",
- url: "rsshub://apnews/api/apf-topnews",
- view: FeedViewType.Articles,
- },
- {
- feedId: "44366244616936448",
- title: "金十数据",
- url: "rsshub://jin10",
- view: FeedViewType.Articles,
- },
- {
- feedId: "52325519371718656",
- title: "Hacker News",
- url: "rsshub://hackernews",
- view: FeedViewType.Articles,
- },
-]
+export const presetFeeds = isEnglishUser ? englishPresetFeeds : otherPresetFeeds
diff --git a/apps/mobile/src/modules/onboarding/step-interests.tsx b/apps/mobile/src/modules/onboarding/step-interests.tsx
index c7a44780d0..d8470fab5c 100644
--- a/apps/mobile/src/modules/onboarding/step-interests.tsx
+++ b/apps/mobile/src/modules/onboarding/step-interests.tsx
@@ -5,7 +5,6 @@ import Animated, { FadeIn, FadeOut } from "react-native-reanimated"
import { Search3CuteReIcon } from "@/src/icons/search_3_cute_re"
import { Shuffle2CuteReIcon } from "@/src/icons/shuffle_2_cute_re"
-import { toast } from "@/src/lib/toast"
import { useSubscription } from "@/src/store/subscription/hooks"
import { subscriptionSyncService } from "@/src/store/subscription/store"
import { accentColor } from "@/src/theme/colors"
@@ -13,28 +12,6 @@ import { accentColor } from "@/src/theme/colors"
import type { PresetFeedConfig } from "./preset"
import { presetFeeds } from "./preset"
-const subscribeFeed = async (config: PresetFeedConfig) => {
- await subscriptionSyncService.subscribe({
- feedId: config.feedId,
- title: config.title,
- url: config.url,
- view: config.view,
- category: "",
- isPrivate: false,
- })
-
- toast.success(`Subscribed to ${config.title}`, {
- position: "bottom",
- })
-}
-
-const unsubscribeFeed = async (feedId: string) => {
- await subscriptionSyncService.unsubscribe(feedId)
- toast.success(`Unsubscribed from feed`, {
- position: "bottom",
- })
-}
-
export const StepInterests = () => {
const [displayFeeds, setDisplayFeeds] = useState(presetFeeds.slice(0, 7))
@@ -66,7 +43,7 @@ export const StepInterests = () => {
{displayFeeds.map((feed) => (
-
+
))}
@@ -74,18 +51,43 @@ export const StepInterests = () => {
)
}
-const FeedChip = (feed: PresetFeedConfig) => {
- const isSubscribed = useSubscription(feed.feedId)
+const FeedChip = ({ feed }: { feed: PresetFeedConfig }) => {
+ const subscription = useSubscription(feed.feedId)
+ const [loading, setLoading] = useState(false)
+ const [isSubscribed, setIsSubscribed] = useState(!!subscription)
const handleSubscribe = useCallback(
async (feed: PresetFeedConfig) => {
+ if (loading) return
+ setLoading(true)
if (isSubscribed) {
- await unsubscribeFeed(feed.feedId)
+ try {
+ setIsSubscribed(false)
+ await subscriptionSyncService.unsubscribe(feed.feedId)
+ } catch {
+ setIsSubscribed(true)
+ } finally {
+ setLoading(false)
+ }
return
}
- await subscribeFeed(feed)
+ try {
+ setIsSubscribed(true)
+ await subscriptionSyncService.subscribe({
+ feedId: feed.feedId,
+ title: feed.title,
+ url: feed.url,
+ view: feed.view,
+ category: "",
+ isPrivate: false,
+ })
+ } catch {
+ setIsSubscribed(false)
+ } finally {
+ setLoading(false)
+ }
},
- [isSubscribed],
+ [isSubscribed, loading],
)
return (
diff --git a/apps/mobile/src/store/user/hooks.ts b/apps/mobile/src/store/user/hooks.ts
index f4b432a241..11a700ce19 100644
--- a/apps/mobile/src/store/user/hooks.ts
+++ b/apps/mobile/src/store/user/hooks.ts
@@ -25,8 +25,9 @@ export const useUser = (userId?: string) => {
return useUserStore((state) => (userId ? state.users[userId] : undefined))
}
-export function useIsNewUser() {
+export function useIsNewUser(enabled = true) {
const { data } = useQuery({
+ enabled,
queryKey: isNewUserQueryKey,
queryFn: async () => {
const isOnboardingFinished = await kv.get(isOnboardingFinishedStorageKey)
@@ -42,7 +43,8 @@ export function useIsNewUser() {
}
export function useOnboarding() {
- const isNewUser = useIsNewUser()
+ const whoami = useWhoami()
+ const isNewUser = useIsNewUser(!!whoami)
useEffect(() => {
if (isNewUser) {
router.push("/onboarding")
From d7fa3f14204efae2aac6db8f1d21a4560ab3c466 Mon Sep 17 00:00:00 2001
From: DIYgod
Date: Sat, 15 Mar 2025 09:37:33 +0800
Subject: [PATCH 010/123] chore: dependabot seperate pathed
---
.github/dependabot.yaml | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index 04297e44ad..55cda89eaf 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -48,6 +48,21 @@ updates:
applies-to: version-updates
update-types:
- "patch"
+ pathed:
+ patterns:
+ - immer
+ - re-resizable
+ - hono
+ - electron-context-menu
+ - "@mozilla/readability"
+ - daisyui
+ - jsonpointer
+ - workbox-precaching
+ - "@pengx17/electron-forge-maker-appimage"
+ - devlop
+ - "@microflash/remark-callout-directives"
+ - react-native-track-player
+ - react-native-sheet-transitions
- package-ecosystem: github-actions
directory: /
From 324d3c7bdeb8d795a3164164d3f54bb9045b6cee Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 15 Mar 2025 10:46:00 +0800
Subject: [PATCH 011/123] build(deps): bump the minor group with 5 updates
(#3131)
Bumps the minor group with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [@tanstack/query-sync-storage-persister](https://github.com/TanStack/query/tree/HEAD/packages/query-sync-storage-persister) | `5.67.3` | `5.68.0` |
| [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) | `5.67.3` | `5.68.0` |
| [@tanstack/react-query-persist-client](https://github.com/TanStack/query/tree/HEAD/packages/react-query-persist-client) | `5.67.3` | `5.68.0` |
| [@tanstack/react-query-devtools](https://github.com/TanStack/query/tree/HEAD/packages/react-query-devtools) | `5.67.3` | `5.68.0` |
| [cmdk](https://github.com/pacocoursey/cmdk/tree/HEAD/cmdk) | `1.0.4` | `1.1.1` |
Updates `@tanstack/query-sync-storage-persister` from 5.67.3 to 5.68.0
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.68.0/packages/query-sync-storage-persister)
Updates `@tanstack/react-query` from 5.67.3 to 5.68.0
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.68.0/packages/react-query)
Updates `@tanstack/react-query-persist-client` from 5.67.3 to 5.68.0
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.68.0/packages/react-query-persist-client)
Updates `@tanstack/react-query-devtools` from 5.67.3 to 5.68.0
- [Release notes](https://github.com/TanStack/query/releases)
- [Commits](https://github.com/TanStack/query/commits/v5.68.0/packages/react-query-devtools)
Updates `cmdk` from 1.0.4 to 1.1.1
- [Release notes](https://github.com/pacocoursey/cmdk/releases)
- [Commits](https://github.com/pacocoursey/cmdk/commits/v1.1.1/cmdk)
---
updated-dependencies:
- dependency-name: "@tanstack/query-sync-storage-persister"
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor
- dependency-name: "@tanstack/react-query"
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor
- dependency-name: "@tanstack/react-query-persist-client"
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor
- dependency-name: "@tanstack/react-query-devtools"
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor
- dependency-name: cmdk
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
apps/desktop/src/renderer/package.json | 10 +--
apps/mobile/package.json | 6 +-
apps/ssr/package.json | 2 +-
pnpm-lock.yaml | 111 ++++++++++++++-----------
4 files changed, 73 insertions(+), 56 deletions(-)
diff --git a/apps/desktop/src/renderer/package.json b/apps/desktop/src/renderer/package.json
index b4b1baac11..e1f11beed4 100644
--- a/apps/desktop/src/renderer/package.json
+++ b/apps/desktop/src/renderer/package.json
@@ -34,10 +34,10 @@
"@radix-ui/react-slot": "1.1.2",
"@sentry/react": "9.5.0",
"@shikijs/transformers": "3.2.1",
- "@tanstack/query-sync-storage-persister": "5.67.3",
- "@tanstack/react-query": "5.67.3",
- "@tanstack/react-query-devtools": "5.67.3",
- "@tanstack/react-query-persist-client": "5.67.3",
+ "@tanstack/query-sync-storage-persister": "5.68.0",
+ "@tanstack/react-query": "5.68.0",
+ "@tanstack/react-query-devtools": "5.68.0",
+ "@tanstack/react-query-persist-client": "5.68.0",
"@tanstack/react-virtual": "3.13.4",
"@use-gesture/react": "10.3.1",
"@welldone-software/why-did-you-render": "10.0.1",
@@ -45,7 +45,7 @@
"camelcase-keys": "9.1.3",
"click-to-react-component": "1.1.2",
"clsx": "2.1.1",
- "cmdk": "1.0.4",
+ "cmdk": "1.1.1",
"dayjs": "1.11.13",
"dexie": "4.0.11",
"dexie-export-import": "4.1.4",
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index 72f59f8069..1af166fbd5 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -35,9 +35,9 @@
"@react-navigation/drawer": "7.1.2",
"@react-navigation/native": "7.0.15",
"@shopify/flash-list": "1.7.3",
- "@tanstack/query-sync-storage-persister": "5.67.3",
- "@tanstack/react-query": "5.67.3",
- "@tanstack/react-query-persist-client": "5.67.3",
+ "@tanstack/query-sync-storage-persister": "5.68.0",
+ "@tanstack/react-query": "5.68.0",
+ "@tanstack/react-query-persist-client": "5.68.0",
"@types/qrcode": "1.5.5",
"better-auth": "1.2.4",
"cookie-es": "2.0.0",
diff --git a/apps/ssr/package.json b/apps/ssr/package.json
index 2020466693..1e853c82f4 100644
--- a/apps/ssr/package.json
+++ b/apps/ssr/package.json
@@ -15,7 +15,7 @@
"@openpanel/web": "1.0.1",
"@resvg/resvg-js": "2.6.2",
"@sentry/react": "9.5.0",
- "@tanstack/react-query": "5.67.3",
+ "@tanstack/react-query": "5.68.0",
"blurhash": "2.0.5",
"click-to-react-component": "1.1.2",
"dayjs": "1.11.13",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9468674013..1c01370d7d 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -524,17 +524,17 @@ importers:
specifier: 3.2.1
version: 3.2.1
'@tanstack/query-sync-storage-persister':
- specifier: 5.67.3
- version: 5.67.3
+ specifier: 5.68.0
+ version: 5.68.0
'@tanstack/react-query':
- specifier: 5.67.3
- version: 5.67.3(react@18.3.1)
+ specifier: 5.68.0
+ version: 5.68.0(react@18.3.1)
'@tanstack/react-query-devtools':
- specifier: 5.67.3
- version: 5.67.3(@tanstack/react-query@5.67.3(react@18.3.1))(react@18.3.1)
+ specifier: 5.68.0
+ version: 5.68.0(@tanstack/react-query@5.68.0(react@18.3.1))(react@18.3.1)
'@tanstack/react-query-persist-client':
- specifier: 5.67.3
- version: 5.67.3(@tanstack/react-query@5.67.3(react@18.3.1))(react@18.3.1)
+ specifier: 5.68.0
+ version: 5.68.0(@tanstack/react-query@5.68.0(react@18.3.1))(react@18.3.1)
'@tanstack/react-virtual':
specifier: 3.13.4
version: 3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -557,8 +557,8 @@ importers:
specifier: 2.1.1
version: 2.1.1
cmdk:
- specifier: 1.0.4
- version: 1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ specifier: 1.1.1
+ version: 1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
dayjs:
specifier: 1.11.13
version: 1.11.13
@@ -804,14 +804,14 @@ importers:
specifier: 1.7.3
version: 1.7.3(@babel/runtime@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@tanstack/query-sync-storage-persister':
- specifier: 5.67.3
- version: 5.67.3
+ specifier: 5.68.0
+ version: 5.68.0
'@tanstack/react-query':
- specifier: 5.67.3
- version: 5.67.3(react@18.3.1)
+ specifier: 5.68.0
+ version: 5.68.0(react@18.3.1)
'@tanstack/react-query-persist-client':
- specifier: 5.67.3
- version: 5.67.3(@tanstack/react-query@5.67.3(react@18.3.1))(react@18.3.1)
+ specifier: 5.68.0
+ version: 5.68.0(@tanstack/react-query@5.68.0(react@18.3.1))(react@18.3.1)
'@types/qrcode':
specifier: 1.5.5
version: 1.5.5
@@ -1099,8 +1099,8 @@ importers:
specifier: 9.5.0
version: 9.5.0(react@18.3.1)
'@tanstack/react-query':
- specifier: 5.67.3
- version: 5.67.3(react@18.3.1)
+ specifier: 5.68.0
+ version: 5.68.0(react@18.3.1)
blurhash:
specifier: 2.0.5
version: 2.0.5
@@ -4669,7 +4669,7 @@ packages:
'@radix-ui/react-compose-refs@1.1.1':
resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==}
peerDependencies:
- '@types/react': npm:@types/react@18.3.12
+ '@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -4691,7 +4691,7 @@ packages:
'@radix-ui/react-context@1.1.1':
resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==}
peerDependencies:
- '@types/react': npm:@types/react@18.3.12
+ '@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -4748,7 +4748,7 @@ packages:
'@radix-ui/react-focus-guards@1.1.1':
resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==}
peerDependencies:
- '@types/react': npm:@types/react@18.3.12
+ '@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -5036,7 +5036,7 @@ packages:
'@radix-ui/react-use-controllable-state@1.1.0':
resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
peerDependencies:
- '@types/react': npm:@types/react@18.3.12
+ '@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -5862,25 +5862,28 @@ packages:
'@tanstack/query-core@5.67.3':
resolution: {integrity: sha512-pq76ObpjcaspAW4OmCbpXLF6BCZP2Zr/J5ztnyizXhSlNe7fIUp0QKZsd0JMkw9aDa+vxDX/OY7N+hjNY/dCGg==}
+ '@tanstack/query-core@5.68.0':
+ resolution: {integrity: sha512-r8rFYYo8/sY/LNaOqX84h12w7EQev4abFXDWy4UoDVUJzJ5d9Fbmb8ayTi7ScG+V0ap44SF3vNs/45mkzDGyGw==}
+
'@tanstack/query-devtools@5.67.2':
resolution: {integrity: sha512-O4QXFFd7xqp6EX7sdvc9tsVO8nm4lpWBqwpgjpVLW5g7IeOY6VnS/xvs/YzbRhBVkKTMaJMOUGU7NhSX+YGoNg==}
- '@tanstack/query-persist-client-core@5.67.3':
- resolution: {integrity: sha512-Jt7rVlxU3n4FMHR72ETob5c+29RWYmrJ558dzal1S/iYW57xdXqhAaeayQJD1MweD+q2UNZbbpRemdfO/V2fIg==}
+ '@tanstack/query-persist-client-core@5.68.0':
+ resolution: {integrity: sha512-SP5E9lyC1/yHqfIrfIoGD5By0hh3zv0kMMWWtWjznHPb6Ghb0INCoNJr0oD5f+DQZAen+mJmwQ0x9LlAZdle6Q==}
- '@tanstack/query-sync-storage-persister@5.67.3':
- resolution: {integrity: sha512-i+O/nA7kBbX3+7lXA6/NVDk7V295Qxv0g6ipTO+vgIdQ46UDqJmL4X46XmcwMyGIzt9X10XkN47xEAkKGwnT5w==}
+ '@tanstack/query-sync-storage-persister@5.68.0':
+ resolution: {integrity: sha512-Zd0ukP58F4uLDol5QoP6NCgRdMl9+3InW4ojg7VITpP6QLcjbJqQ4DG5miOhSElM/xASbW2wS/AoSSguboA5Lw==}
- '@tanstack/react-query-devtools@5.67.3':
- resolution: {integrity: sha512-+PM2UnCyXAQozXB32cnawx38wwnaHPTtFAhX1V5QmHy/FL1u9k7nd8nxn2+GTwf15SGbUaGfxA/vq/9EARUEIQ==}
+ '@tanstack/react-query-devtools@5.68.0':
+ resolution: {integrity: sha512-h9ArHkfa7SD5eGnJ9h+9M5uYWBdeVeY+WalrtGLCAtJJvHx6/RrtbbzxeoEQbPyx3f0kPcwJ58DGQ+7CBXelpg==}
peerDependencies:
- '@tanstack/react-query': ^5.67.3
+ '@tanstack/react-query': ^5.68.0
react: 18.3.1
- '@tanstack/react-query-persist-client@5.67.3':
- resolution: {integrity: sha512-ztu7fVoZ4WnjHbfNEieOgI/Lyj/i0PdaoYf7j+09i2/Y6C/XjqZ9UgxUnt0Hw1tCN5OZJ35qFA1cDHBQuxCW8A==}
+ '@tanstack/react-query-persist-client@5.68.0':
+ resolution: {integrity: sha512-USJZICO6iRhH3oM40NFJhQH1kXMhGNS/RmFaXIfdgF4rtjfbmAdejaGEhq7DPuTgzd+mhcgGC3wdl/A8YFMp8g==}
peerDependencies:
- '@tanstack/react-query': ^5.67.3
+ '@tanstack/react-query': ^5.68.0
react: 18.3.1
'@tanstack/react-query@5.67.3':
@@ -5888,6 +5891,11 @@ packages:
peerDependencies:
react: 18.3.1
+ '@tanstack/react-query@5.68.0':
+ resolution: {integrity: sha512-mMOdGDKlwTP/WV72QqSNf4PAMeoBp/DqBHQ222wBfb51Looi8QUqnCnb9O98ZgvNISmy6fzxRGBJdZ+9IBvX2Q==}
+ peerDependencies:
+ react: 18.3.1
+
'@tanstack/react-virtual@3.13.4':
resolution: {integrity: sha512-jPWC3BXvVLHsMX67NEHpJaZ+/FySoNxFfBEiF4GBc1+/nVwdRm+UcSCYnKP3pXQr0eEsDpXi/PQZhNfJNopH0g==}
peerDependencies:
@@ -7389,8 +7397,8 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
- cmdk@1.0.4:
- resolution: {integrity: sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==}
+ cmdk@1.1.1:
+ resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==}
peerDependencies:
react: 18.3.1
react-dom: 18.3.1
@@ -21804,35 +21812,44 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.17(ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2))
- '@tanstack/query-core@5.67.3': {}
+ '@tanstack/query-core@5.67.3':
+ optional: true
+
+ '@tanstack/query-core@5.68.0': {}
'@tanstack/query-devtools@5.67.2': {}
- '@tanstack/query-persist-client-core@5.67.3':
+ '@tanstack/query-persist-client-core@5.68.0':
dependencies:
- '@tanstack/query-core': 5.67.3
+ '@tanstack/query-core': 5.68.0
- '@tanstack/query-sync-storage-persister@5.67.3':
+ '@tanstack/query-sync-storage-persister@5.68.0':
dependencies:
- '@tanstack/query-core': 5.67.3
- '@tanstack/query-persist-client-core': 5.67.3
+ '@tanstack/query-core': 5.68.0
+ '@tanstack/query-persist-client-core': 5.68.0
- '@tanstack/react-query-devtools@5.67.3(@tanstack/react-query@5.67.3(react@18.3.1))(react@18.3.1)':
+ '@tanstack/react-query-devtools@5.68.0(@tanstack/react-query@5.68.0(react@18.3.1))(react@18.3.1)':
dependencies:
'@tanstack/query-devtools': 5.67.2
- '@tanstack/react-query': 5.67.3(react@18.3.1)
+ '@tanstack/react-query': 5.68.0(react@18.3.1)
react: 18.3.1
- '@tanstack/react-query-persist-client@5.67.3(@tanstack/react-query@5.67.3(react@18.3.1))(react@18.3.1)':
+ '@tanstack/react-query-persist-client@5.68.0(@tanstack/react-query@5.68.0(react@18.3.1))(react@18.3.1)':
dependencies:
- '@tanstack/query-persist-client-core': 5.67.3
- '@tanstack/react-query': 5.67.3(react@18.3.1)
+ '@tanstack/query-persist-client-core': 5.68.0
+ '@tanstack/react-query': 5.68.0(react@18.3.1)
react: 18.3.1
'@tanstack/react-query@5.67.3(react@18.3.1)':
dependencies:
'@tanstack/query-core': 5.67.3
react: 18.3.1
+ optional: true
+
+ '@tanstack/react-query@5.68.0(react@18.3.1)':
+ dependencies:
+ '@tanstack/query-core': 5.68.0
+ react: 18.3.1
'@tanstack/react-virtual@3.13.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
@@ -23773,14 +23790,14 @@ snapshots:
clsx@2.1.1: {}
- cmdk@1.0.4(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
+ cmdk@1.1.1(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
dependencies:
+ '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-dialog': 1.1.6(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-id': 1.1.0(@types/react@18.3.12)(react@18.3.1)
'@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- use-sync-external-store: 1.4.0(react@18.3.1)
transitivePeerDependencies:
- '@types/react'
- '@types/react-dom'
From 534744210cb05a7364ddd724a278c9f249eb166f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 15 Mar 2025 10:52:02 +0800
Subject: [PATCH 012/123] build(deps): bump the patch group with 2 updates
(#3132)
Bumps the patch group with 2 updates: [expo](https://github.com/expo/expo/tree/HEAD/packages/expo) and [lightningcss](https://github.com/parcel-bundler/lightningcss).
Updates `expo` from 52.0.38 to 52.0.39
- [Changelog](https://github.com/expo/expo/blob/main/packages/expo/CHANGELOG.md)
- [Commits](https://github.com/expo/expo/commits/HEAD/packages/expo)
Updates `lightningcss` from 1.29.2 to 1.29.3
- [Release notes](https://github.com/parcel-bundler/lightningcss/releases)
- [Commits](https://github.com/parcel-bundler/lightningcss/compare/v1.29.2...v1.29.3)
---
updated-dependencies:
- dependency-name: expo
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: patch
- dependency-name: lightningcss
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
apps/mobile/package.json | 2 +-
apps/ssr/package.json | 2 +-
pnpm-lock.yaml | 462 +++++++++++++++++++--------------------
3 files changed, 233 insertions(+), 233 deletions(-)
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index 1af166fbd5..5c43bb9aab 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -44,7 +44,7 @@
"dayjs": "1.11.13",
"dnum": "2.14.0",
"es-toolkit": "1.33.0",
- "expo": "52.0.38",
+ "expo": "52.0.39",
"expo-apple-authentication": "7.1.3",
"expo-av": "15.0.2",
"expo-blur": "14.0.3",
diff --git a/apps/ssr/package.json b/apps/ssr/package.json
index 1e853c82f4..5dacb4058f 100644
--- a/apps/ssr/package.json
+++ b/apps/ssr/package.json
@@ -58,7 +58,7 @@
"fast-glob": "3.3.3",
"foxact": "0.2.44",
"html-minifier-terser": "7.2.0",
- "lightningcss": "1.29.2",
+ "lightningcss": "1.29.3",
"masonic": "4.0.1",
"nanoid": "5.1.3",
"path-to-regexp": "8.2.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1c01370d7d..6ded556b78 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -190,22 +190,22 @@ importers:
version: 5.8.2
vite:
specifier: 6.2.2
- version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
vite-bundle-analyzer:
specifier: 0.17.3
version: 0.17.3
vite-plugin-mkcert:
specifier: 1.17.8
- version: 1.17.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 1.17.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
vite-plugin-pwa:
specifier: 0.21.1
- version: 0.21.1(@vite-pwa/assets-generator@0.2.6)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
+ version: 0.21.1(@vite-pwa/assets-generator@0.2.6)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0)
vite-tsconfig-paths:
specifier: 5.1.4
- version: 5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
vitest:
specifier: 3.0.8
- version: 3.0.8(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.13.10)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@20.0.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ version: 3.0.8(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.13.10)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@20.0.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
apps/desktop:
dependencies:
@@ -278,10 +278,10 @@ importers:
version: 2.1.9
'@vitejs/plugin-legacy':
specifier: 6.0.2
- version: 6.0.2(terser@5.39.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 6.0.2(terser@5.39.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
'@vitejs/plugin-react':
specifier: 4.3.4
- version: 4.3.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 4.3.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
autoprefixer:
specifier: 10.4.21
version: 10.4.21(postcss@8.5.3)
@@ -296,7 +296,7 @@ importers:
version: 16.4.7
drizzle-orm:
specifier: 0.40.0
- version: 0.40.0(lfgoa6uvatktntjnogv3tipozy)
+ version: 0.40.0(fedr7xy357gye4xptcj3qmf7sm)
electron:
specifier: 35.0.1
version: 35.0.1
@@ -308,7 +308,7 @@ importers:
version: 0.6.0
electron-vite:
specifier: 3.0.0
- version: 3.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 3.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
fake-indexeddb:
specifier: 6.0.0
version: 6.0.0
@@ -778,16 +778,16 @@ importers:
version: 4.3.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
'@react-native-firebase/analytics':
specifier: 21.12.0
- version: 21.12.0(@react-native-firebase/app@21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))
+ version: 21.12.0(@react-native-firebase/app@21.12.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))
'@react-native-firebase/app':
specifier: 21.12.0
- version: 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 21.12.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@react-native-firebase/app-check':
specifier: 21.12.0
- version: 21.12.0(6ygf4ptwpdh2nniv3d2maydqua)
+ version: 21.12.0(3muvjzbmzoy6nfhxk543rluy2q)
'@react-native-firebase/crashlytics':
specifier: 21.12.0
- version: 21.12.0(6ygf4ptwpdh2nniv3d2maydqua)
+ version: 21.12.0(3muvjzbmzoy6nfhxk543rluy2q)
'@react-native-picker/picker':
specifier: 2.11.0
version: 2.11.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -831,89 +831,89 @@ importers:
specifier: 1.33.0
version: 1.33.0
expo:
- specifier: 52.0.38
- version: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ specifier: 52.0.39
+ version: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-apple-authentication:
specifier: 7.1.3
- version: 7.1.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 7.1.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-av:
specifier: 15.0.2
- version: 15.0.2(sihtl4ayi55bcc6wwo2cffir5a)
+ version: 15.0.2(rzthrr4xgmfsqshpuj2xuunzym)
expo-blur:
specifier: 14.0.3
- version: 14.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 14.0.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-build-properties:
specifier: 0.13.2
- version: 0.13.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 0.13.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-clipboard:
specifier: 7.0.1
- version: 7.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 7.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-constants:
specifier: 17.0.8
- version: 17.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 17.0.8(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-dev-client:
specifier: 5.0.14
- version: 5.0.14(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 5.0.14(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-document-picker:
specifier: 13.0.3
- version: 13.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 13.0.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-file-system:
specifier: 18.0.11
- version: 18.0.11(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 18.0.11(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-haptics:
specifier: 14.0.1
- version: 14.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 14.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-image:
specifier: 2.0.6
- version: 2.0.6(sihtl4ayi55bcc6wwo2cffir5a)
+ version: 2.0.6(rzthrr4xgmfsqshpuj2xuunzym)
expo-image-manipulator:
specifier: 13.0.6
- version: 13.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 13.0.6(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-image-picker:
specifier: ~16.0.6
- version: 16.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 16.0.6(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-linear-gradient:
specifier: 14.0.2
- version: 14.0.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 14.0.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-linking:
specifier: 7.0.5
- version: 7.0.5(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 7.0.5(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-localization:
specifier: 16.0.1
- version: 16.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 16.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-media-library:
specifier: 17.0.6
- version: 17.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 17.0.6(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-router:
specifier: 4.0.18
- version: 4.0.18(qmbbmoiaq3uvnntmmbx4dnsk2i)
+ version: 4.0.18(bmqr4b52kpjyozkl3n6obcuaqi)
expo-secure-store:
specifier: 14.0.1
- version: 14.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 14.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-sharing:
specifier: 13.0.1
- version: 13.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 13.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-splash-screen:
specifier: 0.29.22
- version: 0.29.22(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 0.29.22(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-sqlite:
specifier: 15.1.2
- version: 15.1.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 15.1.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-status-bar:
specifier: 2.0.1
version: 2.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-symbols:
specifier: 0.2.2
- version: 0.2.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 0.2.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-system-ui:
specifier: 4.0.8
- version: 4.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native-web@0.19.13(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 4.0.8(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native-web@0.19.13(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
expo-updates:
specifier: 0.27.3
- version: 0.27.3(encoding@0.1.13)(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 0.27.3(encoding@0.1.13)(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-web-browser:
specifier: 14.0.2
- version: 14.0.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ version: 14.0.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
hono:
specifier: 4.7.4
version: 4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky)
@@ -964,7 +964,7 @@ importers:
version: 2.24.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-image-colors:
specifier: 2.4.0
- version: 2.4.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 2.4.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-native-ios-context-menu:
specifier: 3.1.0
version: 3.1.0(react-native-ios-utilities@5.1.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -1055,7 +1055,7 @@ importers:
version: 15.0.15(@types/node@22.13.10)(encoding@0.1.13)(typescript@5.8.2)
expo-drizzle-studio-plugin:
specifier: 0.1.1
- version: 0.1.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ version: 0.1.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
postcss:
specifier: 8.5.3
version: 8.5.3
@@ -1223,8 +1223,8 @@ importers:
specifier: 7.2.0
version: 7.2.0
lightningcss:
- specifier: 1.29.2
- version: 1.29.2
+ specifier: 1.29.3
+ version: 1.29.3
masonic:
specifier: 4.0.1
version: 4.0.1(react@18.3.1)
@@ -1242,7 +1242,7 @@ importers:
version: 4.19.3
vite:
specifier: 6.2.2
- version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ version: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
packages/atoms:
dependencies:
@@ -1513,7 +1513,7 @@ importers:
version: 1.2.4(typescript@5.8.2)
drizzle-orm:
specifier: 0.40.0
- version: 0.40.0(lfgoa6uvatktntjnogv3tipozy)
+ version: 0.40.0(fedr7xy357gye4xptcj3qmf7sm)
hono:
specifier: 4.7.4
version: 4.7.4(patch_hash=ilgmwbmxq7ndzom6bsxwnexiky)
@@ -3310,8 +3310,8 @@ packages:
resolution: {integrity: sha512-a8Ulbnji9kFatnOtsWGCRs6nMUj9UNC0/WhE74HQdXGDGMn5Pl8eNe3cLMy9G54DdqAmEZmRZpgXmcudT78fEQ==}
hasBin: true
- '@expo/cli@0.22.19':
- resolution: {integrity: sha512-vgAM3gUsAUQWgDm10RIYSrWQ5q235Ir/lMUdx5Yd/gObYaDlaBIdsq5H72eJ44QB+4ndvhm2wbqntTI19kBIRw==}
+ '@expo/cli@0.22.20':
+ resolution: {integrity: sha512-BU2ASlw0Gaj3ou/TxVsgvzK+XK8Z14Yq3mmLyvMcMAQrdExZLNmvMZ3A3x6q2uMgSJM3aoQBUuVXS/Ny+lYgDA==}
hasBin: true
'@expo/code-signing-certificates@0.0.5':
@@ -9395,8 +9395,8 @@ packages:
react-native-webview:
optional: true
- expo@52.0.38:
- resolution: {integrity: sha512-6DZJjN/oEeYOPGoNUWE41vUuwVSl/Cg9o3rTbP62Pchgspp61Elsf8G7FtdcAtdgOzkJmbnPrPqklpMXGwpgfA==}
+ expo@52.0.39:
+ resolution: {integrity: sha512-EOnrgj8MHSt0o0SIBhM7jCim2QpJJNonbSATn9LqNtVgKtotIg718G/OrP5/g0GUAOBDyxHH9PfNu/aq9c0vDw==}
hasBin: true
peerDependencies:
'@expo/dom-webview': '*'
@@ -9638,8 +9638,8 @@ packages:
resolution: {integrity: sha512-ic38pWErePVYNrZZlcOLPW9vjJXcq7a1kZJyoSZE2xXioNd2FuGA09Y7iBfHiwpVb67Av2KgBkhwbdcRVflWKw==}
engines: {node: '>=0.4.0'}
- flow-parser@0.265.0:
- resolution: {integrity: sha512-C+bg/TZsDVlLMF14+q9P9FB2pjQSgWwYs0pkIMPE1FsZWS4A0kk1M28V6YphpxAPr3AISVRZ6VgpDepvCk6dGw==}
+ flow-parser@0.265.2:
+ resolution: {integrity: sha512-DX2mp5u3lNJHl5dH8R1KrcrDsiJC02zFcG95p4b0YcDCzZZW+v9za2Csv5bQ0cq4jNzGx0gFU9jFZyM7FOyNFw==}
engines: {node: '>=0.4.0'}
fmix@0.1.0:
@@ -11135,8 +11135,8 @@ packages:
cpu: [arm64]
os: [darwin]
- lightningcss-darwin-arm64@1.29.2:
- resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==}
+ lightningcss-darwin-arm64@1.29.3:
+ resolution: {integrity: sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
@@ -11147,8 +11147,8 @@ packages:
cpu: [x64]
os: [darwin]
- lightningcss-darwin-x64@1.29.2:
- resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==}
+ lightningcss-darwin-x64@1.29.3:
+ resolution: {integrity: sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
@@ -11159,8 +11159,8 @@ packages:
cpu: [x64]
os: [freebsd]
- lightningcss-freebsd-x64@1.29.2:
- resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==}
+ lightningcss-freebsd-x64@1.29.3:
+ resolution: {integrity: sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
@@ -11171,8 +11171,8 @@ packages:
cpu: [arm]
os: [linux]
- lightningcss-linux-arm-gnueabihf@1.29.2:
- resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==}
+ lightningcss-linux-arm-gnueabihf@1.29.3:
+ resolution: {integrity: sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
@@ -11183,8 +11183,8 @@ packages:
cpu: [arm64]
os: [linux]
- lightningcss-linux-arm64-gnu@1.29.2:
- resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==}
+ lightningcss-linux-arm64-gnu@1.29.3:
+ resolution: {integrity: sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
@@ -11195,8 +11195,8 @@ packages:
cpu: [arm64]
os: [linux]
- lightningcss-linux-arm64-musl@1.29.2:
- resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==}
+ lightningcss-linux-arm64-musl@1.29.3:
+ resolution: {integrity: sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
@@ -11207,8 +11207,8 @@ packages:
cpu: [x64]
os: [linux]
- lightningcss-linux-x64-gnu@1.29.2:
- resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==}
+ lightningcss-linux-x64-gnu@1.29.3:
+ resolution: {integrity: sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
@@ -11219,8 +11219,8 @@ packages:
cpu: [x64]
os: [linux]
- lightningcss-linux-x64-musl@1.29.2:
- resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==}
+ lightningcss-linux-x64-musl@1.29.3:
+ resolution: {integrity: sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
@@ -11231,8 +11231,8 @@ packages:
cpu: [arm64]
os: [win32]
- lightningcss-win32-arm64-msvc@1.29.2:
- resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==}
+ lightningcss-win32-arm64-msvc@1.29.3:
+ resolution: {integrity: sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
@@ -11243,8 +11243,8 @@ packages:
cpu: [x64]
os: [win32]
- lightningcss-win32-x64-msvc@1.29.2:
- resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==}
+ lightningcss-win32-x64-msvc@1.29.3:
+ resolution: {integrity: sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
@@ -11253,8 +11253,8 @@ packages:
resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==}
engines: {node: '>= 12.0.0'}
- lightningcss@1.29.2:
- resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==}
+ lightningcss@1.29.3:
+ resolution: {integrity: sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==}
engines: {node: '>= 12.0.0'}
lilconfig@3.1.3:
@@ -18047,7 +18047,7 @@ snapshots:
- supports-color
- utf-8-validate
- '@expo/cli@0.22.19(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(utf-8-validate@6.0.5)':
+ '@expo/cli@0.22.20(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(utf-8-validate@6.0.5)':
dependencies:
'@0no-co/graphql.web': 1.1.2(graphql@16.8.1)
'@babel/runtime': 7.26.10
@@ -20945,33 +20945,33 @@ snapshots:
optionalDependencies:
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
- '@react-native-firebase/analytics@21.12.0(@react-native-firebase/app@21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))':
+ '@react-native-firebase/analytics@21.12.0(@react-native-firebase/app@21.12.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))':
dependencies:
- '@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ '@react-native-firebase/app': 21.12.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
superstruct: 2.0.2
- '@react-native-firebase/app-check@21.12.0(6ygf4ptwpdh2nniv3d2maydqua)':
+ '@react-native-firebase/app-check@21.12.0(3muvjzbmzoy6nfhxk543rluy2q)':
dependencies:
- '@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ '@react-native-firebase/app': 21.12.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
optionalDependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- '@react-native-firebase/app@21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)':
+ '@react-native-firebase/app@21.12.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)':
dependencies:
firebase: 11.3.1
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
optionalDependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- '@react-native-async-storage/async-storage'
- '@react-native-firebase/crashlytics@21.12.0(6ygf4ptwpdh2nniv3d2maydqua)':
+ '@react-native-firebase/crashlytics@21.12.0(3muvjzbmzoy6nfhxk543rluy2q)':
dependencies:
- '@react-native-firebase/app': 21.12.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ '@react-native-firebase/app': 21.12.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
stacktrace-js: 2.0.2
optionalDependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
'@react-native-menu/menu@1.2.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)':
dependencies:
@@ -22386,7 +22386,7 @@ snapshots:
transitivePeerDependencies:
- bare-buffer
- '@vitejs/plugin-legacy@6.0.2(terser@5.39.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
+ '@vitejs/plugin-legacy@6.0.2(terser@5.39.0)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies:
'@babel/core': 7.26.10
'@babel/preset-env': 7.26.9(@babel/core@7.26.10)
@@ -22397,18 +22397,18 @@ snapshots:
regenerator-runtime: 0.14.1
systemjs: 6.15.1
terser: 5.39.0
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
+ '@vitejs/plugin-react@4.3.4(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies:
'@babel/core': 7.26.10
'@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10)
'@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
@@ -22419,13 +22419,13 @@ snapshots:
chai: 5.2.0
tinyrainbow: 2.0.0
- '@vitest/mocker@3.0.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
+ '@vitest/mocker@3.0.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies:
'@vitest/spy': 3.0.8
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
'@vitest/pretty-format@3.0.8':
dependencies:
@@ -24629,11 +24629,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.40.0(lfgoa6uvatktntjnogv3tipozy):
+ drizzle-orm@0.40.0(fedr7xy357gye4xptcj3qmf7sm):
optionalDependencies:
'@opentelemetry/api': 1.9.0
'@types/pg': 8.6.1
- expo-sqlite: 15.1.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ expo-sqlite: 15.1.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
gel: 2.0.1
kysely: 0.27.6
@@ -24853,7 +24853,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- electron-vite@3.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
+ electron-vite@3.0.0(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
dependencies:
'@babel/core': 7.26.10
'@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10)
@@ -24861,7 +24861,7 @@ snapshots:
esbuild: 0.24.2
magic-string: 0.30.17
picocolors: 1.1.1
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
@@ -25912,9 +25912,9 @@ snapshots:
jest-message-util: 29.7.0
jest-util: 29.7.0
- expo-apple-authentication@7.1.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-apple-authentication@7.1.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
expo-asset@11.0.4(expo@52.0.35(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
@@ -25929,11 +25929,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- expo-asset@11.0.4(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-asset@11.0.4(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
'@expo/image-utils': 0.6.5
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-constants: 17.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo-constants: 17.0.8(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
invariant: 2.2.4
md5-file: 3.2.3
react: 18.3.1
@@ -25941,29 +25941,29 @@ snapshots:
transitivePeerDependencies:
- supports-color
- expo-av@15.0.2(sihtl4ayi55bcc6wwo2cffir5a):
+ expo-av@15.0.2(rzthrr4xgmfsqshpuj2xuunzym):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
optionalDependencies:
react-native-web: 0.19.13(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- expo-blur@14.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-blur@14.0.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
- expo-build-properties@0.13.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-build-properties@0.13.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
ajv: 8.17.1
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
semver: 7.7.1
- expo-clipboard@7.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-clipboard@7.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
@@ -25976,53 +25976,53 @@ snapshots:
transitivePeerDependencies:
- supports-color
- expo-constants@17.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-constants@17.0.8(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
'@expo/config': 10.0.11
'@expo/env': 0.4.2
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- supports-color
- expo-dev-client@5.0.14(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-client@5.0.14(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-launcher: 5.0.30(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-dev-menu: 6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-dev-menu-interface: 1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-updates-interface: 1.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo-dev-launcher: 5.0.30(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-menu: 6.0.21(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-dev-menu-interface: 1.9.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-manifests: 0.15.7(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-updates-interface: 1.0.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
transitivePeerDependencies:
- supports-color
- expo-dev-launcher@5.0.30(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-launcher@5.0.30(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
ajv: 8.11.0
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu: 6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo-dev-menu: 6.0.21(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-manifests: 0.15.7(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
resolve-from: 5.0.0
transitivePeerDependencies:
- supports-color
- expo-dev-menu-interface@1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-menu-interface@1.9.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu@6.0.21(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-dev-menu@6.0.21(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-dev-menu-interface: 1.9.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo-dev-menu-interface: 1.9.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-document-picker@13.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-document-picker@13.0.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-drizzle-studio-plugin@0.1.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-drizzle-studio-plugin@0.1.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-sqlite: 15.1.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo-sqlite: 15.1.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
transitivePeerDependencies:
- react
- react-native
@@ -26035,9 +26035,9 @@ snapshots:
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
web-streams-polyfill: 3.3.3
- expo-file-system@18.0.11(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-file-system@18.0.11(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
web-streams-polyfill: 3.3.3
@@ -26047,33 +26047,33 @@ snapshots:
fontfaceobserver: 2.3.0
react: 18.3.1
- expo-font@13.0.4(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-font@13.0.4(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
fontfaceobserver: 2.3.0
react: 18.3.1
- expo-haptics@14.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-haptics@14.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-image-loader@5.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-image-loader@5.0.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-image-manipulator@13.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-image-manipulator@13.0.6(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-image-loader: 5.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo-image-loader: 5.0.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-image-picker@16.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-image-picker@16.0.6(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-image-loader: 5.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo-image-loader: 5.0.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
- expo-image@2.0.6(sihtl4ayi55bcc6wwo2cffir5a):
+ expo-image@2.0.6(rzthrr4xgmfsqshpuj2xuunzym):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
optionalDependencies:
@@ -26086,20 +26086,20 @@ snapshots:
expo: 52.0.35(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
- expo-keep-awake@14.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-keep-awake@14.0.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
- expo-linear-gradient@14.0.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-linear-gradient@14.0.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
- expo-linking@7.0.5(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-linking@7.0.5(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo-constants: 17.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-constants: 17.0.8(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
invariant: 2.2.4
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
@@ -26107,23 +26107,23 @@ snapshots:
- expo
- supports-color
- expo-localization@16.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-localization@16.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
rtl-detect: 1.1.2
- expo-manifests@0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-manifests@0.15.7(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
'@expo/config': 10.0.11
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-json-utils: 0.14.0
transitivePeerDependencies:
- supports-color
- expo-media-library@17.0.6(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-media-library@17.0.6(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
expo-module-scripts@4.0.4(iwnafyibvcklawoco7ng3lqlmm):
@@ -26202,7 +26202,7 @@ snapshots:
dependencies:
invariant: 2.2.4
- expo-router@4.0.18(qmbbmoiaq3uvnntmmbx4dnsk2i):
+ expo-router@4.0.18(bmqr4b52kpjyozkl3n6obcuaqi):
dependencies:
'@expo/metro-runtime': 4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
'@expo/server': 0.5.2
@@ -26211,9 +26211,9 @@ snapshots:
'@react-navigation/native': 7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
'@react-navigation/native-stack': 7.2.1(@react-navigation/native@7.0.15(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-safe-area-context@5.3.0(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native-screens@4.9.2(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
client-only: 0.0.1
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-constants: 17.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
- expo-linking: 7.0.5(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo-constants: 17.0.8(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-linking: 7.0.5(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-native-helmet-async: 2.0.4(react@18.3.1)
react-native-is-edge-to-edge: 1.1.6(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -26232,24 +26232,24 @@ snapshots:
- react-native
- supports-color
- expo-secure-store@14.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-secure-store@14.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-sharing@13.0.1(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-sharing@13.0.1(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-splash-screen@0.29.22(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-splash-screen@0.29.22(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
'@expo/prebuild-config': 8.0.29
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
transitivePeerDependencies:
- supports-color
- expo-sqlite@15.1.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-sqlite@15.1.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
@@ -26260,27 +26260,27 @@ snapshots:
expo-structured-headers@4.0.0: {}
- expo-symbols@0.2.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-symbols@0.2.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
sf-symbols-typescript: 2.1.0
- expo-system-ui@4.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native-web@0.19.13(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-system-ui@4.0.8(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native-web@0.19.13(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
'@react-native/normalize-colors': 0.76.7
debug: 4.4.0(supports-color@8.1.1)
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
optionalDependencies:
react-native-web: 0.19.13(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
transitivePeerDependencies:
- supports-color
- expo-updates-interface@1.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-updates-interface@1.0.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
- expo-updates@0.27.3(encoding@0.1.13)(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ expo-updates@0.27.3(encoding@0.1.13)(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
'@expo/code-signing-certificates': 0.0.5
'@expo/config': 10.0.11
@@ -26288,11 +26288,11 @@ snapshots:
'@expo/spawn-async': 1.7.2
arg: 4.1.0
chalk: 4.1.2
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
expo-eas-client: 0.13.3
- expo-manifests: 0.15.7(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-manifests: 0.15.7(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
expo-structured-headers: 4.0.0
- expo-updates-interface: 1.0.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-updates-interface: 1.0.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))
fast-glob: 3.3.3
fbemitter: 3.0.0(encoding@0.1.13)
ignore: 5.3.2
@@ -26302,9 +26302,9 @@ snapshots:
- encoding
- supports-color
- expo-web-browser@14.0.2(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
+ expo-web-browser@14.0.2(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
expo@52.0.35(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5):
@@ -26343,21 +26343,21 @@ snapshots:
- supports-color
- utf-8-validate
- expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5):
+ expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5):
dependencies:
'@babel/runtime': 7.26.10
- '@expo/cli': 0.22.19(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(utf-8-validate@6.0.5)
+ '@expo/cli': 0.22.20(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(utf-8-validate@6.0.5)
'@expo/config': 10.0.11
'@expo/config-plugins': 9.0.17
'@expo/fingerprint': 0.11.11
'@expo/metro-config': 0.19.12
'@expo/vector-icons': 14.0.4
babel-preset-expo: 12.0.9(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))
- expo-asset: 11.0.4(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
- expo-constants: 17.0.8(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
- expo-file-system: 18.0.11(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
- expo-font: 13.0.4(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
- expo-keep-awake: 14.0.3(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ expo-asset: 11.0.4(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ expo-constants: 17.0.8(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-file-system: 18.0.11(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))
+ expo-font: 13.0.4(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
+ expo-keep-awake: 14.0.3(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
expo-modules-autolinking: 2.0.8
expo-modules-core: 2.2.3
fbemitter: 3.0.0(encoding@0.1.13)
@@ -26701,7 +26701,7 @@ snapshots:
flow-parser@0.264.0: {}
- flow-parser@0.265.0: {}
+ flow-parser@0.265.2: {}
fmix@0.1.0:
dependencies:
@@ -28374,7 +28374,7 @@ snapshots:
'@babel/register': 7.25.9(@babel/core@7.26.10)
babel-core: 7.0.0-bridge.0(@babel/core@7.26.10)
chalk: 4.1.2
- flow-parser: 0.265.0
+ flow-parser: 0.265.2
graceful-fs: 4.2.11
micromatch: 4.0.8
neo-async: 2.6.2
@@ -28617,61 +28617,61 @@ snapshots:
lightningcss-darwin-arm64@1.27.0:
optional: true
- lightningcss-darwin-arm64@1.29.2:
+ lightningcss-darwin-arm64@1.29.3:
optional: true
lightningcss-darwin-x64@1.27.0:
optional: true
- lightningcss-darwin-x64@1.29.2:
+ lightningcss-darwin-x64@1.29.3:
optional: true
lightningcss-freebsd-x64@1.27.0:
optional: true
- lightningcss-freebsd-x64@1.29.2:
+ lightningcss-freebsd-x64@1.29.3:
optional: true
lightningcss-linux-arm-gnueabihf@1.27.0:
optional: true
- lightningcss-linux-arm-gnueabihf@1.29.2:
+ lightningcss-linux-arm-gnueabihf@1.29.3:
optional: true
lightningcss-linux-arm64-gnu@1.27.0:
optional: true
- lightningcss-linux-arm64-gnu@1.29.2:
+ lightningcss-linux-arm64-gnu@1.29.3:
optional: true
lightningcss-linux-arm64-musl@1.27.0:
optional: true
- lightningcss-linux-arm64-musl@1.29.2:
+ lightningcss-linux-arm64-musl@1.29.3:
optional: true
lightningcss-linux-x64-gnu@1.27.0:
optional: true
- lightningcss-linux-x64-gnu@1.29.2:
+ lightningcss-linux-x64-gnu@1.29.3:
optional: true
lightningcss-linux-x64-musl@1.27.0:
optional: true
- lightningcss-linux-x64-musl@1.29.2:
+ lightningcss-linux-x64-musl@1.29.3:
optional: true
lightningcss-win32-arm64-msvc@1.27.0:
optional: true
- lightningcss-win32-arm64-msvc@1.29.2:
+ lightningcss-win32-arm64-msvc@1.29.3:
optional: true
lightningcss-win32-x64-msvc@1.27.0:
optional: true
- lightningcss-win32-x64-msvc@1.29.2:
+ lightningcss-win32-x64-msvc@1.29.3:
optional: true
lightningcss@1.27.0:
@@ -28689,20 +28689,20 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.27.0
lightningcss-win32-x64-msvc: 1.27.0
- lightningcss@1.29.2:
+ lightningcss@1.29.3:
dependencies:
detect-libc: 2.0.3
optionalDependencies:
- lightningcss-darwin-arm64: 1.29.2
- lightningcss-darwin-x64: 1.29.2
- lightningcss-freebsd-x64: 1.29.2
- lightningcss-linux-arm-gnueabihf: 1.29.2
- lightningcss-linux-arm64-gnu: 1.29.2
- lightningcss-linux-arm64-musl: 1.29.2
- lightningcss-linux-x64-gnu: 1.29.2
- lightningcss-linux-x64-musl: 1.29.2
- lightningcss-win32-arm64-msvc: 1.29.2
- lightningcss-win32-x64-msvc: 1.29.2
+ lightningcss-darwin-arm64: 1.29.3
+ lightningcss-darwin-x64: 1.29.3
+ lightningcss-freebsd-x64: 1.29.3
+ lightningcss-linux-arm-gnueabihf: 1.29.3
+ lightningcss-linux-arm64-gnu: 1.29.3
+ lightningcss-linux-arm64-musl: 1.29.3
+ lightningcss-linux-x64-gnu: 1.29.3
+ lightningcss-linux-x64-musl: 1.29.3
+ lightningcss-win32-arm64-msvc: 1.29.3
+ lightningcss-win32-x64-msvc: 1.29.3
lilconfig@3.1.3: {}
@@ -31053,7 +31053,7 @@ snapshots:
'@babel/traverse': 7.26.10
'@babel/types': 7.26.10
debug: 4.4.0(supports-color@8.1.1)
- lightningcss: 1.29.2
+ lightningcss: 1.29.3
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
react-native-reanimated: 3.17.1(@babel/core@7.26.10)(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)
@@ -31088,9 +31088,9 @@ snapshots:
react-fast-compare: 3.2.2
shallowequal: 1.1.0
- react-native-image-colors@2.4.0(expo@52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
+ react-native-image-colors@2.4.0(expo@52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1):
dependencies:
- expo: 52.0.38(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
+ expo: 52.0.39(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@expo/metro-runtime@4.0.1(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)))(bufferutil@4.0.9)(encoding@0.1.13)(graphql@16.8.1)(react-native-webview@13.13.4(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1))(react-native@0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5))(react@18.3.1)(utf-8-validate@6.0.5)
node-vibrant: 3.1.6
react: 18.3.1
react-native: 0.77.1(@babel/core@7.26.10)(@babel/preset-env@7.26.9(@babel/core@7.26.10))(@types/react@18.3.12)(bufferutil@4.0.9)(react@18.3.1)(utf-8-validate@6.0.5)
@@ -33490,13 +33490,13 @@ snapshots:
vite-bundle-analyzer@0.17.3: {}
- vite-node@3.0.8(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
+ vite-node@3.0.8(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
cac: 6.7.14
debug: 4.4.0(supports-color@8.1.1)
es-module-lexer: 1.6.0
pathe: 2.0.3
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -33511,21 +33511,21 @@ snapshots:
- tsx
- yaml
- vite-plugin-mkcert@1.17.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
+ vite-plugin-mkcert@1.17.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
dependencies:
axios: 1.8.3(debug@4.4.0)
debug: 4.4.0(supports-color@8.1.1)
picocolors: 1.1.1
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
- vite-plugin-pwa@0.21.1(@vite-pwa/assets-generator@0.2.6)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0):
+ vite-plugin-pwa@0.21.1(@vite-pwa/assets-generator@0.2.6)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(workbox-build@7.3.0(@types/babel__core@7.20.5))(workbox-window@7.3.0):
dependencies:
debug: 4.4.0(supports-color@8.1.1)
pretty-bytes: 6.1.1
tinyglobby: 0.2.12
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
workbox-build: 7.3.0(@types/babel__core@7.20.5)
workbox-window: 7.3.0
optionalDependencies:
@@ -33533,18 +33533,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
- vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
+ vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)):
dependencies:
debug: 4.4.0(supports-color@8.1.1)
globrex: 0.1.2
tsconfck: 3.1.5(typescript@5.8.2)
optionalDependencies:
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
- typescript
- vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
+ vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
esbuild: 0.25.1
postcss: 8.5.3
@@ -33553,15 +33553,15 @@ snapshots:
'@types/node': 22.13.10
fsevents: 2.3.3
jiti: 2.4.2
- lightningcss: 1.29.2
+ lightningcss: 1.29.3
terser: 5.39.0
tsx: 4.19.3
yaml: 2.7.0
- vitest@3.0.8(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.13.10)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@20.0.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
+ vitest@3.0.8(@edge-runtime/vm@3.2.0)(@types/debug@4.1.12)(@types/node@22.13.10)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@20.0.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
'@vitest/expect': 3.0.8
- '@vitest/mocker': 3.0.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
+ '@vitest/mocker': 3.0.8(vite@6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
'@vitest/pretty-format': 3.0.8
'@vitest/runner': 3.0.8
'@vitest/snapshot': 3.0.8
@@ -33577,8 +33577,8 @@ snapshots:
tinyexec: 0.3.2
tinypool: 1.0.2
tinyrainbow: 2.0.0
- vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
- vite-node: 3.0.8(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.2(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite-node: 3.0.8(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.3)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@edge-runtime/vm': 3.2.0
From 08b273ed4b264fc44d56e54812e96e5c748c1d47 Mon Sep 17 00:00:00 2001
From: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Date: Sun, 16 Mar 2025 10:18:43 +0800
Subject: [PATCH 013/123] ci: add development build (#3136)
* ci: add development build
* update
* update
* update
* name
* simulator
* cancel
* push
* update
* name
* Revert "update"
This reverts commit 34e65dcbd13265e519f99c0575fd6b5f386c7d75.
* path
---
.github/workflows/build-eas-development.yml | 98 +++++++++++++++++++++
.github/workflows/build-eas.yml | 4 +
apps/mobile/eas.json | 6 ++
3 files changed, 108 insertions(+)
create mode 100644 .github/workflows/build-eas-development.yml
diff --git a/.github/workflows/build-eas-development.yml b/.github/workflows/build-eas-development.yml
new file mode 100644
index 0000000000..945c7d7d8b
--- /dev/null
+++ b/.github/workflows/build-eas-development.yml
@@ -0,0 +1,98 @@
+name: Build iOS IPA for development
+
+on:
+ push:
+ branches: [dev, main]
+ paths:
+ - "apps/mobile/web-app/**"
+ - "apps/mobile/native/**"
+ - "apps/mobile/package.json"
+ pull_request:
+ branches: [dev, main]
+ paths:
+ - "apps/mobile/web-app/**"
+ - "apps/mobile/native/**"
+ - "apps/mobile/package.json"
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ build:
+ name: Build iOS IPA for device
+ runs-on: macos-latest
+
+ steps:
+ - name: 📦 Checkout code
+ uses: actions/checkout@v4
+
+ - name: 📦 Setup pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ run_install: true
+ - name: 🏗 Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: "pnpm"
+
+ - name: 📱 Setup EAS
+ uses: expo/expo-github-action@v8
+ with:
+ eas-version: latest
+ token: ${{ secrets.EXPO_TOKEN }}
+
+ - name: 🔨 Build iOS IPA
+ run: |
+ cd apps/mobile
+ eas build --platform ios --profile development --non-interactive --local --output=./build.ipa
+ env:
+ CI: true
+
+ # Optional: Upload artifact
+ - name: 📤 Upload IPA
+ uses: actions/upload-artifact@v4
+ with:
+ name: app-ios
+ path: apps/mobile/build.ipa
+ retention-days: 90
+
+ build-simulator:
+ name: Build iOS IPA for simulator
+ runs-on: macos-latest
+
+ steps:
+ - name: 📦 Checkout code
+ uses: actions/checkout@v4
+
+ - name: 📦 Setup pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ run_install: true
+ - name: 🏗 Setup Node.js
+ uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: "pnpm"
+
+ - name: 📱 Setup EAS
+ uses: expo/expo-github-action@v8
+ with:
+ eas-version: latest
+ token: ${{ secrets.EXPO_TOKEN }}
+
+ - name: 🔨 Build iOS IPA
+ run: |
+ cd apps/mobile
+ eas build --platform ios --profile ios-simulator --non-interactive --local --output=./build-simulator.ipa
+ env:
+ CI: true
+
+ # Optional: Upload artifact
+ - name: 📤 Upload IPA
+ uses: actions/upload-artifact@v4
+ with:
+ name: app-ios-simulator
+ path: apps/mobile/build-simulator.ipa
+ retention-days: 90
diff --git a/.github/workflows/build-eas.yml b/.github/workflows/build-eas.yml
index 07e5cbc670..e695fb687c 100644
--- a/.github/workflows/build-eas.yml
+++ b/.github/workflows/build-eas.yml
@@ -21,6 +21,10 @@ on:
- production
description: "Build profile"
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
jobs:
build:
name: Build iOS IPA
diff --git a/apps/mobile/eas.json b/apps/mobile/eas.json
index 084e6fcf79..e8c595c571 100644
--- a/apps/mobile/eas.json
+++ b/apps/mobile/eas.json
@@ -9,6 +9,12 @@
"distribution": "internal",
"channel": "development"
},
+ "ios-simulator": {
+ "extends": "development",
+ "ios": {
+ "simulator": true
+ }
+ },
"preview": {
"distribution": "internal",
"channel": "preview"
From 38a9da26bfceb520c7672733fbb406c76876c85b Mon Sep 17 00:00:00 2001
From: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Date: Mon, 17 Mar 2025 09:37:25 +0800
Subject: [PATCH 014/123] fix(mobile): show validate message, support for small
screen (#3130)
* show validate message
* support small screen
---
.../src/components/common/SubmitButton.tsx | 7 +-
apps/mobile/src/modules/login/email.tsx | 85 +++++++------------
apps/mobile/src/modules/login/index.tsx | 63 +++++++++-----
.../src/screens/(modal)/forget-password.tsx | 2 +-
apps/mobile/src/screens/(modal)/sign-up.tsx | 22 ++++-
5 files changed, 97 insertions(+), 82 deletions(-)
diff --git a/apps/mobile/src/components/common/SubmitButton.tsx b/apps/mobile/src/components/common/SubmitButton.tsx
index 96837c8196..4340b3cae9 100644
--- a/apps/mobile/src/components/common/SubmitButton.tsx
+++ b/apps/mobile/src/components/common/SubmitButton.tsx
@@ -20,14 +20,15 @@ export function SubmitButton({
title,
...props
}: PressableProps & { isLoading?: boolean; title: string }) {
+ const disabled = props.disabled || isLoading
const disableColor = useColor("gray6")
const disabledTextColor = useColor("gray2")
const disabledValue = useSharedValue(1)
useEffect(() => {
cancelAnimation(disabledValue)
- disabledValue.value = withTiming(props.disabled ? 1 : 0)
- }, [props.disabled])
+ disabledValue.value = withTiming(disabled ? 1 : 0)
+ }, [disabled])
const buttonStyle = useAnimatedStyle(() => ({
backgroundColor: interpolateColor(disabledValue.value, [1, 0], [disableColor, accentColor]),
@@ -40,7 +41,7 @@ export function SubmitButton({
return (
diff --git a/apps/mobile/src/modules/login/email.tsx b/apps/mobile/src/modules/login/email.tsx
index 823eff1d23..7994baa695 100644
--- a/apps/mobile/src/modules/login/email.tsx
+++ b/apps/mobile/src/modules/login/email.tsx
@@ -1,17 +1,13 @@
-import { zodResolver } from "@hookform/resolvers/zod"
import { useMutation } from "@tanstack/react-query"
import { router } from "expo-router"
-import type { Control } from "react-hook-form"
-import { useController, useForm } from "react-hook-form"
-import type { TextInputProps } from "react-native"
-import { Text, TouchableOpacity, View } from "react-native"
+import { useCallback, useRef } from "react"
+import { Alert, Text, TouchableOpacity, View } from "react-native"
import { KeyboardController } from "react-native-keyboard-controller"
import { z } from "zod"
import { SubmitButton } from "@/src/components/common/SubmitButton"
import { PlainTextField } from "@/src/components/ui/form/TextField"
import { signIn } from "@/src/lib/auth"
-import { toast } from "@/src/lib/toast"
import { getTokenHeaders } from "@/src/lib/token"
import { accentColor } from "@/src/theme/colors"
@@ -23,11 +19,18 @@ const formSchema = z.object({
type FormValue = z.infer
async function onSubmit(values: FormValue) {
+ const result = formSchema.safeParse(values)
+ if (!result.success) {
+ const issue = result.error.issues[0]
+ Alert.alert("Invalid email or password", issue?.message)
+ return
+ }
+
await signIn
.email(
{
- email: values.email,
- password: values.password,
+ email: result.data.email,
+ password: result.data.password,
},
{
headers: await getTokenHeaders(),
@@ -43,62 +46,39 @@ async function onSubmit(values: FormValue) {
}
})
.catch((error) => {
- toast.error(error.message)
+ Alert.alert(error.message)
})
}
-function Input({
- control,
- name,
- ...rest
-}: TextInputProps & {
- control: Control
- name: keyof FormValue
-}) {
- const { field } = useController({
- control,
- name,
- })
- return (
-
- )
-}
-
export function EmailLogin() {
- const { control, handleSubmit, formState } = useForm({
- resolver: zodResolver(formSchema),
- defaultValues: {
- email: "",
- password: "",
- },
- })
+ const emailValueRef = useRef("")
+ const passwordValueRef = useRef("")
const submitMutation = useMutation({
mutationFn: onSubmit,
})
- const login = handleSubmit((values) => {
- submitMutation.mutate(values)
- })
+ const onLogin = useCallback(() => {
+ submitMutation.mutate({
+ email: emailValueRef.current,
+ password: passwordValueRef.current,
+ })
+ }, [submitMutation])
return (
- {
+ emailValueRef.current = text
+ }}
+ selectionColor={accentColor}
hitSlop={20}
autoCapitalize="none"
autoCorrect={false}
keyboardType="email-address"
autoComplete="email"
- control={control}
- name="email"
placeholder="Email"
className="text-text flex-1"
returnKeyType="next"
@@ -109,28 +89,27 @@ export function EmailLogin() {
- {
+ passwordValueRef.current = text
+ }}
+ selectionColor={accentColor}
hitSlop={20}
autoCapitalize="none"
autoCorrect={false}
autoComplete="current-password"
- control={control}
- name="password"
placeholder="Password"
className="text-text flex-1"
secureTextEntry
returnKeyType="go"
- onSubmitEditing={() => {
- login()
- }}
+ onSubmitEditing={onLogin}
/>
diff --git a/apps/mobile/src/modules/login/index.tsx b/apps/mobile/src/modules/login/index.tsx
index 60cc7bd91a..64a10f54a4 100644
--- a/apps/mobile/src/modules/login/index.tsx
+++ b/apps/mobile/src/modules/login/index.tsx
@@ -6,36 +6,55 @@ import Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanima
import * as ContextMenu from "zeego/context-menu"
import { Logo } from "@/src/components/ui/logo"
+import { useScaleHeight } from "@/src/lib/responsive"
import { TermsMarkdown } from "@/src/screens/(headless)/terms"
import { EmailLogin } from "./email"
import { SocialLogin } from "./social"
export function Login() {
+ const logoSize = useScaleHeight()(80)
+ const gapSize = useScaleHeight()(28)
+ const fontSize = useScaleHeight()(28)
+ const lineHeight = useScaleHeight()(32)
+
return (
-
- {
- KeyboardController.dismiss()
- }}
- accessible={false}
- >
-
-
-
- Sign in to Follow
-
-
-
-
-
-
-
-
- or
-
+
+
+ {
+ KeyboardController.dismiss()
+ }}
+ accessible={false}
+ >
+
+
+
+ Sign in to Follow
+
+
+
+
+
+
+
+
+ or
+
+
+
-
diff --git a/apps/mobile/src/screens/(modal)/forget-password.tsx b/apps/mobile/src/screens/(modal)/forget-password.tsx
index c0b61426bc..75b0806851 100644
--- a/apps/mobile/src/screens/(modal)/forget-password.tsx
+++ b/apps/mobile/src/screens/(modal)/forget-password.tsx
@@ -46,7 +46,7 @@ export default function ForgetPassword() {
- Forgot password?
+ Forgot password?
Enter your email address that you use with your account to continue.
diff --git a/apps/mobile/src/screens/(modal)/sign-up.tsx b/apps/mobile/src/screens/(modal)/sign-up.tsx
index 3fc183b1c7..de49768d16 100644
--- a/apps/mobile/src/screens/(modal)/sign-up.tsx
+++ b/apps/mobile/src/screens/(modal)/sign-up.tsx
@@ -12,6 +12,7 @@ import { SubmitButton } from "@/src/components/common/SubmitButton"
import { PlainTextField } from "@/src/components/ui/form/TextField"
import { Logo } from "@/src/components/ui/logo"
import { signUp } from "@/src/lib/auth"
+import { useScaleHeight } from "@/src/lib/responsive"
import { toast } from "@/src/lib/toast"
import { getTokenHeaders } from "@/src/lib/token"
import { accentColor } from "@/src/theme/colors"
@@ -157,6 +158,10 @@ function EmailSignUp() {
}
export default function SignUpModal() {
+ const logoSize = useScaleHeight()(80)
+ const gapSize = useScaleHeight()(28)
+ const fontSize = useScaleHeight()(28)
+ const lineHeight = useScaleHeight()(32)
return (
-
-
-
+
+
+
Sign up to Follow
From 37a2e68dceb2d43ea6f1109fd18c1c452c5a4c56 Mon Sep 17 00:00:00 2001
From: LavaC <48022591+LavaCxx@users.noreply.github.com>
Date: Mon, 17 Mar 2025 09:49:50 +0800
Subject: [PATCH 015/123] fix(desktop): description section uses hyphen style
(#3146)
---
.../src/modules/entry-column/templates/list-item-template.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/desktop/src/renderer/src/modules/entry-column/templates/list-item-template.tsx b/apps/desktop/src/renderer/src/modules/entry-column/templates/list-item-template.tsx
index 1e9c7a3062..67857546a5 100644
--- a/apps/desktop/src/renderer/src/modules/entry-column/templates/list-item-template.tsx
+++ b/apps/desktop/src/renderer/src/modules/entry-column/templates/list-item-template.tsx
@@ -175,7 +175,7 @@ export function ListItem({
)}
>
From 4a00493ce7d897174c4c5927ba3aee420236df7f Mon Sep 17 00:00:00 2001
From: Konv Suu <2583695112@qq.com>
Date: Mon, 17 Mar 2025 09:59:50 +0800
Subject: [PATCH 016/123] feat(desktop): hide separator when availableActions
is empty (#3045)
---
.../src/modules/command/hooks/use-command.ts | 5 +++++
.../modules/entry-content/actions/more-actions.tsx | 14 ++++++++++----
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/apps/desktop/src/renderer/src/modules/command/hooks/use-command.ts b/apps/desktop/src/renderer/src/modules/command/hooks/use-command.ts
index 396dd341e1..3e04a6c3ff 100644
--- a/apps/desktop/src/renderer/src/modules/command/hooks/use-command.ts
+++ b/apps/desktop/src/renderer/src/modules/command/hooks/use-command.ts
@@ -6,6 +6,11 @@ import { useCallback, useMemo } from "react"
import { CommandRegistry } from "../registry/registry"
import type { FollowCommandId, FollowCommandMap } from "../types"
+export const hasCommand = (id: T) => {
+ const commands = jotaiStore.get(CommandRegistry.atom) as FollowCommandMap
+ return id in commands
+}
+
export const getCommand = (id: T) => {
const commands = jotaiStore.get(CommandRegistry.atom) as FollowCommandMap
return id in commands ? commands[id] : null
diff --git a/apps/desktop/src/renderer/src/modules/entry-content/actions/more-actions.tsx b/apps/desktop/src/renderer/src/modules/entry-content/actions/more-actions.tsx
index ea3688859a..d10712d2a5 100644
--- a/apps/desktop/src/renderer/src/modules/entry-content/actions/more-actions.tsx
+++ b/apps/desktop/src/renderer/src/modules/entry-content/actions/more-actions.tsx
@@ -11,11 +11,17 @@ import {
} from "~/components/ui/dropdown-menu/dropdown-menu"
import { useSortedEntryActions } from "~/hooks/biz/useEntryActions"
import { COMMAND_ID } from "~/modules/command/commands/id"
-import { useCommand } from "~/modules/command/hooks/use-command"
+import { hasCommand, useCommand } from "~/modules/command/hooks/use-command"
import type { FollowCommandId } from "~/modules/command/types"
export const MoreActions = ({ entryId, view }: { entryId: string; view?: FeedViewType }) => {
- const { moreAction: actionConfigs } = useSortedEntryActions({ entryId, view })
+ const { moreAction } = useSortedEntryActions({ entryId, view })
+
+ const actionConfigs = useMemo(
+ () => moreAction.filter((action) => hasCommand(action.id)),
+ [moreAction],
+ )
+
const availableActions = useMemo(
() => actionConfigs.filter((item) => item.id !== COMMAND_ID.settings.customizeToolbar),
[actionConfigs],
@@ -26,7 +32,7 @@ export const MoreActions = ({ entryId, view }: { entryId: string; view?: FeedVie
[actionConfigs],
)
- if (availableActions.length === 0) {
+ if (availableActions.length === 0 && extraAction.length === 0) {
return null
}
@@ -44,7 +50,7 @@ export const MoreActions = ({ entryId, view }: { entryId: string; view?: FeedVie
active={config.active}
/>
))}
-
+ {availableActions.length > 0 && }
{extraAction.map((config) => (
Date: Mon, 17 Mar 2025 10:50:06 +0800
Subject: [PATCH 017/123] refactor(mobile): action condition layout and select
(#3147)
---
apps/mobile/src/components/ui/form/Select.tsx | 2 +-
.../modules/settings/actions/components.tsx | 30 +---
.../modules/settings/routes/EditCondition.tsx | 104 ++++--------
.../src/modules/settings/routes/EditRule.tsx | 156 +++++++++---------
4 files changed, 119 insertions(+), 173 deletions(-)
diff --git a/apps/mobile/src/components/ui/form/Select.tsx b/apps/mobile/src/components/ui/form/Select.tsx
index b876622985..844b499a94 100644
--- a/apps/mobile/src/components/ui/form/Select.tsx
+++ b/apps/mobile/src/components/ui/form/Select.tsx
@@ -62,7 +62,7 @@ export function Select({
ellipsizeMode="middle"
numberOfLines={1}
>
- {valueToLabelMap.get(currentValue)}
+ {valueToLabelMap.get(currentValue) || "Select"}
diff --git a/apps/mobile/src/modules/settings/actions/components.tsx b/apps/mobile/src/modules/settings/actions/components.tsx
index d2f486e489..2f1a0f29b7 100644
--- a/apps/mobile/src/modules/settings/actions/components.tsx
+++ b/apps/mobile/src/modules/settings/actions/components.tsx
@@ -1,6 +1,4 @@
-import { Text } from "react-native"
-import * as DropdownMenu from "zeego/dropdown-menu"
-
+import { Select } from "@/src/components/ui/form/Select"
import { GroupedInsetListCell } from "@/src/components/ui/grouped/GroupedList"
import { actionActions } from "@/src/store/action/store"
import type { ActionRule } from "@/src/store/action/types"
@@ -17,24 +15,14 @@ export const ActionFormTranslation: React.FC<{ rule: ActionRule }> = ({ rule })
leftClassName="flex-none"
rightClassName="flex-1 flex-row items-center gap-4 justify-end"
>
-
-
- {currentTranslation?.label || "Select"}
-
-
- {translationOptions.map((translation) => (
- {
- actionActions.patchRule(rule.index, { result: { translation: translation.value } })
- }}
- >
- {translation.label}
-
- ))}
-
-
+
,
diff --git a/apps/ssr/src/router/og/list.tsx b/apps/ssr/src/router/og/list.tsx
index 27847b0be0..2e7ce35b24 100644
--- a/apps/ssr/src/router/og/list.tsx
+++ b/apps/ssr/src/router/og/list.tsx
@@ -89,7 +89,7 @@ export const renderListOG = async (apiClient: ApiClient, listId: string) => {
}}
>
{numberFormatter.format(feed.data.subscriptionCount)} followers with{" "}
- {numberFormatter.format(feed.data.readCount)} recent reads on Follow
+ {numberFormatter.format(feed.data.readCount)} recent reads on Folo
,
diff --git a/package.json b/package.json
index 0f1678a289..1789aca6e6 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"private": true,
"packageManager": "pnpm@10.6.3",
"description": "Follow everything in one place",
- "author": "Follow Team",
+ "author": "Folo Team",
"license": "GPL-3.0-only",
"homepage": "https://github.com/RSSNext",
"repository": {
@@ -12,13 +12,13 @@
"type": "git"
},
"scripts": {
- "build:all": "turbo run Follow#build @follow/ssr#build",
- "build:electron": "turbo run Follow#build",
- "build:macos": "turbo run Follow#build:macos",
- "build:mas": "turbo run Follow#build:mas",
- "build:render": "turbo run Follow#build:render",
+ "build:all": "turbo run Folo#build @follow/ssr#build",
+ "build:electron": "turbo run Folo#build",
+ "build:macos": "turbo run Folo#build:macos",
+ "build:mas": "turbo run Folo#build:mas",
+ "build:render": "turbo run Folo#build:render",
"build:ssr": "turbo run @follow/ssr#build",
- "build:web": "turbo run Follow#build:web",
+ "build:web": "turbo run Folo#build:web",
"dedupe:locales": "eslint --fix apps/desktop/locales/**/*.json",
"depcheck": "npx depcheck --quiet",
"format": "prettier --write .",
diff --git a/packages/shared/package.json b/packages/shared/package.json
index 45bf67b747..1efb74778d 100644
--- a/packages/shared/package.json
+++ b/packages/shared/package.json
@@ -2,7 +2,7 @@
"name": "@follow/shared",
"type": "module",
"private": true,
- "author": "Follow Team",
+ "author": "Folo Team",
"license": "GPL-3.0-only",
"homepage": "https://github.com/RSSNext",
"repository": {
diff --git a/packages/types/global.d.ts b/packages/types/global.d.ts
index b0feb90594..a3b26f12b3 100644
--- a/packages/types/global.d.ts
+++ b/packages/types/global.d.ts
@@ -9,7 +9,7 @@ declare global {
? { [K in keyof T]: NonUndefined }
: T
- export const APP_NAME = "Follow"
+ export const APP_NAME = "Folo"
}
export {}
diff --git a/packages/utils/package.json b/packages/utils/package.json
index 533334767e..76e94a1ff4 100644
--- a/packages/utils/package.json
+++ b/packages/utils/package.json
@@ -2,7 +2,7 @@
"name": "@follow/utils",
"type": "module",
"private": true,
- "author": "Follow Team",
+ "author": "Folo Team",
"license": "MIT",
"homepage": "https://github.com/RSSNext",
"repository": {
diff --git a/packages/utils/src/headers.ts b/packages/utils/src/headers.ts
index 9a50229b2f..578a8ec8ad 100644
--- a/packages/utils/src/headers.ts
+++ b/packages/utils/src/headers.ts
@@ -7,7 +7,7 @@ export const createBuildSafeHeaders =
if (headers["User-Agent"]) {
headers["User-Agent"] = headers["User-Agent"]
.replace(/\s?Electron\/[\d.]+/, "")
- .replace(/\s?Follow\/[\d.a-zA-Z-]+/, "")
+ .replace(/\s?Folo\/[\d.a-zA-Z-]+/, "")
} else {
headers["User-Agent"] =
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
diff --git a/turbo.json b/turbo.json
index a5dcc43eba..86e00e5eae 100644
--- a/turbo.json
+++ b/turbo.json
@@ -2,19 +2,19 @@
"$schema": "https://turbo.build/schema.json",
"envMode": "loose",
"tasks": {
- "Follow#build": {
+ "Folo#build": {
"outputs": ["dist/**", "out/**"]
},
- "Follow#build:web": {
+ "Folo#build:web": {
"outputs": ["out/**"]
},
- "Follow#build:macos": {
+ "Folo#build:macos": {
"outputs": ["dist/**", "out/**"]
},
- "Follow#build:mas": {
+ "Folo#build:mas": {
"outputs": ["dist/**", "out/**"]
},
- "Follow#build:render": {
+ "Folo#build:render": {
"outputs": ["out/**"]
},
"//#format:check": {},
From 853d32afa47ad94b14b9d471633d92d46936fbb4 Mon Sep 17 00:00:00 2001
From: DIYgod
Date: Wed, 19 Mar 2025 22:21:26 +0800
Subject: [PATCH 051/123] feat: hide apple login in mas
---
.../src/modules/auth/LoginModalContent.tsx | 94 ++++++++++---------
1 file changed, 50 insertions(+), 44 deletions(-)
diff --git a/apps/desktop/src/renderer/src/modules/auth/LoginModalContent.tsx b/apps/desktop/src/renderer/src/modules/auth/LoginModalContent.tsx
index 5f44d11d3f..294812f8a6 100644
--- a/apps/desktop/src/renderer/src/modules/auth/LoginModalContent.tsx
+++ b/apps/desktop/src/renderer/src/modules/auth/LoginModalContent.tsx
@@ -52,50 +52,56 @@ export const LoginModalContent = (props: LoginModalContentProps) => {
- {!isInMAS() && (
- <>
-
-
- {Object.entries(authProviders || [])
- .filter(([key]) => key !== "credential")
- .map(([key, provider]) => (
-
-
- {
- loginHandler(key, "app")
- }}
- >
-
-
-
-
-
- {t("login.continueWith", { provider: provider.name })}
-
-
-
- ))}
-
- >
- )}
+
+
+ {Object.entries(authProviders || [])
+ .filter(([key]) => {
+ if (key === "credential") {
+ return false
+ }
+ const inMAS = isInMAS()
+ if (inMAS) {
+ return key !== "apple"
+ } else {
+ return true
+ }
+ })
+ .map(([key, provider]) => (
+
+
+ {
+ loginHandler(key, "app")
+ }}
+ >
+
+
+
+
+
+ {t("login.continueWith", { provider: provider.name })}
+
+
+
+ ))}
+
>
)
if (isMobile) {
From f21b9e7bf033a40b7092f2366917f8a0d4c6875d Mon Sep 17 00:00:00 2001
From: Innei
Date: Wed, 19 Mar 2025 22:35:49 +0800
Subject: [PATCH 052/123] refactor: replace @react-navigation and expo-router
(#3151)
* init
* init
* refactor(mobile): enhance tab navigation and structure
- Added `TabScreenModule` and `TabScreenView` to support dynamic tab management.
- Replaced `FOTabBarController` with a more streamlined `UITabBarController` implementation.
- Updated `TabBarModule` to utilize new tab switching logic and event handling.
- Modified `TabBarRootView` to manage tab views more effectively and handle tab index changes.
- Adjusted main application file to integrate new tab components and improve navigation flow.
These changes aim to improve the tab navigation experience and maintainability of the codebase.
* tabbar
* refactor(mobile): streamline navigation and tab management
- Refactored main application structure to enhance tab navigation, integrating `BottomTabs` and `TabRoot` components for improved tab management.
- Updated `NavigationHeader` and `SafeNavigationScrollView` to better handle header visibility and scrolling behavior.
- Introduced `ScreenItemContext` for managing screen state and scroll position across navigation.
- Cleaned up unused imports and optimized component structure for better maintainability.
These changes aim to improve the overall navigation experience and code organization within the mobile application.
* update
* feat(mobile): implement BottomTabProvider for enhanced tab management
- Introduced `BottomTabProvider` component to manage tab visibility and scroll view context.
- Refactored `BottomTabs` to utilize context for background opacity and tab visibility, simplifying the component structure.
- Removed the deprecated `TabClient` component to streamline the tab implementation.
- Added a null check in `Tabbar` to prevent rendering when there are no tab screens.
These changes aim to improve the organization and functionality of the tab navigation system within the mobile application.
Signed-off-by: Innei
* update
* update
* update
* update
* update
* feat(mobile): integrate ErrorBoundary and enhance navigation context
- Added `ErrorBoundary` component to handle errors gracefully within the application.
- Integrated `BottomTabProvider` to manage tab visibility and scroll view context more effectively.
- Refactored navigation components to utilize new context for improved state management.
- Updated `SafeNavigationScrollView` and `Settings` components to streamline scrolling behavior and context usage.
- Removed deprecated code and optimized component structure for better maintainability.
These changes enhance the user experience by providing error handling and improving navigation management.
* feat(mobile): enhance navigation and layout components
- Registered new screens (`TermsScreen`, `LoginScreen`, `SignUpScreen`, `ForgetPasswordScreen`, `TwoFactorAuthScreen`) with the `NavigationSitemapRegistry` for improved navigation management.
- Adjusted layout properties in `HeaderElements` and `NavigationHeader` for better alignment and responsiveness.
- Refactored `Tabbar` to remove unnecessary animated reactions, optimizing performance.
- Exported `ActionGroup` component for better reusability in `TimelineSelectorProvider`.
- Updated `DebugScreen` to utilize the new navigation methods for component presentation.
These changes improve the overall navigation experience and component structure within the mobile application.
Signed-off-by: Innei
* feat(mobile): implement new architecture support and refactor TabBar components
- Added support for the new architecture in the iOS podspec by conditionally defining `OTHER_SWIFT_FLAGS`.
- Refactored `TabBarPortalModule`, `TabBarRootView`, and `TabScreenView` to improve structure and maintainability.
- Replaced native view components with standard React Native views in `TabBarPortal`, `TabRoot`, and `TabScreen` for better compatibility and performance.
- Updated import paths for `TabScreenProps` to ensure correct type usage.
These changes enhance the navigation experience and prepare the codebase for future architecture improvements.
Signed-off-by: Innei
* feat(mobile): refactor navigation and onboarding components
- Removed outdated navigation dependencies from `package.json` to streamline the project.
- Enhanced `TabBarRootView` to improve tab switching animations and manage view transitions more effectively.
- Updated `App` component structure for better readability and integration of onboarding logic.
- Introduced `OnboardingScreen` with improved layout and navigation handling.
- Refactored navigation context types to include additional screen options for better flexibility.
These changes enhance the navigation experience and prepare the application for future onboarding features.
Signed-off-by: Innei
* feat(mobile): enhance intent handling with navigation integration
- Added navigation support in `useIntentHandler` to handle incoming URLs more effectively.
- Integrated `FollowScreen` for presenting user-specific content based on URL parameters.
- Updated effect dependencies to include navigation for improved functionality.
These changes improve the handling of deep links and enhance the user experience when navigating to the follow screen.
Signed-off-by: Innei
* chore: clean up pnpm-lock.yaml by removing unused navigation dependencies
- Removed outdated navigation packages including `@react-navigation/bottom-tabs`, `@react-navigation/drawer`, and `@react-navigation/native` to streamline the lock file.
- Cleaned up unnecessary entries and peer dependencies to improve maintainability and reduce clutter.
These changes help in optimizing the dependency management for the project.
Signed-off-by: Innei
* lint
Signed-off-by: Innei
* chore: auto-fix linting and formatting issues
* fix
Signed-off-by: Innei
* update
Signed-off-by: Innei
* refactor: update PickerIos component and remove FeedDrawer
- Added import for Portal in PickerIos component.
- Removed the FeedDrawer component entirely, cleaning up unused code.
- Replaced router.dismiss() with navigation.dismiss() in list screen options for better navigation handling.
Signed-off-by: Innei
---------
Signed-off-by: Innei
---
.github/dependabot.yaml | 2 +
apps/mobile/app.config.ts | 17 +-
apps/mobile/native/expo-module.config.json | 5 +-
apps/mobile/native/ios/FollowNative.podspec | 2 +
.../ios/Modules/TabBar/TabBarModule.swift | 37 ++
.../Modules/TabBar/TabBarPortalModule.swift | 21 +
.../ios/Modules/TabBar/TabBarRootView.swift | 126 ++++++
.../ios/Modules/TabBar/TabScreenModule.swift | 16 +
.../ios/Modules/TabBar/TabScreenView.swift | 16 +
apps/mobile/package.json | 9 +-
apps/mobile/src/Analytics.tsx | 23 +
apps/mobile/src/App.tsx | 41 ++
.../src/components/common/ErrorBoundary.tsx | 18 +
.../components/common/HeaderTitleExtra.tsx | 49 ---
apps/mobile/src/components/common/Link.tsx | 24 ++
.../layouts/header/FakeNativeHeaderTitle.tsx | 27 ++
.../header/HeaderElements.tsx} | 58 +--
.../components/layouts/header/ModalHeader.tsx | 105 -----
.../layouts/header/NavigationHeader.tsx | 178 ++++----
.../layouts/tabbar/BottomTabProvider.tsx | 24 ++
.../components/layouts/tabbar/BottomTabs.tsx | 84 +---
.../components/layouts/tabbar/TabClient.tsx | 55 ---
.../src/components/layouts/tabbar/Tabbar.tsx | 146 +++----
.../src/components/layouts/tabbar/hooks.ts | 16 +-
.../layouts/views/NavigationContext.tsx | 6 -
.../views/SafeNavigationScrollView.tsx | 194 +++++----
.../native/webview/EntryContentWebView.tsx | 2 +-
.../src/components/ui/form/PickerIos.tsx | 2 +-
.../src/components/ui/portal/Portal.tsx | 47 ---
.../components/ui/portal/PortalContext.tsx | 5 -
.../src/components/ui/portal/PortalHost.tsx | 87 ----
.../components/ui/portal/PortalManager.tsx | 46 --
.../mobile/src/components/ui/portal/index.tsx | 2 -
apps/mobile/src/components/ui/portal/type.ts | 44 --
apps/mobile/src/hooks/useIntentHandler.ts | 14 +-
apps/mobile/src/hooks/useIsRouteOnlyOne.ts | 10 -
.../AttachNavigationScrollViewContext.tsx | 0
.../lib/navigation/ChainNavigationContext.tsx | 23 +
.../GroupedNavigationRouteContext.ts | 5 +
apps/mobile/src/lib/navigation/Navigation.ts | 180 ++++++++
.../navigation/NavigationInstanceContext.ts | 5 +
.../src/lib/navigation/NavigationLink.tsx | 39 ++
.../src/lib/navigation/ScreenItemContext.ts | 22 +
.../src/lib/navigation/ScreenNameContext.tsx | 13 +
.../lib/navigation/ScreenOptionsContext.ts | 46 ++
.../src/lib/navigation/StackNavigation.tsx | 201 +++++++++
.../navigation/StackScreenHeaderPortal.tsx | 19 +
.../src/lib/navigation/WrappedScreenItem.tsx | 143 +++++++
.../src/lib/navigation/__internal/hooks.ts | 55 +++
.../bottom-tab/BottomTabContext.tsx | 14 +
.../bottom-tab/CalculateTabBarOpacity.tsx | 41 ++
.../bottom-tab/TabBarPortal.ios.tsx | 34 ++
.../navigation/bottom-tab/TabBarPortal.tsx | 30 ++
.../lib/navigation/bottom-tab/TabRoot.ios.tsx | 69 +++
.../src/lib/navigation/bottom-tab/TabRoot.tsx | 48 +++
.../navigation/bottom-tab/TabScreen.ios.tsx | 106 +++++
.../lib/navigation/bottom-tab/TabScreen.tsx | 102 +++++
.../bottom-tab/TabScreenContext.tsx | 9 +
.../src/lib/navigation/bottom-tab/hooks.ts | 38 ++
.../src/lib/navigation/bottom-tab/shared.tsx | 40 ++
.../src/lib/navigation/bottom-tab/types.ts | 11 +
apps/mobile/src/lib/navigation/config.ts | 5 +
.../lib/navigation/debug/DebugButtonGroup.tsx | 159 +++++++
apps/mobile/src/lib/navigation/hooks.ts | 74 ++++
.../src/lib/navigation/sitemap/registry.ts | 41 ++
apps/mobile/src/lib/navigation/types.ts | 36 ++
apps/mobile/src/main.tsx | 77 +++-
.../mobile/src/modules/context-menu/entry.tsx | 17 +-
.../mobile/src/modules/context-menu/feeds.tsx | 9 +-
apps/mobile/src/modules/debug/index.tsx | 8 +-
.../src/modules/dialogs/AddFeedDialog.tsx | 23 +-
.../discover/RecommendationListItem.tsx | 16 +-
.../src/modules/discover/Recommendations.tsx | 9 +-
.../discover/search-tabs/SearchFeed.tsx | 9 +-
.../discover/search-tabs/SearchList.tsx | 9 +-
apps/mobile/src/modules/discover/search.tsx | 17 +-
.../entry-content/EntryReadHistory.tsx | 8 +-
.../src/modules/entry-content/EntryTitle.tsx | 108 +++--
.../entry-list/templates/EntryNormalItem.tsx | 12 +-
.../entry-list/templates/EntrySocialItem.tsx | 18 +-
.../mobile/src/modules/feed-drawer/drawer.tsx | 71 ----
.../src/modules/feed-drawer/feed-panel.tsx | 15 +-
apps/mobile/src/modules/feed/FollowFeed.tsx | 50 ++-
apps/mobile/src/modules/list/FollowList.tsx | 27 +-
apps/mobile/src/modules/login/email.tsx | 19 +-
apps/mobile/src/modules/login/index.tsx | 18 +-
.../modules/onboarding/step-preferences.tsx | 9 +-
.../src/modules/player/PlayerTabBar.tsx | 17 +-
apps/mobile/src/modules/player/control.tsx | 5 +-
.../modules/screen/TimelineSelectorList.tsx | 33 +-
.../screen/TimelineSelectorProvider.tsx | 34 +-
apps/mobile/src/modules/screen/action.tsx | 13 +-
.../src/modules/settings/SettingsList.tsx | 119 +++---
.../src/modules/settings/UserHeaderBanner.tsx | 10 +-
.../src/modules/settings/actions/constant.ts | 10 +-
apps/mobile/src/modules/settings/hooks.ts | 10 -
.../modules/settings/routes/2FASetting.tsx | 18 +-
.../src/modules/settings/routes/About.tsx | 2 +-
.../src/modules/settings/routes/Account.tsx | 10 +-
.../src/modules/settings/routes/Actions.tsx | 11 +-
.../modules/settings/routes/EditCondition.tsx | 19 +-
.../modules/settings/routes/EditProfile.tsx | 38 +-
.../settings/routes/EditRewriteRules.tsx | 15 +-
.../src/modules/settings/routes/EditRule.tsx | 23 +-
.../modules/settings/routes/EditWebhooks.tsx | 15 +-
.../src/modules/settings/routes/General.tsx | 3 +-
.../src/modules/settings/routes/Lists.tsx | 21 +-
.../modules/settings/routes/ManageList.tsx | 21 +-
.../src/modules/settings/routes/Privacy.tsx | 7 +-
.../src/modules/settings/routes/Profile.tsx | 11 +-
.../src/modules/settings/routes/index.tsx | 86 ----
apps/mobile/src/modules/settings/types.ts | 24 --
.../modules/subscription/CategoryGrouped.tsx | 8 +-
.../subscription/SubscriptionLists.tsx | 8 +-
.../src/modules/subscription/ViewTab.tsx | 165 --------
.../modules/subscription/items/InboxItem.tsx | 8 +-
.../items/ListSubscriptionItem.tsx | 8 +-
.../subscription/items/SubscriptionItem.tsx | 8 +-
apps/mobile/src/providers/index.tsx | 29 +-
.../mobile/src/screens/(headless)/_layout.tsx | 12 -
apps/mobile/src/screens/(headless)/debug.tsx | 39 +-
apps/mobile/src/screens/(headless)/search.tsx | 34 +-
apps/mobile/src/screens/(headless)/terms.tsx | 19 +-
.../mobile/src/screens/(headless)/webview.tsx | 76 ----
apps/mobile/src/screens/(modal)/2fa.tsx | 11 +-
apps/mobile/src/screens/(modal)/_layout.tsx | 86 ----
.../mobile/src/screens/(modal)/edit-email.tsx | 18 +-
apps/mobile/src/screens/(modal)/follow.tsx | 11 +-
.../src/screens/(modal)/forget-password.tsx | 10 +-
apps/mobile/src/screens/(modal)/list.tsx | 36 +-
apps/mobile/src/screens/(modal)/login.tsx | 10 +-
.../(modal)/onboarding/edit-profile.tsx | 2 +-
.../onboarding/select-reading-mode.tsx | 9 +-
apps/mobile/src/screens/(modal)/profile.tsx | 10 +-
.../src/screens/(modal)/rsshub-form.tsx | 69 +--
apps/mobile/src/screens/(modal)/sign-up.tsx | 9 +-
.../src/screens/(stack)/(tabs)/_layout.tsx | 96 -----
.../src/screens/(stack)/(tabs)/discover.tsx | 32 +-
.../src/screens/(stack)/(tabs)/index.tsx | 12 +-
.../src/screens/(stack)/(tabs)/settings.tsx | 127 ++----
.../screens/(stack)/(tabs)/subscriptions.tsx | 11 +
apps/mobile/src/screens/(stack)/_layout.tsx | 23 -
.../(stack)/entries/[entryId]/index.tsx | 19 +-
.../screens/(stack)/feeds/[feedId]/index.tsx | 9 +-
apps/mobile/src/screens/_layout.tsx | 102 -----
apps/mobile/src/screens/onboarding.tsx | 80 ++--
apps/mobile/src/screens/player.tsx | 81 ++--
apps/mobile/src/store/action/hooks.ts | 5 +-
apps/mobile/src/store/user/hooks.ts | 8 +-
apps/mobile/src/theme/navigation.ts | 25 --
patches/react-native-sheet-transitions.patch | 132 +++++-
pnpm-lock.yaml | 393 ++----------------
152 files changed, 3383 insertions(+), 2757 deletions(-)
create mode 100644 apps/mobile/native/ios/Modules/TabBar/TabBarModule.swift
create mode 100644 apps/mobile/native/ios/Modules/TabBar/TabBarPortalModule.swift
create mode 100644 apps/mobile/native/ios/Modules/TabBar/TabBarRootView.swift
create mode 100644 apps/mobile/native/ios/Modules/TabBar/TabScreenModule.swift
create mode 100644 apps/mobile/native/ios/Modules/TabBar/TabScreenView.swift
create mode 100644 apps/mobile/src/Analytics.tsx
create mode 100644 apps/mobile/src/App.tsx
create mode 100644 apps/mobile/src/components/common/ErrorBoundary.tsx
delete mode 100644 apps/mobile/src/components/common/HeaderTitleExtra.tsx
create mode 100644 apps/mobile/src/components/common/Link.tsx
create mode 100644 apps/mobile/src/components/layouts/header/FakeNativeHeaderTitle.tsx
rename apps/mobile/src/components/{common/ModalSharedComponents.tsx => layouts/header/HeaderElements.tsx} (54%)
delete mode 100644 apps/mobile/src/components/layouts/header/ModalHeader.tsx
create mode 100644 apps/mobile/src/components/layouts/tabbar/BottomTabProvider.tsx
delete mode 100644 apps/mobile/src/components/layouts/tabbar/TabClient.tsx
delete mode 100644 apps/mobile/src/components/layouts/views/NavigationContext.tsx
delete mode 100644 apps/mobile/src/components/ui/portal/Portal.tsx
delete mode 100644 apps/mobile/src/components/ui/portal/PortalContext.tsx
delete mode 100644 apps/mobile/src/components/ui/portal/PortalHost.tsx
delete mode 100644 apps/mobile/src/components/ui/portal/PortalManager.tsx
delete mode 100644 apps/mobile/src/components/ui/portal/index.tsx
delete mode 100644 apps/mobile/src/components/ui/portal/type.ts
delete mode 100644 apps/mobile/src/hooks/useIsRouteOnlyOne.ts
rename apps/mobile/src/{components/layouts/tabbar/contexts => lib/navigation}/AttachNavigationScrollViewContext.tsx (100%)
create mode 100644 apps/mobile/src/lib/navigation/ChainNavigationContext.tsx
create mode 100644 apps/mobile/src/lib/navigation/GroupedNavigationRouteContext.ts
create mode 100644 apps/mobile/src/lib/navigation/Navigation.ts
create mode 100644 apps/mobile/src/lib/navigation/NavigationInstanceContext.ts
create mode 100644 apps/mobile/src/lib/navigation/NavigationLink.tsx
create mode 100644 apps/mobile/src/lib/navigation/ScreenItemContext.ts
create mode 100644 apps/mobile/src/lib/navigation/ScreenNameContext.tsx
create mode 100644 apps/mobile/src/lib/navigation/ScreenOptionsContext.ts
create mode 100644 apps/mobile/src/lib/navigation/StackNavigation.tsx
create mode 100644 apps/mobile/src/lib/navigation/StackScreenHeaderPortal.tsx
create mode 100644 apps/mobile/src/lib/navigation/WrappedScreenItem.tsx
create mode 100644 apps/mobile/src/lib/navigation/__internal/hooks.ts
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/BottomTabContext.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/CalculateTabBarOpacity.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.ios.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/TabRoot.ios.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/TabRoot.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/TabScreen.ios.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/TabScreen.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/TabScreenContext.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/hooks.ts
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/shared.tsx
create mode 100644 apps/mobile/src/lib/navigation/bottom-tab/types.ts
create mode 100644 apps/mobile/src/lib/navigation/config.ts
create mode 100644 apps/mobile/src/lib/navigation/debug/DebugButtonGroup.tsx
create mode 100644 apps/mobile/src/lib/navigation/hooks.ts
create mode 100644 apps/mobile/src/lib/navigation/sitemap/registry.ts
create mode 100644 apps/mobile/src/lib/navigation/types.ts
delete mode 100644 apps/mobile/src/modules/feed-drawer/drawer.tsx
delete mode 100644 apps/mobile/src/modules/settings/hooks.ts
delete mode 100644 apps/mobile/src/modules/settings/routes/index.tsx
delete mode 100644 apps/mobile/src/modules/settings/types.ts
delete mode 100644 apps/mobile/src/modules/subscription/ViewTab.tsx
delete mode 100644 apps/mobile/src/screens/(headless)/_layout.tsx
delete mode 100644 apps/mobile/src/screens/(headless)/webview.tsx
delete mode 100644 apps/mobile/src/screens/(modal)/_layout.tsx
delete mode 100644 apps/mobile/src/screens/(stack)/(tabs)/_layout.tsx
delete mode 100644 apps/mobile/src/screens/(stack)/_layout.tsx
delete mode 100644 apps/mobile/src/screens/_layout.tsx
delete mode 100644 apps/mobile/src/theme/navigation.ts
diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml
index bc0e1ea981..891918c269 100644
--- a/.github/dependabot.yaml
+++ b/.github/dependabot.yaml
@@ -41,6 +41,8 @@ updates:
# electron 35
- dependency-name: electron
versions: [">=35.0.0"]
+ - dependency-name: react-native-sheet-transitions
+ versions: [">0.1.2"]
open-pull-requests-limit: 100
groups:
minor:
diff --git a/apps/mobile/app.config.ts b/apps/mobile/app.config.ts
index 5911ac73eb..fcf6ca2e00 100644
--- a/apps/mobile/app.config.ts
+++ b/apps/mobile/app.config.ts
@@ -53,11 +53,11 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
},
googleServicesFile: "./build/google-services.json",
},
- web: {
- bundler: "metro",
- output: "static",
- favicon: iconPath,
- },
+ // web: {
+ // bundler: "metro",
+ // output: "static",
+ // favicon: iconPath,
+ // },
plugins: [
[
"expo-document-picker",
@@ -66,12 +66,7 @@ export default ({ config }: ConfigContext): ExpoConfig => ({
},
],
"expo-localization",
- [
- "expo-router",
- {
- root: "./src/screens",
- },
- ],
+
[
"expo-splash-screen",
{
diff --git a/apps/mobile/native/expo-module.config.json b/apps/mobile/native/expo-module.config.json
index 3e4942bda2..1e2f2b7862 100644
--- a/apps/mobile/native/expo-module.config.json
+++ b/apps/mobile/native/expo-module.config.json
@@ -7,7 +7,10 @@
"ToasterModule",
"AppleIntelligenceGlowEffectModule",
"FollowNative.GaleriaModule",
- "GaleriaAccessoryModule"
+ "GaleriaAccessoryModule",
+ "TabBarModule",
+ "TabScreenModule",
+ "TabBarPortalModule"
]
},
"android": {
diff --git a/apps/mobile/native/ios/FollowNative.podspec b/apps/mobile/native/ios/FollowNative.podspec
index 5b730fda04..e546278312 100644
--- a/apps/mobile/native/ios/FollowNative.podspec
+++ b/apps/mobile/native/ios/FollowNative.podspec
@@ -1,4 +1,5 @@
require 'json'
+new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
@@ -25,6 +26,7 @@ Pod::Spec.new do |s|
# Swift/Objective-C compatibility
s.pod_target_xcconfig = {
'DEFINES_MODULE' => 'YES',
+ 'OTHER_SWIFT_FLAGS' => "$(inherited) #{new_arch_enabled ? '-DRCT_NEW_ARCH_ENABLED' : ''}",
}
s.source_files = "**/*.{h,m,mm,swift,hpp,cpp,js}"
diff --git a/apps/mobile/native/ios/Modules/TabBar/TabBarModule.swift b/apps/mobile/native/ios/Modules/TabBar/TabBarModule.swift
new file mode 100644
index 0000000000..597ed9b02f
--- /dev/null
+++ b/apps/mobile/native/ios/Modules/TabBar/TabBarModule.swift
@@ -0,0 +1,37 @@
+//
+// TabBarModule.swift
+// FollowNative
+//
+// Created by Innei on 2025/3/16.
+//
+
+import ExpoModulesCore
+
+public class TabBarModule: Module {
+
+ public func definition() -> ModuleDefinition {
+ Name("TabBarRoot")
+
+ Function("switchTab") { [weak self] (reactTag: Int, index: Int) in
+ DispatchQueue.main.async {
+ guard let bridge = self?.appContext?.reactBridge else {
+ return
+ }
+
+ if let sourceView = bridge.uiManager.view(forReactTag: NSNumber(value: reactTag)) as! TabBarRootView?
+
+ {
+ sourceView.switchToTab(index: index)
+ }
+ }
+ }
+
+ View(TabBarRootView.self) {
+ Prop("selectedIndex") { (view, index: Int) in
+ view.switchToTab(index: index)
+ }
+
+ Events("onTabIndexChange")
+ }
+ }
+}
diff --git a/apps/mobile/native/ios/Modules/TabBar/TabBarPortalModule.swift b/apps/mobile/native/ios/Modules/TabBar/TabBarPortalModule.swift
new file mode 100644
index 0000000000..0bdf659bc3
--- /dev/null
+++ b/apps/mobile/native/ios/Modules/TabBar/TabBarPortalModule.swift
@@ -0,0 +1,21 @@
+//
+// TabBarPortalModule.swift
+// FollowNative
+//
+// Created by Innei on 2025/3/17.
+//
+
+import ExpoModulesCore
+import UIKit
+
+public class TabBarPortalModule: Module {
+ public func definition() -> ModuleDefinition {
+ Name("TabBarPortal")
+
+ View(TabBarPortalView.self) {}
+ }
+}
+
+class TabBarPortalView: ExpoView {
+
+}
diff --git a/apps/mobile/native/ios/Modules/TabBar/TabBarRootView.swift b/apps/mobile/native/ios/Modules/TabBar/TabBarRootView.swift
new file mode 100644
index 0000000000..555294eb18
--- /dev/null
+++ b/apps/mobile/native/ios/Modules/TabBar/TabBarRootView.swift
@@ -0,0 +1,126 @@
+//
+// TabBarRootView.swift
+// FollowNative
+//
+// Created by Innei on 2025/3/16.
+//
+
+import ExpoModulesCore
+import Foundation
+import SnapKit
+
+class TabBarRootView: ExpoView {
+ private let tabBarController = UITabBarController()
+ private let vc = UIViewController()
+ private var tabViewControllers: [UIViewController] = []
+
+ private let onTabIndexChange = EventDispatcher()
+
+ required init(appContext: AppContext? = nil) {
+ super.init(appContext: appContext)
+
+ tabBarController.tabBar.isHidden = true
+ tabBarController.delegate = self
+ addSubview(vc.view)
+ vc.addChild(tabBarController)
+ vc.view!.snp.makeConstraints { make in
+ make.edges.equalToSuperview()
+ }
+ vc.view.addSubview(tabBarController.view)
+ tabBarController.didMove(toParent: vc)
+
+ }
+
+ #if RCT_NEW_ARCH_ENABLED
+
+ override func mountChildComponentView(_ childComponentView: UIView, index: Int) {
+ self.insertSubview(childComponentView, at: index)
+ }
+
+ override func unmountChildComponentView(_ childComponentView: UIView, index: Int) {
+ self.willRemoveSubview(childComponentView)
+ // gestureRecognizers?.removeAll()
+
+ }
+ #endif
+
+ public func switchToTab(index: Int) {
+ let beforeIndex = tabBarController.selectedIndex
+ if beforeIndex == index {
+ return
+ }
+
+ if tabViewControllers.count < beforeIndex || tabViewControllers.count < index {
+ return
+ }
+ if let fromView = tabViewControllers[beforeIndex].view,
+ let toView = tabViewControllers[index].view
+ {
+ if fromView != toView {
+ UIView.transition(
+ from: fromView,
+ to: toView,
+ duration: 0.1,
+ options: [.transitionCrossDissolve, .preferredFramesPerSecond60],
+ completion: nil)
+ }
+ }
+
+ tabBarController.selectedIndex = index
+ if let selectedViewController = tabBarController.selectedViewController {
+ tabBarController(tabBarController, didSelect: selectedViewController)
+ }
+
+ }
+
+ override func insertSubview(_ subview: UIView, at atIndex: Int) {
+
+ if let tabScreenView = subview as? TabScreenView {
+
+ let screenVC = UIViewController()
+ screenVC.view = tabScreenView
+ tabViewControllers.append(screenVC)
+ tabBarController.viewControllers = tabViewControllers
+ tabBarController.didMove(toParent: vc)
+ }
+
+ if let tabBarPortalView = subview as? TabBarPortalView {
+ let tabBarView = self.tabBarController.view!
+ tabBarView.addSubview(tabBarPortalView)
+
+ }
+ }
+
+ override func willRemoveSubview(_ subview: UIView) {
+ if let tabScreenView = subview as? TabScreenView {
+ tabViewControllers.removeAll { viewController in
+ return viewController.view == tabScreenView
+ }
+
+ tabBarController.viewControllers = tabViewControllers
+ tabBarController.didMove(toParent: vc)
+ }
+ }
+
+}
+
+// MARK: - UITabBarControllerDelegate
+extension TabBarRootView: UITabBarControllerDelegate {
+
+ func tabBarController(
+ _ tabBarController: UITabBarController, didSelect viewController: UIViewController
+ ) {
+ onTabIndexChange([
+ "index": tabBarController.selectedIndex
+ ])
+ }
+
+ // func tabBarController(
+ // _ tabBarController: UITabBarController,
+ // animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController
+ // ) -> (any UIViewControllerAnimatedTransitioning)? {
+
+ // return nil
+ // }
+
+}
diff --git a/apps/mobile/native/ios/Modules/TabBar/TabScreenModule.swift b/apps/mobile/native/ios/Modules/TabBar/TabScreenModule.swift
new file mode 100644
index 0000000000..d78eae0b69
--- /dev/null
+++ b/apps/mobile/native/ios/Modules/TabBar/TabScreenModule.swift
@@ -0,0 +1,16 @@
+//
+// TabScreenModule.swift
+// FollowNative
+//
+// Created by Innei on 2025/3/16.
+//
+
+import ExpoModulesCore
+
+public class TabScreenModule: Module {
+
+ public func definition() -> ModuleDefinition {
+ Name("TabScreen")
+ View(TabScreenView.self) {}
+ }
+}
diff --git a/apps/mobile/native/ios/Modules/TabBar/TabScreenView.swift b/apps/mobile/native/ios/Modules/TabBar/TabScreenView.swift
new file mode 100644
index 0000000000..0ea70ab791
--- /dev/null
+++ b/apps/mobile/native/ios/Modules/TabBar/TabScreenView.swift
@@ -0,0 +1,16 @@
+//
+// TabScreenView.swift
+// FollowNative
+//
+// Created by Innei on 2025/3/16.
+//
+
+import ExpoModulesCore
+import UIKit
+
+class TabScreenView: ExpoView {
+ required init(appContext: AppContext? = nil) {
+ super.init(appContext: appContext)
+ }
+
+}
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index c5659d3cd1..ae225db75b 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -11,6 +11,7 @@
"ios:device": "expo run:ios --device",
"lint": "expo lint",
"start": "expo start --dev-client",
+ "start:clean": "expo start --dev-client --clear",
"typecheck": "tsc --noEmit",
"web": "expo start --web"
},
@@ -24,6 +25,7 @@
"@follow/models": "workspace:*",
"@follow/shared": "workspace:*",
"@follow/utils": "workspace:*",
+ "@gorhom/portal": "1.0.14",
"@hookform/resolvers": "4.1.3",
"@react-native-community/image-editor": "4.3.0",
"@react-native-firebase/analytics": "21.12.0",
@@ -31,9 +33,6 @@
"@react-native-firebase/app-check": "21.12.0",
"@react-native-firebase/crashlytics": "21.12.0",
"@react-native-picker/picker": "2.11.0",
- "@react-navigation/bottom-tabs": "7.2.1",
- "@react-navigation/drawer": "7.1.2",
- "@react-navigation/native": "7.0.15",
"@shopify/flash-list": "1.7.3",
"@tanstack/query-sync-storage-persister": "5.68.0",
"@tanstack/react-query": "5.68.0",
@@ -62,7 +61,6 @@
"expo-linking": "7.0.5",
"expo-localization": "16.0.1",
"expo-media-library": "17.0.6",
- "expo-router": "4.0.18",
"expo-secure-store": "14.0.1",
"expo-sharing": "13.0.1",
"expo-splash-screen": "0.29.22",
@@ -82,6 +80,7 @@
"qrcode": "1.5.4",
"react": "18.3.1",
"react-dom": "18.3.1",
+ "react-error-boundary": "5.0.0",
"react-hook-form": "7.54.2",
"react-native": "0.77.1",
"react-native-awesome-slider": "2.9.0",
@@ -101,7 +100,7 @@
"react-native-sheet-transitions": "0.1.2",
"react-native-svg": "15.11.2",
"react-native-track-player": "4.1.1",
- "react-native-uikit-colors": "0.3.8",
+ "react-native-uikit-colors": "0.3.9",
"react-native-video": "6.10.2",
"react-native-volume-manager": "2.0.8",
"react-native-web": "0.19.13",
diff --git a/apps/mobile/src/Analytics.tsx b/apps/mobile/src/Analytics.tsx
new file mode 100644
index 0000000000..34960d490e
--- /dev/null
+++ b/apps/mobile/src/Analytics.tsx
@@ -0,0 +1,23 @@
+import analytics from "@react-native-firebase/analytics"
+import { useEffect } from "react"
+
+import { Navigation } from "./lib/navigation/Navigation"
+
+export const Analytics = () => {
+ useEffect(() => {
+ return Navigation.rootNavigation.on("didAppear", ({ screenId }) => {
+ const logScreenView = async () => {
+ try {
+ await analytics().logScreenView({
+ screen_name: screenId,
+ screen_class: screenId,
+ })
+ } catch (err: any) {
+ console.warn(`[Error] logScreenView: ${err}`)
+ }
+ }
+ logScreenView()
+ })
+ }, [])
+ return null
+}
diff --git a/apps/mobile/src/App.tsx b/apps/mobile/src/App.tsx
new file mode 100644
index 0000000000..602691b805
--- /dev/null
+++ b/apps/mobile/src/App.tsx
@@ -0,0 +1,41 @@
+import { View } from "react-native"
+import Animated, { interpolate, useAnimatedStyle } from "react-native-reanimated"
+import { useSheet } from "react-native-sheet-transitions"
+
+import { FullWindowOverlay } from "./components/common/FullWindowOverlay"
+import { useIntentHandler } from "./hooks/useIntentHandler"
+import { DebugButton, EnvProfileIndicator } from "./modules/debug"
+import { useOnboarding, usePrefetchSessionUser } from "./store/user/hooks"
+
+export function App({ children }: { children: React.ReactNode }) {
+ useIntentHandler()
+ useOnboarding()
+ const { scale } = useSheet()
+
+ const style = useAnimatedStyle(() => ({
+ borderRadius: interpolate(scale.value, [0.8, 0.99, 1], [0, 50, 0]),
+ transform: [
+ {
+ scale: scale.value,
+ },
+ ],
+ }))
+ return (
+
+
+
+
+ {children}
+
+ {__DEV__ && }
+
+
+
+
+ )
+}
+
+const Session = () => {
+ usePrefetchSessionUser()
+ return null
+}
diff --git a/apps/mobile/src/components/common/ErrorBoundary.tsx b/apps/mobile/src/components/common/ErrorBoundary.tsx
new file mode 100644
index 0000000000..7e0626b798
--- /dev/null
+++ b/apps/mobile/src/components/common/ErrorBoundary.tsx
@@ -0,0 +1,18 @@
+import { ErrorBoundary as ReactErrorBoundary } from "react-error-boundary"
+import { Text, View } from "react-native"
+
+const ErrorBoundaryFallback = ({ error }: { error: Error }) => {
+ return (
+
+ {error.message}
+
+ )
+}
+
+export const ErrorBoundary = ({ children }: { children: React.ReactNode }) => {
+ return (
+ }>
+ {children}
+
+ )
+}
diff --git a/apps/mobile/src/components/common/HeaderTitleExtra.tsx b/apps/mobile/src/components/common/HeaderTitleExtra.tsx
deleted file mode 100644
index be22ff0dec..0000000000
--- a/apps/mobile/src/components/common/HeaderTitleExtra.tsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import { cn } from "@follow/utils"
-import { useTheme } from "@react-navigation/native"
-import type { StyleProp, TextProps, TextStyle } from "react-native"
-import { Animated, StyleSheet, Text, View } from "react-native"
-
-type Props = Omit & {
- tintColor?: string
- children?: string
- style?: Animated.WithAnimatedValue>
- subText?: string
- subTextStyle?: StyleProp
- subTextClassName?: string
-}
-
-export function HeaderTitleExtra({
- tintColor,
- style,
- subText,
- subTextStyle,
- subTextClassName,
- ...rest
-}: Props) {
- const { fonts } = useTheme()
-
- return (
-
-
- {!!subText && (
-
- {subText}
-
- )}
-
- )
-}
-
-const styles = StyleSheet.create({
- title: { fontSize: 17 },
-})
diff --git a/apps/mobile/src/components/common/Link.tsx b/apps/mobile/src/components/common/Link.tsx
new file mode 100644
index 0000000000..93c516a0c8
--- /dev/null
+++ b/apps/mobile/src/components/common/Link.tsx
@@ -0,0 +1,24 @@
+import type { PropsWithChildren } from "react"
+import type { TextProps } from "react-native"
+import { Linking, Text } from "react-native"
+
+export const Link = ({
+ href,
+ children,
+ ...props
+}: PropsWithChildren<{ href: string } & TextProps>) => {
+ return (
+ {
+ const canOpen = await Linking.canOpenURL(href)
+ if (canOpen) {
+ Linking.openURL(href)
+ }
+ }}
+ {...props}
+ >
+ {children}
+
+ )
+}
diff --git a/apps/mobile/src/components/layouts/header/FakeNativeHeaderTitle.tsx b/apps/mobile/src/components/layouts/header/FakeNativeHeaderTitle.tsx
new file mode 100644
index 0000000000..2fd94b5da7
--- /dev/null
+++ b/apps/mobile/src/components/layouts/header/FakeNativeHeaderTitle.tsx
@@ -0,0 +1,27 @@
+import type { StyleProp, TextProps, TextStyle } from "react-native"
+import { Animated, StyleSheet } from "react-native"
+
+type Props = Omit & {
+ tintColor?: string
+ children?: string
+ style?: Animated.WithAnimatedValue>
+}
+
+export function FakeNativeHeaderTitle({ style, ...rest }: Props) {
+ return (
+
+ )
+}
+
+const styles = StyleSheet.create({
+ title: {
+ fontSize: 17,
+ },
+})
diff --git a/apps/mobile/src/components/common/ModalSharedComponents.tsx b/apps/mobile/src/components/layouts/header/HeaderElements.tsx
similarity index 54%
rename from apps/mobile/src/components/common/ModalSharedComponents.tsx
rename to apps/mobile/src/components/layouts/header/HeaderElements.tsx
index 675d805abb..7e59b2cb25 100644
--- a/apps/mobile/src/components/common/ModalSharedComponents.tsx
+++ b/apps/mobile/src/components/layouts/header/HeaderElements.tsx
@@ -1,38 +1,39 @@
import { withOpacity } from "@follow/utils"
-import { router } from "expo-router"
-import { useCallback, useMemo } from "react"
-import { TouchableOpacity } from "react-native"
+import { useCallback } from "react"
+import { TouchableOpacity, View } from "react-native"
-import { useIsRouteOnlyOne } from "@/src/hooks/useIsRouteOnlyOne"
import { CheckLineIcon } from "@/src/icons/check_line"
import { CloseCuteReIcon } from "@/src/icons/close_cute_re"
import { MingcuteLeftLineIcon } from "@/src/icons/mingcute_left_line"
+import {
+ useCanDismiss,
+ useIsSingleRouteInGroup,
+ useNavigation,
+ useScreenIsInSheetModal,
+} from "@/src/lib/navigation/hooks"
+import { StackScreenHeaderPortal } from "@/src/lib/navigation/StackScreenHeaderPortal"
import { useColor } from "@/src/theme/colors"
-import { RotateableLoading } from "./RotateableLoading"
+import { RotateableLoading } from "../../common/RotateableLoading"
-export const ModalHeaderCloseButton = () => {
- return
-}
-
-const ModalHeaderCloseButtonImpl = () => {
+export const HeaderCloseButton = () => {
const label = useColor("label")
- const routeOnlyOne = useIsRouteOnlyOne()
- const memoedRouteOnlyOne = useMemo(() => routeOnlyOne, [])
-
+ const navigation = useNavigation()
+ const canDismiss = useCanDismiss()
+ const isInModal = useScreenIsInSheetModal()
+ const isSingleRouteInGroup = useIsSingleRouteInGroup()
const handlePress = useCallback(() => {
- if (router.canDismiss()) {
- router.dismiss()
+ if (canDismiss) {
+ navigation.dismiss()
} else {
- // If we can't dismiss, redirect to the root route
- router.replace("/")
+ navigation.back()
}
- }, [])
+ }, [canDismiss, navigation])
return (
- {memoedRouteOnlyOne ? (
+ {isInModal && isSingleRouteInGroup ? (
) : (
@@ -46,15 +47,8 @@ export interface ModalHeaderSubmitButtonProps {
onPress: () => void
isLoading?: boolean
}
-export const ModalHeaderSubmitButton = ({
- isValid,
- onPress,
- isLoading,
-}: ModalHeaderSubmitButtonProps) => {
- return
-}
-const ModalHeaderShubmitButtonImpl = ({
+export const HeaderSubmitButton = ({
isValid,
onPress,
isLoading,
@@ -71,3 +65,13 @@ const ModalHeaderShubmitButtonImpl = ({
)
}
+
+export const HeaderCloseOnly = () => {
+ return (
+
+
+
+
+
+ )
+}
diff --git a/apps/mobile/src/components/layouts/header/ModalHeader.tsx b/apps/mobile/src/components/layouts/header/ModalHeader.tsx
deleted file mode 100644
index 1faa9bf37d..0000000000
--- a/apps/mobile/src/components/layouts/header/ModalHeader.tsx
+++ /dev/null
@@ -1,105 +0,0 @@
-import { useTypeScriptHappyCallback } from "@follow/hooks/exports"
-import type { NativeStackNavigationOptions } from "@react-navigation/native-stack"
-import { Stack } from "expo-router"
-import type { FC } from "react"
-import { memo } from "react"
-import { StyleSheet, View } from "react-native"
-import type { SharedValue } from "react-native-reanimated"
-import Animated, { useAnimatedStyle } from "react-native-reanimated"
-import { useSafeAreaFrame, useSafeAreaInsets } from "react-native-safe-area-context"
-import { useColor } from "react-native-uikit-colors"
-
-import { HeaderTitleExtra } from "../../common/HeaderTitleExtra"
-import { ModalHeaderCloseButton } from "../../common/ModalSharedComponents"
-import { ThemedBlurView } from "../../common/ThemedBlurView"
-import { useModalScrollViewContext } from "../contexts/ModalScrollViewContext"
-import { getDefaultHeaderHeight } from "../utils"
-
-interface ModalHeaderProps
- extends Omit {
- headerLeft?: React.ReactNode
- headerRight?: React.ReactNode
- headerTitle?: string
- headerSubtitle?: string
-}
-
-export const ModalHeader: FC = (props) => {
- const { animatedY } = useModalScrollViewContext()
-
- return (
- props.headerLeft ?? ,
- headerRight: () => props.headerRight,
-
- header: useTypeScriptHappyCallback(
- ({ options }) => (
-
- ),
- [animatedY, props.headerSubtitle, props.headerTitle],
- ),
- }}
- />
- )
-}
-
-interface HeaderProps {
- headerTitle?: string
- headerLeft?: React.ReactNode
- headerRight?: React.ReactNode
- animatedY: SharedValue
- headerSubtitle?: string
-}
-
-const InternalBlurEffectWithBottomBorder = (props: { animatedY: SharedValue }) => {
- const border = useColor("opaqueSeparator")
- const animatedStyle = useAnimatedStyle(() => {
- return {
- opacity: Math.max(0, Math.min(1, props.animatedY.value / 10)),
- borderBottomWidth: StyleSheet.hairlineWidth,
- borderBottomColor: border,
- }
- })
- return (
-
-
-
- )
-}
-
-const Header: FC = memo(
- ({ headerTitle, headerLeft, headerRight, headerSubtitle, animatedY }) => {
- const frame = useSafeAreaFrame()
- const insets = useSafeAreaInsets()
- const height = getDefaultHeaderHeight(frame, true, insets.top)
-
- return (
-
-
- {/* Grid */}
-
- {/* Left actions */}
- {headerLeft}
-
- {/* Title */}
-
- {/* Title */}
- {headerTitle}
-
-
- {/* Right actions */}
- {headerRight}
-
-
- )
- },
-)
diff --git a/apps/mobile/src/components/layouts/header/NavigationHeader.tsx b/apps/mobile/src/components/layouts/header/NavigationHeader.tsx
index 0ba2780ade..c438749f17 100644
--- a/apps/mobile/src/components/layouts/header/NavigationHeader.tsx
+++ b/apps/mobile/src/components/layouts/header/NavigationHeader.tsx
@@ -1,12 +1,11 @@
import { cn } from "@follow/utils"
-import { HeaderTitle } from "@react-navigation/elements"
-import { router, Stack, useNavigation } from "expo-router"
import type { FC, PropsWithChildren, ReactNode } from "react"
import { createElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react"
import type { LayoutChangeEvent } from "react-native"
import { StyleSheet, TouchableOpacity, View } from "react-native"
import type { AnimatedProps } from "react-native-reanimated"
import Animated, {
+ useAnimatedReaction,
useAnimatedRef,
useAnimatedStyle,
useSharedValue,
@@ -14,26 +13,34 @@ import Animated, {
} from "react-native-reanimated"
import type { DefaultStyle } from "react-native-reanimated/lib/typescript/hook/commonTypes"
import { useSafeAreaFrame, useSafeAreaInsets } from "react-native-safe-area-context"
-import type { NativeStackNavigationOptions } from "react-native-screens/lib/typescript/native-stack/types"
import type { ViewProps } from "react-native-svg/lib/typescript/fabric/utils"
import { useColor } from "react-native-uikit-colors"
+import { CloseCuteReIcon } from "@/src/icons/close_cute_re"
import { MingcuteLeftLineIcon } from "@/src/icons/mingcute_left_line"
+import {
+ useCanBack,
+ useCanDismiss,
+ useNavigation,
+ useScreenIsInSheetModal,
+} from "@/src/lib/navigation/hooks"
+import { ScreenItemContext } from "@/src/lib/navigation/ScreenItemContext"
import { ThemedBlurView } from "../../common/ThemedBlurView"
import { getDefaultHeaderHeight } from "../utils"
-import { NavigationContext } from "../views/NavigationContext"
import { SetNavigationHeaderHeightContext } from "../views/NavigationHeaderContext"
+import { FakeNativeHeaderTitle } from "./FakeNativeHeaderTitle"
+interface NavigationHeaderButtonProps {
+ canGoBack: boolean
+ canDismiss: boolean
+ modal?: boolean
+}
export interface NavigationHeaderRawProps {
- headerLeft?: FC<{
- canGoBack: boolean
- }>
- headerTitle?: FC> | ReactNode
+ headerLeft?: FC
+ headerRight?: FC
+ headerTitle?: FC> | ReactNode
headerTitleAbsolute?: boolean
- headerRight?: FC<{
- canGoBack: boolean
- }>
title?: string
@@ -63,9 +70,10 @@ const useHideableBottom = (
})
}, [hideableBottomRef, largeHeaderHeight, originalDefaultHeaderHeight])
- const { scrollY } = useContext(NavigationContext)!
- useEffect(() => {
- const id = scrollY.addListener(({ value }) => {
+ const { reAnimatedScrollY } = useContext(ScreenItemContext)!
+ useAnimatedReaction(
+ () => reAnimatedScrollY.value,
+ (value) => {
if (!enable) {
return
}
@@ -80,12 +88,8 @@ const useHideableBottom = (
largeHeaderHeight.value = withTiming(largeDefaultHeaderHeight)
}
lastScrollY.current = value
- })
-
- return () => {
- scrollY.removeListener(id)
- }
- }, [enable, largeHeaderHeight, originalDefaultHeaderHeight, scrollY])
+ },
+ )
const layoutHeightOnceRef = useRef(false)
const onLayout = useCallback(
@@ -115,10 +119,26 @@ const useHideableBottom = (
onLayout,
}
}
-interface NavigationHeaderProps
+export interface InternalNavigationHeaderProps
extends Omit, "children">,
- NavigationHeaderRawProps,
- PropsWithChildren {}
+ PropsWithChildren {
+ headerLeft?:
+ | FC<{
+ canGoBack: boolean
+ }>
+ | ReactNode
+ headerRight?:
+ | FC<{
+ canGoBack: boolean
+ }>
+ | ReactNode
+ title?: string
+
+ hideableBottom?: ReactNode
+ hideableBottomHeight?: number
+ headerTitleAbsolute?: boolean
+ headerTitle?: FC> | ReactNode
+}
const blurThreshold = 0
const titlebarPaddingHorizontal = 8
@@ -130,36 +150,41 @@ export const InternalNavigationHeader = ({
headerRight,
title,
headerTitle: customHeaderTitle,
- modal = false,
+
hideableBottom,
hideableBottomHeight,
headerTitleAbsolute,
...rest
-}: NavigationHeaderProps) => {
+}: InternalNavigationHeaderProps) => {
const insets = useSafeAreaInsets()
const frame = useSafeAreaFrame()
+
+ const sheetModal = useScreenIsInSheetModal()
const defaultHeight = useMemo(
- () => getDefaultHeaderHeight(frame, modal, modal ? 0 : insets.top),
- [frame, insets.top, modal],
+ () => getDefaultHeaderHeight(frame, sheetModal, sheetModal ? 0 : insets.top),
+ [frame, insets.top, sheetModal],
)
const border = useColor("opaqueSeparator")
const opacityAnimated = useSharedValue(0)
- const { scrollY } = useContext(NavigationContext)!
+ const { reAnimatedScrollY } = useContext(ScreenItemContext)!
const setHeaderHeight = useContext(SetNavigationHeaderHeightContext)
- useEffect(() => {
- const handler = ({ value }: { value: number }) => {
+ useAnimatedReaction(
+ () => reAnimatedScrollY.value,
+ (value) => {
opacityAnimated.value = Math.max(0, Math.min(1, (value + blurThreshold) / 10))
- }
- const id = scrollY.addListener(handler)
+ },
+ )
- handler({ value: (scrollY as any)._value })
- return () => {
- scrollY.removeListener(id)
- }
- }, [opacityAnimated, scrollY])
+ const canBack = useCanBack()
+ const canDismiss = useCanDismiss()
+
+ useEffect(() => {
+ const { value } = reAnimatedScrollY
+ opacityAnimated.value = Math.max(0, Math.min(1, (value + blurThreshold) / 10))
+ }, [opacityAnimated, reAnimatedScrollY])
const blurStyle = useAnimatedStyle(() => ({
opacity: opacityAnimated.value,
@@ -175,7 +200,7 @@ export const InternalNavigationHeader = ({
)
const rootTitleBarStyle = useAnimatedStyle(() => {
const styles = {
- paddingTop: modal ? 0 : insets.top,
+ paddingTop: sheetModal ? 0 : insets.top,
position: "relative",
overflow: "hidden",
} satisfies DefaultStyle
@@ -185,24 +210,16 @@ export const InternalNavigationHeader = ({
return styles
})
- const navigation = useNavigation()
- const canBack = navigation.canGoBack()
- useEffect(() => {
- if (title) {
- navigation.setOptions({ title })
- }
- }, [navigation, title])
-
const HeaderLeft = headerLeft ?? DefaultHeaderBackButton
- const renderTitle = customHeaderTitle ?? HeaderTitle
+ const renderTitle = customHeaderTitle ?? FakeNativeHeaderTitle
const headerTitle =
typeof renderTitle !== "function"
? renderTitle
: createElement(renderTitle, {
children: title,
})
- const RightButton = headerRight ?? Noop
+ const RightButton = headerRight ?? (Noop as FC)
const animatedRef = useAnimatedRef()
useEffect(() => {
@@ -235,22 +252,23 @@ export const InternalNavigationHeader = ({
style={{
marginLeft: insets.left,
marginRight: insets.right,
- height: !modal ? defaultHeight - insets.top : defaultHeight,
+ height: !sheetModal ? defaultHeight - insets.top : defaultHeight,
paddingHorizontal: titlebarPaddingHorizontal,
}}
pointerEvents={"box-none"}
>
{/* Left */}
-
-
+
+ {typeof HeaderLeft === "function" ? (
+
+ ) : (
+ HeaderLeft
+ )}
{/* Center */}
-
+ {typeof RightButton === "function" ? (
+
+ ) : (
+ RightButton
+ )}
{
+export const DefaultHeaderBackButton = ({ canGoBack, canDismiss }: NavigationHeaderButtonProps) => {
const label = useColor("label")
- if (!canGoBack) return null
+ const navigation = useNavigation()
+ if (!canGoBack && !canDismiss) return null
return (
- router.back()}>
-
+ {
+ if (canGoBack) {
+ navigation.back()
+ } else if (canDismiss) {
+ navigation.dismiss()
+ }
+ }}
+ >
+ {canGoBack ? (
+
+ ) : (
+
+ )}
)
}
@@ -316,24 +351,3 @@ export const UINavigationHeaderActionButton = ({
)
}
const Noop = () => null
-
-/**
- * NativeNavigationHeader wrapped react navigation native-stack is universal in modal and stack, but there are significant limitations in UI customization.
- */
-export interface NativeNavigationHeaderProps
- extends Pick {}
-export const NativeNavigationHeader: FC = (props) => {
- const navigation = useNavigation()
- return (
- ,
- headerTransparent: true,
- headerBlurEffect: "systemChromeMaterial",
- ...props,
- }}
- />
- )
-}
diff --git a/apps/mobile/src/components/layouts/tabbar/BottomTabProvider.tsx b/apps/mobile/src/components/layouts/tabbar/BottomTabProvider.tsx
new file mode 100644
index 0000000000..484c710cb8
--- /dev/null
+++ b/apps/mobile/src/components/layouts/tabbar/BottomTabProvider.tsx
@@ -0,0 +1,24 @@
+import { useMemo, useState } from "react"
+import { useSharedValue } from "react-native-reanimated"
+
+import { BottomTabHeightProvider } from "./BottomTabHeightProvider"
+import { BottomTabBarBackgroundContext } from "./contexts/BottomTabBarBackgroundContext"
+import {
+ BottomTabBarVisibleContext,
+ SetBottomTabBarVisibleContext,
+} from "./contexts/BottomTabBarVisibleContext"
+
+export const BottomTabProvider = ({ children }: { children: React.ReactNode }) => {
+ const opacity = useSharedValue(1)
+ const [tabBarVisible, setTabBarVisible] = useState(true)
+
+ return (
+ ({ opacity }), [opacity])}>
+
+
+ {children}
+
+
+
+ )
+}
diff --git a/apps/mobile/src/components/layouts/tabbar/BottomTabs.tsx b/apps/mobile/src/components/layouts/tabbar/BottomTabs.tsx
index df224d8679..167072c652 100644
--- a/apps/mobile/src/components/layouts/tabbar/BottomTabs.tsx
+++ b/apps/mobile/src/components/layouts/tabbar/BottomTabs.tsx
@@ -1,77 +1,25 @@
-import type { BottomTabBarProps } from "@react-navigation/bottom-tabs"
-import type { ForwardRefExoticComponent } from "react"
-import { forwardRef, useMemo, useRef, useState } from "react"
-import type { ScrollView } from "react-native"
-import { useSharedValue } from "react-native-reanimated"
+import { useContext, useRef } from "react"
-import { BottomTabHeightProvider } from "./BottomTabHeightProvider"
-import {
- AttachNavigationScrollViewContext,
- SetAttachNavigationScrollViewContext,
-} from "./contexts/AttachNavigationScrollViewContext"
import { BottomTabBarBackgroundContext } from "./contexts/BottomTabBarBackgroundContext"
-import {
- BottomTabBarVisibleContext,
- SetBottomTabBarVisibleContext,
-} from "./contexts/BottomTabBarVisibleContext"
import { useNavigationScrollToTop } from "./hooks"
import { Tabbar } from "./Tabbar"
-import { Tabs } from "./TabClient"
-type ExtractReactForwardRefExoticComponent =
- T extends React.ForwardRefExoticComponent ? P : never
-
-export const BottomTabs: ForwardRefExoticComponent<
- Omit, "tabBar">
-> = forwardRef((props, ref) => {
- const opacity = useSharedValue(1)
- const [tabBarVisible, setTabBarVisible] = useState(true)
- const [attachNavigationScrollViewRef, setAttachNavigationScrollViewRef] =
- useState | null>(null)
-
- const currentTarget = useRef(undefined)
- const scrollToTop = useNavigationScrollToTop(attachNavigationScrollViewRef)
+export const BottomTabs = () => {
+ const currentIndex = useRef(undefined)
+ const scrollToTop = useNavigationScrollToTop()
+ const { opacity } = useContext(BottomTabBarBackgroundContext)
return (
-
-
- ({ opacity }), [opacity])}>
-
-
-
- {
- if (props.screenListeners && "tabPress" in props.screenListeners) {
- props.screenListeners.tabPress!(e)
- }
+ {
+ opacity.value = 1
- if (currentTarget.current === e.target) {
- scrollToTop()
- return
- }
+ if (currentIndex.current === index) {
+ scrollToTop()
+ return
+ }
- opacity.value = 1
- currentTarget.current = e.target
- },
- transitionStart: (e) => {
- if (props.screenListeners && "transitionStart" in props.screenListeners) {
- props.screenListeners.transitionStart!(e)
- }
- currentTarget.current = e.target
- opacity.value = 1
- },
- }}
- ref={ref}
- />
-
-
-
-
-
-
+ currentIndex.current = index
+ }}
+ />
)
-})
-const TabBar = (props: BottomTabBarProps) =>
+}
diff --git a/apps/mobile/src/components/layouts/tabbar/TabClient.tsx b/apps/mobile/src/components/layouts/tabbar/TabClient.tsx
deleted file mode 100644
index 6fbceb7027..0000000000
--- a/apps/mobile/src/components/layouts/tabbar/TabClient.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-// @see https://github.com/expo/expo/blob/main/packages/expo-router/src/layouts/TabsClient.tsx
-import type {
- BottomTabNavigationEventMap,
- BottomTabNavigationOptions,
-} from "@react-navigation/bottom-tabs"
-import { createBottomTabNavigator } from "@react-navigation/bottom-tabs"
-import type { ParamListBase, TabNavigationState } from "@react-navigation/native"
-import type { Href } from "expo-router"
-import { Link, withLayoutContext } from "expo-router"
-import * as React from "react"
-
-// This is the only way to access the navigator.
-const BottomTabNavigator = createBottomTabNavigator().Navigator
-
-type TabsProps = BottomTabNavigationOptions & { href?: Href | null }
-
-export const Tabs = withLayoutContext<
- TabsProps,
- typeof BottomTabNavigator,
- TabNavigationState,
- BottomTabNavigationEventMap
->(BottomTabNavigator, (screens) => {
- // Support the `href` shortcut prop.
- return screens.map((screen) => {
- if (typeof screen.options !== "function" && screen.options?.href !== undefined) {
- const { href, ...options } = screen.options
-
- return {
- ...screen,
- options: {
- ...options,
- tabBarItemStyle: options.tabBarItemStyle,
- tabBarButton: (props) => {
- if (href == null) {
- return null
- }
-
- // TODO: React Navigation types these props as Animated.WithAnimatedValue>
- // While Link expects a TextStyle. We need to reconcile these types.
- return (
-
- )
- },
- },
- }
- }
- return screen
- })
-})
diff --git a/apps/mobile/src/components/layouts/tabbar/Tabbar.tsx b/apps/mobile/src/components/layouts/tabbar/Tabbar.tsx
index 1ff0598ee5..b58772c559 100644
--- a/apps/mobile/src/components/layouts/tabbar/Tabbar.tsx
+++ b/apps/mobile/src/components/layouts/tabbar/Tabbar.tsx
@@ -1,8 +1,6 @@
-import type { BottomTabBarProps } from "@react-navigation/bottom-tabs"
-import { getLabel } from "@react-navigation/elements"
-import { CommonActions, NavigationContext, NavigationRouteContext } from "@react-navigation/native"
+import { useAtom, useAtomValue } from "jotai"
import type { FC } from "react"
-import { Fragment, memo, useContext, useEffect } from "react"
+import { memo, useContext, useEffect } from "react"
import type { StyleProp, TextStyle } from "react-native"
import { Platform, Pressable, StyleSheet, Text, View } from "react-native"
import Animated, {
@@ -15,6 +13,8 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"
import { SetBottomTabBarHeightContext } from "@/src/components/layouts/tabbar/contexts/BottomTabBarHeightContext"
import { gentleSpringPreset, quickSpringPreset, softSpringPreset } from "@/src/constants/spring"
+import { BottomTabContext } from "@/src/lib/navigation/bottom-tab/BottomTabContext"
+import type { TabbarIconProps } from "@/src/lib/navigation/bottom-tab/types"
import { PlayerTabBar } from "@/src/modules/player/PlayerTabBar"
import { accentColor } from "@/src/theme/colors"
@@ -23,15 +23,19 @@ import { Grid } from "../../ui/grid"
import { BottomTabBarBackgroundContext } from "./contexts/BottomTabBarBackgroundContext"
import { BottomTabBarVisibleContext } from "./contexts/BottomTabBarVisibleContext"
-export const Tabbar: FC = (props) => {
- const { state, navigation, descriptors } = props
- const { routes } = state
+export const Tabbar: FC<{
+ onPress?: (index: number) => void
+}> = ({ onPress: onPressProp }) => {
const setTabBarHeight = useContext(SetBottomTabBarHeightContext)
const insets = useSafeAreaInsets()
const tabBarVisible = useContext(BottomTabBarVisibleContext)
+ const tabContext = useContext(BottomTabContext)
+ const tabScreens = useAtomValue(tabContext.tabScreensAtom)
+ const [selectedIndex, setSelectedIndex] = useAtom(tabContext.currentIndexAtom)
const translateY = useSharedValue(0)
+
useEffect(() => {
cancelAnimation(translateY)
translateY.value = withSpring(
@@ -39,6 +43,7 @@ export const Tabbar: FC = (props) => {
!tabBarVisible ? quickSpringPreset : softSpringPreset,
)
}, [tabBarVisible, translateY])
+ if (tabScreens.length === 0) return null
return (
= (props) => {
>
-
- {routes.map((route, index) => {
- const focused = index === state.index
- const { options } = descriptors[route.key]!
+
+ {tabScreens.map((route, index) => {
+ const focused = index === selectedIndex
const inactiveTintColor = "#999"
const onPress = () => {
- const event = navigation.emit({
- type: "tabPress",
- target: route.key,
- canPreventDefault: true,
- })
-
- if (!focused && !event.defaultPrevented) {
- navigation.dispatch({
- ...CommonActions.navigate(route),
- target: state.key,
- })
- }
+ setSelectedIndex(index)
+ onPressProp?.(index)
}
- const tabButton = options?.tabBarButton
- const label =
- typeof options?.tabBarLabel === "function"
- ? options?.tabBarLabel
- : getLabel({ label: options?.tabBarLabel, title: options?.title }, route.name)
+
+ const label = route.title
const accessibilityLabel =
- options?.tabBarAccessibilityLabel !== undefined
- ? options?.tabBarAccessibilityLabel
- : typeof label === "string" && Platform.OS === "ios"
- ? `${label}, tab, ${index + 1} of ${routes.length}`
- : undefined
+ typeof label === "string" && Platform.OS === "ios"
+ ? `${label}, tab, ${index + 1} of ${tabScreens.length}`
+ : undefined
const renderIcon = ({ focused }: { focused: boolean }) => {
const iconSize = ICON_SIZE_ROUND
@@ -93,31 +82,12 @@ export const Tabbar: FC = (props) => {
focused={focused}
iconSize={iconSize}
inactiveTintColor={inactiveTintColor}
- renderIcon={options.tabBarIcon!}
+ renderIcon={route.renderIcon! || noop}
/>
)
}
const renderLabel = ({ focused }: { focused: boolean }) => {
- const color = focused ? accentColor : accentColor
-
- if (typeof label !== "string") {
- const labelString = getLabel(
- {
- label: typeof options?.tabBarLabel === "string" ? options.tabBarLabel : undefined,
- title: options?.title,
- },
- route.name,
- )
-
- return label({
- focused,
- color,
- position: "beside-icon",
- children: labelString,
- })
- }
-
return (
= (props) => {
)
}
- const TabButton = tabButton ?? Fragment
return (
-
-
-
+
)
})}
@@ -178,7 +145,7 @@ const TabIcon = ({
focused: boolean
iconSize: number
inactiveTintColor: string
- renderIcon: (options: { focused: boolean; size: number; color: string }) => React.ReactNode
+ renderIcon: (options: TabbarIconProps) => React.ReactNode
}) => {
const activeOpacity = focused ? 1 : 0
const inactiveOpacity = focused ? 0 : 1
@@ -260,7 +227,6 @@ const styles = StyleSheet.create({
},
})
-const AnimatedThemedBlurView = Animated.createAnimatedComponent(ThemedBlurView)
const TabBarBackground = () => {
const { opacity } = useContext(BottomTabBarBackgroundContext)
@@ -273,7 +239,9 @@ const TabBarBackground = () => {
}))
return (
-
+
+
+
void
originalRenderIcon: (scene: { route: any; focused: boolean }) => React.ReactNode
originalRenderLabel: (scene: { route: any; focused: boolean }) => React.ReactNode
@@ -316,26 +284,24 @@ const TabItem = memo(
const scene = { route, focused }
return (
-
-
- {
- pressed.value = withSpring(1, gentleSpringPreset)
- }}
- onPressOut={() => {
- pressed.value = withSpring(0, gentleSpringPreset)
- }}
- className="flex-1 flex-col items-center justify-center"
- accessibilityLabel={accessibilityLabel}
- accessibilityRole="button"
- accessibilityState={{ selected: focused }}
- >
- {originalRenderIcon(scene)}
- {originalRenderLabel(scene)}
-
-
-
+ {
+ pressed.value = withSpring(1, gentleSpringPreset)
+ }}
+ onPressOut={() => {
+ pressed.value = withSpring(0, gentleSpringPreset)
+ }}
+ className="flex-1 flex-col items-center justify-center"
+ accessibilityLabel={accessibilityLabel}
+ accessibilityRole="button"
+ accessibilityState={{ selected: focused }}
+ >
+ {originalRenderIcon(scene)}
+ {originalRenderLabel(scene)}
+
)
},
)
+
+const noop = () => null
diff --git a/apps/mobile/src/components/layouts/tabbar/hooks.ts b/apps/mobile/src/components/layouts/tabbar/hooks.ts
index 046826358f..2eafaa9685 100644
--- a/apps/mobile/src/components/layouts/tabbar/hooks.ts
+++ b/apps/mobile/src/components/layouts/tabbar/hooks.ts
@@ -1,15 +1,15 @@
-import { useNavigation } from "expo-router"
import type { RefObject } from "react"
import { useCallback, useContext, useEffect, useRef } from "react"
import type { FlatList, ScrollView } from "react-native"
import { findNodeHandle, Platform } from "react-native"
import { performNativeScrollToTop } from "@/src/lib/native"
-
import {
SetAttachNavigationScrollViewContext,
useAttachNavigationScrollView,
-} from "./contexts/AttachNavigationScrollViewContext"
+} from "@/src/lib/navigation/AttachNavigationScrollViewContext"
+import { useScreenIsAppeared } from "@/src/lib/navigation/bottom-tab/hooks"
+
import { BottomTabBarHeightContext } from "./contexts/BottomTabBarHeightContext"
export const useBottomTabBarHeight = () => {
@@ -55,17 +55,15 @@ export const useNavigationScrollToTop = (
export const useRegisterNavigationScrollView = (active = true) => {
const scrollViewRef = useRef(null)
- const navigation = useNavigation()
+ const tabScreenIsFocused = useScreenIsAppeared()
const setAttachNavigationScrollViewRef = useContext(SetAttachNavigationScrollViewContext)
+
useEffect(() => {
if (!active) return
if (!setAttachNavigationScrollViewRef) return
+ if (!tabScreenIsFocused) return
setAttachNavigationScrollViewRef(scrollViewRef as unknown as RefObject)
- const unsubscribe = navigation.addListener("focus", () => {
- setAttachNavigationScrollViewRef(scrollViewRef as unknown as RefObject)
- })
- return unsubscribe
- }, [setAttachNavigationScrollViewRef, scrollViewRef, active, navigation])
+ }, [setAttachNavigationScrollViewRef, scrollViewRef, active, tabScreenIsFocused])
return scrollViewRef
}
diff --git a/apps/mobile/src/components/layouts/views/NavigationContext.tsx b/apps/mobile/src/components/layouts/views/NavigationContext.tsx
deleted file mode 100644
index a4f29ead9d..0000000000
--- a/apps/mobile/src/components/layouts/views/NavigationContext.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import { createContext } from "react"
-import type { Animated } from "react-native"
-
-export const NavigationContext = createContext<{
- scrollY: Animated.Value
-} | null>(null)
diff --git a/apps/mobile/src/components/layouts/views/SafeNavigationScrollView.tsx b/apps/mobile/src/components/layouts/views/SafeNavigationScrollView.tsx
index ce4a03f4d9..7770079ef3 100644
--- a/apps/mobile/src/components/layouts/views/SafeNavigationScrollView.tsx
+++ b/apps/mobile/src/components/layouts/views/SafeNavigationScrollView.tsx
@@ -1,36 +1,33 @@
import { useTypeScriptHappyCallback } from "@follow/hooks"
-import type { NativeStackNavigationOptions } from "@react-navigation/native-stack"
-import { Stack } from "expo-router"
+import { useSetAtom, useStore } from "jotai"
import type { FC, PropsWithChildren } from "react"
-import { useContext, useEffect, useMemo, useRef, useState } from "react"
-import type {
- NativeScrollEvent,
- NativeSyntheticEvent,
- ScrollView,
- ScrollViewProps,
-} from "react-native"
-import { Animated as RNAnimated, useAnimatedValue, View } from "react-native"
+import { useContext, useEffect, useRef, useState } from "react"
+import type { ScrollView, ScrollViewProps, StyleProp, ViewStyle } from "react-native"
+import { View } from "react-native"
import type { SharedValue } from "react-native-reanimated"
+import { useAnimatedScrollHandler } from "react-native-reanimated"
import type { ReanimatedScrollEvent } from "react-native-reanimated/lib/typescript/hook/commonTypes"
import { useSafeAreaFrame, useSafeAreaInsets } from "react-native-safe-area-context"
+import { useBottomTabBarHeight } from "@/src/components/layouts/tabbar/hooks"
import {
AttachNavigationScrollViewContext,
SetAttachNavigationScrollViewContext,
-} from "@/src/components/layouts/tabbar/contexts/AttachNavigationScrollViewContext"
-import { useBottomTabBarHeight } from "@/src/components/layouts/tabbar/hooks"
+} from "@/src/lib/navigation/AttachNavigationScrollViewContext"
+import { useScreenIsAppeared } from "@/src/lib/navigation/bottom-tab/hooks"
+import { useScreenIsInSheetModal } from "@/src/lib/navigation/hooks"
+import { ScreenItemContext } from "@/src/lib/navigation/ScreenItemContext"
-import { AnimatedScrollView } from "../../common/AnimatedComponents"
+import { ReAnimatedScrollView } from "../../common/AnimatedComponents"
+import type { InternalNavigationHeaderProps } from "../header/NavigationHeader"
import { InternalNavigationHeader } from "../header/NavigationHeader"
import { getDefaultHeaderHeight } from "../utils"
-import { NavigationContext } from "./NavigationContext"
import {
NavigationHeaderHeightContext,
SetNavigationHeaderHeightContext,
} from "./NavigationHeaderContext"
type SafeNavigationScrollViewProps = Omit & {
- withHeaderBlur?: boolean
onScroll?: (e: ReanimatedScrollEvent) => void
// For scroll view content adjustment behavior
@@ -39,70 +36,91 @@ type SafeNavigationScrollViewProps = Omit & {
// to sharedValue
reanimatedScrollY?: SharedValue
+
+ contentViewStyle?: StyleProp
+ contentViewClassName?: string
} & PropsWithChildren
export const SafeNavigationScrollView: FC = ({
children,
- withHeaderBlur = true,
onScroll,
withBottomInset = false,
withTopInset = false,
reanimatedScrollY,
+ contentViewClassName,
+ contentViewStyle,
+
...props
}) => {
const insets = useSafeAreaInsets()
const tabBarHeight = useBottomTabBarHeight()
- const scrollY = useAnimatedValue(0)
const scrollViewRef = useRef(null)
const setAttachNavigationScrollViewRef = useContext(SetAttachNavigationScrollViewContext)
+ const isFocused = useScreenIsAppeared()
useEffect(() => {
- if (setAttachNavigationScrollViewRef) {
+ if (setAttachNavigationScrollViewRef && isFocused) {
setAttachNavigationScrollViewRef(scrollViewRef)
}
- }, [setAttachNavigationScrollViewRef, scrollViewRef])
+ }, [setAttachNavigationScrollViewRef, scrollViewRef, isFocused])
const frame = useSafeAreaFrame()
+ const sheetModal = useScreenIsInSheetModal()
const [headerHeight, setHeaderHeight] = useState(() =>
- getDefaultHeaderHeight(frame, false, insets.top),
+ getDefaultHeaderHeight(frame, sheetModal, insets.top),
)
+ const screenCtxValue = useContext(ScreenItemContext)
+
+ const scrollHandler = useAnimatedScrollHandler({
+ onScroll: (event) => {
+ if (reanimatedScrollY) {
+ reanimatedScrollY.value = event.contentOffset.y
+ }
+
+ screenCtxValue.reAnimatedScrollY.value = event.contentOffset.y
+ },
+ })
return (
- ({ scrollY }), [scrollY])}>
-
-
- {withHeaderBlur && }
- ) {
- if (reanimatedScrollY) {
- reanimatedScrollY.value = event.nativeEvent.contentOffset.y
- }
- },
- })}
- automaticallyAdjustContentInsets={false}
- automaticallyAdjustsScrollIndicatorInsets={false}
- scrollIndicatorInsets={{
- top: headerHeight,
- bottom: tabBarHeight,
- }}
- {...props}
- >
-
-
- {children}
-
-
-
-
-
-
+
+
+ {
+ screenCtxValue.scrollViewContentHeight.value = h
+ },
+ [screenCtxValue.scrollViewContentHeight],
+ )}
+ onLayout={useTypeScriptHappyCallback(
+ (e) => {
+ screenCtxValue.scrollViewHeight.value = e.nativeEvent.layout.height - headerHeight
+ },
+ [screenCtxValue.scrollViewHeight, headerHeight],
+ )}
+ automaticallyAdjustContentInsets={false}
+ automaticallyAdjustsScrollIndicatorInsets={false}
+ scrollIndicatorInsets={{
+ top: headerHeight,
+ bottom: tabBarHeight,
+ }}
+ {...props}
+ >
+
+
+
+ {children}
+
+
+
+
+
+
)
}
@@ -111,51 +129,49 @@ export const NavigationBlurEffectHeader = ({
headerHideableBottomHeight,
headerTitleAbsolute,
...props
-}: NativeStackNavigationOptions & {
+}: InternalNavigationHeaderProps & {
blurThreshold?: number
headerHideableBottomHeight?: number
headerHideableBottom?: () => React.ReactNode
headerTitleAbsolute?: boolean
}) => {
- const navigationContext = useContext(NavigationContext)!
-
const setHeaderHeight = useContext(SetNavigationHeaderHeightContext)
const hideableBottom = headerHideableBottom?.()
- const { headerLeft, ...rest } = props
+ const screenCtxValue = useContext(ScreenItemContext)
- return (
- (
-
-
-
-
-
- ),
- [hideableBottom, navigationContext],
- ),
-
- ...rest,
- }}
- />
- )
+ const setSlot = useSetAtom(screenCtxValue.Slot)
+ const store = useStore()
+ useEffect(() => {
+ setSlot({
+ ...store.get(screenCtxValue.Slot),
+ header: (
+
+
+
+ ),
+ })
+ }, [
+ screenCtxValue.Slot,
+ headerHideableBottomHeight,
+ headerTitleAbsolute,
+ hideableBottom,
+ props.headerLeft,
+ props.headerRight,
+ props.title,
+ setHeaderHeight,
+ setSlot,
+ store,
+ props.headerTitle,
+ ])
+
+ return null
}
diff --git a/apps/mobile/src/components/native/webview/EntryContentWebView.tsx b/apps/mobile/src/components/native/webview/EntryContentWebView.tsx
index 442f4369e4..6261996132 100644
--- a/apps/mobile/src/components/native/webview/EntryContentWebView.tsx
+++ b/apps/mobile/src/components/native/webview/EntryContentWebView.tsx
@@ -1,4 +1,5 @@
import { clsx } from "@follow/utils"
+import { Portal } from "@gorhom/portal"
import { requireNativeView } from "expo"
import { useAtom } from "jotai"
import * as React from "react"
@@ -10,7 +11,6 @@ import { useUISettingKey } from "@/src/atoms/settings/ui"
import { BugCuteReIcon } from "@/src/icons/bug_cute_re"
import type { EntryModel } from "@/src/store/entry/types"
-import { Portal } from "../../ui/portal"
import { sharedWebViewHeightAtom } from "./atom"
import { htmlUrl } from "./constants"
import { prepareEntryRenderWebView, SharedWebViewModule } from "./index"
diff --git a/apps/mobile/src/components/ui/form/PickerIos.tsx b/apps/mobile/src/components/ui/form/PickerIos.tsx
index 8f7ff4da1e..bf8cbe5eab 100644
--- a/apps/mobile/src/components/ui/form/PickerIos.tsx
+++ b/apps/mobile/src/components/ui/form/PickerIos.tsx
@@ -1,5 +1,6 @@
/* eslint-disable @eslint-react/no-array-index-key */
import { cn } from "@follow/utils"
+import { Portal } from "@gorhom/portal"
import { Picker } from "@react-native-picker/picker"
import { useMemo, useState } from "react"
import type { StyleProp, ViewStyle } from "react-native"
@@ -11,7 +12,6 @@ import { MingcuteDownLineIcon } from "@/src/icons/mingcute_down_line"
import { useColor } from "@/src/theme/colors"
import { BlurEffect } from "../../common/BlurEffect"
-import { Portal } from "../portal"
interface PickerIosProps {
options: { label: string; value: T }[]
diff --git a/apps/mobile/src/components/ui/portal/Portal.tsx b/apps/mobile/src/components/ui/portal/Portal.tsx
deleted file mode 100644
index e82525081c..0000000000
--- a/apps/mobile/src/components/ui/portal/Portal.tsx
+++ /dev/null
@@ -1,47 +0,0 @@
-import * as React from "react"
-import { useEffect, useMemo, useRef } from "react"
-
-import PortalContext from "./PortalContext"
-import type { IPortalMethods, PortalConsumerProps } from "./type"
-
-const PortalConsumer: React.FC = (props) => {
- const id = React.useId()
- const key = useRef(id)
- const once = useRef(false)
-
- useEffect(
- () => () => {
- const { manager } = props
- manager?.unmount?.(key.current)
- },
-
- [],
- )
-
- useEffect(() => {
- const { manager, children } = props
- if (!once.current) {
- once.current = true
- key.current = manager?.mount?.(children) ?? ""
- } else {
- manager?.update?.(key.current, children)
- }
- }, [props])
-
- return null
-}
-
-export function Portal({ children }: React.PropsWithChildren) {
- return useMemo(
- () => (
-
- {(manager: IPortalMethods | null): React.ReactNode => (
- {children}
- )}
-
- ),
- [children],
- )
-}
-
-export { PortalConsumerProps, PortalProps } from "./type"
diff --git a/apps/mobile/src/components/ui/portal/PortalContext.tsx b/apps/mobile/src/components/ui/portal/PortalContext.tsx
deleted file mode 100644
index 1a7b607e65..0000000000
--- a/apps/mobile/src/components/ui/portal/PortalContext.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import * as React from "react"
-
-import type { IPortalMethods } from "./type"
-
-export default React.createContext(null)
diff --git a/apps/mobile/src/components/ui/portal/PortalHost.tsx b/apps/mobile/src/components/ui/portal/PortalHost.tsx
deleted file mode 100644
index 40a38b87c9..0000000000
--- a/apps/mobile/src/components/ui/portal/PortalHost.tsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import * as React from "react"
-import { useCallback, useMemo, useRef } from "react"
-
-import PortalContext from "./PortalContext"
-import PortalManager from "./PortalManager"
-import type { IPortalManager, Operation, PortalKey } from "./type"
-
-interface PortalHostProps {
- children: React.ReactNode
-}
-
-export function PortalHost(props: PortalHostProps) {
- const id = React.useId()
- const nextKey = useRef(0)
- const queue = useRef([])
- const manager = useRef()
-
- const mount = useCallback((children: React.ReactNode, _key?: PortalKey) => {
- let key = _key
- if (!key) {
- nextKey.current++
- key = `${id}-${nextKey.current}`
- }
-
- if (manager.current) {
- manager.current.mount(key, children)
- } else {
- queue.current.push({ type: "mount", key, children })
- }
-
- return key
- }, [])
-
- const update = useCallback((key: PortalKey, children: React.ReactNode) => {
- if (manager.current) {
- manager.current.update(key, children)
- } else {
- const op: Operation = { type: "mount", key, children }
- const index = queue.current.findIndex(
- (o) => o.type === "mount" || (o.type === "update" && o.key === key),
- )
-
- if (index !== -1) {
- queue.current[index] = op
- } else {
- queue.current.push(op)
- }
- }
- }, [])
-
- const unmount = useCallback((key: PortalKey) => {
- if (manager.current) {
- manager.current.unmount(key)
- } else {
- queue.current.push({ type: "unmount", key })
- }
- }, [])
-
- const { children } = props
-
- const ctxValue = useMemo(
- () => ({
- mount,
- update,
- unmount,
- }),
- [mount, update, unmount],
- )
-
- return useMemo(
- () => (
- <>
-
- <>
- {/* placeholder */}
- {children}
- {/* portal container */}
-
- >
-
- >
- ),
- [ctxValue, children],
- )
-}
-
-PortalHost.displayName = "Portal.host"
diff --git a/apps/mobile/src/components/ui/portal/PortalManager.tsx b/apps/mobile/src/components/ui/portal/PortalManager.tsx
deleted file mode 100644
index bfd6cc40ba..0000000000
--- a/apps/mobile/src/components/ui/portal/PortalManager.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import * as React from "react"
-import { useCallback, useImperativeHandle, useMemo, useState } from "react"
-import { StyleSheet, View } from "react-native"
-
-export default React.forwardRef((_, ref: any) => {
- const [portals, setPortals] = useState<{ key: number; children: React.ReactNode }[]>([])
-
- const mount = useCallback((key: number, children: React.ReactNode) => {
- setPortals((oldPortals) => [...oldPortals, { key, children }])
- }, [])
-
- const update = useCallback((key: number, children: React.ReactNode) => {
- setPortals((oldPortals) =>
- oldPortals.map((item) => {
- if (item.key === key) {
- return { ...item, children }
- }
- return { ...item }
- }),
- )
- }, [])
-
- const unmount = useCallback(
- (key: number) => setPortals((oldPortals) => oldPortals.filter((item) => item.key !== key)),
- [],
- )
-
- useImperativeHandle(ref, () => ({
- mount,
- update,
- unmount,
- }))
-
- return useMemo(
- () => (
- <>
- {portals.map(({ key, children }) => (
-
- {children}
-
- ))}
- >
- ),
- [portals],
- )
-})
diff --git a/apps/mobile/src/components/ui/portal/index.tsx b/apps/mobile/src/components/ui/portal/index.tsx
deleted file mode 100644
index d2c1dd9dea..0000000000
--- a/apps/mobile/src/components/ui/portal/index.tsx
+++ /dev/null
@@ -1,2 +0,0 @@
-export { Portal } from "./Portal"
-export { PortalHost } from "./PortalHost"
diff --git a/apps/mobile/src/components/ui/portal/type.ts b/apps/mobile/src/components/ui/portal/type.ts
deleted file mode 100644
index 1ebc2963af..0000000000
--- a/apps/mobile/src/components/ui/portal/type.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import type * as React from "react"
-
-export type PortalKey = string
-export interface IPortalManager {
- mount: (key: PortalKey, children: React.ReactNode) => void
- update: (key: PortalKey, children: React.ReactNode) => void
- unmount: (key: PortalKey) => void
-}
-
-export interface IPortalMethods {
- mount: (children: React.ReactNode) => PortalKey
- update: (key: PortalKey, children: React.ReactNode) => void
- unmount: (key: PortalKey) => void
-}
-
-export type Operation =
- | {
- type: "mount"
- key: PortalKey
- children: React.ReactNode
- }
- | {
- type: "update"
- key: PortalKey
- children: React.ReactNode
- }
- | {
- type: "unmount"
- key: PortalKey
- }
-
-export interface IStaticContainerProps {
- shouldUpdate: boolean
- children: React.ReactNode
-}
-
-export interface PortalProps {
- children?: React.ReactNode
-}
-
-export interface PortalConsumerProps {
- manager: IPortalMethods | null
- children: React.ReactNode
-}
diff --git a/apps/mobile/src/hooks/useIntentHandler.ts b/apps/mobile/src/hooks/useIntentHandler.ts
index 6eea5df330..b4d482c1c3 100644
--- a/apps/mobile/src/hooks/useIntentHandler.ts
+++ b/apps/mobile/src/hooks/useIntentHandler.ts
@@ -1,7 +1,9 @@
import * as Linking from "expo-linking"
-import { router } from "expo-router"
import { useEffect } from "react"
+import { useNavigation } from "../lib/navigation/hooks"
+import { FollowScreen } from "../screens/(modal)/follow"
+
// This needs to stay outside of react to persist between account switches
let previousIntentUrl = ""
export const resetIntentUrl = () => {
@@ -11,6 +13,8 @@ export const resetIntentUrl = () => {
export function useIntentHandler() {
const incomingUrl = Linking.useURL()
+ const navigation = useNavigation()
+
useEffect(() => {
if (incomingUrl && incomingUrl !== previousIntentUrl) {
previousIntentUrl = incomingUrl
@@ -21,9 +25,13 @@ export function useIntentHandler() {
return
}
- router.push(`/follow?${searchParams.toString()}`)
+ navigation.presentControllerView(FollowScreen, {
+ id: searchParams.get("id") ?? undefined,
+ type: (searchParams.get("type") as "url" | "feed" | "list") ?? undefined,
+ url: searchParams.get("url") ?? undefined,
+ })
}
- }, [incomingUrl])
+ }, [incomingUrl, navigation])
}
// follow://add?id=41147805276726272
diff --git a/apps/mobile/src/hooks/useIsRouteOnlyOne.ts b/apps/mobile/src/hooks/useIsRouteOnlyOne.ts
deleted file mode 100644
index a6d496e6ea..0000000000
--- a/apps/mobile/src/hooks/useIsRouteOnlyOne.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { useNavigation } from "expo-router"
-
-export const useIsRouteOnlyOne = () => {
- const navigation = useNavigation()
- const state = navigation.getState()
-
- const routeOnlyOne = state?.routes.length === 1
-
- return routeOnlyOne
-}
diff --git a/apps/mobile/src/components/layouts/tabbar/contexts/AttachNavigationScrollViewContext.tsx b/apps/mobile/src/lib/navigation/AttachNavigationScrollViewContext.tsx
similarity index 100%
rename from apps/mobile/src/components/layouts/tabbar/contexts/AttachNavigationScrollViewContext.tsx
rename to apps/mobile/src/lib/navigation/AttachNavigationScrollViewContext.tsx
diff --git a/apps/mobile/src/lib/navigation/ChainNavigationContext.tsx b/apps/mobile/src/lib/navigation/ChainNavigationContext.tsx
new file mode 100644
index 0000000000..7fba003274
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/ChainNavigationContext.tsx
@@ -0,0 +1,23 @@
+import type { PrimitiveAtom } from "jotai"
+import { createContext } from "react"
+
+import type {
+ NavigationControllerView,
+ NavigationControllerViewExtraProps,
+ NavigationControllerViewType,
+} from "./types"
+
+export interface Route {
+ id: string
+
+ Component?: NavigationControllerView
+ element?: React.ReactElement
+
+ type: NavigationControllerViewType
+ props?: unknown
+ screenOptions?: NavigationControllerViewExtraProps
+}
+export type ChainNavigationContextType = {
+ routesAtom: PrimitiveAtom
+}
+export const ChainNavigationContext = createContext(null!)
diff --git a/apps/mobile/src/lib/navigation/GroupedNavigationRouteContext.ts b/apps/mobile/src/lib/navigation/GroupedNavigationRouteContext.ts
new file mode 100644
index 0000000000..02853d8b4f
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/GroupedNavigationRouteContext.ts
@@ -0,0 +1,5 @@
+import { createContext } from "react"
+
+import type { Route } from "./ChainNavigationContext"
+
+export const GroupedNavigationRouteContext = createContext(null!)
diff --git a/apps/mobile/src/lib/navigation/Navigation.ts b/apps/mobile/src/lib/navigation/Navigation.ts
new file mode 100644
index 0000000000..2d61789b99
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/Navigation.ts
@@ -0,0 +1,180 @@
+import { jotaiStore } from "@follow/utils"
+import { EventEmitter } from "expo"
+import { atom } from "jotai"
+
+import type { ChainNavigationContextType, Route } from "./ChainNavigationContext"
+import type {
+ NavigationControllerView,
+ NavigationControllerViewExtraProps,
+ NavigationControllerViewType,
+} from "./types"
+
+export class Navigation {
+ private ctxValue: ChainNavigationContextType
+ constructor(ctxValue: ChainNavigationContextType) {
+ this.ctxValue = ctxValue
+
+ this.pushControllerView = this.pushControllerView.bind(this)
+ this.presentControllerView = this.presentControllerView.bind(this)
+ this.dismiss = this.dismiss.bind(this)
+ this.back = this.back.bind(this)
+ this.popTo = this.popTo.bind(this)
+ this.popToRoot = this.popToRoot.bind(this)
+ }
+
+ __internal_getCtxValue() {
+ return this.ctxValue
+ }
+
+ private viewIdCounter = 0
+
+ static readonly rootNavigation: Navigation = new Navigation({
+ routesAtom: atom([]),
+ })
+
+ private __push(route: Route) {
+ const routes = jotaiStore.get(this.ctxValue.routesAtom)
+ const hasRoute = routes.some((r) => r.id === route.id)
+ if (hasRoute && routes.at(-1)?.id === route.id) {
+ console.warn(`Top of stack is already ${route.id}`)
+ return
+ } else if (hasRoute) {
+ route.id = `${route.id}-${this.viewIdCounter++}`
+ }
+ jotaiStore.set(this.ctxValue.routesAtom, [...routes, route])
+ }
+
+ private resolveScreenOptions(
+ view: NavigationControllerView,
+ ): Required {
+ return {
+ transparent: view.transparent ?? false,
+ id: view.id ?? view.name ?? `view-${this.viewIdCounter++}`,
+ title: view.title ?? "",
+ // Form Sheet
+ sheetAllowedDetents: view.sheetAllowedDetents ?? "fitToContents",
+ sheetCornerRadius: view.sheetCornerRadius ?? 16,
+ sheetExpandsWhenScrolledToEdge: view.sheetExpandsWhenScrolledToEdge ?? true,
+ sheetElevation: view.sheetElevation ?? 24,
+ sheetGrabberVisible: view.sheetGrabberVisible ?? true,
+ sheetInitialDetentIndex: view.sheetInitialDetentIndex ?? 0,
+ sheetLargestUndimmedDetentIndex: view.sheetLargestUndimmedDetentIndex ?? "medium",
+ }
+ }
+
+ pushControllerView(view: NavigationControllerView, props?: T) {
+ const screenOptions = this.resolveScreenOptions(view)
+ this.__push({
+ id: screenOptions.id,
+ type: "push",
+ Component: view,
+ props,
+ screenOptions,
+ })
+ }
+
+ presentControllerView(
+ view: NavigationControllerView,
+ props?: T,
+ type: Exclude = "modal",
+ ) {
+ const screenOptions = this.resolveScreenOptions(view)
+ this.__push({
+ id: screenOptions.id,
+ type,
+ Component: view,
+ props,
+ screenOptions,
+ })
+ }
+ private __pop() {
+ const routes = jotaiStore.get(this.ctxValue.routesAtom)
+ const lastRoute = routes.at(-1)
+ if (!lastRoute) {
+ return
+ }
+ jotaiStore.set(this.ctxValue.routesAtom, routes.slice(0, -1))
+ }
+
+ /**
+ * Dismiss the current modal.
+ */
+ dismiss() {
+ const routes = jotaiStore.get(this.ctxValue.routesAtom)
+ const lastModalIndex = routes.findLastIndex((r) => r.type !== "push")
+ if (lastModalIndex === -1) {
+ return
+ }
+ jotaiStore.set(this.ctxValue.routesAtom, routes.slice(0, lastModalIndex))
+ }
+
+ back() {
+ return this.__pop()
+ }
+
+ __internal_dismiss(routeId: string) {
+ const routes = jotaiStore.get(this.ctxValue.routesAtom)
+ const lastModalIndex = routes.findLastIndex((r) => r.id === routeId)
+ if (lastModalIndex === -1) {
+ return
+ }
+ jotaiStore.set(this.ctxValue.routesAtom, routes.slice(0, lastModalIndex))
+ }
+
+ // eslint-disable-next-line unicorn/prefer-event-target
+ private bus = new EventEmitter<{
+ willAppear: (payload: LifecycleEventPayload) => void
+ didAppear: (payload: LifecycleEventPayload) => void
+ willDisappear: (payload: LifecycleEventPayload) => void
+ didDisappear: (payload: LifecycleEventPayload) => void
+ }>()
+ on(event: "willAppear", callback: (payload: LifecycleEventPayload) => void): Disposer
+ on(event: "didAppear", callback: (payload: LifecycleEventPayload) => void): Disposer
+ on(event: "willDisappear", callback: (payload: LifecycleEventPayload) => void): Disposer
+ on(event: "didDisappear", callback: (payload: LifecycleEventPayload) => void): Disposer
+ on(event: "screenChange", callback: (payload: ScreenChangeEventPayload) => void): Disposer
+ on(event: string, callback: (payload: any) => void): Disposer {
+ const subscription = this.bus.addListener(event as any, callback)
+ return () => {
+ subscription.remove()
+ }
+ }
+
+ emit(event: "willAppear", payload: LifecycleEventPayload): void
+ emit(event: "didAppear", payload: LifecycleEventPayload): void
+ emit(event: "willDisappear", payload: LifecycleEventPayload): void
+ emit(event: "didDisappear", payload: LifecycleEventPayload): void
+ emit(event: "screenChange", payload: ScreenChangeEventPayload): void
+ emit(event: string, payload: LifecycleEventPayload): void {
+ this.bus.emit(event as any, payload)
+ }
+
+ canGoBack() {
+ const routes = jotaiStore.get(this.ctxValue.routesAtom)
+ return routes.length > 0
+ }
+
+ popTo(routeId: string) {
+ const routes = jotaiStore.get(this.ctxValue.routesAtom)
+ const index = routes.findIndex((r) => r.id === routeId)
+ if (index === -1) {
+ return
+ }
+ jotaiStore.set(this.ctxValue.routesAtom, routes.slice(0, index + 1))
+ }
+
+ popToRoot() {
+ jotaiStore.set(this.ctxValue.routesAtom, [])
+ }
+}
+
+type Disposer = () => void
+
+type LifecycleEventPayload = {
+ screenId: string
+}
+
+type ScreenChangeEventPayload = {
+ screenId: string
+ type: "appear" | "disappear"
+}
diff --git a/apps/mobile/src/lib/navigation/NavigationInstanceContext.ts b/apps/mobile/src/lib/navigation/NavigationInstanceContext.ts
new file mode 100644
index 0000000000..37be8e1618
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/NavigationInstanceContext.ts
@@ -0,0 +1,5 @@
+import { createContext } from "react"
+
+import type { Navigation } from "./Navigation"
+
+export const NavigationInstanceContext = createContext(null!)
diff --git a/apps/mobile/src/lib/navigation/NavigationLink.tsx b/apps/mobile/src/lib/navigation/NavigationLink.tsx
new file mode 100644
index 0000000000..b77f7ef010
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/NavigationLink.tsx
@@ -0,0 +1,39 @@
+import { forwardRef } from "react"
+import type { TextProps } from "react-native"
+import { Text } from "react-native"
+import type { StackPresentationTypes } from "react-native-screens"
+
+import { useNavigation } from "./hooks"
+import type { NavigationControllerView } from "./types"
+
+interface NavigationLinkProps extends TextProps {
+ destination: NavigationControllerView
+ stackPresentation?: StackPresentationTypes
+ props?: T
+}
+function NavigationLinkImpl(
+ { destination, children, stackPresentation = "push", props, ...rest }: NavigationLinkProps,
+ ref: React.Ref,
+) {
+ const navigation = useNavigation()
+
+ return (
+ {
+ if (stackPresentation === "push") {
+ navigation.pushControllerView(destination, props)
+ } else {
+ navigation.presentControllerView(destination, props, stackPresentation)
+ }
+ }}
+ {...rest}
+ ref={ref}
+ >
+ {children}
+
+ )
+}
+
+export const NavigationLink = forwardRef(NavigationLinkImpl) as (
+ props: NavigationLinkProps & { ref?: React.Ref },
+) => ReturnType
diff --git a/apps/mobile/src/lib/navigation/ScreenItemContext.ts b/apps/mobile/src/lib/navigation/ScreenItemContext.ts
new file mode 100644
index 0000000000..c535d97ccb
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/ScreenItemContext.ts
@@ -0,0 +1,22 @@
+import type { PrimitiveAtom } from "jotai"
+import type { ReactNode } from "react"
+import { createContext } from "react"
+import type { SharedValue } from "react-native-reanimated"
+
+export interface ScreenItemContextType {
+ screenId: string
+
+ isFocusedAtom: PrimitiveAtom
+ isAppearedAtom: PrimitiveAtom
+ isDisappearedAtom: PrimitiveAtom
+
+ // For Layout ScrollView
+ reAnimatedScrollY: SharedValue
+ scrollViewHeight: SharedValue
+ scrollViewContentHeight: SharedValue
+
+ Slot: PrimitiveAtom<{
+ header: ReactNode
+ }>
+}
+export const ScreenItemContext = createContext(null!)
diff --git a/apps/mobile/src/lib/navigation/ScreenNameContext.tsx b/apps/mobile/src/lib/navigation/ScreenNameContext.tsx
new file mode 100644
index 0000000000..52d8c3fb17
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/ScreenNameContext.tsx
@@ -0,0 +1,13 @@
+import type { PrimitiveAtom } from "jotai"
+import { useAtomValue } from "jotai"
+import { createContext, useContext } from "react"
+
+export const ScreenNameContext = createContext>(null!)
+
+export const useScreenName = () => {
+ const name = useContext(ScreenNameContext)
+ if (!name) {
+ throw new Error("ScreenNameContext not mounted")
+ }
+ return useAtomValue(name)
+}
diff --git a/apps/mobile/src/lib/navigation/ScreenOptionsContext.ts b/apps/mobile/src/lib/navigation/ScreenOptionsContext.ts
new file mode 100644
index 0000000000..83cc5d5d2c
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/ScreenOptionsContext.ts
@@ -0,0 +1,46 @@
+import type { PrimitiveAtom } from "jotai"
+import { useStore } from "jotai"
+import { createContext, useCallback, useContext } from "react"
+
+export interface ScreenOptionsContextType {
+ gestureEnabled?: boolean
+ preventNativeDismiss?: boolean
+}
+export const ScreenOptionsContext = createContext>(null!)
+
+export const useSetScreenOptions = () => {
+ const ctx = useContext(ScreenOptionsContext)
+ if (!ctx) {
+ throw new Error("ScreenOptionsContext not found")
+ }
+
+ const store = useStore()
+ return useCallback(
+ (options: ScreenOptionsContextType) => {
+ const prev = store.get(ctx)
+ store.set(ctx, { ...prev, ...options })
+ },
+ [store, ctx],
+ )
+}
+
+export const ModalScreenItemOptionsContext = createContext>(
+ null!,
+)
+
+export const useSetModalScreenOptions = () => {
+ const ctx = useContext(ModalScreenItemOptionsContext)
+
+ const store = useStore()
+ return useCallback(
+ (options: ScreenOptionsContextType) => {
+ if (!ctx) {
+ return
+ }
+
+ const prev = store.get(ctx)
+ store.set(ctx, { ...prev, ...options })
+ },
+ [store, ctx],
+ )
+}
diff --git a/apps/mobile/src/lib/navigation/StackNavigation.tsx b/apps/mobile/src/lib/navigation/StackNavigation.tsx
new file mode 100644
index 0000000000..fa9472f36e
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/StackNavigation.tsx
@@ -0,0 +1,201 @@
+import type { PrimitiveAtom } from "jotai"
+import { atom, useAtomValue } from "jotai"
+import type { FC } from "react"
+import { memo, useContext, useMemo, useState } from "react"
+import type { ScrollView } from "react-native"
+import { StyleSheet } from "react-native"
+import { SafeAreaProvider } from "react-native-safe-area-context"
+import type { ScreenStackHeaderConfigProps } from "react-native-screens"
+import { ScreenStack } from "react-native-screens"
+
+import {
+ AttachNavigationScrollViewContext,
+ SetAttachNavigationScrollViewContext,
+} from "./AttachNavigationScrollViewContext"
+import type { Route } from "./ChainNavigationContext"
+import { ChainNavigationContext } from "./ChainNavigationContext"
+import { GroupedNavigationRouteContext } from "./GroupedNavigationRouteContext"
+import { Navigation } from "./Navigation"
+import { NavigationInstanceContext } from "./NavigationInstanceContext"
+import { ScreenNameContext } from "./ScreenNameContext"
+import type { ScreenOptionsContextType } from "./ScreenOptionsContext"
+import { ModalScreenItemOptionsContext } from "./ScreenOptionsContext"
+import type { NavigationControllerView } from "./types"
+import { WrappedScreenItem } from "./WrappedScreenItem"
+
+interface RootStackNavigationProps {
+ children: React.ReactNode
+
+ headerConfig?: ScreenStackHeaderConfigProps
+}
+export const RootStackNavigation = ({ children, headerConfig }: RootStackNavigationProps) => {
+ const [attachNavigationScrollViewRef, setAttachNavigationScrollViewRef] =
+ useState | null>(null)
+
+ return (
+
+
+
+ atom(""), [])}>
+
+
+
+
+ {children}
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+const ScreenItemsMapper = () => {
+ const chainCtxValue = useContext(ChainNavigationContext)
+ const routes = useAtomValue(chainCtxValue.routesAtom)
+
+ const routeGroups = useMemo(() => {
+ const groups: Route[][] = []
+ let currentGroup: Route[] = []
+
+ routes.forEach((route, index) => {
+ // Start a new group if this is the first route or if it's a modal (non-push)
+ if (index === 0 || route.type !== "push") {
+ // Save the previous group if it's not empty
+ if (currentGroup.length > 0) {
+ groups.push(currentGroup)
+ }
+ // Start a new group with this route
+ currentGroup = [route]
+ } else {
+ // Add to the current group if it's a push route
+ currentGroup.push(route)
+ }
+ })
+
+ // Add the last group if it's not empty
+ if (currentGroup.length > 0) {
+ groups.push(currentGroup)
+ }
+
+ return groups
+ }, [routes])
+
+ return (
+
+ {routeGroups.map((group) => {
+ const isPushGroup = group.at(0)?.type === "push"
+ if (!isPushGroup) {
+ return
+ }
+ return
+ })}
+
+ )
+}
+
+const MapScreenStackItems: FC<{
+ routes: Route[]
+}> = memo(({ routes }) => {
+ return routes.map((route) => {
+ return (
+
+
+
+ )
+ })
+})
+
+const ModalScreenStackItems: FC<{
+ routes: Route[]
+}> = memo(({ routes }) => {
+ const rootModalRoute = routes.at(0)
+ const modalScreenOptionsCtxValue = useMemo>(
+ () => atom({}),
+ [],
+ )
+
+ const modalScreenOptions = useAtomValue(modalScreenOptionsCtxValue)
+
+ if (!rootModalRoute) {
+ return null
+ }
+ const isStackModal = rootModalRoute.type !== "formSheet"
+
+ if (isStackModal) {
+ return (
+
+
+
+
+
+
+ {routes.slice(1).map((route) => {
+ return (
+
+
+
+ )
+ })}
+
+
+
+ )
+ }
+ return routes.map((route) => {
+ return (
+
+
+
+ )
+ })
+})
+
+const ResolveView: FC<{
+ comp?: NavigationControllerView
+ element?: React.ReactElement
+ props?: unknown
+}> = ({ comp: Component, element, props }) => {
+ if (Component && typeof Component === "function") {
+ return
+ }
+ if (element) {
+ return element
+ }
+ throw new Error("No component or element provided")
+}
diff --git a/apps/mobile/src/lib/navigation/StackScreenHeaderPortal.tsx b/apps/mobile/src/lib/navigation/StackScreenHeaderPortal.tsx
new file mode 100644
index 0000000000..76850e4a7d
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/StackScreenHeaderPortal.tsx
@@ -0,0 +1,19 @@
+import { jotaiStore } from "@follow/utils"
+import { useStore } from "jotai"
+import type { FC, PropsWithChildren } from "react"
+import { useContext, useEffect } from "react"
+
+import { ScreenItemContext } from "./ScreenItemContext"
+
+export const StackScreenHeaderPortal: FC = ({ children }) => {
+ const ctxValue = useContext(ScreenItemContext)
+
+ const store = useStore()
+ useEffect(() => {
+ jotaiStore.set(ctxValue.Slot, {
+ ...store.get(ctxValue.Slot),
+ header: children,
+ })
+ }, [ctxValue, children, store])
+ return null
+}
diff --git a/apps/mobile/src/lib/navigation/WrappedScreenItem.tsx b/apps/mobile/src/lib/navigation/WrappedScreenItem.tsx
new file mode 100644
index 0000000000..ef458ad614
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/WrappedScreenItem.tsx
@@ -0,0 +1,143 @@
+import type { PrimitiveAtom } from "jotai"
+import { atom, useAtomValue, useSetAtom } from "jotai"
+import type { FC, ReactNode } from "react"
+import { memo, useContext, useMemo } from "react"
+import { StyleSheet, View } from "react-native"
+import { useSharedValue } from "react-native-reanimated"
+import type { ScreenStackHeaderConfigProps, StackPresentationTypes } from "react-native-screens"
+import { ScreenStackItem } from "react-native-screens"
+
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { useColor } from "@/src/theme/colors"
+
+import { useCombinedLifecycleEvents } from "./__internal/hooks"
+import { defaultHeaderConfig } from "./config"
+import type { ScreenItemContextType } from "./ScreenItemContext"
+import { ScreenItemContext } from "./ScreenItemContext"
+import type { ScreenOptionsContextType } from "./ScreenOptionsContext"
+import { ScreenOptionsContext } from "./ScreenOptionsContext"
+import type { NavigationControllerViewExtraProps } from "./types"
+
+export const WrappedScreenItem: FC<
+ {
+ screenId: string
+ children: React.ReactNode
+ stackPresentation?: StackPresentationTypes
+
+ headerConfig?: ScreenStackHeaderConfigProps
+ screenOptions?: NavigationControllerViewExtraProps
+ } & ScreenOptionsContextType
+> = memo(
+ ({
+ screenId,
+ children,
+ stackPresentation,
+ headerConfig,
+ screenOptions: screenOptionsProp,
+ ...rest
+ }) => {
+ const navigation = useNavigation()
+ const reAnimatedScrollY = useSharedValue(0)
+ const scrollViewHeight = useSharedValue(0)
+ const scrollViewContentHeight = useSharedValue(0)
+ const ctxValue = useMemo(
+ () => ({
+ screenId,
+ isFocusedAtom: atom(false),
+ isAppearedAtom: atom(false),
+ isDisappearedAtom: atom(false),
+ reAnimatedScrollY,
+ Slot: atom<{
+ header: ReactNode
+ }>({
+ header: null,
+ }),
+ scrollViewHeight,
+ scrollViewContentHeight,
+ }),
+ [screenId, reAnimatedScrollY, scrollViewHeight, scrollViewContentHeight],
+ )
+ const setIsFocused = useSetAtom(ctxValue.isFocusedAtom)
+ const setIsAppeared = useSetAtom(ctxValue.isAppearedAtom)
+ const setIsDisappeared = useSetAtom(ctxValue.isDisappearedAtom)
+
+ const combinedLifecycleEvents = useCombinedLifecycleEvents(ctxValue.screenId, {
+ onAppear: () => {
+ setIsFocused(true)
+ setIsAppeared(true)
+ setIsDisappeared(false)
+ },
+ onDisappear: () => {
+ setIsFocused(false)
+ setIsAppeared(false)
+ setIsDisappeared(true)
+ },
+ onWillAppear: () => {
+ setIsFocused(false)
+ setIsAppeared(true)
+ setIsDisappeared(false)
+ },
+ onWillDisappear: () => {
+ setIsFocused(false)
+ setIsAppeared(false)
+ setIsDisappeared(true)
+ },
+ })
+
+ const screenOptionsCtxValue = useMemo>(
+ () => atom({}),
+ [],
+ )
+
+ const screenOptionsFromCtx = useAtomValue(screenOptionsCtxValue)
+
+ const backgroundColor = useColor("systemBackground")
+
+ // Priority: Ctx > Define on Component
+
+ const mergedScreenOptions = {
+ ...screenOptionsProp,
+ ...screenOptionsFromCtx,
+ }
+ return (
+
+
+ {
+ navigation.__internal_dismiss(screenId)
+ }}
+ {...rest}
+ {...mergedScreenOptions}
+ >
+
+ {children}
+
+
+
+ )
+ },
+)
+const Header = () => {
+ const ctxValue = useContext(ScreenItemContext)
+
+ const Slot = useAtomValue(ctxValue.Slot)
+
+ if (!Slot.header) {
+ return null
+ }
+ return {Slot.header}
+}
+
+WrappedScreenItem.displayName = "WrappedScreenItem"
diff --git a/apps/mobile/src/lib/navigation/__internal/hooks.ts b/apps/mobile/src/lib/navigation/__internal/hooks.ts
new file mode 100644
index 0000000000..b3f68cc462
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/__internal/hooks.ts
@@ -0,0 +1,55 @@
+import { useEffect, useMemo, useRef } from "react"
+
+import { useNavigation } from "../hooks"
+
+export const useCombinedLifecycleEvents = (
+ screenId: string,
+ {
+ onAppear,
+ onDisappear,
+ onWillAppear,
+ onWillDisappear,
+ }: {
+ onAppear?: () => void
+ onDisappear?: () => void
+ onWillAppear?: () => void
+ onWillDisappear?: () => void
+ } = {},
+) => {
+ const navigation = useNavigation()
+ const stableRef = useRef({
+ onAppear,
+ onDisappear,
+ onWillAppear,
+ onWillDisappear,
+ })
+
+ useEffect(() => {
+ stableRef.current = {
+ onAppear,
+ onDisappear,
+ onWillAppear,
+ onWillDisappear,
+ }
+ }, [onAppear, onDisappear, onWillAppear, onWillDisappear])
+ return useMemo(() => {
+ return {
+ onAppear: () => {
+ navigation.emit("didAppear", { screenId })
+ stableRef.current.onAppear?.()
+ },
+ onDisappear: () => {
+ navigation.emit("didDisappear", { screenId })
+ stableRef.current.onDisappear?.()
+ },
+ onWillAppear: () => {
+ navigation.emit("willAppear", { screenId })
+ stableRef.current.onWillAppear?.()
+ },
+ onWillDisappear: () => {
+ navigation.emit("willDisappear", { screenId })
+ stableRef.current.onWillDisappear?.()
+ },
+ }
+ }, [navigation, screenId])
+}
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/BottomTabContext.tsx b/apps/mobile/src/lib/navigation/bottom-tab/BottomTabContext.tsx
new file mode 100644
index 0000000000..0c0c74d20b
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/BottomTabContext.tsx
@@ -0,0 +1,14 @@
+import type { PrimitiveAtom } from "jotai"
+import { createContext } from "react"
+
+import type { TabScreenProps } from "./TabScreen"
+
+export interface BottomTabContextType {
+ currentIndexAtom: PrimitiveAtom
+
+ loadedableIndexAtom: PrimitiveAtom>
+
+ tabScreensAtom: PrimitiveAtom
+ tabHeightAtom: PrimitiveAtom
+}
+export const BottomTabContext = createContext(null!)
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/CalculateTabBarOpacity.tsx b/apps/mobile/src/lib/navigation/bottom-tab/CalculateTabBarOpacity.tsx
new file mode 100644
index 0000000000..7411b68ccb
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/CalculateTabBarOpacity.tsx
@@ -0,0 +1,41 @@
+import { useContext } from "react"
+import { useAnimatedReaction } from "react-native-reanimated"
+
+import { BottomTabBarBackgroundContext } from "@/src/components/layouts/tabbar/contexts/BottomTabBarBackgroundContext"
+import { useBottomTabBarHeight } from "@/src/components/layouts/tabbar/hooks"
+
+import { ScreenItemContext } from "../ScreenItemContext"
+
+// FIXME
+export const CalculateTabBarOpacity = () => {
+ const { scrollViewContentHeight, scrollViewHeight, reAnimatedScrollY } =
+ useContext(ScreenItemContext)
+ const { opacity } = useContext(BottomTabBarBackgroundContext)
+ const tabbarHeight = useBottomTabBarHeight()
+ useAnimatedReaction(
+ () => {
+ // Calculate how close we are to the bottom of the content
+ const distanceFromBottom =
+ scrollViewContentHeight.value -
+ scrollViewHeight.value -
+ reAnimatedScrollY.value -
+ tabbarHeight
+
+ // Define a threshold for when to start fading (in pixels)
+ const fadeThreshold = 50
+
+ // If we're within the threshold distance from the bottom, calculate opacity
+ if (distanceFromBottom <= fadeThreshold) {
+ // Linear interpolation: 0 at bottom, 1 at threshold
+ return Math.max(0, distanceFromBottom / fadeThreshold)
+ }
+
+ // Otherwise, keep the tab bar fully visible
+ return 1
+ },
+ (opacityValue) => {
+ opacity.value = opacityValue
+ },
+ )
+ return null
+}
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.ios.tsx b/apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.ios.tsx
new file mode 100644
index 0000000000..4fd6b2b3a3
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.ios.tsx
@@ -0,0 +1,34 @@
+import { requireNativeView } from "expo"
+import { useSetAtom } from "jotai"
+import { useContext } from "react"
+import type { ViewProps } from "react-native"
+import { StyleSheet, View } from "react-native"
+
+import { BottomTabContext } from "./BottomTabContext"
+
+const TabBarPortalNative = requireNativeView("TabBarPortal")
+
+export const TabBarPortal = ({ children }: { children: React.ReactNode }) => {
+ const { tabHeightAtom } = useContext(BottomTabContext)
+ const setTabHeight = useSetAtom(tabHeightAtom)
+ return (
+
+ {
+ setTabHeight(e.nativeEvent.layout.height)
+ }}
+ >
+ {children}
+
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ position: "absolute",
+ bottom: 0,
+ left: 0,
+ right: 0,
+ },
+})
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.tsx b/apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.tsx
new file mode 100644
index 0000000000..8e48f49114
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/TabBarPortal.tsx
@@ -0,0 +1,30 @@
+import { useSetAtom } from "jotai"
+import { useContext } from "react"
+import { StyleSheet, View } from "react-native"
+
+import { BottomTabContext } from "./BottomTabContext"
+
+export const TabBarPortal = ({ children }: { children: React.ReactNode }) => {
+ const { tabHeightAtom } = useContext(BottomTabContext)
+ const setTabHeight = useSetAtom(tabHeightAtom)
+ return (
+
+ {
+ setTabHeight(e.nativeEvent.layout.height)
+ }}
+ >
+ {children}
+
+
+ )
+}
+
+const styles = StyleSheet.create({
+ container: {
+ position: "absolute",
+ bottom: 0,
+ left: 0,
+ right: 0,
+ },
+})
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/TabRoot.ios.tsx b/apps/mobile/src/lib/navigation/bottom-tab/TabRoot.ios.tsx
new file mode 100644
index 0000000000..83bd59287a
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/TabRoot.ios.tsx
@@ -0,0 +1,69 @@
+import { requireNativeView } from "expo"
+import { atom, useAtom } from "jotai"
+import type { FC, PropsWithChildren } from "react"
+import * as React from "react"
+import { useCallback, useMemo, useState } from "react"
+import type { NativeSyntheticEvent, ViewProps } from "react-native"
+import { StyleSheet } from "react-native"
+
+import type { BottomTabContextType } from "./BottomTabContext"
+import { BottomTabContext } from "./BottomTabContext"
+import type { TabScreenProps } from "./TabScreen.ios"
+import { TabScreen } from "./TabScreen.ios"
+
+interface TabRootProps {
+ initialTabIndex?: number
+}
+
+const TabBarRoot = requireNativeView<
+ {
+ onTabIndexChange: (e: NativeSyntheticEvent<{ index: number }>) => void
+ selectedIndex: number
+ } & ViewProps
+>("TabBarRoot")
+
+export const TabRoot: FC = ({
+ children,
+ initialTabIndex = 0,
+}) => {
+ const [tabIndexAtom] = useState(() => atom(initialTabIndex))
+ const [tabIndex, setTabIndex] = useAtom(tabIndexAtom)
+
+ const ctxValue = useMemo(
+ () => ({
+ currentIndexAtom: tabIndexAtom,
+ loadedableIndexAtom: atom(new Set()),
+ tabScreensAtom: atom([]),
+ tabHeightAtom: atom(0),
+ }),
+ [tabIndexAtom],
+ )
+
+ const MapChildren = useMemo(() => {
+ let cnt = 0
+ return React.Children.map(children, (child) => {
+ if (typeof child === "object" && child && "type" in child && child.type === TabScreen) {
+ return React.cloneElement(child, {
+ tabScreenIndex: cnt++,
+ })
+ }
+ return child
+ })
+ }, [children])
+ return (
+
+ {
+ setTabIndex(e.nativeEvent.index)
+ },
+ [setTabIndex],
+ )}
+ selectedIndex={tabIndex}
+ >
+ {MapChildren}
+
+
+ )
+}
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/TabRoot.tsx b/apps/mobile/src/lib/navigation/bottom-tab/TabRoot.tsx
new file mode 100644
index 0000000000..96bc89b5c1
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/TabRoot.tsx
@@ -0,0 +1,48 @@
+import { atom } from "jotai"
+import type { FC, PropsWithChildren } from "react"
+import * as React from "react"
+import { useMemo, useState } from "react"
+import { StyleSheet, View } from "react-native"
+
+import type { BottomTabContextType } from "./BottomTabContext"
+import { BottomTabContext } from "./BottomTabContext"
+import type { TabScreenProps } from "./TabScreen"
+import { TabScreen } from "./TabScreen"
+
+interface TabRootProps {
+ initialTabIndex?: number
+}
+
+export const TabRoot: FC = ({
+ children,
+ initialTabIndex = 0,
+}) => {
+ const [tabIndexAtom] = useState(() => atom(initialTabIndex))
+
+ const ctxValue = useMemo(
+ () => ({
+ currentIndexAtom: tabIndexAtom,
+ loadedableIndexAtom: atom(new Set()),
+ tabScreensAtom: atom([]),
+ tabHeightAtom: atom(0),
+ }),
+ [tabIndexAtom],
+ )
+
+ const MapChildren = useMemo(() => {
+ let cnt = 0
+ return React.Children.map(children, (child) => {
+ if (typeof child === "object" && child && "type" in child && child.type === TabScreen) {
+ return React.cloneElement(child, {
+ tabScreenIndex: cnt++,
+ })
+ }
+ return child
+ })
+ }, [children])
+ return (
+
+ {MapChildren}
+
+ )
+}
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/TabScreen.ios.tsx b/apps/mobile/src/lib/navigation/bottom-tab/TabScreen.ios.tsx
new file mode 100644
index 0000000000..e9a7bc8b0b
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/TabScreen.ios.tsx
@@ -0,0 +1,106 @@
+import { requireNativeView } from "expo"
+import { atom, useAtom, useAtomValue, useSetAtom } from "jotai"
+import type { FC, PropsWithChildren } from "react"
+import { useContext, useEffect, useMemo } from "react"
+import type { ViewProps } from "react-native"
+import { StyleSheet } from "react-native"
+
+import { WrappedScreenItem } from "../WrappedScreenItem"
+import { BottomTabContext } from "./BottomTabContext"
+import { LifecycleEvents, ScreenNameRegister } from "./shared"
+import type { TabScreenContextType } from "./TabScreenContext"
+import { TabScreenContext } from "./TabScreenContext"
+import type { TabbarIconProps, TabScreenComponent } from "./types"
+
+const TabScreenNative = requireNativeView("TabScreen")
+
+export interface TabScreenProps {
+ title: string
+ tabScreenIndex: number
+ renderIcon?: (props: TabbarIconProps) => React.ReactNode
+}
+export const TabScreen: FC>> = ({
+ children,
+ ...props
+}) => {
+ const { tabScreenIndex } = props as any as TabScreenProps
+
+ const {
+ loadedableIndexAtom,
+ currentIndexAtom,
+ tabScreensAtom: tabScreens,
+ } = useContext(BottomTabContext)
+
+ const setTabScreens = useSetAtom(tabScreens)
+ useEffect(() => {
+ const propsFromChildren: Partial = {}
+ if (children && typeof children === "object") {
+ const childType = (children as any).type as TabScreenComponent
+ if ("tabBarIcon" in childType) {
+ propsFromChildren.renderIcon = childType.tabBarIcon
+ }
+ if ("title" in childType) {
+ propsFromChildren.title = childType.title
+ }
+ }
+
+ setTabScreens((prev) => [
+ ...prev,
+ {
+ ...propsFromChildren,
+ ...props,
+ tabScreenIndex,
+ },
+ ])
+
+ return () => {
+ setTabScreens((prev) =>
+ prev.filter((tabScreen) => tabScreen.tabScreenIndex !== tabScreenIndex),
+ )
+ }
+ }, [setTabScreens, props, tabScreenIndex, children])
+
+ const currentSelectedIndex = useAtomValue(currentIndexAtom)
+
+ const isSelected = useMemo(
+ () => currentSelectedIndex === tabScreenIndex,
+ [currentSelectedIndex, tabScreenIndex],
+ )
+
+ const [loadedableIndexSet, setLoadedableIndex] = useAtom(loadedableIndexAtom)
+
+ const isLoadedBefore = loadedableIndexSet.has(tabScreenIndex)
+ useEffect(() => {
+ if (isSelected) {
+ setLoadedableIndex((prev) => {
+ prev.add(tabScreenIndex)
+ return new Set(prev)
+ })
+ }
+ }, [setLoadedableIndex, tabScreenIndex, isSelected])
+
+ const ctxValue = useMemo(
+ () => ({
+ tabScreenIndex,
+
+ titleAtom: atom(props.title),
+ }),
+ [tabScreenIndex, props.title],
+ )
+ const shouldLoadReact = isSelected || isLoadedBefore
+
+ return (
+
+
+ {shouldLoadReact && (
+
+ {children}
+
+
+ {/* */}
+
+ )}
+
+
+ )
+}
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/TabScreen.tsx b/apps/mobile/src/lib/navigation/bottom-tab/TabScreen.tsx
new file mode 100644
index 0000000000..c7e83b1b1f
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/TabScreen.tsx
@@ -0,0 +1,102 @@
+import { atom, useAtom, useAtomValue, useSetAtom } from "jotai"
+import type { FC, PropsWithChildren } from "react"
+import { useContext, useEffect, useMemo } from "react"
+import { StyleSheet, View } from "react-native"
+
+import { WrappedScreenItem } from "../WrappedScreenItem"
+import { BottomTabContext } from "./BottomTabContext"
+import { LifecycleEvents, ScreenNameRegister } from "./shared"
+import type { TabScreenContextType } from "./TabScreenContext"
+import { TabScreenContext } from "./TabScreenContext"
+import type { TabbarIconProps, TabScreenComponent } from "./types"
+
+export interface TabScreenProps {
+ title: string
+ tabScreenIndex: number
+ renderIcon?: (props: TabbarIconProps) => React.ReactNode
+}
+export const TabScreen: FC>> = ({
+ children,
+ ...props
+}) => {
+ const { tabScreenIndex } = props as any as TabScreenProps
+
+ const {
+ loadedableIndexAtom,
+ currentIndexAtom,
+ tabScreensAtom: tabScreens,
+ } = useContext(BottomTabContext)
+
+ const setTabScreens = useSetAtom(tabScreens)
+ useEffect(() => {
+ const propsFromChildren: Partial = {}
+ if (children && typeof children === "object") {
+ const childType = (children as any).type as TabScreenComponent
+ if ("tabBarIcon" in childType) {
+ propsFromChildren.renderIcon = childType.tabBarIcon
+ }
+ if ("title" in childType) {
+ propsFromChildren.title = childType.title
+ }
+ }
+
+ setTabScreens((prev) => [
+ ...prev,
+ {
+ ...propsFromChildren,
+ ...props,
+ tabScreenIndex,
+ },
+ ])
+
+ return () => {
+ setTabScreens((prev) =>
+ prev.filter((tabScreen) => tabScreen.tabScreenIndex !== tabScreenIndex),
+ )
+ }
+ }, [setTabScreens, props, tabScreenIndex, children])
+
+ const currentSelectedIndex = useAtomValue(currentIndexAtom)
+
+ const isSelected = useMemo(
+ () => currentSelectedIndex === tabScreenIndex,
+ [currentSelectedIndex, tabScreenIndex],
+ )
+
+ const [loadedableIndexSet, setLoadedableIndex] = useAtom(loadedableIndexAtom)
+
+ const isLoadedBefore = loadedableIndexSet.has(tabScreenIndex)
+ useEffect(() => {
+ if (isSelected) {
+ setLoadedableIndex((prev) => {
+ prev.add(tabScreenIndex)
+ return new Set(prev)
+ })
+ }
+ }, [setLoadedableIndex, tabScreenIndex, isSelected])
+
+ const ctxValue = useMemo(
+ () => ({
+ tabScreenIndex,
+
+ titleAtom: atom(props.title),
+ }),
+ [tabScreenIndex, props.title],
+ )
+ const shouldLoadReact = isSelected || isLoadedBefore
+
+ return (
+
+
+ {shouldLoadReact && (
+
+ {children}
+
+
+ {/* */}
+
+ )}
+
+
+ )
+}
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/TabScreenContext.tsx b/apps/mobile/src/lib/navigation/bottom-tab/TabScreenContext.tsx
new file mode 100644
index 0000000000..6f0f9089a3
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/TabScreenContext.tsx
@@ -0,0 +1,9 @@
+import type { PrimitiveAtom } from "jotai"
+import { createContext } from "react"
+
+export interface TabScreenContextType {
+ tabScreenIndex: number
+
+ titleAtom: PrimitiveAtom
+}
+export const TabScreenContext = createContext(null!)
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/hooks.ts b/apps/mobile/src/lib/navigation/bottom-tab/hooks.ts
new file mode 100644
index 0000000000..cbe0e16866
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/hooks.ts
@@ -0,0 +1,38 @@
+import { useAtomValue, useSetAtom } from "jotai"
+import { useCallback, useContext } from "react"
+
+import { ScreenItemContext } from "../ScreenItemContext"
+import { BottomTabContext } from "./BottomTabContext"
+import { TabScreenContext } from "./TabScreenContext"
+
+export const useScreenIsAppeared = () => {
+ const { isAppearedAtom } = useContext(ScreenItemContext)
+
+ return useAtomValue(isAppearedAtom)
+}
+
+export const useTabScreenIsFocused = () => {
+ const { currentIndexAtom } = useContext(BottomTabContext)
+ const currentIndex = useAtomValue(currentIndexAtom)
+ const { isFocusedAtom } = useContext(ScreenItemContext)
+ const isFocused = useAtomValue(isFocusedAtom)
+ const { tabScreenIndex } = useContext(TabScreenContext)
+
+ return currentIndex === tabScreenIndex && isFocused
+}
+
+export const useSwitchTab = () => {
+ const { currentIndexAtom } = useContext(BottomTabContext)
+ const setCurrentIndex = useSetAtom(currentIndexAtom)
+ return useCallback(
+ (index: number) => {
+ setCurrentIndex(index)
+ },
+ [setCurrentIndex],
+ )
+}
+
+export const useBottomTabHeight = () => {
+ const { tabHeightAtom } = useContext(BottomTabContext)
+ return useAtomValue(tabHeightAtom)
+}
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/shared.tsx b/apps/mobile/src/lib/navigation/bottom-tab/shared.tsx
new file mode 100644
index 0000000000..16522cd2d4
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/shared.tsx
@@ -0,0 +1,40 @@
+import { useAtomValue, useSetAtom, useStore } from "jotai"
+import { useContext, useEffect } from "react"
+
+import { ScreenItemContext } from "../ScreenItemContext"
+import { ScreenNameContext } from "../ScreenNameContext"
+import { useTabScreenIsFocused } from "./hooks"
+import { TabScreenContext } from "./TabScreenContext"
+
+export const ScreenNameRegister = () => {
+ const nameAtom = useContext(ScreenNameContext)
+ const { titleAtom } = useContext(TabScreenContext)
+ const isFocused = useTabScreenIsFocused()
+ const title = useAtomValue(titleAtom)
+ const store = useStore()
+ useEffect(() => {
+ if (isFocused) {
+ store.set(nameAtom, title)
+ }
+ }, [isFocused, title, nameAtom, store])
+ return null
+}
+
+export const LifecycleEvents = ({ isSelected }: { isSelected: boolean }) => {
+ const { isFocusedAtom, isAppearedAtom, isDisappearedAtom } = useContext(ScreenItemContext)
+ const setIsFocused = useSetAtom(isFocusedAtom)
+ const setIsAppeared = useSetAtom(isAppearedAtom)
+ const setIsDisappeared = useSetAtom(isDisappearedAtom)
+ useEffect(() => {
+ if (isSelected) {
+ setIsFocused(true)
+ setIsAppeared(true)
+ setIsDisappeared(false)
+ } else {
+ setIsFocused(false)
+ setIsAppeared(false)
+ setIsDisappeared(true)
+ }
+ }, [isSelected, setIsAppeared, setIsDisappeared, setIsFocused])
+ return null
+}
diff --git a/apps/mobile/src/lib/navigation/bottom-tab/types.ts b/apps/mobile/src/lib/navigation/bottom-tab/types.ts
new file mode 100644
index 0000000000..c236e3f06e
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/bottom-tab/types.ts
@@ -0,0 +1,11 @@
+import type { FC } from "react"
+
+export type TabbarIconProps = {
+ focused: boolean
+ size: number
+ color: string
+}
+export type TabScreenComponent = FC & {
+ tabBarIcon?: (props: TabbarIconProps) => React.ReactNode
+ title?: string
+}
diff --git a/apps/mobile/src/lib/navigation/config.ts b/apps/mobile/src/lib/navigation/config.ts
new file mode 100644
index 0000000000..866a04d6ad
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/config.ts
@@ -0,0 +1,5 @@
+import type { ScreenStackHeaderConfigProps } from "react-native-screens"
+
+export const defaultHeaderConfig: ScreenStackHeaderConfigProps = {
+ hidden: true,
+}
diff --git a/apps/mobile/src/lib/navigation/debug/DebugButtonGroup.tsx b/apps/mobile/src/lib/navigation/debug/DebugButtonGroup.tsx
new file mode 100644
index 0000000000..bb31a60724
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/debug/DebugButtonGroup.tsx
@@ -0,0 +1,159 @@
+/* eslint-disable no-console */
+import { useEffect, useRef } from "react"
+import { Button, SafeAreaView, ScrollView, Text, TouchableOpacity, View } from "react-native"
+
+import { FullWindowOverlay } from "@/src/components/common/FullWindowOverlay"
+import { CloseCuteReIcon } from "@/src/icons/close_cute_re"
+
+import { useNavigation } from "../hooks"
+import { Navigation } from "../Navigation"
+import type { NavigationControllerView } from "../types"
+
+export const DebugButtonGroup = () => {
+ useEffect(() => {
+ const disposers: (() => void)[] = []
+ disposers.push(
+ Navigation.rootNavigation.on("willAppear", (payload) => {
+ console.log("willAppear", payload)
+ }),
+ Navigation.rootNavigation.on("didAppear", (payload) => {
+ console.log("didAppear", payload)
+ }),
+ Navigation.rootNavigation.on("willDisappear", (payload) => {
+ console.log("willDisappear", payload)
+ }),
+ Navigation.rootNavigation.on("didDisappear", (payload) => {
+ console.log("didDisappear", payload)
+ }),
+ )
+ return () => {
+ disposers.forEach((disposer) => disposer())
+ }
+ }, [])
+
+ const cntRef = useRef(0)
+ return (
+
+
+
+ Ad eveniet laboriosam hic voluptas non facilis sint. Laborum rem et provident blanditiis
+ iure rem. Porro voluptate ipsa explicabo voluptatem cumque est architecto. Sit
+ voluptatibus exercitationem recusandae cupiditate tenetur inventore amet repellendus
+ ratione. Nobis nulla harum soluta aliquam iure unde saepe. Modi ipsam harum aspernatur
+ aperiam quod pariatur nisi corporis. Doloribus molestiae a dolore. Veniam commodi nesciunt
+ beatae itaque aliquid nemo. Ut labore rem voluptates. Reprehenderit recusandae voluptate
+ earum consectetur tempora corrupti. Nulla ducimus enim sit ipsam eum esse debitis saepe.
+ Nobis ut voluptas. Id sapiente voluptate soluta ipsa esse corrupti facere nemo recusandae.
+ Dignissimos eum mollitia hic corrupti. Reiciendis voluptates et provident sed laborum
+ consequuntur. Quod nemo nesciunt dignissimos doloribus veniam odio.
+
+
+
+
+
+
+
+ )
+}
+
+const TestScreen3: NavigationControllerView = () => {
+ const navigation = useNavigation()
+ return (
+
+ {
+ navigation.back()
+ }}
+ >
+
+
+
+ TestScreen3
+ Hello2
+ Hello2
+ Hello2
+ Hello2
+ Hello2
+ Hello2
+ Hello2
+ Hello2
+ Hello2
+
+ )
+}
+TestScreen3.sheetAllowedDetents = [0.7, 1]
+TestScreen3.sheetCornerRadius = 0
+
+const TestScreen: NavigationControllerView = () => {
+ const navigation = useNavigation()
+ return (
+
+ {
+ navigation.back()
+ }}
+ >
+
+
+
+ {Array.from({ length: 100 }).map((_, index) => {
+ return (
+
+ TestScreen
+
+ )
+ })}
+
+
+ )
+}
+
+TestScreen.sheetAllowedDetents = [0.5, 1]
diff --git a/apps/mobile/src/lib/navigation/hooks.ts b/apps/mobile/src/lib/navigation/hooks.ts
new file mode 100644
index 0000000000..96bb533c62
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/hooks.ts
@@ -0,0 +1,74 @@
+import { useContext } from "react"
+import type { StackPresentationTypes } from "react-native-screens"
+
+import { GroupedNavigationRouteContext } from "./GroupedNavigationRouteContext"
+import { NavigationInstanceContext } from "./NavigationInstanceContext"
+import { ScreenItemContext } from "./ScreenItemContext"
+
+export const useCanBack = () => {
+ const { screenId } = useContext(ScreenItemContext)
+
+ const routeGroups = useContext(GroupedNavigationRouteContext)
+ if (!routeGroups) return false
+
+ const routeGroup = routeGroups.find((group) => group.some((r) => r.id === screenId))
+ if (!routeGroup) return false
+
+ if (routeGroup.length === 0) return false
+ // If routeGroup is M, P, P and current route is P, then we can back
+
+ const firstIsModal = routeGroup.at(0)?.type !== "push"
+ const onlyOne = routeGroup.length === 1
+ if (firstIsModal && onlyOne) return false
+ return true
+}
+
+/**
+ * If screen present as a modal, then we can dismiss it.
+ */
+export const useCanDismiss = () => {
+ const { screenId } = useContext(ScreenItemContext)
+
+ const routeGroups = useContext(GroupedNavigationRouteContext)
+ if (!routeGroups) return false
+
+ const routeGroup = routeGroups.find((group) => group.some((r) => r.id === screenId))
+ if (!routeGroup || routeGroup.length === 0) return false
+
+ return routeGroup.at(0)?.type !== "push"
+}
+
+export const useNavigation = () => {
+ const navigation = useContext(NavigationInstanceContext)
+ if (!navigation) {
+ throw new Error("Navigation not found")
+ }
+ return navigation
+}
+
+export const useScreenIsInModal = useCanDismiss
+
+const sheetTypes = new Set(["formSheet", "modal"])
+export const useScreenIsInSheetModal = () => {
+ const { screenId } = useContext(ScreenItemContext)
+
+ const routeGroups = useContext(GroupedNavigationRouteContext)
+ if (!routeGroups) return false
+
+ const routeGroup = routeGroups.find((group) => group.some((r) => r.id === screenId))
+ if (!routeGroup || routeGroup.length === 0) return false
+ const first = routeGroup.at(0)
+ if (!first) return false
+ return sheetTypes.has(first.type)
+}
+
+export const useIsSingleRouteInGroup = () => {
+ const { screenId } = useContext(ScreenItemContext)
+
+ const routeGroups = useContext(GroupedNavigationRouteContext)
+ if (!routeGroups) return false
+
+ const routeGroup = routeGroups.find((group) => group.some((r) => r.id === screenId))
+ if (!routeGroup || routeGroup.length === 0) return false
+ return routeGroup.length === 1
+}
diff --git a/apps/mobile/src/lib/navigation/sitemap/registry.ts b/apps/mobile/src/lib/navigation/sitemap/registry.ts
new file mode 100644
index 0000000000..f7a8f275bf
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/sitemap/registry.ts
@@ -0,0 +1,41 @@
+import type { NavigationControllerView, NavigationControllerViewType } from "../types"
+
+type RegisterOptions = {
+ stackPresentation: NavigationControllerViewType
+}
+type Registry = RegisterOptions & {
+ Component: NavigationControllerView
+ props: any
+}
+
+class NavigationSitemapRegistryStatic {
+ private map = new Map()
+ registerByComponent(
+ controllerView: NavigationControllerView,
+ props?: T,
+ options?: Partial,
+ ) {
+ const title = controllerView.name || controllerView.displayName
+ if (!title) {
+ if (__DEV__) {
+ console.error("registerByComponent: no name, ignore")
+ }
+ return
+ }
+ this.map.set(title, {
+ Component: controllerView,
+ props,
+ stackPresentation: "push",
+ ...options,
+ })
+ }
+
+ [Symbol.iterator]() {
+ return this.map.entries()
+ }
+ entries() {
+ return [...this.map.entries()]
+ }
+}
+
+export const NavigationSitemapRegistry = new NavigationSitemapRegistryStatic()
diff --git a/apps/mobile/src/lib/navigation/types.ts b/apps/mobile/src/lib/navigation/types.ts
new file mode 100644
index 0000000000..009771f9eb
--- /dev/null
+++ b/apps/mobile/src/lib/navigation/types.ts
@@ -0,0 +1,36 @@
+import type { FC } from "react"
+import type { ScreenProps, StackPresentationTypes } from "react-native-screens"
+
+export interface NavigationPushOptions {
+ Component?: NavigationControllerView
+ element?: React.ReactElement
+}
+export type NavigationControllerViewExtraProps = {
+ /**
+ * Unique identifier for the view.
+ */
+ id?: string
+
+ /**
+ * Title for the view.
+ */
+ title?: string
+
+ /**
+ * Whether the view is transparent.
+ */
+ transparent?: boolean
+} & Pick<
+ ScreenProps,
+ | "sheetAllowedDetents"
+ | "sheetCornerRadius"
+ | "sheetExpandsWhenScrolledToEdge"
+ | "sheetElevation"
+ | "sheetGrabberVisible"
+ | "sheetInitialDetentIndex"
+ | "sheetLargestUndimmedDetentIndex"
+>
+
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
+export type NavigationControllerView = FC
& NavigationControllerViewExtraProps
+export type NavigationControllerViewType = StackPresentationTypes
diff --git a/apps/mobile/src/main.tsx b/apps/mobile/src/main.tsx
index 96119e9ab6..695012dd1f 100644
--- a/apps/mobile/src/main.tsx
+++ b/apps/mobile/src/main.tsx
@@ -1,14 +1,87 @@
+import "./global.css"
+
import { registerRootComponent } from "expo"
import { Image } from "expo-image"
-import { App } from "expo-router/build/qualified-entry"
import { cssInterop } from "nativewind"
import { enableFreeze } from "react-native-screens"
+import { Analytics } from "./Analytics"
+import { App } from "./App"
+import { BottomTabProvider } from "./components/layouts/tabbar/BottomTabProvider"
+import { BottomTabs } from "./components/layouts/tabbar/BottomTabs"
import { initializeApp } from "./initialize"
+import { TabBarPortal } from "./lib/navigation/bottom-tab/TabBarPortal"
+import { TabRoot } from "./lib/navigation/bottom-tab/TabRoot"
+import { TabScreen } from "./lib/navigation/bottom-tab/TabScreen"
+import { NavigationSitemapRegistry } from "./lib/navigation/sitemap/registry"
+import { RootStackNavigation } from "./lib/navigation/StackNavigation"
+import { RootProviders } from "./providers"
+import { TermsScreen } from "./screens/(headless)/terms"
+import { TwoFactorAuthScreen } from "./screens/(modal)/2fa"
+import { ForgetPasswordScreen } from "./screens/(modal)/forget-password"
+import { LoginScreen } from "./screens/(modal)/login"
+import { SignUpScreen } from "./screens/(modal)/sign-up"
+import { IndexTabScreen } from "./screens/(stack)/(tabs)"
+import { DiscoverTabScreen } from "./screens/(stack)/(tabs)/discover"
+import { SettingsTabScreen } from "./screens/(stack)/(tabs)/settings"
+import { SubscriptionsTabScreen } from "./screens/(stack)/(tabs)/subscriptions"
+import { OnboardingScreen } from "./screens/onboarding"
enableFreeze(true)
cssInterop(Image, { className: "style" })
initializeApp()
-registerRootComponent(App)
+registerRootComponent(() => )
+
+const App4 = () => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+;[TermsScreen].forEach((Component) => {
+ NavigationSitemapRegistry.registerByComponent(Component)
+})
+;[LoginScreen, SignUpScreen, ForgetPasswordScreen, TwoFactorAuthScreen].forEach((Component) => {
+ NavigationSitemapRegistry.registerByComponent(Component, void 0, {
+ stackPresentation: "modal",
+ })
+})
+;[OnboardingScreen].forEach((Component) => {
+ NavigationSitemapRegistry.registerByComponent(Component, void 0, {
+ stackPresentation: "transparentModal",
+ })
+})
diff --git a/apps/mobile/src/modules/context-menu/entry.tsx b/apps/mobile/src/modules/context-menu/entry.tsx
index a9fbb782a4..39ad9c5170 100644
--- a/apps/mobile/src/modules/context-menu/entry.tsx
+++ b/apps/mobile/src/modules/context-menu/entry.tsx
@@ -1,4 +1,4 @@
-import { router } from "expo-router"
+import { PortalProvider } from "@gorhom/portal"
import type { PropsWithChildren } from "react"
import { useCallback } from "react"
import { Share, Text, View } from "react-native"
@@ -8,10 +8,11 @@ import {
preloadWebViewEntry,
} from "@/src/components/native/webview/EntryContentWebView"
import { ContextMenu } from "@/src/components/ui/context-menu"
-import { PortalHost } from "@/src/components/ui/portal"
import { openLink } from "@/src/lib/native"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { toast } from "@/src/lib/toast"
import { getHorizontalScrolling, useSelectedView } from "@/src/modules/screen/atoms"
+import { EntryDetailScreen } from "@/src/screens/(stack)/entries/[entryId]"
import { useIsEntryStarred } from "@/src/store/collection/hooks"
import { collectionSyncService } from "@/src/store/collection/store"
import { useEntry } from "@/src/store/entry/hooks"
@@ -23,13 +24,17 @@ export const EntryItemContextMenu = ({ id, children }: PropsWithChildren<{ id: s
const view = useSelectedView()
const isEntryStarred = useIsEntryStarred(id)
+ const navigation = useNavigation()
const handlePressPreview = useCallback(() => {
const isHorizontalScrolling = getHorizontalScrolling()
if (entry && !isHorizontalScrolling) {
preloadWebViewEntry(entry)
- router.push(`/entries/${id}`)
+ navigation.pushControllerView(EntryDetailScreen, {
+ entryId: id,
+ view: view!,
+ })
}
- }, [entry, id])
+ }, [entry, id, navigation, view])
if (!entry) return null
@@ -40,14 +45,14 @@ export const EntryItemContextMenu = ({ id, children }: PropsWithChildren<{ id: s
{() => (
-
+
{entry.title?.trim()}
-
+
)}
diff --git a/apps/mobile/src/modules/context-menu/feeds.tsx b/apps/mobile/src/modules/context-menu/feeds.tsx
index 1a51f96c0e..6efe0a8612 100644
--- a/apps/mobile/src/modules/context-menu/feeds.tsx
+++ b/apps/mobile/src/modules/context-menu/feeds.tsx
@@ -1,5 +1,4 @@
import { FeedViewType } from "@follow/constants"
-import { router } from "expo-router"
import type { FC, PropsWithChildren } from "react"
import { useCallback, useMemo } from "react"
import type { ListRenderItemInfo } from "react-native"
@@ -7,7 +6,9 @@ import { Alert, Clipboard, FlatList, View } from "react-native"
import { ContextMenu } from "@/src/components/ui/context-menu"
import { views } from "@/src/constants/views"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { toast } from "@/src/lib/toast"
+import { FeedScreen } from "@/src/screens/(stack)/feeds/[feedId]"
import { useEntryIdsByFeedId } from "@/src/store/entry/hooks"
import { getFeed } from "@/src/store/feed/getter"
import { getSubscription } from "@/src/store/subscription/getter"
@@ -25,7 +26,7 @@ export const SubscriptionFeedItemContextMenu: FC<
}
> = ({ id, children, view }) => {
const allCategories = useSubscriptionCategory(view)
-
+ const navigation = useNavigation()
return (
{children}
@@ -35,7 +36,9 @@ export const SubscriptionFeedItemContextMenu: FC<
{
- router.push(`/feeds/${id}`)
+ navigation.pushControllerView(FeedScreen, {
+ feedId: id,
+ })
}}
>
{() => }
diff --git a/apps/mobile/src/modules/debug/index.tsx b/apps/mobile/src/modules/debug/index.tsx
index 4abd169fcc..67dba8c1a7 100644
--- a/apps/mobile/src/modules/debug/index.tsx
+++ b/apps/mobile/src/modules/debug/index.tsx
@@ -1,4 +1,3 @@
-import { router } from "expo-router"
import { useAtom } from "jotai"
import { atomWithStorage } from "jotai/utils"
import { useMemo } from "react"
@@ -10,7 +9,9 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"
import { ReAnimatedTouchableOpacity } from "@/src/components/common/AnimatedComponents"
import { BugCuteReIcon } from "@/src/icons/bug_cute_re"
import { JotaiPersistSyncStorage } from "@/src/lib/jotai"
+import { Navigation } from "@/src/lib/navigation/Navigation"
import { useEnvProfile } from "@/src/lib/proxy-env"
+import { DebugScreen } from "@/src/screens/(headless)/debug"
export const DebugButton = () => {
const cachedPositionAtom = useMemo(
@@ -40,7 +41,8 @@ export const DebugButton = () => {
})
.onEnd((event) => {
if (Math.abs(event.translationX) < 5 && Math.abs(event.translationY) < 5) {
- runOnJS(router.push)("/debug")
+ // @ts-expect-error
+ runOnJS(Navigation.rootNavigation.pushControllerView)(DebugScreen)
return
}
@@ -66,7 +68,7 @@ export const DebugButton = () => {
{
- runOnJS(router.push)("/debug")
+ Navigation.rootNavigation.pushControllerView(DebugScreen)
}}
style={[
{
diff --git a/apps/mobile/src/modules/dialogs/AddFeedDialog.tsx b/apps/mobile/src/modules/dialogs/AddFeedDialog.tsx
index 8cec02fb91..a708e53bd9 100644
--- a/apps/mobile/src/modules/dialogs/AddFeedDialog.tsx
+++ b/apps/mobile/src/modules/dialogs/AddFeedDialog.tsx
@@ -1,10 +1,12 @@
-import { router } from "expo-router"
import { Text, TextInput, View } from "react-native"
import { useColor } from "react-native-uikit-colors"
import { LinkCuteReIcon } from "@/src/icons/link_cute_re"
import type { DialogComponent } from "@/src/lib/dialog"
import { Dialog } from "@/src/lib/dialog"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { Navigation } from "@/src/lib/navigation/Navigation"
+import { FollowScreen } from "@/src/screens/(modal)/follow"
import { accentColor } from "@/src/theme/colors"
export const AddFeedDialog: DialogComponent<{
@@ -12,17 +14,15 @@ export const AddFeedDialog: DialogComponent<{
}> = ({ ctx }) => {
const label = useColor("label")
+ const navigation = useNavigation()
const { dismiss } = Dialog.useDialogContext()!
const handleAdd = () => {
dismiss()
const value = ctx.url
if (!value) return
- router.push({
- pathname: "/follow",
- params: {
- url: value,
- type: "url",
- },
+ navigation.pushControllerView(FollowScreen, {
+ url: value,
+ type: "url",
})
}
@@ -56,12 +56,9 @@ AddFeedDialog.onConfirm = (ctx) => {
ctx.dismiss()
setTimeout(() => {
- router.push({
- pathname: "/follow",
- params: {
- url: value,
- type: "url",
- },
+ Navigation.rootNavigation.pushControllerView(FollowScreen, {
+ url: value,
+ type: "url",
})
}, 16)
}
diff --git a/apps/mobile/src/modules/discover/RecommendationListItem.tsx b/apps/mobile/src/modules/discover/RecommendationListItem.tsx
index 114a4c975a..f9c78939fa 100644
--- a/apps/mobile/src/modules/discover/RecommendationListItem.tsx
+++ b/apps/mobile/src/modules/discover/RecommendationListItem.tsx
@@ -1,6 +1,5 @@
import type { RSSHubCategories } from "@follow/constants"
import type { RSSHubRouteDeclaration } from "@follow/models/src/rsshub"
-import { router } from "expo-router"
import type { FC } from "react"
import { memo, useMemo } from "react"
import { Clipboard, Text, TouchableOpacity, View } from "react-native"
@@ -10,7 +9,9 @@ import * as ContextMenu from "zeego/context-menu"
import { Grid } from "@/src/components/ui/grid"
import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
import { openLink } from "@/src/lib/native"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { toast } from "@/src/lib/toast"
+import { RsshubFormScreen } from "@/src/screens/(modal)/rsshub-form"
import { RSSHubCategoryCopyMap } from "./copy"
@@ -37,6 +38,8 @@ export const RecommendationListItem: FC<{
}
}, [data])
+ const navigation = useNavigation()
+
return (
@@ -114,13 +117,10 @@ export const RecommendationListItem: FC<{
{
- router.push({
- pathname: "/rsshub-form",
- params: {
- routePrefix,
- route: JSON.stringify(data.routes[route]),
- name: data.name,
- },
+ navigation.presentControllerView(RsshubFormScreen, {
+ routePrefix,
+ route: data.routes[route]!,
+ name: data.name,
})
}}
className="bg-gray-6 h-10 flex-row items-center justify-center overflow-hidden rounded-xl px-2"
diff --git a/apps/mobile/src/modules/discover/Recommendations.tsx b/apps/mobile/src/modules/discover/Recommendations.tsx
index 0c0732a9fd..820ad12abb 100644
--- a/apps/mobile/src/modules/discover/Recommendations.tsx
+++ b/apps/mobile/src/modules/discover/Recommendations.tsx
@@ -17,7 +17,6 @@ import {
} from "react-native"
import type { PanGestureHandlerGestureEvent } from "react-native-gesture-handler"
import { PanGestureHandler } from "react-native-gesture-handler"
-import { useSafeAreaInsets } from "react-native-safe-area-context"
import { AnimatedScrollView } from "@/src/components/common/AnimatedComponents"
import {
@@ -192,8 +191,6 @@ const Tab: TabComponent = ({ tab, isSelected, ...rest }) => {
const { headerHeightAtom } = useContext(DiscoverContext)
const headerHeight = useAtomValue(headerHeightAtom)
- const insets = useSafeAreaInsets()
-
const scrollOffsetRef = useRef(0)
const { animatedY } = useContext(DiscoverContext)
@@ -202,6 +199,7 @@ const Tab: TabComponent = ({ tab, isSelected, ...rest }) => {
animatedY.value = scrollOffsetRef.current
}
}, [animatedY, isSelected])
+
if (isLoading) {
return
}
@@ -220,10 +218,11 @@ const Tab: TabComponent = ({ tab, isSelected, ...rest }) => {
keyExtractor={keyExtractor}
getItemType={getItemType}
renderItem={ItemRenderer}
+ automaticallyAdjustsScrollIndicatorInsets={false}
scrollIndicatorInsets={{
right: -2,
- top: headerHeight - insets.top,
- bottom: tabHeight - insets.bottom,
+ top: headerHeight,
+ bottom: tabHeight,
}}
contentContainerStyle={{ paddingBottom: tabHeight, paddingTop: headerHeight }}
removeClippedSubviews
diff --git a/apps/mobile/src/modules/discover/search-tabs/SearchFeed.tsx b/apps/mobile/src/modules/discover/search-tabs/SearchFeed.tsx
index fab62f2fd9..fa94dbeace 100644
--- a/apps/mobile/src/modules/discover/search-tabs/SearchFeed.tsx
+++ b/apps/mobile/src/modules/discover/search-tabs/SearchFeed.tsx
@@ -1,6 +1,5 @@
import { FeedViewType } from "@follow/constants"
import { useQuery } from "@tanstack/react-query"
-import { router } from "expo-router"
import { useAtomValue } from "jotai"
import type { FC } from "react"
import type { ListRenderItem, ListRenderItemInfo } from "react-native"
@@ -12,6 +11,8 @@ import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
import { Image } from "@/src/components/ui/image/Image"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { apiClient } from "@/src/lib/api-fetch"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { FollowScreen } from "@/src/screens/(modal)/follow"
import { useSubscriptionByFeedId } from "@/src/store/subscription/hooks"
import { useSearchPageContext } from "../ctx"
@@ -64,13 +65,17 @@ const renderItem: ListRenderItem = (props) => (
const SearchFeedItem: FC> = ({ item }) => {
const isSubscribed = useSubscriptionByFeedId(item.feed?.id ?? "")
+ const navigation = useNavigation()
return (
{
if (item.feed?.id) {
- router.push(`/follow?id=${item.feed.id}`)
+ navigation.pushControllerView(FollowScreen, {
+ id: item.feed.id,
+ type: "feed",
+ })
}
}}
>
diff --git a/apps/mobile/src/modules/discover/search-tabs/SearchList.tsx b/apps/mobile/src/modules/discover/search-tabs/SearchList.tsx
index 16082abb2d..3e9e789ccc 100644
--- a/apps/mobile/src/modules/discover/search-tabs/SearchList.tsx
+++ b/apps/mobile/src/modules/discover/search-tabs/SearchList.tsx
@@ -1,5 +1,4 @@
import { useQuery } from "@tanstack/react-query"
-import { router } from "expo-router"
import { useAtomValue } from "jotai"
import { memo } from "react"
import { Text, View } from "react-native"
@@ -8,6 +7,8 @@ import { FallbackIcon } from "@/src/components/ui/icon/fallback-icon"
import { Image } from "@/src/components/ui/image/Image"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { apiClient } from "@/src/lib/api-fetch"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { FollowScreen } from "@/src/screens/(modal)/follow"
import { useSubscriptionByListId } from "@/src/store/subscription/hooks"
import { useSearchPageContext } from "../ctx"
@@ -58,12 +59,16 @@ const renderItem = ({ item }: { item: SearchResultItem }) => (
const SearchListCard = memo(({ item }: { item: SearchResultItem }) => {
const isSubscribed = useSubscriptionByListId(item.list?.id ?? "")
+ const navigation = useNavigation()
return (
{
if (item.list?.id) {
- router.push(`/follow?id=${item.list.id}&type=list`)
+ navigation.pushControllerView(FollowScreen, {
+ id: item.list.id,
+ type: "list",
+ })
}
}}
>
diff --git a/apps/mobile/src/modules/discover/search.tsx b/apps/mobile/src/modules/discover/search.tsx
index 72090e9a54..6abbacab6d 100644
--- a/apps/mobile/src/modules/discover/search.tsx
+++ b/apps/mobile/src/modules/discover/search.tsx
@@ -1,5 +1,4 @@
import { RSSHubCategories } from "@follow/constants"
-import { router } from "expo-router"
import { useAtom, useAtomValue, useSetAtom } from "jotai"
import type { FC } from "react"
import { useContext, useEffect, useRef, useState } from "react"
@@ -17,6 +16,9 @@ import { BlurEffect } from "@/src/components/common/BlurEffect"
import { getDefaultHeaderHeight } from "@/src/components/layouts/utils"
import { TabBar } from "@/src/components/ui/tabview/TabBar"
import { Search2CuteReIcon } from "@/src/icons/search_2_cute_re"
+import { useScreenIsInSheetModal } from "@/src/lib/navigation/hooks"
+import { Navigation } from "@/src/lib/navigation/Navigation"
+import SearchScreen from "@/src/screens/(headless)/search"
import { accentColor, useColor } from "@/src/theme/colors"
import { AddFeedButton } from "../screen/action"
@@ -31,7 +33,9 @@ export const SearchHeader: FC<{
}> = ({ animatedX, onLayout }) => {
const frame = useSafeAreaFrame()
const insets = useSafeAreaInsets()
- const headerHeight = getDefaultHeaderHeight(frame, false, insets.top)
+
+ const sheetModal = useScreenIsInSheetModal()
+ const headerHeight = getDefaultHeaderHeight(frame, sheetModal, insets.top)
return (
{
const DiscoverHeaderImpl = () => {
const frame = useSafeAreaFrame()
const insets = useSafeAreaInsets()
- const headerHeight = getDefaultHeaderHeight(frame, false, insets.top)
+ const sheetModal = useScreenIsInSheetModal()
+ const headerHeight = getDefaultHeaderHeight(frame, sheetModal, insets.top)
const { animatedX, currentTabAtom, headerHeightAtom } = useContext(DiscoverContext)
const setCurrentTab = useSetAtom(currentTabAtom)
const setHeaderHeight = useSetAtom(headerHeightAtom)
@@ -112,7 +117,7 @@ const PlaceholerSearchBar = () => {
style={styles.searchbar}
className="bg-tertiary-system-fill"
onPress={() => {
- router.push("/search")
+ Navigation.rootNavigation.pushControllerView(SearchScreen)
}}
>
{
setIsFocused(false)
setSearchValue("")
- if (router.canGoBack()) {
- router.back()
+ if (Navigation.rootNavigation.canGoBack()) {
+ Navigation.rootNavigation.back()
}
}}
>
diff --git a/apps/mobile/src/modules/entry-content/EntryReadHistory.tsx b/apps/mobile/src/modules/entry-content/EntryReadHistory.tsx
index 2944478d75..6451c32864 100644
--- a/apps/mobile/src/modules/entry-content/EntryReadHistory.tsx
+++ b/apps/mobile/src/modules/entry-content/EntryReadHistory.tsx
@@ -1,9 +1,10 @@
import { useQuery } from "@tanstack/react-query"
-import { router } from "expo-router"
import { Pressable, View } from "react-native"
import { UserAvatar } from "@/src/components/ui/avatar/UserAvatar"
import { apiClient } from "@/src/lib/api-fetch"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { ProfileScreen } from "@/src/screens/(modal)/profile"
import { useEntry } from "@/src/store/entry/hooks"
import { isInboxEntry } from "@/src/store/entry/utils"
import { userActions } from "@/src/store/user/store"
@@ -25,6 +26,7 @@ export const EntryReadHistory = ({ entryId }: { entryId: string }) => {
staleTime: 1000 * 60 * 5,
enabled: !isInboxEntry(entry),
})
+ const navigation = useNavigation()
if (!data?.data.entryReadHistories) return null
return (
@@ -45,7 +47,9 @@ export const EntryReadHistory = ({ entryId }: { entryId: string }) => {
},
])
- router.push(`/profile?userId=${user.id}`)
+ navigation.presentControllerView(ProfileScreen, {
+ userId: user.id,
+ })
}}
className="border-system-background bg-tertiary-system-background overflow-hidden rounded-full border-2"
key={userId}
diff --git a/apps/mobile/src/modules/entry-content/EntryTitle.tsx b/apps/mobile/src/modules/entry-content/EntryTitle.tsx
index fdba6a617d..34247fb7a9 100644
--- a/apps/mobile/src/modules/entry-content/EntryTitle.tsx
+++ b/apps/mobile/src/modules/entry-content/EntryTitle.tsx
@@ -1,10 +1,11 @@
import { useTypeScriptHappyCallback } from "@follow/hooks"
-import { useHeaderHeight } from "@react-navigation/elements"
-import { useCallback, useContext, useEffect, useState } from "react"
+import { useCallback, useContext, useState } from "react"
import { Text, useWindowDimensions, View } from "react-native"
import type { SharedValue } from "react-native-reanimated"
import Animated, {
interpolate,
+ runOnJS,
+ useAnimatedReaction,
useAnimatedStyle,
useSharedValue,
withTiming,
@@ -12,20 +13,20 @@ import Animated, {
import { useUISettingKey } from "@/src/atoms/settings/ui"
import { DefaultHeaderBackButton } from "@/src/components/layouts/header/NavigationHeader"
-import { NavigationContext } from "@/src/components/layouts/views/NavigationContext"
import { NavigationBlurEffectHeader } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { UserAvatar } from "@/src/components/ui/avatar/UserAvatar"
import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
+import { ScreenItemContext } from "@/src/lib/navigation/ScreenItemContext"
import { EntryContentContext, useEntryContentContext } from "@/src/modules/entry-content/ctx"
import { EntryContentHeaderRightActions } from "@/src/modules/entry-content/EntryContentHeaderRightActions"
import { useEntry } from "@/src/store/entry/hooks"
import { useFeed } from "@/src/store/feed/hooks"
+import { useHeaderHeight } from "../screen/hooks/useHeaderHeight"
import { EntryReadHistory } from "./EntryReadHistory"
export const EntryTitle = ({ title, entryId }: { title: string; entryId: string }) => {
- const { scrollY } = useContext(NavigationContext)!
-
+ const reanimatedScrollY = useContext(ScreenItemContext).reAnimatedScrollY
const [titleHeight, setTitleHeight] = useState(0)
const opacityAnimatedValue = useSharedValue(0)
@@ -34,30 +35,25 @@ export const EntryTitle = ({ title, entryId }: { title: string; entryId: string
const [isHeaderTitleVisible, setIsHeaderTitleVisible] = useState(true)
- useEffect(() => {
- const id = scrollY.addListener((value) => {
- if (value.value > titleHeight + headerHeight) {
+ useAnimatedReaction(
+ () => reanimatedScrollY.value,
+ (value) => {
+ if (value > titleHeight + headerHeight) {
opacityAnimatedValue.value = withTiming(1, { duration: 100 })
- setIsHeaderTitleVisible(true)
+ runOnJS(setIsHeaderTitleVisible)(true)
} else {
opacityAnimatedValue.value = withTiming(0, { duration: 100 })
- setIsHeaderTitleVisible(false)
+ runOnJS(setIsHeaderTitleVisible)(false)
}
- })
-
- return () => {
- scrollY.removeListener(id)
- }
- }, [scrollY, title, titleHeight, headerHeight, opacityAnimatedValue])
+ },
+ )
const ctxValue = useEntryContentContext()
const headerBarWidth = useWindowDimensions().width
return (
<>
(
(
-
-
-
- ),
- [ctxValue, entryId, opacityAnimatedValue, isHeaderTitleVisible],
- )}
- headerTitle={useCallback(
- () => (
-
+
+
+ }
+ headerTitle={
+
+
-
- {title}
-
-
- ),
- [headerBarWidth, opacityAnimatedValue, title],
- )}
+ {title}
+
+
+ }
/>
{
@@ -111,7 +101,7 @@ export const EntryTitle = ({ title, entryId }: { title: string; entryId: string
}
export const EntrySocialTitle = ({ entryId }: { entryId: string }) => {
- const { scrollY } = useContext(NavigationContext)!
+ const reanimatedScrollY = useContext(ScreenItemContext).reAnimatedScrollY
const opacityAnimatedValue = useSharedValue(0)
@@ -130,28 +120,24 @@ export const EntrySocialTitle = ({ entryId }: { entryId: string }) => {
const titleHeight = -60
const [isHeaderTitleVisible, setIsHeaderTitleVisible] = useState(true)
- useEffect(() => {
- const id = scrollY.addListener((value) => {
- if (value.value > titleHeight + headerHeight) {
+ useAnimatedReaction(
+ () => reanimatedScrollY.value,
+ (value) => {
+ if (value > titleHeight + headerHeight) {
opacityAnimatedValue.value = withTiming(1, { duration: 100 })
- setIsHeaderTitleVisible(true)
+ runOnJS(setIsHeaderTitleVisible)(true)
} else {
opacityAnimatedValue.value = withTiming(0, { duration: 100 })
- setIsHeaderTitleVisible(false)
+ runOnJS(setIsHeaderTitleVisible)(false)
}
- })
-
- return () => {
- scrollY.removeListener(id)
- }
- }, [scrollY, titleHeight, headerHeight, opacityAnimatedValue])
+ },
+ )
const ctxValue = useEntryContentContext()
return (
<>
(
@@ -203,7 +189,7 @@ const EntryLeftGroup = ({ canGoBack, entryId, titleOpacityShareValue }: EntryLef
})
return (
-
+
{!hideRecentReader && (
diff --git a/apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx b/apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx
index 49b8710b68..43fe315631 100644
--- a/apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx
+++ b/apps/mobile/src/modules/entry-list/templates/EntryNormalItem.tsx
@@ -1,6 +1,5 @@
import { FeedViewType } from "@follow/constants"
import { formatEstimatedMins } from "@follow/utils"
-import { router } from "expo-router"
import { useCallback, useEffect } from "react"
import { ActivityIndicator, StyleSheet, Text, TouchableOpacity, View } from "react-native"
import ReAnimated, { useAnimatedStyle, useSharedValue, withSpring } from "react-native-reanimated"
@@ -15,8 +14,10 @@ import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { gentleSpringPreset } from "@/src/constants/spring"
import { PauseCuteFiIcon } from "@/src/icons/pause_cute_fi"
import { PlayCuteFiIcon } from "@/src/icons/play_cute_fi"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { getAttachmentState, player } from "@/src/lib/player"
import { getHorizontalScrolling } from "@/src/modules/screen/atoms"
+import { EntryDetailScreen } from "@/src/screens/(stack)/entries/[entryId]"
import { useEntry } from "@/src/store/entry/hooks"
import { getInboxFrom } from "@/src/store/entry/utils"
import { useFeed } from "@/src/store/feed/hooks"
@@ -30,14 +31,17 @@ export function EntryNormalItem({ entryId, extraData }: { entryId: string; extra
const from = getInboxFrom(entry)
const feed = useFeed(entry?.feedId as string)
const view = useEntryListContextView()
-
+ const navigation = useNavigation()
const handlePress = useCallback(() => {
const isHorizontalScrolling = getHorizontalScrolling()
if (entry && !isHorizontalScrolling) {
preloadWebViewEntry(entry)
- router.push(`/entries/${entryId}`)
+ navigation.pushControllerView(EntryDetailScreen, {
+ entryId,
+ view,
+ })
}
- }, [entryId, entry])
+ }, [entryId, entry, navigation, view])
const unreadZoomSharedValue = useSharedValue(entry?.read ? 0 : 1)
diff --git a/apps/mobile/src/modules/entry-list/templates/EntrySocialItem.tsx b/apps/mobile/src/modules/entry-list/templates/EntrySocialItem.tsx
index be4ffec1b9..18051c15d0 100644
--- a/apps/mobile/src/modules/entry-list/templates/EntrySocialItem.tsx
+++ b/apps/mobile/src/modules/entry-list/templates/EntrySocialItem.tsx
@@ -1,5 +1,4 @@
import { FeedViewType } from "@follow/constants"
-import { router } from "expo-router"
import { useCallback, useEffect, useMemo } from "react"
import { Pressable, Text, View } from "react-native"
import ReAnimated, { useAnimatedStyle, useSharedValue, withSpring } from "react-native-reanimated"
@@ -13,7 +12,10 @@ import { Image } from "@/src/components/ui/image/Image"
import { ItemPressableStyle } from "@/src/components/ui/pressable/enum"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { gentleSpringPreset } from "@/src/constants/spring"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { getHorizontalScrolling } from "@/src/modules/screen/atoms"
+import { EntryDetailScreen } from "@/src/screens/(stack)/entries/[entryId]"
+import { FeedScreen } from "@/src/screens/(stack)/feeds/[feedId]"
import { useEntry } from "@/src/store/entry/hooks"
import { useFeed } from "@/src/store/feed/hooks"
import { unreadSyncService } from "@/src/store/unread/store"
@@ -26,13 +28,17 @@ export function EntrySocialItem({ entryId }: { entryId: string }) {
const feed = useFeed(entry?.feedId || "")
+ const navigation = useNavigation()
const handlePress = useCallback(() => {
const isHorizontalScrolling = getHorizontalScrolling()
if (!isHorizontalScrolling) {
unreadSyncService.markEntryAsRead(entryId)
- router.push(`/entries/${entryId}?view=${FeedViewType.SocialMedia}`)
+ navigation.pushControllerView(EntryDetailScreen, {
+ entryId,
+ view: FeedViewType.SocialMedia,
+ })
}
- }, [entryId])
+ }, [entryId, navigation])
const unreadZoomSharedValue = useSharedValue(entry?.read ? 0 : 1)
@@ -61,6 +67,7 @@ export function EntrySocialItem({ entryId }: { entryId: string }) {
const memoedMediaUrlList = useMemo(() => {
return entry?.media?.map((i) => i.url) ?? []
}, [entry])
+
if (!entry) return
const { description, publishedAt, media } = entry
@@ -81,7 +88,10 @@ export function EntrySocialItem({ entryId }: { entryId: string }) {
{
- router.push(`/feeds/${entry.feedId}`)
+ if (!entry.feedId) return
+ navigation.pushControllerView(FeedScreen, {
+ feedId: entry.feedId,
+ })
}}
>
{entry.authorAvatar ? (
diff --git a/apps/mobile/src/modules/feed-drawer/drawer.tsx b/apps/mobile/src/modules/feed-drawer/drawer.tsx
deleted file mode 100644
index da1ef9fad0..0000000000
--- a/apps/mobile/src/modules/feed-drawer/drawer.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-import type { PropsWithChildren } from "react"
-import { useCallback } from "react"
-import { useWindowDimensions, View } from "react-native"
-import { Drawer } from "react-native-drawer-layout"
-import type { PanGestureType } from "react-native-gesture-handler/lib/typescript/handlers/gestures/panGesture"
-
-import { isIOS } from "@/src/lib/platform"
-
-import { useFeedDrawer, useIsDrawerSwipeDisabled } from "./atoms"
-import { CollectionPanel } from "./collection-panel"
-import { FeedPanel } from "./feed-panel"
-
-export const FeedDrawer = ({ children }: PropsWithChildren) => {
- const { isDrawerOpen, openDrawer, closeDrawer } = useFeedDrawer()
- const winDim = useWindowDimensions()
- const isDrawerSwipeDisabled = useIsDrawerSwipeDisabled()
-
- const renderDrawerContent = useCallback(() => , [])
- const configureGestureHandler = useCallback(
- (handler: PanGestureType) => {
- const swipeEnabled = !isDrawerSwipeDisabled
- if (swipeEnabled) {
- if (isDrawerOpen) {
- return handler.activeOffsetX([-1, 1])
- } else {
- return (
- handler
- // Any movement to the left is a pager swipe
- // so fail the drawer gesture immediately.
- .failOffsetX(-1)
- // Don't rush declaring that a movement to the right
- // is a drawer swipe. It could be a vertical scroll.
- .activeOffsetX(5)
- )
- }
- } else {
- // Fail the gesture immediately.
- // This seems more reliable than the `swipeEnabled` prop.
- // With `swipeEnabled` alone, the gesture may freeze after toggling off/on.
- return handler.failOffsetX([0, 0]).failOffsetY([0, 0])
- }
- },
- [isDrawerOpen, isDrawerSwipeDisabled],
- )
-
- return (
-
- {children}
-
- )
-}
-
-const DrawerContent = () => {
- return (
-
-
-
-
- )
-}
diff --git a/apps/mobile/src/modules/feed-drawer/feed-panel.tsx b/apps/mobile/src/modules/feed-drawer/feed-panel.tsx
index 107b968eb6..422d5f01fb 100644
--- a/apps/mobile/src/modules/feed-drawer/feed-panel.tsx
+++ b/apps/mobile/src/modules/feed-drawer/feed-panel.tsx
@@ -1,6 +1,4 @@
import { cn } from "@follow/utils"
-import { HeaderHeightContext } from "@react-navigation/elements"
-import { router } from "expo-router"
import type { FC } from "react"
import { createContext, memo, useContext, useState } from "react"
import {
@@ -18,10 +16,13 @@ import { useSharedValue } from "react-native-reanimated"
import { useSafeAreaInsets } from "react-native-safe-area-context"
import { BottomTabBarHeightContext } from "@/src/components/layouts/tabbar/contexts/BottomTabBarHeightContext"
+import { NavigationHeaderHeightContext } from "@/src/components/layouts/views/NavigationHeaderContext"
import { AccordionItem } from "@/src/components/ui/accordion/AccordionItem"
import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { MingcuteRightLine } from "@/src/icons/mingcute_right_line"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { FeedScreen } from "@/src/screens/(stack)/feeds/[feedId]"
import { useFeed, usePrefetchFeed } from "@/src/store/feed/hooks"
import { useList } from "@/src/store/list/hooks"
import { useSortedUngroupedSubscription, useSubscription } from "@/src/store/subscription/hooks"
@@ -53,7 +54,7 @@ export const FeedPanel = () => {
}}
/>
-
+
{
-
+
)
}
@@ -141,10 +142,12 @@ const CategoryGrouped = memo(
const rotateValue = useAnimatedValue(1)
const selectedCollection = useSelectedCollection()
const view = selectedCollection.type === "view" ? selectedCollection.viewId : undefined
+ const navigation = useNavigation()
if (view === undefined) {
console.warn("view is undefined", selectedCollection)
return null
}
+
return (
diff --git a/apps/mobile/src/modules/feed/FollowFeed.tsx b/apps/mobile/src/modules/feed/FollowFeed.tsx
index 9eaa529672..b9093ac123 100644
--- a/apps/mobile/src/modules/feed/FollowFeed.tsx
+++ b/apps/mobile/src/modules/feed/FollowFeed.tsx
@@ -1,23 +1,24 @@
import { FeedViewType } from "@follow/constants"
import { zodResolver } from "@hookform/resolvers/zod"
-import { StackActions } from "@react-navigation/native"
-import { router, useNavigation } from "expo-router"
import { useEffect, useState } from "react"
import { Controller, useForm } from "react-hook-form"
import { ActivityIndicator, Text, View } from "react-native"
import { useSafeAreaInsets } from "react-native-safe-area-context"
import { z } from "zod"
-import { ModalHeaderSubmitButton } from "@/src/components/common/ModalSharedComponents"
-import { ModalHeader } from "@/src/components/layouts/header/ModalHeader"
-import { SafeModalScrollView } from "@/src/components/layouts/views/SafeModalScrollView"
+import { HeaderSubmitButton } from "@/src/components/layouts/header/HeaderElements"
+import {
+ NavigationBlurEffectHeader,
+ SafeNavigationScrollView,
+} from "@/src/components/layouts/views/SafeNavigationScrollView"
import { FormProvider } from "@/src/components/ui/form/FormProvider"
import { FormLabel } from "@/src/components/ui/form/Label"
import { FormSwitch } from "@/src/components/ui/form/Switch"
import { TextField } from "@/src/components/ui/form/TextField"
import { GroupedInsetListCard } from "@/src/components/ui/grouped/GroupedList"
import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
-import { useIsRouteOnlyOne } from "@/src/hooks/useIsRouteOnlyOne"
+import { useCanDismiss, useNavigation } from "@/src/lib/navigation/hooks"
+import { useSetModalScreenOptions } from "@/src/lib/navigation/ScreenOptionsContext"
import { FeedViewSelector } from "@/src/modules/feed/view-selector"
import { useFeed, usePrefetchFeed, usePrefetchFeedByUrl } from "@/src/store/feed/hooks"
import { useSubscriptionByFeedId } from "@/src/store/subscription/hooks"
@@ -79,9 +80,10 @@ function FollowImpl(props: { feedId: string }) {
})
const [isLoading, setIsLoading] = useState(false)
- const routeOnlyOne = useIsRouteOnlyOne()
+
const navigate = useNavigation()
- const parentRoute = navigate.getParent()
+
+ const canDismiss = useCanDismiss()
const submit = async () => {
setIsLoading(true)
const values = form.getValues()
@@ -98,42 +100,38 @@ function FollowImpl(props: { feedId: string }) {
setIsLoading(false)
})
- if (router.canDismiss()) {
- router.dismissAll()
-
- if (!routeOnlyOne) {
- parentRoute?.dispatch(StackActions.popToTop())
- }
+ if (canDismiss) {
+ navigate.dismiss()
} else {
- // If we can't dismiss, redirect to the root route
- router.replace("/")
+ navigate.back()
}
}
const insets = useSafeAreaInsets()
const { isValid, isDirty } = form.formState
- const navigation = useNavigation()
+
+ const setScreenOptions = useSetModalScreenOptions()
useEffect(() => {
- navigation.setOptions({
- gestureEnabled: !isDirty,
+ setScreenOptions({
+ preventNativeDismiss: isDirty,
})
- }, [isDirty, navigation])
+ }, [isDirty, setScreenOptions])
if (!feed?.id) {
return Feed ({id}) not found
}
return (
-
-
-
+
)
}
diff --git a/apps/mobile/src/modules/list/FollowList.tsx b/apps/mobile/src/modules/list/FollowList.tsx
index 8bd1774636..3ad1343303 100644
--- a/apps/mobile/src/modules/list/FollowList.tsx
+++ b/apps/mobile/src/modules/list/FollowList.tsx
@@ -1,15 +1,14 @@
import { FeedViewType } from "@follow/constants"
import { zodResolver } from "@hookform/resolvers/zod"
import { useQuery } from "@tanstack/react-query"
-import { router, useNavigation } from "expo-router"
import { useEffect } from "react"
import { Controller, useForm } from "react-hook-form"
import { ActivityIndicator, Alert, StyleSheet, Text, View } from "react-native"
import { z } from "zod"
-import { ModalHeaderSubmitButton } from "@/src/components/common/ModalSharedComponents"
-import { ModalHeader } from "@/src/components/layouts/header/ModalHeader"
+import { HeaderSubmitButton } from "@/src/components/layouts/header/HeaderElements"
import { SafeModalScrollView } from "@/src/components/layouts/views/SafeModalScrollView"
+import { NavigationBlurEffectHeader } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { FormProvider } from "@/src/components/ui/form/FormProvider"
import { FormLabel } from "@/src/components/ui/form/Label"
import { FormSwitch } from "@/src/components/ui/form/Switch"
@@ -18,6 +17,8 @@ import { GroupedInsetListCard } from "@/src/components/ui/grouped/GroupedList"
import { IconWithFallback } from "@/src/components/ui/icon/fallback-icon"
import { PowerIcon } from "@/src/icons/power"
import { apiClient } from "@/src/lib/api-fetch"
+import { useNavigation, useScreenIsInSheetModal } from "@/src/lib/navigation/hooks"
+import { useSetModalScreenOptions } from "@/src/lib/navigation/ScreenOptionsContext"
import { toast } from "@/src/lib/toast"
import { useList } from "@/src/store/list/hooks"
import { listSyncServices } from "@/src/store/list/store"
@@ -65,6 +66,8 @@ const Impl = (props: { id: string }) => {
})
const { isValid, isDirty } = form.formState
+ const isModal = useScreenIsInSheetModal()
+ const navigation = useNavigation()
const submit = async () => {
const payload = form.getValues()
@@ -81,7 +84,11 @@ const Impl = (props: { id: string }) => {
await $method({
json: body,
})
- router.dismiss()
+ if (isModal) {
+ navigation.dismiss()
+ } else {
+ navigation.back()
+ }
toast.success(isSubscribed ? "List updated" : "List followed")
}
if (list.fee && !isSubscribed) {
@@ -109,21 +116,21 @@ const Impl = (props: { id: string }) => {
const isLoading = false
- const navigation = useNavigation()
+ const setModalOptions = useSetModalScreenOptions()
useEffect(() => {
- navigation.setOptions({
+ setModalOptions({
gestureEnabled: !isDirty,
})
- }, [isDirty, navigation])
+ }, [isDirty, setModalOptions])
return (
- {
@@ -65,6 +69,7 @@ export function EmailLogin() {
})
}, [submitMutation])
+ const navigation = useNavigation()
return (
@@ -113,10 +118,16 @@ export function EmailLogin() {
title="Continue"
className="mt-8"
/>
- router.push("/sign-up")}>
+ navigation.presentControllerView(SignUpScreen)}
+ >
Don't have an account?
- router.push("/forget-password")}>
+ navigation.presentControllerView(ForgetPasswordScreen)}
+ >
Forgot password?
diff --git a/apps/mobile/src/modules/login/index.tsx b/apps/mobile/src/modules/login/index.tsx
index 2b958f1d55..b1d7a03518 100644
--- a/apps/mobile/src/modules/login/index.tsx
+++ b/apps/mobile/src/modules/login/index.tsx
@@ -1,4 +1,3 @@
-import { Link, router } from "expo-router"
import { useCallback } from "react"
import { Text, TouchableWithoutFeedback, View } from "react-native"
import { KeyboardController } from "react-native-keyboard-controller"
@@ -6,8 +5,10 @@ import Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanima
import * as ContextMenu from "zeego/context-menu"
import { Logo } from "@/src/components/ui/logo"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { NavigationLink } from "@/src/lib/navigation/NavigationLink"
import { useScaleHeight } from "@/src/lib/responsive"
-import { TermsMarkdown } from "@/src/screens/(headless)/terms"
+import { TermsMarkdown, TermsScreen } from "@/src/screens/(headless)/terms"
import { EmailLogin } from "./email"
import { SocialLogin } from "./social"
@@ -78,13 +79,18 @@ const TermsCheckBox = () => {
}
const TermsText = () => {
+ const navigation = useNavigation()
return (
-
+
Terms of Service
-
+
@@ -92,8 +98,8 @@ const TermsText = () => {
{
- router.push("/terms")
- }, [])}
+ navigation.pushControllerView(TermsScreen)
+ }, [navigation])}
>
{() => (
diff --git a/apps/mobile/src/modules/onboarding/step-preferences.tsx b/apps/mobile/src/modules/onboarding/step-preferences.tsx
index a7d8ac6c2e..aeb64074a1 100644
--- a/apps/mobile/src/modules/onboarding/step-preferences.tsx
+++ b/apps/mobile/src/modules/onboarding/step-preferences.tsx
@@ -1,4 +1,3 @@
-import { router } from "expo-router"
import type { PropsWithChildren } from "react"
import { ActivityIndicator, Pressable, Text, TouchableOpacity, View } from "react-native"
import { useColor } from "react-native-uikit-colors"
@@ -10,15 +9,19 @@ import { FileImportCuteReIcon } from "@/src/icons/file_import_cute_re"
import { ListCheck2CuteReIcon } from "@/src/icons/list_check_2_cute_re"
import { MingcuteRightLine } from "@/src/icons/mingcute_right_line"
import { Settings1CuteReIcon } from "@/src/icons/settings_1_cute_re"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { SelectReadingModeScreen } from "@/src/screens/(modal)/onboarding/select-reading-mode"
import { useWhoami } from "@/src/store/user/hooks"
import { accentColor } from "@/src/theme/colors"
+import { EditProfileScreen } from "../settings/routes/EditProfile"
import { importOpml, setAvatar } from "../settings/utils"
import { useReadingBehavior } from "./hooks/use-reading-behavior"
export const StepPreferences = () => {
const { behavior } = useReadingBehavior()
+ const navigation = useNavigation()
return (
@@ -41,7 +44,7 @@ export const StepPreferences = () => {
}
onPress={() => {
- router.push("/onboarding/edit-profile")
+ navigation.pushControllerView(EditProfileScreen)
}}
>
@@ -58,7 +61,7 @@ export const StepPreferences = () => {
}
onPress={() => {
- router.push("/onboarding/select-reading-mode")
+ navigation.pushControllerView(SelectReadingModeScreen)
}}
>
{behavior === "radical" && (
diff --git a/apps/mobile/src/modules/player/PlayerTabBar.tsx b/apps/mobile/src/modules/player/PlayerTabBar.tsx
index 697fa8a4ce..400270afe1 100644
--- a/apps/mobile/src/modules/player/PlayerTabBar.tsx
+++ b/apps/mobile/src/modules/player/PlayerTabBar.tsx
@@ -1,5 +1,4 @@
import { cn } from "@follow/utils"
-import { router, usePathname } from "expo-router"
import { useEffect } from "react"
import { Pressable, Text, View } from "react-native"
import Animated, {
@@ -10,21 +9,25 @@ import Animated, {
} from "react-native-reanimated"
import { Image } from "@/src/components/ui/image/Image"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { useScreenName } from "@/src/lib/navigation/ScreenNameContext"
import { useActiveTrack } from "@/src/lib/player"
+import { PlayerScreen } from "@/src/screens/player"
import { usePrefetchImageColors } from "@/src/store/image/hooks"
import { PlayPauseButton, SeekButton } from "./control"
-const allowedRoutes = new Set(["/", "/subscriptions", "/player"])
+const allowedScreenNames = new Set(["Home", "Subscriptions", "Player"])
export function PlayerTabBar({ className }: { className?: string }) {
const activeTrack = useActiveTrack()
- const pathname = usePathname()
- const isVisible = !!activeTrack && allowedRoutes.has(pathname)
+ const screenName = useScreenName()
+
+ const isVisible = !!activeTrack && allowedScreenNames.has(screenName)
const isVisibleSV = useSharedValue(isVisible ? 1 : 0)
useEffect(() => {
isVisibleSV.value = withTiming(isVisible ? 1 : 0)
- }, [pathname, isVisible])
+ }, [isVisible, isVisibleSV])
const animatedStyle = useAnimatedStyle(() => {
return {
opacity: isVisibleSV.value,
@@ -34,6 +37,7 @@ export function PlayerTabBar({ className }: { className?: string }) {
})
usePrefetchImageColors(activeTrack?.artwork)
+ const navigation = useNavigation()
return (
{
- router.push("/player")
+ navigation.presentControllerView(PlayerScreen, void 0, "transparentModal")
+ // TODO
}}
>
diff --git a/apps/mobile/src/modules/player/control.tsx b/apps/mobile/src/modules/player/control.tsx
index eed9c65df4..d72f998d31 100644
--- a/apps/mobile/src/modules/player/control.tsx
+++ b/apps/mobile/src/modules/player/control.tsx
@@ -1,5 +1,4 @@
import { cn } from "@follow/utils"
-import { router } from "expo-router"
import { StyleSheet, Text, TouchableOpacity, View } from "react-native"
import { Slider } from "react-native-awesome-slider"
import { FadeOut, useDerivedValue, useSharedValue, ZoomIn } from "react-native-reanimated"
@@ -15,6 +14,7 @@ import { RewindForward30CuteReIcon } from "@/src/icons/rewind_forward_30_cute_re
import { StopCircleCuteFiIcon } from "@/src/icons/stop_circle_cute_fi"
import { VolumeCuteReIcon } from "@/src/icons/volume_cute_re"
import { VolumeOffCuteReIcon } from "@/src/icons/volume_off_cute_re"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { allowedRate, player, useIsPlaying, useProgress, useRate } from "@/src/lib/player"
import { useVolume } from "@/src/lib/volume"
import { useColor } from "@/src/theme/colors"
@@ -113,12 +113,13 @@ export function RateSelector() {
export function StopButton({ size = 24, className, color }: ControlButtonProps) {
const label = useColor("label")
+ const navigation = useNavigation()
return (
{
player.reset()
- router.back()
+ navigation.back()
}}
>
diff --git a/apps/mobile/src/modules/screen/TimelineSelectorList.tsx b/apps/mobile/src/modules/screen/TimelineSelectorList.tsx
index 9926556921..bda416861a 100644
--- a/apps/mobile/src/modules/screen/TimelineSelectorList.tsx
+++ b/apps/mobile/src/modules/screen/TimelineSelectorList.tsx
@@ -1,3 +1,4 @@
+import { useTypeScriptHappyCallback } from "@follow/hooks"
import type {
FlashListProps,
MasonryFlashListProps,
@@ -13,7 +14,7 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"
import { useColor } from "react-native-uikit-colors"
import { useBottomTabBarHeight } from "@/src/components/layouts/tabbar/hooks"
-import { NavigationContext } from "@/src/components/layouts/views/NavigationContext"
+import { ScreenItemContext } from "@/src/lib/navigation/ScreenItemContext"
import { useHeaderHeight } from "@/src/modules/screen/hooks/useHeaderHeight"
import { usePrefetchSubscription } from "@/src/store/subscription/hooks"
import { usePrefetchUnread } from "@/src/store/unread/hooks"
@@ -31,30 +32,39 @@ export const TimelineSelectorList = forwardRef<
const { refetch: subscriptionRefetch } = usePrefetchSubscription()
const headerHeight = useHeaderHeight()
- const { scrollY } = useContext(NavigationContext)!
+ const { reAnimatedScrollY, scrollViewHeight, scrollViewContentHeight } =
+ useContext(ScreenItemContext)!
const onScroll = useCallback(
(e: NativeSyntheticEvent) => {
props.onScroll?.(e)
- scrollY?.setValue(e.nativeEvent.contentOffset.y)
+ reAnimatedScrollY.value = e.nativeEvent.contentOffset.y
},
- [scrollY, props.onScroll],
+ [props, reAnimatedScrollY],
)
const tabBarHeight = useBottomTabBarHeight()
const systemFill = useColor("secondaryLabel")
- // const listRef = useRef>(null)
-
- // useImperativeHandle(ref, () => listRef.current!)
-
return (
{
+ scrollViewHeight.value = e.nativeEvent.layout.height - headerHeight - tabBarHeight
+ },
+ [scrollViewHeight],
+ )}
+ onContentSizeChange={useTypeScriptHappyCallback(
+ (w, h) => {
+ scrollViewContentHeight.value = h
+ },
+ [scrollViewContentHeight],
+ )}
refreshControl={
) => {
props.onScroll?.(e)
- scrollY?.setValue(e.nativeEvent.contentOffset.y)
+ reAnimatedScrollY.value = e.nativeEvent.contentOffset.y
},
- [scrollY, props.onScroll],
+ [props, reAnimatedScrollY],
)
const tabBarHeight = useBottomTabBarHeight()
diff --git a/apps/mobile/src/modules/screen/TimelineSelectorProvider.tsx b/apps/mobile/src/modules/screen/TimelineSelectorProvider.tsx
index 5efa8dddbd..81a2329299 100644
--- a/apps/mobile/src/modules/screen/TimelineSelectorProvider.tsx
+++ b/apps/mobile/src/modules/screen/TimelineSelectorProvider.tsx
@@ -1,16 +1,15 @@
import { env } from "@follow/shared/src/env"
-import { useLocalSearchParams } from "expo-router"
import { useMemo } from "react"
-import { Share, useAnimatedValue, View } from "react-native"
+import { Share, View } from "react-native"
import { useColor } from "react-native-uikit-colors"
import { DefaultHeaderBackButton } from "@/src/components/layouts/header/NavigationHeader"
-import { NavigationContext } from "@/src/components/layouts/views/NavigationContext"
import { NavigationBlurEffectHeader } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { UIBarButton } from "@/src/components/ui/button/UIBarButton"
import { TIMELINE_VIEW_SELECTOR_HEIGHT } from "@/src/constants/ui"
import { Share3CuteReIcon } from "@/src/icons/share_3_cute_re"
import {
+ ActionGroup,
HomeLeftAction,
HomeSharedRightAction,
UnreadOnlyActionButton,
@@ -20,25 +19,29 @@ import { getFeed } from "@/src/store/feed/getter"
import { useEntryListContext, useSelectedFeedTitle } from "./atoms"
-export function TimelineSelectorProvider({ children }: { children: React.ReactNode }) {
- const scrollY = useAnimatedValue(0)
+export function TimelineSelectorProvider({
+ children,
+ feedId,
+}: {
+ children: React.ReactNode
+ feedId?: string
+}) {
const viewTitle = useSelectedFeedTitle()
const screenType = useEntryListContext().type
- const params = useLocalSearchParams()
+
const isFeed = screenType === "feed"
const isTimeline = screenType === "timeline"
const isSubscriptions = screenType === "subscriptions"
return (
- ({ scrollY }), [scrollY])}>
+ <>
isTimeline || isSubscriptions
? () =>
- : () => ,
+ : () => ,
[isTimeline, isSubscriptions],
)}
headerRight={useMemo(() => {
@@ -53,28 +56,27 @@ export function TimelineSelectorProvider({ children }: { children: React.ReactNo
if (isSubscriptions) return () =>
if (isFeed)
return () => (
-
+
-
-
+
+
)
})()
if (Component)
return () => {Component()}
return
- }, [isFeed, isTimeline, isSubscriptions, params])}
+ }, [isFeed, isTimeline, isSubscriptions, feedId])}
headerHideableBottom={isTimeline || isSubscriptions ? TimelineViewSelector : undefined}
headerHideableBottomHeight={TIMELINE_VIEW_SELECTOR_HEIGHT}
/>
{children}
-
+ >
)
}
-function FeedShareAction({ params }: { params: any }) {
+function FeedShareAction({ feedId }: { feedId?: string }) {
const label = useColor("label")
- const { feedId } = params
if (!feedId) return null
return (
diff --git a/apps/mobile/src/modules/screen/action.tsx b/apps/mobile/src/modules/screen/action.tsx
index b6d0de7533..d059ff4e66 100644
--- a/apps/mobile/src/modules/screen/action.tsx
+++ b/apps/mobile/src/modules/screen/action.tsx
@@ -1,6 +1,5 @@
import { cn } from "@follow/utils"
import * as Haptics from "expo-haptics"
-import { router } from "expo-router"
import type { PropsWithChildren } from "react"
import { useCallback } from "react"
import { TouchableOpacity, View } from "react-native"
@@ -13,27 +12,31 @@ import { CheckCircleCuteReIcon } from "@/src/icons/check_circle_cute_re"
import { RoundCuteFiIcon } from "@/src/icons/round_cute_fi"
import { RoundCuteReIcon } from "@/src/icons/round_cute_re"
import { Dialog } from "@/src/lib/dialog"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { toast } from "@/src/lib/toast"
+import { LoginScreen } from "@/src/screens/(modal)/login"
+import { ProfileScreen } from "@/src/screens/(modal)/profile"
import { useWhoami } from "@/src/store/user/hooks"
import { accentColor, useColor } from "@/src/theme/colors"
import { AddFeedDialog } from "../dialogs/AddFeedDialog"
import { MarkAllAsReadDialog } from "../dialogs/MarkAllAsReadDialog"
-const ActionGroup = ({ children, className }: PropsWithChildren<{ className?: string }>) => {
+export const ActionGroup = ({ children, className }: PropsWithChildren<{ className?: string }>) => {
return {children}
}
export function HomeLeftAction() {
const user = useWhoami()
+ const navigation = useNavigation()
const handlePress = useCallback(() => {
if (user) {
- router.push("/profile")
+ navigation.presentControllerView(ProfileScreen, { userId: user.id })
} else {
- router.push("/login")
+ navigation.presentControllerView(LoginScreen)
}
- }, [user])
+ }, [navigation, user])
return (
diff --git a/apps/mobile/src/modules/settings/SettingsList.tsx b/apps/mobile/src/modules/settings/SettingsList.tsx
index 29e0c872e0..8ce7655753 100644
--- a/apps/mobile/src/modules/settings/SettingsList.tsx
+++ b/apps/mobile/src/modules/settings/SettingsList.tsx
@@ -1,13 +1,9 @@
-import { useIsFocused } from "@react-navigation/native"
import * as FileSystem from "expo-file-system"
import type { FC, RefObject } from "react"
-import { Fragment, useContext, useEffect, useMemo } from "react"
+import { Fragment, useMemo } from "react"
import type { ScrollView } from "react-native"
import { Alert, View } from "react-native"
-import { useSafeAreaInsets } from "react-native-safe-area-context"
-import { SetBottomTabBarVisibleContext } from "@/src/components/layouts/tabbar/contexts/BottomTabBarVisibleContext"
-import { useBottomTabBarHeight } from "@/src/components/layouts/tabbar/hooks"
import {
GroupedInsetListCard,
GroupedInsetListNavigationLink,
@@ -26,17 +22,25 @@ import { Settings1CuteFiIcon } from "@/src/icons/settings_1_cute_fi"
import { StarCuteFiIcon } from "@/src/icons/star_cute_fi"
import { UserSettingCuteFiIcon } from "@/src/icons/user_setting_cute_fi"
import { signOut } from "@/src/lib/auth"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import type { Navigation } from "@/src/lib/navigation/Navigation"
import { useWhoami } from "@/src/store/user/hooks"
-import { useSettingsNavigation } from "./hooks"
+import { AboutScreen } from "./routes/About"
+import { AccountScreen } from "./routes/Account"
+import { ActionsScreen } from "./routes/Actions"
+import { AppearanceScreen } from "./routes/Appearance"
+import { DataScreen } from "./routes/Data"
+import { FeedsScreen } from "./routes/Feeds"
+import { GeneralScreen } from "./routes/General"
+import { ListsScreen } from "./routes/Lists"
+import { NotificationsScreen } from "./routes/Notifications"
+import { PrivacyScreen } from "./routes/Privacy"
interface GroupNavigationLink {
label: string
icon: React.ElementType
- onPress: (
- navigation: ReturnType,
- scrollRef: RefObject,
- ) => void
+ onPress: (navigation: Navigation, scrollRef: RefObject) => void
iconBackgroundColor: string
anonymous?: boolean
@@ -47,7 +51,7 @@ const SettingGroupNavigationLinks: GroupNavigationLink[] = [
label: "General",
icon: Settings1CuteFiIcon,
onPress: (navigation) => {
- navigation.navigate("General")
+ navigation.pushControllerView(GeneralScreen)
},
iconBackgroundColor: "#F59E0B",
},
@@ -55,7 +59,7 @@ const SettingGroupNavigationLinks: GroupNavigationLink[] = [
label: "Notifications",
icon: BellRingingCuteFiIcon,
onPress: (navigation) => {
- navigation.navigate("Notifications")
+ navigation.pushControllerView(NotificationsScreen)
},
iconBackgroundColor: "#FBBF24",
todo: true,
@@ -65,7 +69,7 @@ const SettingGroupNavigationLinks: GroupNavigationLink[] = [
label: "Appearance",
icon: PaletteCuteFiIcon,
onPress: (navigation) => {
- navigation.navigate("Appearance")
+ navigation.pushControllerView(AppearanceScreen)
},
iconBackgroundColor: "#FCD34D",
},
@@ -73,7 +77,7 @@ const SettingGroupNavigationLinks: GroupNavigationLink[] = [
label: "Data",
icon: DatabaseIcon,
onPress: (navigation) => {
- navigation.navigate("Data")
+ navigation.pushControllerView(DataScreen)
},
iconBackgroundColor: "#CBAD6D",
anonymous: false,
@@ -82,7 +86,7 @@ const SettingGroupNavigationLinks: GroupNavigationLink[] = [
label: "Account",
icon: UserSettingCuteFiIcon,
onPress: (navigation) => {
- navigation.navigate("Account")
+ navigation.pushControllerView(AccountScreen)
},
iconBackgroundColor: "#d08700",
anonymous: false,
@@ -94,7 +98,7 @@ const DataGroupNavigationLinks: GroupNavigationLink[] = [
label: "Actions",
icon: Magic2CuteFiIcon,
onPress: (navigation) => {
- navigation.navigate("Actions")
+ navigation.pushControllerView(ActionsScreen)
},
iconBackgroundColor: "#059669",
anonymous: false,
@@ -104,7 +108,7 @@ const DataGroupNavigationLinks: GroupNavigationLink[] = [
label: "Feeds",
icon: CertificateCuteFiIcon,
onPress: (navigation) => {
- navigation.navigate("Feeds")
+ navigation.pushControllerView(FeedsScreen)
},
iconBackgroundColor: "#10B981",
todo: true,
@@ -114,7 +118,7 @@ const DataGroupNavigationLinks: GroupNavigationLink[] = [
label: "Lists",
icon: RadaCuteFiIcon,
onPress: (navigation) => {
- navigation.navigate("Lists")
+ navigation.pushControllerView(ListsScreen)
},
iconBackgroundColor: "#34D399",
// todo: true,
@@ -127,7 +131,7 @@ const PrivacyGroupNavigationLinks: GroupNavigationLink[] = [
label: "Privacy",
icon: SafeLockFilledIcon,
onPress: (navigation) => {
- navigation.navigate("Privacy")
+ navigation.pushControllerView(PrivacyScreen)
},
iconBackgroundColor: "#EF4444",
},
@@ -135,7 +139,7 @@ const PrivacyGroupNavigationLinks: GroupNavigationLink[] = [
label: "About",
icon: StarCuteFiIcon,
onPress: (navigation) => {
- navigation.navigate("About")
+ navigation.pushControllerView(AboutScreen)
},
iconBackgroundColor: "#F87181",
},
@@ -168,31 +172,33 @@ const ActionGroupNavigationLinks: GroupNavigationLink[] = [
const NavigationLinkGroup: FC<{
links: GroupNavigationLink[]
- navigation: ReturnType
scrollRef: RefObject
-}> = ({ links, navigation, scrollRef }) => (
-
- {links.map((link) => {
- if (link.todo) {
- return null
- }
- return (
-
-
-
- }
- onPress={() => {
- link.onPress(navigation, scrollRef)
- }}
- />
- )
- })}
-
-)
+}> = ({ links, scrollRef }) => {
+ const navigation = useNavigation()
+ return (
+
+ {links.map((link) => {
+ if (link.todo) {
+ return null
+ }
+ return (
+
+
+
+ }
+ onPress={() => {
+ link.onPress(navigation, scrollRef)
+ }}
+ />
+ )
+ })}
+
+ )
+}
const navigationGroups = [
DataGroupNavigationLinks,
@@ -202,19 +208,6 @@ const navigationGroups = [
] as const
export const SettingsList: FC<{ scrollRef: RefObject }> = ({ scrollRef }) => {
- const navigation = useSettingsNavigation()
-
- const setTabBarVisible = useContext(SetBottomTabBarVisibleContext)
- const isVisible = useIsFocused()
- useEffect(() => {
- if (isVisible) {
- setTabBarVisible(true)
- }
- }, [isVisible, setTabBarVisible])
-
- const insets = useSafeAreaInsets()
- const tabBarHeight = useBottomTabBarHeight()
-
const whoami = useWhoami()
const filteredNavigationGroups = useMemo(() => {
@@ -229,18 +222,10 @@ export const SettingsList: FC<{ scrollRef: RefObject }> = ({ scrollR
.filter((group) => group !== false)
}, [whoami])
return (
-
+
{filteredNavigationGroups.map((group, index) => (
-
+
{index < filteredNavigationGroups.length - 1 && }
))}
diff --git a/apps/mobile/src/modules/settings/UserHeaderBanner.tsx b/apps/mobile/src/modules/settings/UserHeaderBanner.tsx
index d769e780a0..5a948e2691 100644
--- a/apps/mobile/src/modules/settings/UserHeaderBanner.tsx
+++ b/apps/mobile/src/modules/settings/UserHeaderBanner.tsx
@@ -1,6 +1,5 @@
import { cn, getLuminance } from "@follow/utils"
import { LinearGradient } from "expo-linear-gradient"
-import { router } from "expo-router"
import { useMemo } from "react"
import { StyleSheet, Text, TouchableOpacity, View } from "react-native"
import type { SharedValue } from "react-native-reanimated"
@@ -9,6 +8,8 @@ import { useSafeAreaInsets } from "react-native-safe-area-context"
import { useColor } from "react-native-uikit-colors"
import { UserAvatar } from "@/src/components/ui/avatar/UserAvatar"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { LoginScreen } from "@/src/screens/(modal)/login"
import { useImageColors, usePrefetchImageColors } from "@/src/store/image/hooks"
import { useUser } from "@/src/store/user/hooks"
@@ -87,6 +88,8 @@ export const UserHeaderBanner = ({
}
})
+ const navigation = useNavigation()
+
return (
) : !user ? (
- router.push("/login")}>
+ navigation.presentControllerView(LoginScreen)}
+ >
Sign in to your account
) : null}
diff --git a/apps/mobile/src/modules/settings/actions/constant.ts b/apps/mobile/src/modules/settings/actions/constant.ts
index 441cfdd154..f6ea2997bb 100644
--- a/apps/mobile/src/modules/settings/actions/constant.ts
+++ b/apps/mobile/src/modules/settings/actions/constant.ts
@@ -1,8 +1,10 @@
import type { SupportedLanguages } from "@/src/lib/language"
+import type { Navigation } from "@/src/lib/navigation/Navigation"
import { actionActions } from "@/src/store/action/store"
import type { ActionId, ActionRule } from "@/src/store/action/types"
-import type { SettingsNavigation } from "../hooks"
+import { EditRewriteRulesScreen } from "../routes/EditRewriteRules"
+import { EditWebhooksScreen } from "../routes/EditWebhooks"
import { ActionFormTranslation } from "./components"
export const filterFieldOptions = [
@@ -92,7 +94,7 @@ export const availableActionList: Array<{
value: ActionId
label: string
onEnable?: (index: number) => void
- onNavigate?: (router: SettingsNavigation, index: number) => void
+ onNavigate?: (router: Navigation, index: number) => void
component?: React.FC<{ rule: ActionRule }>
}> = [
{
@@ -143,7 +145,7 @@ export const availableActionList: Array<{
})
},
onNavigate: (router, index) => {
- router.navigate("EditRewriteRules", { index })
+ router.pushControllerView(EditRewriteRulesScreen, { index })
},
},
{
@@ -153,7 +155,7 @@ export const availableActionList: Array<{
actionActions.patchRule(index, { result: { webhooks: [""] } })
},
onNavigate: (router, index) => {
- router.navigate("EditWebhooks", { index })
+ router.pushControllerView(EditWebhooksScreen, { index })
},
},
]
diff --git a/apps/mobile/src/modules/settings/hooks.ts b/apps/mobile/src/modules/settings/hooks.ts
deleted file mode 100644
index 0b88f6f79a..0000000000
--- a/apps/mobile/src/modules/settings/hooks.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { useNavigation } from "@react-navigation/native"
-import type { NativeStackNavigationProp } from "@react-navigation/native-stack"
-
-import type { SettingsStackParamList } from "./types"
-
-export const useSettingsNavigation = () => {
- return useNavigation>()
-}
-
-export type SettingsNavigation = ReturnType
diff --git a/apps/mobile/src/modules/settings/routes/2FASetting.tsx b/apps/mobile/src/modules/settings/routes/2FASetting.tsx
index 840a4892de..bdd1d9fea3 100644
--- a/apps/mobile/src/modules/settings/routes/2FASetting.tsx
+++ b/apps/mobile/src/modules/settings/routes/2FASetting.tsx
@@ -1,4 +1,3 @@
-import type { RouteProp } from "@react-navigation/native"
import { useMutation } from "@tanstack/react-query"
import { useRef } from "react"
import { KeyboardAvoidingView, Text, View } from "react-native"
@@ -11,26 +10,21 @@ import {
} from "@/src/components/layouts/views/SafeNavigationScrollView"
import { QRCode } from "@/src/components/ui/qrcode/QRCode"
import { twoFactor } from "@/src/lib/auth"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { queryClient } from "@/src/lib/query-client"
import { toast } from "@/src/lib/toast"
import { whoamiQueryKey } from "@/src/store/user/hooks"
import { accentColor, useColor } from "@/src/theme/colors"
-import { useSettingsNavigation } from "../hooks"
-import type { SettingsStackParamList } from "../types"
-
const isAuthCodeValid = (code: string) => {
return code.length === 6 && Number(code) > 0
}
-export const TwoFASetting = ({
- route,
-}: {
- route: RouteProp
-}) => {
+export const TwoFASetting: NavigationControllerView<{ totpURI: string }> = ({ totpURI }) => {
const label = useColor("label")
const tertiaryLabel = useColor("tertiaryLabel")
- const navigation = useSettingsNavigation()
+ const navigation = useNavigation()
const submitMutation = useMutation({
mutationFn: async (value: string) => {
const res = await twoFactor.verifyTotp({ code: value })
@@ -43,7 +37,7 @@ export const TwoFASetting = ({
toast.error(`Failed to verify: ${error.message}`)
},
onSuccess() {
- navigation.goBack()
+ navigation.back()
toast.success("2FA enabled!")
},
})
@@ -56,7 +50,7 @@ export const TwoFASetting = ({
{
const SecuritySection = () => {
const { data: account } = useAccount()
const hasPassword = account?.data?.find((account) => account.provider === "credential")
- const router = useSettingsNavigation()
const whoAmI = useWhoami()
const twoFactorEnabled = whoAmI?.twoFactorEnabled
+ const navigation = useNavigation()
return (
@@ -254,7 +256,7 @@ const SecuritySection = () => {
forgetPassword({ email })
toast.success("We have sent you an email with instructions to reset your password.")
} else {
- router.navigate("ResetPassword")
+ navigation.pushControllerView(ResetPassword)
}
}}
/>
@@ -292,7 +294,7 @@ const SecuritySection = () => {
return
}
if (res.data && "totpURI" in res.data) {
- router.navigate("TwoFASetting", {
+ navigation.pushControllerView(TwoFASetting, {
totpURI: res.data.totpURI,
})
} else {
diff --git a/apps/mobile/src/modules/settings/routes/Actions.tsx b/apps/mobile/src/modules/settings/routes/Actions.tsx
index 10ffd674f6..09684872e8 100644
--- a/apps/mobile/src/modules/settings/routes/Actions.tsx
+++ b/apps/mobile/src/modules/settings/routes/Actions.tsx
@@ -21,6 +21,7 @@ import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { Switch } from "@/src/components/ui/switch/Switch"
import { CheckLineIcon } from "@/src/icons/check_line"
import { Magic2CuteFiIcon } from "@/src/icons/magic_2_cute_fi"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import {
useActionRules,
useIsActionDataDirty,
@@ -30,7 +31,7 @@ import {
import { actionActions } from "@/src/store/action/store"
import type { ActionRule } from "@/src/store/action/types"
-import { useSettingsNavigation } from "../hooks"
+import { EditRuleScreen } from "./EditRule"
export const ActionsScreen = () => {
const { isLoading } = usePrefetchActions()
@@ -127,7 +128,7 @@ const ListItemCell: ListRenderItem = (props) => {
return
}
const ListItemCellImpl: ListRenderItem = ({ item: rule }) => {
- const navigation = useSettingsNavigation()
+ const navigation = useNavigation()
const colors = useColors()
return (
= ({ item: rule }) => {
{
label: "Edit",
onPress: () => {
- navigation.navigate("EditRule", { index: rule.index })
+ navigation.pushControllerView(EditRuleScreen, {
+ index: rule.index,
+ })
},
backgroundColor: colors.blue,
},
@@ -151,7 +154,7 @@ const ListItemCellImpl: ListRenderItem = ({ item: rule }) => {
>
navigation.navigate("EditRule", { index: rule.index })}
+ onPress={() => navigation.presentControllerView(EditRuleScreen, { index: rule.index })}
>
{rule.name}
-}) {
+export const EditConditionScreen: NavigationControllerView<{
+ ruleIndex: number
+ groupIndex: number
+ conditionIndex: number
+}> = (params) => {
return (
-
+
-
+
)
}
diff --git a/apps/mobile/src/modules/settings/routes/EditProfile.tsx b/apps/mobile/src/modules/settings/routes/EditProfile.tsx
index 692b949877..1d963d46f5 100644
--- a/apps/mobile/src/modules/settings/routes/EditProfile.tsx
+++ b/apps/mobile/src/modules/settings/routes/EditProfile.tsx
@@ -1,6 +1,5 @@
import { withOpacity } from "@follow/utils/src/color"
import { useMutation } from "@tanstack/react-query"
-import { router } from "expo-router"
import type { FC } from "react"
import { useCallback, useState } from "react"
import {
@@ -13,8 +12,6 @@ import {
import { KeyboardController } from "react-native-keyboard-controller"
import { RotateableLoading } from "@/src/components/common/RotateableLoading"
-import { ModalHeader } from "@/src/components/layouts/header/ModalHeader"
-import { SafeModalScrollView } from "@/src/components/layouts/views/SafeModalScrollView"
import {
NavigationBlurEffectHeader,
SafeNavigationScrollView,
@@ -31,7 +28,9 @@ import {
import { CheckCircleCuteReIcon } from "@/src/icons/check_circle_cute_re"
import { CheckLineIcon } from "@/src/icons/check_line"
import { CloseCircleFillIcon } from "@/src/icons/close_circle_fill"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { toast } from "@/src/lib/toast"
+import { EditEmailScreen } from "@/src/screens/(modal)/edit-email"
import { useWhoami } from "@/src/store/user/hooks"
import type { MeModel } from "@/src/store/user/store"
import { userSyncService } from "@/src/store/user/store"
@@ -53,31 +52,13 @@ export const EditProfileScreen = () => {
return (
+
)
}
-export const EditProfileModal = () => {
- const whoami = useWhoami()
-
- if (!whoami) {
- return (
-
-
-
- )
- }
-
- return (
-
-
-
-
- )
-}
-
const AvatarSection: FC<{
whoami: MeModel
}> = ({ whoami }) => {
@@ -99,8 +80,7 @@ const AvatarSection: FC<{
const ProfileForm: FC<{
whoami: MeModel
- layout?: "modal" | "screen"
-}> = ({ whoami, layout = "screen" }) => {
+}> = ({ whoami }) => {
const [dirtyFields, setDirtyFields] = useState>({})
const { mutateAsync: updateProfile, isPending } = useMutation({
@@ -136,13 +116,9 @@ const ProfileForm: FC<{
[dirtyFields, isPending, label, updateProfile],
)
- const Header =
- layout === "modal" ? (
-
- ) : (
-
- )
+ const Header =
+ const navigation = useNavigation()
return (
{Header}
@@ -197,7 +173,7 @@ const ProfileForm: FC<{
{
- router.push("/edit-email")
+ navigation.presentControllerView(EditEmailScreen)
}}
leftClassName="flex-none"
rightClassName="flex-1"
diff --git a/apps/mobile/src/modules/settings/routes/EditRewriteRules.tsx b/apps/mobile/src/modules/settings/routes/EditRewriteRules.tsx
index 1f92c7d259..d124430027 100644
--- a/apps/mobile/src/modules/settings/routes/EditRewriteRules.tsx
+++ b/apps/mobile/src/modules/settings/routes/EditRewriteRules.tsx
@@ -1,8 +1,7 @@
-import type { RouteProp } from "@react-navigation/native"
import { Text } from "react-native"
-import { ModalHeader } from "@/src/components/layouts/header/ModalHeader"
import { SafeModalScrollView } from "@/src/components/layouts/views/SafeModalScrollView"
+import { NavigationBlurEffectHeader } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { PlainTextField } from "@/src/components/ui/form/TextField"
import {
GroupedInsetListBaseCell,
@@ -10,22 +9,16 @@ import {
GroupedInsetListSectionHeader,
GroupedPlainButtonCell,
} from "@/src/components/ui/grouped/GroupedList"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { useActionRule } from "@/src/store/action/hooks"
import { actionActions } from "@/src/store/action/store"
-import type { SettingsStackParamList } from "../types"
-
-export const EditRewriteRulesScreen = ({
- route,
-}: {
- route: RouteProp
-}) => {
- const { index } = route.params
+export const EditRewriteRulesScreen: NavigationControllerView<{ index: number }> = ({ index }) => {
const rule = useActionRule(index)
return (
-
+
{rule?.result.rewriteRules?.map((rewriteRule, rewriteRuleIndex) => (
diff --git a/apps/mobile/src/modules/settings/routes/EditRule.tsx b/apps/mobile/src/modules/settings/routes/EditRule.tsx
index 41ad2631e3..f37b8aa182 100644
--- a/apps/mobile/src/modules/settings/routes/EditRule.tsx
+++ b/apps/mobile/src/modules/settings/routes/EditRule.tsx
@@ -1,4 +1,3 @@
-import type { RouteProp } from "@react-navigation/native"
import { Text, View } from "react-native"
import * as DropdownMenu from "zeego/dropdown-menu"
@@ -17,21 +16,17 @@ import {
GroupedPlainButtonCell,
} from "@/src/components/ui/grouped/GroupedList"
import { views } from "@/src/constants/views"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { useActionRule } from "@/src/store/action/hooks"
import { actionActions } from "@/src/store/action/store"
import type { ActionFilter, ActionRule } from "@/src/store/action/types"
import { accentColor, useColors } from "@/src/theme/colors"
import { availableActionList, filterFieldOptions, filterOperatorOptions } from "../actions/constant"
-import { useSettingsNavigation } from "../hooks"
-import type { SettingsStackParamList } from "../types"
+import { EditConditionScreen } from "./EditCondition"
-export const EditRuleScreen = ({
- route,
-}: {
- route: RouteProp
-}) => {
- const { index } = route.params
+export const EditRuleScreen: NavigationControllerView<{ index: number }> = ({ index }) => {
const rule = useActionRule(index)
return (
@@ -113,7 +108,7 @@ const FilterSection: React.FC<{ rule: ActionRule }> = ({ rule }) => {
}
const ConditionSection: React.FC<{ filter: ActionFilter; index: number }> = ({ filter, index }) => {
- const navigation = useSettingsNavigation()
+ const navigation = useNavigation()
const colors = useColors()
if (filter.length === 0) return null
@@ -152,7 +147,7 @@ const ConditionSection: React.FC<{ filter: ActionFilter; index: number }> = ({ f
{
label: "Edit",
onPress: () => {
- navigation.navigate("EditCondition", {
+ navigation.pushControllerView(EditConditionScreen, {
ruleIndex: index,
groupIndex,
conditionIndex: itemIndex,
@@ -169,7 +164,7 @@ const ConditionSection: React.FC<{ filter: ActionFilter; index: number }> = ({ f
.join(" ") || "Unknown"
}
onPress={() => {
- navigation.navigate("EditCondition", {
+ navigation.pushControllerView(EditConditionScreen, {
ruleIndex: index,
groupIndex,
conditionIndex: itemIndex,
@@ -184,7 +179,7 @@ const ConditionSection: React.FC<{ filter: ActionFilter; index: number }> = ({ f
onPress={() => {
actionActions.addConditionItem({ ruleIndex: index, groupIndex })
setTimeout(() => {
- navigation.navigate("EditCondition", {
+ navigation.pushControllerView(EditConditionScreen, {
ruleIndex: index,
groupIndex,
conditionIndex: group.length,
@@ -215,8 +210,8 @@ const ActionSection: React.FC<{ rule: ActionRule }> = ({ rule }) => {
(action) => rule.result[action.value] === undefined,
)
+ const navigation = useNavigation()
const colors = useColors()
- const navigation = useSettingsNavigation()
return (
diff --git a/apps/mobile/src/modules/settings/routes/EditWebhooks.tsx b/apps/mobile/src/modules/settings/routes/EditWebhooks.tsx
index 93604d6f5f..b9ac7e6257 100644
--- a/apps/mobile/src/modules/settings/routes/EditWebhooks.tsx
+++ b/apps/mobile/src/modules/settings/routes/EditWebhooks.tsx
@@ -1,8 +1,7 @@
-import type { RouteProp } from "@react-navigation/native"
import { Text } from "react-native"
-import { ModalHeader } from "@/src/components/layouts/header/ModalHeader"
import { SafeModalScrollView } from "@/src/components/layouts/views/SafeModalScrollView"
+import { NavigationBlurEffectHeader } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { PlainTextField } from "@/src/components/ui/form/TextField"
import {
GroupedInsetButtonCell,
@@ -10,22 +9,16 @@ import {
GroupedInsetListCard,
GroupedInsetListSectionHeader,
} from "@/src/components/ui/grouped/GroupedList"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { useActionRule } from "@/src/store/action/hooks"
import { actionActions } from "@/src/store/action/store"
-import type { SettingsStackParamList } from "../types"
-
-export const EditWebhooksScreen = ({
- route,
-}: {
- route: RouteProp
-}) => {
- const { index } = route.params
+export const EditWebhooksScreen: NavigationControllerView<{ index: number }> = ({ index }) => {
const rule = useActionRule(index)
return (
-
+
{rule?.result.webhooks?.map((webhook, webhookIndex) => (
diff --git a/apps/mobile/src/modules/settings/routes/General.tsx b/apps/mobile/src/modules/settings/routes/General.tsx
index 6e60a465cc..5b1e5489b0 100644
--- a/apps/mobile/src/modules/settings/routes/General.tsx
+++ b/apps/mobile/src/modules/settings/routes/General.tsx
@@ -15,8 +15,9 @@ import {
} from "@/src/components/ui/grouped/GroupedList"
import { Switch } from "@/src/components/ui/switch/Switch"
import { LanguageMap } from "@/src/lib/language"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
-export const GeneralScreen = () => {
+export const GeneralScreen: NavigationControllerView = () => {
const locales = useLocales()
const translationLanguage = useGeneralSettingKey("translationLanguage")
const autoGroup = useGeneralSettingKey("autoGroup")
diff --git a/apps/mobile/src/modules/settings/routes/Lists.tsx b/apps/mobile/src/modules/settings/routes/Lists.tsx
index a560b72d8b..20867984e4 100644
--- a/apps/mobile/src/modules/settings/routes/Lists.tsx
+++ b/apps/mobile/src/modules/settings/routes/Lists.tsx
@@ -1,4 +1,3 @@
-import { router } from "expo-router"
import { createContext, createElement, useCallback, useContext, useMemo } from "react"
import type { ListRenderItem } from "react-native"
import { ActivityIndicator, Image, StyleSheet, Text, View } from "react-native"
@@ -23,13 +22,14 @@ import { PowerIcon } from "@/src/icons/power"
import { RadaCuteFiIcon } from "@/src/icons/rada_cute_fi"
import { UserAdd2CuteFiIcon } from "@/src/icons/user_add_2_cute_fi"
import { Wallet2CuteFiIcon } from "@/src/icons/wallet_2_cute_fi"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import type { HonoApiClient } from "@/src/morph/types"
import { useOwnedLists, usePrefetchOwnedLists } from "@/src/store/list/hooks"
import type { ListModel } from "@/src/store/list/store"
import { accentColor } from "@/src/theme/colors"
import { SwipeableGroupProvider, SwipeableItem } from "../../../components/common/SwipeableItem"
-import { useSettingsNavigation } from "../hooks"
+import { ManageListScreen } from "./ManageList"
const ListContext = createContext({} as Record)
export const ListsScreen = () => {
@@ -100,7 +100,11 @@ export const ListsScreen = () => {
const AddListButton = () => {
const labelColor = useColor("label")
return (
- router.push("/list")}>
+ {
+ // TODO
+ }}
+ >
)
@@ -124,8 +128,10 @@ const ListItemCell: ListRenderItem = (props) => {
const ListItemCellImpl: ListRenderItem = ({ item: list }) => {
const { title, description } = list
const listData = useContext(ListContext)[list.id]
- const navigation = useSettingsNavigation()
+
+ const navigation = useNavigation()
const colors = useColors()
+
return (
= ({ item: list }) => {
{
label: "Manage",
onPress: () => {
- navigation.navigate("ManageList", { id: list.id })
+ navigation.pushControllerView(ManageListScreen, { id: list.id })
},
backgroundColor: accentColor,
},
{
label: "Edit",
onPress: () => {
- router.push(`/list?id=${list.id}`)
+ // router.push(`/list?id=${list.id}`)
+ // TODO
},
backgroundColor: colors.blue,
},
@@ -148,7 +155,7 @@ const ListItemCellImpl: ListRenderItem = ({ item: list }) => {
>
navigation.navigate("ManageList", { id: list.id })}
+ onPress={() => navigation.pushControllerView(ManageListScreen, { id: list.id })}
>
{list.image ? (
diff --git a/apps/mobile/src/modules/settings/routes/ManageList.tsx b/apps/mobile/src/modules/settings/routes/ManageList.tsx
index f9e2638b5f..6e2967d67a 100644
--- a/apps/mobile/src/modules/settings/routes/ManageList.tsx
+++ b/apps/mobile/src/modules/settings/routes/ManageList.tsx
@@ -1,11 +1,9 @@
-import type { RouteProp } from "@react-navigation/native"
import { useMutation } from "@tanstack/react-query"
-import { router } from "expo-router"
import type { MutableRefObject } from "react"
import { createContext, useContext, useEffect, useMemo, useRef, useState } from "react"
import { Text, View } from "react-native"
-import { ModalHeaderSubmitButton } from "@/src/components/common/ModalSharedComponents"
+import { HeaderSubmitButton } from "@/src/components/layouts/header/HeaderElements"
import { UINavigationHeaderActionButton } from "@/src/components/layouts/header/NavigationHeader"
import {
NavigationBlurEffectHeader,
@@ -20,6 +18,8 @@ import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { CheckLineIcon } from "@/src/icons/check_line"
import { getBizFetchErrorMessage } from "@/src/lib/api-fetch"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { toast } from "@/src/lib/toast"
import { useFeed } from "@/src/store/feed/hooks"
import { useList, usePrefetchOwnedLists } from "@/src/store/list/hooks"
@@ -31,19 +31,11 @@ import {
} from "@/src/store/subscription/hooks"
import { accentColor } from "@/src/theme/colors"
-import type { SettingsStackParamList } from "../types"
-
const ManageListContext = createContext<{
nextSelectedFeedIdRef: MutableRefObject>
}>(null!)
-export const ManageListScreen = ({
- route,
-}: {
- route: RouteProp
-}) => {
- const { id } = route.params
-
+export const ManageListScreen: NavigationControllerView<{ id: string }> = ({ id }) => {
usePrefetchOwnedLists()
const list = useList(id)
@@ -86,19 +78,20 @@ const ListImpl: React.FC<{ id: string }> = ({ id }) => {
feedIds: Array.from(nextSelectedFeedIdRef.current),
}),
})
+ const navigation = useNavigation()
return (
(
- {
addFeedsToFeedListMutation
.mutateAsync()
.then(() => {
- router.back()
+ navigation.back()
})
.catch((error) => {
toast.error(getBizFetchErrorMessage(error))
diff --git a/apps/mobile/src/modules/settings/routes/Privacy.tsx b/apps/mobile/src/modules/settings/routes/Privacy.tsx
index 17ece91cfe..00c5b4568c 100644
--- a/apps/mobile/src/modules/settings/routes/Privacy.tsx
+++ b/apps/mobile/src/modules/settings/routes/Privacy.tsx
@@ -1,5 +1,3 @@
-import { router } from "expo-router"
-
import {
NavigationBlurEffectHeader,
SafeNavigationScrollView,
@@ -8,8 +6,11 @@ import {
GroupedInsetListCard,
GroupedInsetListNavigationLink,
} from "@/src/components/ui/grouped/GroupedList"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { TermsScreen } from "@/src/screens/(headless)/terms"
export const PrivacyScreen = () => {
+ const { pushControllerView } = useNavigation()
return (
@@ -17,7 +18,7 @@ export const PrivacyScreen = () => {
{
- router.push("/terms")
+ pushControllerView(TermsScreen)
}}
/>
diff --git a/apps/mobile/src/modules/settings/routes/Profile.tsx b/apps/mobile/src/modules/settings/routes/Profile.tsx
index 1692b3acb1..43aba8e315 100644
--- a/apps/mobile/src/modules/settings/routes/Profile.tsx
+++ b/apps/mobile/src/modules/settings/routes/Profile.tsx
@@ -1,6 +1,5 @@
import type { FeedViewType } from "@follow/constants"
import { cn } from "@follow/utils"
-import { Stack } from "expo-router"
import { Fragment, useCallback, useEffect, useMemo } from "react"
import {
ActivityIndicator,
@@ -23,6 +22,7 @@ import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
import { MingcuteLeftLineIcon } from "@/src/icons/mingcute_left_line"
import { Share3CuteReIcon } from "@/src/icons/share_3_cute_re"
import type { apiClient } from "@/src/lib/api-fetch"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { toast } from "@/src/lib/toast"
import type { FeedModel } from "@/src/store/feed/types"
import type { ListModel } from "@/src/store/list/store"
@@ -30,7 +30,6 @@ import { useWhoami } from "@/src/store/user/hooks"
import { useColor } from "@/src/theme/colors"
import { ItemSeparator } from "../../subscription/ItemSeparator"
-import { useSettingsNavigation } from "../hooks"
import { useShareSubscription } from "../hooks/useShareSubscription"
import { UserHeaderBanner } from "../UserHeaderBanner"
@@ -62,7 +61,6 @@ export const ProfileScreen = () => {
}, [isError])
const insets = useSafeAreaInsets()
- const settingNavigation = useSettingsNavigation()
const textLabelColor = useColor("label")
const openShareUrl = useCallback(() => {
@@ -73,6 +71,7 @@ export const ProfileScreen = () => {
})
}, [whoami?.id, whoami?.name])
+ const navigation = useNavigation()
return (
{
>
{!!whoami?.id && }
-
-
{isLoading && }
{!isLoading && subscriptions && }
{/* Top transparent header buttons */}
settingNavigation.goBack()}
+ onPress={() => navigation.back()}
className="absolute left-4"
style={{ top: insets.top }}
>
@@ -110,7 +107,7 @@ export const ProfileScreen = () => {
style={{ opacity: headerOpacity }}
>
- settingNavigation.goBack()}>
+ navigation.back()}>
diff --git a/apps/mobile/src/modules/settings/routes/index.tsx b/apps/mobile/src/modules/settings/routes/index.tsx
deleted file mode 100644
index c39da8b5f0..0000000000
--- a/apps/mobile/src/modules/settings/routes/index.tsx
+++ /dev/null
@@ -1,86 +0,0 @@
-import type { TypedNavigator } from "@react-navigation/native"
-
-import { TwoFASetting } from "./2FASetting"
-import { AboutScreen } from "./About"
-import { AccountScreen } from "./Account"
-import { AchievementScreen } from "./Achievement"
-import { ActionsScreen } from "./Actions"
-import { AppearanceScreen } from "./Appearance"
-import { DataScreen } from "./Data"
-import { EditConditionScreen } from "./EditCondition"
-import { EditProfileScreen } from "./EditProfile"
-import { EditRewriteRulesScreen } from "./EditRewriteRules"
-import { EditRuleScreen } from "./EditRule"
-import { EditWebhooksScreen } from "./EditWebhooks"
-import { FeedsScreen } from "./Feeds"
-import { GeneralScreen } from "./General"
-import { ListsScreen } from "./Lists"
-import { ManageListScreen } from "./ManageList"
-import { NotificationsScreen } from "./Notifications"
-import { PrivacyScreen } from "./Privacy"
-import { ResetPassword } from "./ResetPassword"
-
-const SettingFlatRoutes = (Stack: TypedNavigator) => {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {/* @ts-expect-error */}
-
-
- )
-}
-
-export const SettingRoutes = SettingFlatRoutes
diff --git a/apps/mobile/src/modules/settings/types.ts b/apps/mobile/src/modules/settings/types.ts
deleted file mode 100644
index 7546b5454e..0000000000
--- a/apps/mobile/src/modules/settings/types.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import type { ConditionIndex } from "@/src/store/action/types"
-
-export type SettingsStackParamList = {
- Profile: undefined
- Achievement: undefined
- General: undefined
- Notifications: undefined
- Appearance: undefined
- Data: undefined
- Account: undefined
- Actions: undefined
- Lists: undefined
- Feeds: undefined
- Privacy: undefined
- About: undefined
- ManageList: { id: string }
- EditRule: { index: number }
- EditCondition: ConditionIndex
- EditRewriteRules: { index: number }
- EditWebhooks: { index: number }
- EditProfile: undefined
- ResetPassword: undefined
- TwoFASetting: { totpURI: string }
-}
diff --git a/apps/mobile/src/modules/subscription/CategoryGrouped.tsx b/apps/mobile/src/modules/subscription/CategoryGrouped.tsx
index e10ac64682..9f6c0acdf7 100644
--- a/apps/mobile/src/modules/subscription/CategoryGrouped.tsx
+++ b/apps/mobile/src/modules/subscription/CategoryGrouped.tsx
@@ -1,16 +1,17 @@
-import { router } from "expo-router"
import { memo, useState } from "react"
import { Text, TouchableOpacity } from "react-native"
import Animated, { useAnimatedStyle, useSharedValue, withSpring } from "react-native-reanimated"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { RightCuteFiIcon } from "@/src/icons/right_cute_fi"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import {
closeDrawer,
getHorizontalScrolling,
selectFeed,
useSelectedFeed,
} from "@/src/modules/screen/atoms"
+import { FeedScreen } from "@/src/screens/(stack)/feeds/[feedId]"
import { useUnreadCounts } from "@/src/store/unread/hooks"
import { useColor } from "@/src/theme/colors"
@@ -39,6 +40,7 @@ export const CategoryGrouped = memo(
const secondaryLabelColor = useColor("label")
const selectedFeed = useSelectedFeed()
+ const navigation = useNavigation()
if (selectedFeed?.type !== "view") {
return null
}
@@ -62,7 +64,9 @@ export const CategoryGrouped = memo(
categoryName: category,
})
closeDrawer()
- router.push(`/feeds/${category}`)
+ navigation.pushControllerView(FeedScreen, {
+ feedId: category,
+ })
}}
className="h-12 flex-row items-center px-3"
>
diff --git a/apps/mobile/src/modules/subscription/SubscriptionLists.tsx b/apps/mobile/src/modules/subscription/SubscriptionLists.tsx
index 9b8df1c4a1..eba751f8e2 100644
--- a/apps/mobile/src/modules/subscription/SubscriptionLists.tsx
+++ b/apps/mobile/src/modules/subscription/SubscriptionLists.tsx
@@ -1,6 +1,5 @@
import type { FeedViewType } from "@follow/constants"
import type { FlashList } from "@shopify/flash-list"
-import { router } from "expo-router"
import { useMemo, useState } from "react"
import { Text, View } from "react-native"
import { useEventCallback } from "usehooks-ts"
@@ -8,8 +7,10 @@ import { useEventCallback } from "usehooks-ts"
import { useRegisterNavigationScrollView } from "@/src/components/layouts/tabbar/hooks"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { StarCuteFiIcon } from "@/src/icons/star_cute_fi"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { closeDrawer, getHorizontalScrolling, selectFeed } from "@/src/modules/screen/atoms"
import { TimelineSelectorList } from "@/src/modules/screen/TimelineSelectorList"
+import { FeedScreen } from "@/src/screens/(stack)/feeds/[feedId]"
import { FEED_COLLECTION_LIST } from "@/src/store/entry/utils"
import {
useGroupedSubscription,
@@ -175,6 +176,7 @@ const SectionTitle = ({ title }: { title: string }) => {
}
const StarItem = () => {
+ const navigation = useNavigation()
return (
{
@@ -184,7 +186,9 @@ const StarItem = () => {
}
selectFeed({ type: "feed", feedId: FEED_COLLECTION_LIST })
closeDrawer()
- router.push(`/feeds/${FEED_COLLECTION_LIST}`)
+ navigation.pushControllerView(FeedScreen, {
+ feedId: FEED_COLLECTION_LIST,
+ })
}}
className="mt-4 h-12 w-full flex-row items-center px-3"
>
diff --git a/apps/mobile/src/modules/subscription/ViewTab.tsx b/apps/mobile/src/modules/subscription/ViewTab.tsx
deleted file mode 100644
index 8339dfd624..0000000000
--- a/apps/mobile/src/modules/subscription/ViewTab.tsx
+++ /dev/null
@@ -1,165 +0,0 @@
-import { useHeaderHeight } from "@react-navigation/elements"
-import { useAtomValue } from "jotai"
-import { memo, useEffect, useRef, useState } from "react"
-import type { TouchableOpacityProps } from "react-native"
-import { ScrollView, StyleSheet, Text, TouchableOpacity, View } from "react-native"
-import type { WithSpringConfig } from "react-native-reanimated"
-import Animated, { useAnimatedStyle, useSharedValue, withSpring } from "react-native-reanimated"
-
-import { ThemedBlurView } from "@/src/components/common/ThemedBlurView"
-import type { ViewDefinition } from "@/src/constants/views"
-import { views } from "@/src/constants/views"
-import { useUnreadCountByView } from "@/src/store/unread/hooks"
-
-import { offsetAtom, setCurrentView, viewAtom } from "./atoms"
-import { ViewTabHeight } from "./constants"
-
-const springConfig: WithSpringConfig = {
- damping: 20,
- mass: 1,
- stiffness: 120,
-}
-export const ViewTab = () => {
- const headerHeight = useHeaderHeight()
- const offset = useAtomValue(offsetAtom)
- const currentView = useAtomValue(viewAtom)
- const tabRef = useRef(null)
-
- const indicatorPosition = useSharedValue(0)
-
- const [tabWidths, setTabWidths] = useState([])
- const [tabPositions, setTabPositions] = useState([])
- const scrollOffsetX = useRef(0)
-
- useEffect(() => {
- if (tabWidths.length > 0) {
- indicatorPosition.value = withSpring(tabPositions[currentView] || 0, springConfig)
-
- if (tabRef.current) {
- const x = currentView > 0 ? tabPositions[currentView - 1]! + tabWidths[currentView - 1]! : 0
-
- const isCurrentTabVisible =
- scrollOffsetX.current < tabPositions[currentView]! &&
- scrollOffsetX.current + tabWidths[currentView]! > tabPositions[currentView]!
-
- if (!isCurrentTabVisible) {
- tabRef.current.scrollTo({ x, y: 0, animated: true })
- }
- }
- }
- }, [currentView, indicatorPosition, tabPositions, tabWidths])
-
- const indicatorStyle = useAnimatedStyle(() => {
- return {
- transform: [
- {
- translateX: indicatorPosition.value + 10 + Math.abs(offset),
- },
- ],
- backgroundColor: views[currentView]!.activeColor,
- width: (tabWidths[currentView] || 20) - 40 + Math.abs(offset),
- }
- })
-
- return (
-
-
- {
- scrollOffsetX.current = event.nativeEvent.contentOffset.x
- }}
- showsHorizontalScrollIndicator={false}
- horizontal
- ref={tabRef}
- contentContainerStyle={styles.tabScroller}
- style={styles.root}
- >
- {views.map((view, index) => {
- const isSelected = currentView === view.view
- return (
- {
- const { width, x } = event.nativeEvent.layout
- setTabWidths((prev) => {
- const newWidths = [...prev]
- newWidths[index] = width
- return newWidths
- })
- setTabPositions((prev) => {
- const newPositions = [...prev]
- newPositions[index] = x
- return newPositions
- })
- }}
- />
- )
- })}
-
-
-
-
- )
-}
-
-const TabItem = memo(
- ({
- isSelected,
- view,
- }: { isSelected: boolean; view: ViewDefinition } & Pick) => {
- const unreadCount = useUnreadCountByView(view.view)
- return (
- setCurrentView(view.view)}
- className="relative mr-4 flex-row items-center justify-center rounded-full"
- >
-
-
- {view.name}
-
- {unreadCount > 0 && (
-
-
- {unreadCount > 99 ? "99+" : unreadCount}
-
-
- )}
-
- )
- },
-)
-const styles = StyleSheet.create({
- indicator: {
- position: "absolute",
- bottom: 0,
- height: 2,
- borderRadius: 1,
- },
- tabContainer: {
- backgroundColor: "transparent",
- bottom: 0,
- left: 0,
- position: "absolute",
- width: "100%",
- top: 0,
- },
- tabScroller: {
- alignItems: "center",
- flexDirection: "row",
- paddingHorizontal: 4,
- },
-
- root: { paddingHorizontal: 6 },
-})
diff --git a/apps/mobile/src/modules/subscription/items/InboxItem.tsx b/apps/mobile/src/modules/subscription/items/InboxItem.tsx
index fa11aa8752..b4a28cb6b3 100644
--- a/apps/mobile/src/modules/subscription/items/InboxItem.tsx
+++ b/apps/mobile/src/modules/subscription/items/InboxItem.tsx
@@ -1,4 +1,3 @@
-import { router } from "expo-router"
import { useColorScheme } from "nativewind"
import { memo } from "react"
import { Text, View } from "react-native"
@@ -6,7 +5,9 @@ import Animated, { FadeOutUp } from "react-native-reanimated"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
import { InboxCuteFiIcon } from "@/src/icons/inbox_cute_fi"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import { getHorizontalScrolling, selectFeed } from "@/src/modules/screen/atoms"
+import { FeedScreen } from "@/src/screens/(stack)/feeds/[feedId]"
import { useSubscription } from "@/src/store/subscription/hooks"
import { getInboxStoreId } from "@/src/store/subscription/utils"
import { useUnreadCount } from "@/src/store/unread/hooks"
@@ -17,6 +18,7 @@ export const InboxItem = memo(({ id }: { id: string }) => {
const subscription = useSubscription(getInboxStoreId(id))
const unreadCount = useUnreadCount(id)
const { colorScheme } = useColorScheme()
+ const navigation = useNavigation()
if (!subscription) return null
return (
@@ -28,7 +30,9 @@ export const InboxItem = memo(({ id }: { id: string }) => {
return
}
selectFeed({ type: "inbox", inboxId: id })
- router.push(`/feeds/${id}`)
+ navigation.pushControllerView(FeedScreen, {
+ feedId: id,
+ })
}}
>
diff --git a/apps/mobile/src/modules/subscription/items/ListSubscriptionItem.tsx b/apps/mobile/src/modules/subscription/items/ListSubscriptionItem.tsx
index 10ba74a290..29f6e6b1fa 100644
--- a/apps/mobile/src/modules/subscription/items/ListSubscriptionItem.tsx
+++ b/apps/mobile/src/modules/subscription/items/ListSubscriptionItem.tsx
@@ -1,4 +1,3 @@
-import { router } from "expo-router"
import { memo } from "react"
import { Text, View } from "react-native"
import Animated, { FadeOutUp } from "react-native-reanimated"
@@ -6,6 +5,8 @@ import Animated, { FadeOutUp } from "react-native-reanimated"
import { FallbackIcon } from "@/src/components/ui/icon/fallback-icon"
import { Image } from "@/src/components/ui/image/Image"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { FeedScreen } from "@/src/screens/(stack)/feeds/[feedId]"
import { useList } from "@/src/store/list/hooks"
import { useListUnreadCount } from "@/src/store/unread/hooks"
@@ -16,6 +17,7 @@ import { UnreadCount } from "./UnreadCount"
export const ListSubscriptionItem = memo(({ id }: { id: string; className?: string }) => {
const list = useList(id)
const unreadCount = useListUnreadCount(id)
+ const navigation = useNavigation()
if (!list) return null
return (
@@ -31,7 +33,9 @@ export const ListSubscriptionItem = memo(({ id }: { id: string; className?: stri
type: "list",
listId: id,
})
- router.push(`/feeds/${id}`)
+ navigation.pushControllerView(FeedScreen, {
+ feedId: id,
+ })
}}
>
diff --git a/apps/mobile/src/modules/subscription/items/SubscriptionItem.tsx b/apps/mobile/src/modules/subscription/items/SubscriptionItem.tsx
index 5e9a84fa8f..d1725a31e9 100644
--- a/apps/mobile/src/modules/subscription/items/SubscriptionItem.tsx
+++ b/apps/mobile/src/modules/subscription/items/SubscriptionItem.tsx
@@ -1,17 +1,18 @@
import { cn } from "@follow/utils"
-import { router } from "expo-router"
import { memo, useContext } from "react"
import { ActivityIndicator, Text, View } from "react-native"
import Animated, { FadeOutUp } from "react-native-reanimated"
import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
import { ItemPressable } from "@/src/components/ui/pressable/ItemPressable"
+import { useNavigation } from "@/src/lib/navigation/hooks"
import {
closeDrawer,
getHorizontalScrolling,
selectFeed,
useSelectedFeed,
} from "@/src/modules/screen/atoms"
+import { FeedScreen } from "@/src/screens/(stack)/feeds/[feedId]"
import { useFeed, usePrefetchFeed } from "@/src/store/feed/hooks"
import { useSubscription } from "@/src/store/subscription/hooks"
import { useUnreadCount } from "@/src/store/unread/hooks"
@@ -59,6 +60,7 @@ export const SubscriptionItem = memo(({ id, className }: { id: string; className
const selectedFeed = useSelectedFeed()
const view = selectedFeed?.type === "view" ? selectedFeed.viewId : undefined
+ const navigation = useNavigation()
if (isLoading) {
return (
@@ -105,7 +107,9 @@ export const SubscriptionItem = memo(({ id, className }: { id: string; className
feedId: id,
})
closeDrawer()
- router.push(`/feeds/${id}`)
+ navigation.pushControllerView(FeedScreen, {
+ feedId: id,
+ })
}}
>
diff --git a/apps/mobile/src/providers/index.tsx b/apps/mobile/src/providers/index.tsx
index 8a8f19667b..df6ac8bd81 100644
--- a/apps/mobile/src/providers/index.tsx
+++ b/apps/mobile/src/providers/index.tsx
@@ -1,50 +1,47 @@
import { ActionSheetProvider } from "@expo/react-native-action-sheet"
import { jotaiStore } from "@follow/utils"
-import { ThemeProvider } from "@react-navigation/native"
+import { PortalProvider } from "@gorhom/portal"
import { QueryClientProvider } from "@tanstack/react-query"
import { useDrizzleStudio } from "expo-drizzle-studio-plugin"
import { Provider } from "jotai"
-import { useColorScheme } from "nativewind"
import type { ReactNode } from "react"
import { StyleSheet, View } from "react-native"
import { GestureHandlerRootView } from "react-native-gesture-handler"
import { KeyboardProvider } from "react-native-keyboard-controller"
import { RootSiblingParent } from "react-native-root-siblings"
import { SheetProvider } from "react-native-sheet-transitions"
+import { useCurrentColors } from "react-native-uikit-colors"
-import { PortalHost } from "../components/ui/portal"
+import { ErrorBoundary } from "../components/common/ErrorBoundary"
import { sqlite } from "../database"
import { queryClient } from "../lib/query-client"
-import { DarkTheme, DefaultTheme } from "../theme/navigation"
-import { getCurrentColors } from "../theme/utils"
import { MigrationProvider } from "./migration"
export const RootProviders = ({ children }: { children: ReactNode }) => {
useDrizzleStudio(sqlite)
- const { colorScheme } = useColorScheme()
- const currentThemeColors = getCurrentColors()!
+ const currentThemeColors = useCurrentColors()
return (
-
-
-
-
+
+
+
+
- {children}
+ {children}
-
-
-
-
+
+
+
+
)
diff --git a/apps/mobile/src/screens/(headless)/_layout.tsx b/apps/mobile/src/screens/(headless)/_layout.tsx
deleted file mode 100644
index 12c91e7d25..0000000000
--- a/apps/mobile/src/screens/(headless)/_layout.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { Stack } from "expo-router"
-
-export default function HeadlessLayout() {
- return (
-
- )
-}
diff --git a/apps/mobile/src/screens/(headless)/debug.tsx b/apps/mobile/src/screens/(headless)/debug.tsx
index 9e85dea112..685cbc857d 100644
--- a/apps/mobile/src/screens/(headless)/debug.tsx
+++ b/apps/mobile/src/screens/(headless)/debug.tsx
@@ -3,7 +3,6 @@ import { sleep } from "@follow/utils"
import { requireNativeModule } from "expo"
import * as Clipboard from "expo-clipboard"
import * as FileSystem from "expo-file-system"
-import { Sitemap } from "expo-router/build/views/Sitemap"
import * as SecureStore from "expo-secure-store"
import type { FC } from "react"
import * as React from "react"
@@ -25,6 +24,10 @@ import { Select } from "@/src/components/ui/form/Select"
import { getDbPath } from "@/src/database"
import { cookieKey, getCookie, sessionTokenKey, signOut } from "@/src/lib/auth"
import { loading } from "@/src/lib/loading"
+import { DebugButtonGroup } from "@/src/lib/navigation/debug/DebugButtonGroup"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { NavigationSitemapRegistry } from "@/src/lib/navigation/sitemap/registry"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { setEnvProfile, useEnvProfile } from "@/src/lib/proxy-env"
import { toast } from "@/src/lib/toast"
@@ -38,7 +41,7 @@ interface MenuItem {
onPress: () => Promise | void
textClassName?: string
}
-export default function DebugPanel() {
+export const DebugScreen: NavigationControllerView = () => {
const insets = useSafeAreaInsets()
const envProfile = useEnvProfile()
@@ -142,12 +145,20 @@ export default function DebugPanel() {
await requireNativeModule("Helper").scrollToTop(findNodeHandle(ref.current))
},
},
+ {
+ title: "Test navigation",
+ onPress: () => {
+ navigation.pushControllerView(DebugButtonGroup)
+ },
+ },
],
},
]
const ref = useRef(null)
+ const navigation = useNavigation()
+
return (
@@ -192,7 +203,29 @@ export default function DebugPanel() {
))}
Sitemap
-
+
+
+ {NavigationSitemapRegistry.entries().map(([title, register]) => {
+ return (
+ {
+ const { Component, props, stackPresentation } = register
+
+ if (stackPresentation === "push") {
+ navigation.pushControllerView(Component, props)
+ } else {
+ navigation.presentControllerView(Component, props, stackPresentation)
+ }
+ }}
+ >
+ {title}
+
+ )
+ })}
+
+
)
}
diff --git a/apps/mobile/src/screens/(headless)/search.tsx b/apps/mobile/src/screens/(headless)/search.tsx
index a3b11185db..a0ebf4c5e8 100644
--- a/apps/mobile/src/screens/(headless)/search.tsx
+++ b/apps/mobile/src/screens/(headless)/search.tsx
@@ -1,4 +1,3 @@
-import { Stack } from "expo-router"
import { useAtomValue } from "jotai"
import * as React from "react"
import { useEffect, useRef, useState } from "react"
@@ -6,6 +5,8 @@ import type { ScrollView } from "react-native"
import { Animated, Dimensions, View } from "react-native"
import { AnimatedScrollView } from "@/src/components/common/AnimatedComponents"
+import { StackScreenHeaderPortal } from "@/src/lib/navigation/StackScreenHeaderPortal"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { SearchTabs, SearchType } from "@/src/modules/discover/constants"
import {
SearchBarHeightProvider,
@@ -20,9 +21,9 @@ import { SearchHeader } from "@/src/modules/discover/search"
import { SearchFeed } from "@/src/modules/discover/search-tabs/SearchFeed"
import { SearchList } from "@/src/modules/discover/search-tabs/SearchList"
-const Search = () => {
+const SearchScreen: NavigationControllerView = () => {
return (
-
+
@@ -105,24 +106,15 @@ const SearchbarMount = () => {
const setSearchBarHeight = useSetSearchBarHeight()
return (
- {
- return (
-
- setSearchBarHeight(e.nativeEvent.layout.height)}
- />
-
- )
- },
- }}
- />
+
+
+ setSearchBarHeight(e.nativeEvent.layout.height)}
+ />
+
+
)
}
-export default Search
+export default SearchScreen
diff --git a/apps/mobile/src/screens/(headless)/terms.tsx b/apps/mobile/src/screens/(headless)/terms.tsx
index 023d566ad1..d7e17a3caf 100644
--- a/apps/mobile/src/screens/(headless)/terms.tsx
+++ b/apps/mobile/src/screens/(headless)/terms.tsx
@@ -1,7 +1,9 @@
-import { ScrollView } from "react-native"
-
-import { NativeNavigationHeader } from "@/src/components/layouts/header/NavigationHeader"
+import {
+ NavigationBlurEffectHeader,
+ SafeNavigationScrollView,
+} from "@/src/components/layouts/views/SafeNavigationScrollView"
import { Markdown } from "@/src/components/ui/typography/Markdown"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
const txt = `# Terms of Service
@@ -90,12 +92,15 @@ export const TermsMarkdown = () => {
)
}
-export default function Teams() {
+export const TermsScreen: NavigationControllerView = () => {
return (
-
-
+
+
-
+
)
}
diff --git a/apps/mobile/src/screens/(headless)/webview.tsx b/apps/mobile/src/screens/(headless)/webview.tsx
deleted file mode 100644
index b04f4048db..0000000000
--- a/apps/mobile/src/screens/(headless)/webview.tsx
+++ /dev/null
@@ -1,76 +0,0 @@
-import { useRef } from "react"
-import { TouchableOpacity, View } from "react-native"
-import { useSafeAreaInsets } from "react-native-safe-area-context"
-import type { WebView } from "react-native-webview"
-
-import { BugCuteReIcon } from "@/src/icons/bug_cute_re"
-import { ExitCuteReIcon } from "@/src/icons/exit_cute_re"
-import { Refresh2CuteReIcon } from "@/src/icons/refresh_2_cute_re"
-import { World2CuteReIcon } from "@/src/icons/world_2_cute_re"
-import { signOut } from "@/src/lib/auth"
-
-export default function Index() {
- const webViewRef = useRef(null)
- const insets = useSafeAreaInsets()
-
- // const { data: token, isPending } = useAuthToken()
-
- // const [isCookieReady, setIsCookieReady] = useState(false)
- // useEffect(() => {
- // if (!token) {
- // return
- // }
-
- // // setSessionToken(token).then(() => {
- // // setIsCookieReady(true)
- // // })
- // }, [token])
-
- // if (!token && !isPending) {
- // return
- // }
-
- return (
-
- {/* {isCookieReady && } */}
-
- {__DEV__ && (
-
- {
- webViewRef.current?.injectJavaScript(
- `window.location.href = "https://app.follow.is";`,
- )
- }}
- >
-
-
- {
- webViewRef.current?.injectJavaScript(
- `window.location.href = "http://localhost:2233/";`,
- )
- }}
- >
-
-
-
- webViewRef.current?.reload()}>
-
-
-
- {
- signOut()
- }}
- >
-
-
-
- )}
-
- )
-}
diff --git a/apps/mobile/src/screens/(modal)/2fa.tsx b/apps/mobile/src/screens/(modal)/2fa.tsx
index 597cf28c0e..2b2b130b89 100644
--- a/apps/mobile/src/screens/(modal)/2fa.tsx
+++ b/apps/mobile/src/screens/(modal)/2fa.tsx
@@ -1,5 +1,4 @@
import { useMutation } from "@tanstack/react-query"
-import { router } from "expo-router"
import { useRef } from "react"
import { Text, TouchableWithoutFeedback, View } from "react-native"
import { KeyboardController } from "react-native-keyboard-controller"
@@ -7,7 +6,10 @@ import type { OtpInputRef } from "react-native-otp-entry"
import { OtpInput } from "react-native-otp-entry"
import { useColor } from "react-native-uikit-colors"
+import { HeaderCloseOnly } from "@/src/components/layouts/header/HeaderElements"
import { twoFactor } from "@/src/lib/auth"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { queryClient } from "@/src/lib/query-client"
import { toast } from "@/src/lib/toast"
import { whoamiQueryKey } from "@/src/store/user/hooks"
@@ -19,12 +21,14 @@ function isAuthCodeValid(authCode: string) {
)
}
-export default function TwoFactorAuthScreen() {
+export const TwoFactorAuthScreen: NavigationControllerView = () => {
const label = useColor("label")
const tertiaryLabel = useColor("tertiaryLabel")
const otpInputRef = useRef(null)
+ const navigation = useNavigation()
+
const submitMutation = useMutation({
mutationFn: async (value: string) => {
const res = await twoFactor.verifyTotp({ code: value })
@@ -37,12 +41,13 @@ export default function TwoFactorAuthScreen() {
toast.error(`Failed to verify: ${error.message}`)
},
onSuccess() {
- router.replace("/")
+ navigation.popToRoot()
},
})
return (
+
{
KeyboardController.dismiss()
diff --git a/apps/mobile/src/screens/(modal)/_layout.tsx b/apps/mobile/src/screens/(modal)/_layout.tsx
deleted file mode 100644
index c180e72381..0000000000
--- a/apps/mobile/src/screens/(modal)/_layout.tsx
+++ /dev/null
@@ -1,86 +0,0 @@
-import { Stack } from "expo-router"
-
-import { ModalHeaderCloseButton } from "@/src/components/common/ModalSharedComponents"
-
-export default function ModalLayout() {
- return (
-
-
-
-
-
-
-
-
-
-
-
- )
-}
diff --git a/apps/mobile/src/screens/(modal)/edit-email.tsx b/apps/mobile/src/screens/(modal)/edit-email.tsx
index da5487d98c..6eed02641a 100644
--- a/apps/mobile/src/screens/(modal)/edit-email.tsx
+++ b/apps/mobile/src/screens/(modal)/edit-email.tsx
@@ -1,11 +1,10 @@
import { useMutation } from "@tanstack/react-query"
-import { useRouter } from "expo-router"
import { useMemo, useState } from "react"
import { View } from "react-native"
-import { ModalHeaderSubmitButton } from "@/src/components/common/ModalSharedComponents"
-import { ModalHeader } from "@/src/components/layouts/header/ModalHeader"
+import { HeaderSubmitButton } from "@/src/components/layouts/header/HeaderElements"
import { SafeModalScrollView } from "@/src/components/layouts/views/SafeModalScrollView"
+import { NavigationBlurEffectHeader } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { PlainTextField } from "@/src/components/ui/form/TextField"
import {
GroupedInsetListCard,
@@ -14,11 +13,13 @@ import {
GroupedOutlineDescription,
GroupedPlainButtonCell,
} from "@/src/components/ui/grouped/GroupedList"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { toast } from "@/src/lib/toast"
import { useWhoami } from "@/src/store/user/hooks"
import { userSyncService } from "@/src/store/user/store"
-const EditEmailScreen = () => {
+export const EditEmailScreen: NavigationControllerView = () => {
const whoami = useWhoami()
const [email, setEmail] = useState(whoami?.email ?? "")
@@ -30,7 +31,7 @@ const EditEmailScreen = () => {
return email.match(/^[^\s@]+@[^\s@][^\s.@]*\.[^\s@]+$/)
}, [email])
- const navigation = useRouter()
+ const navigation = useNavigation()
const { mutate: updateEmail, isPending } = useMutation({
mutationFn: async () => {
await userSyncService.updateEmail(email)
@@ -43,10 +44,10 @@ const EditEmailScreen = () => {
return (
- {
@@ -87,4 +88,3 @@ const EditEmailScreen = () => {
)
}
-export default EditEmailScreen
diff --git a/apps/mobile/src/screens/(modal)/follow.tsx b/apps/mobile/src/screens/(modal)/follow.tsx
index f2616e5e1f..d873a24165 100644
--- a/apps/mobile/src/screens/(modal)/follow.tsx
+++ b/apps/mobile/src/screens/(modal)/follow.tsx
@@ -1,11 +1,12 @@
-import { useLocalSearchParams } from "expo-router"
-
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { FollowFeed, FollowUrl } from "@/src/modules/feed/FollowFeed"
import { FollowList } from "@/src/modules/list/FollowList"
-export default function Follow() {
- const { id, type = "feed", url } = useLocalSearchParams()
-
+export const FollowScreen: NavigationControllerView<{
+ id?: string
+ type: "feed" | "list" | "url"
+ url?: string
+}> = ({ id, type, url }) => {
switch (type) {
case "feed": {
return
diff --git a/apps/mobile/src/screens/(modal)/forget-password.tsx b/apps/mobile/src/screens/(modal)/forget-password.tsx
index 75b0806851..198504631b 100644
--- a/apps/mobile/src/screens/(modal)/forget-password.tsx
+++ b/apps/mobile/src/screens/(modal)/forget-password.tsx
@@ -1,20 +1,23 @@
import { useMutation } from "@tanstack/react-query"
-import { router } from "expo-router"
import { useState } from "react"
import { Text, TouchableWithoutFeedback, View } from "react-native"
import { KeyboardAvoidingView, KeyboardController } from "react-native-keyboard-controller"
import { useSafeAreaInsets } from "react-native-safe-area-context"
import { SubmitButton } from "@/src/components/common/SubmitButton"
+import { HeaderCloseOnly } from "@/src/components/layouts/header/HeaderElements"
import { PlainTextField } from "@/src/components/ui/form/TextField"
import { forgetPassword } from "@/src/lib/auth"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { toast } from "@/src/lib/toast"
import { getTokenHeaders } from "@/src/lib/token"
-export default function ForgetPassword() {
+export const ForgetPasswordScreen: NavigationControllerView = () => {
const offset = useSafeAreaInsets()
const [email, setEmail] = useState("")
+ const navigation = useNavigation()
const forgetPasswordMutation = useMutation({
mutationFn: async (email: string) => {
const res = await forgetPassword(
@@ -32,7 +35,7 @@ export default function ForgetPassword() {
},
onSuccess: () => {
toast.success("We have sent you an email with instructions to reset your password.")
- router.back()
+ navigation.back()
},
})
@@ -44,6 +47,7 @@ export default function ForgetPassword() {
accessible={false}
>
+
Forgot password?
diff --git a/apps/mobile/src/screens/(modal)/list.tsx b/apps/mobile/src/screens/(modal)/list.tsx
index 746adc4e56..24e38d5209 100644
--- a/apps/mobile/src/screens/(modal)/list.tsx
+++ b/apps/mobile/src/screens/(modal)/list.tsx
@@ -1,15 +1,14 @@
import { useActionSheet } from "@expo/react-native-action-sheet"
import { FeedViewType } from "@follow/constants"
import { zodResolver } from "@hookform/resolvers/zod"
-import { router, useLocalSearchParams, useNavigation } from "expo-router"
import { memo, useEffect, useState } from "react"
import { Controller, useForm } from "react-hook-form"
import { View } from "react-native"
import { z } from "zod"
-import { ModalHeaderSubmitButton } from "@/src/components/common/ModalSharedComponents"
-import { ModalHeader } from "@/src/components/layouts/header/ModalHeader"
+import { HeaderSubmitButton } from "@/src/components/layouts/header/HeaderElements"
import { SafeModalScrollView } from "@/src/components/layouts/views/SafeModalScrollView"
+import { NavigationBlurEffectHeader } from "@/src/components/layouts/views/SafeNavigationScrollView"
import { FormProvider, useFormContext } from "@/src/components/ui/form/FormProvider"
import { FormLabel } from "@/src/components/ui/form/Label"
import { NumberField, TextField } from "@/src/components/ui/form/TextField"
@@ -19,6 +18,9 @@ import {
} from "@/src/components/ui/grouped/GroupedList"
import { PowerIcon } from "@/src/icons/power"
import { getBizFetchErrorMessage } from "@/src/lib/api-fetch"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { useSetModalScreenOptions } from "@/src/lib/navigation/ScreenOptionsContext"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { toast } from "@/src/lib/toast"
import { FeedViewSelector } from "@/src/modules/feed/view-selector"
import { getList } from "@/src/store/list/getters"
@@ -49,9 +51,9 @@ const defaultValues = {
fee: 0,
view: FeedViewType.Articles,
} as ListModel
-export default function ListScreen() {
- const listId = useLocalSearchParams<{ id?: string }>().id
-
+export const ListScreen: NavigationControllerView<{
+ listId?: string
+}> = ({ listId }) => {
const list = useList(listId || "")
const form = useForm({
defaultValues: list || defaultValues,
@@ -61,7 +63,7 @@ export default function ListScreen() {
})
const isEditing = !!listId
const { showActionSheetWithOptions } = useActionSheet()
-
+ const navigation = useNavigation()
return (
@@ -177,7 +179,7 @@ export default function ListScreen() {
async (index) => {
if (index === 0) {
await listSyncServices.deleteList({ listId: listId! })
- router.dismiss()
+ navigation.dismiss()
}
},
)
@@ -201,19 +203,21 @@ const ScreenOptions = memo(({ title, listId }: ScreenOptionsProps) => {
const isEditing = !!listId
const [isLoading, setIsLoading] = useState(false)
- const navigation = useNavigation()
+
+ const setModalOptions = useSetModalScreenOptions()
useEffect(() => {
- navigation.setOptions({
+ setModalOptions({
gestureEnabled: !isDirty,
})
- }, [isDirty, navigation])
+ }, [isDirty, setModalOptions])
+ const navigation = useNavigation()
return (
-
- {
@@ -229,7 +233,7 @@ const ScreenOptions = memo(({ title, listId }: ScreenOptionsProps) => {
})
.finally(() => {
setIsLoading(false)
- router.dismiss()
+ navigation.dismiss()
})
return
}
@@ -250,7 +254,7 @@ const ScreenOptions = memo(({ title, listId }: ScreenOptionsProps) => {
})
.finally(() => {
setIsLoading(false)
- router.dismiss()
+ navigation.dismiss()
})
})}
/>
diff --git a/apps/mobile/src/screens/(modal)/login.tsx b/apps/mobile/src/screens/(modal)/login.tsx
index 7e50fbeb80..8da624e634 100644
--- a/apps/mobile/src/screens/(modal)/login.tsx
+++ b/apps/mobile/src/screens/(modal)/login.tsx
@@ -1,19 +1,22 @@
-import { router } from "expo-router"
import { useEffect } from "react"
import { Text, TouchableOpacity } from "react-native"
+import { HeaderCloseOnly } from "@/src/components/layouts/header/HeaderElements"
+import { Navigation } from "@/src/lib/navigation/Navigation"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { Login } from "@/src/modules/login"
import { useWhoami } from "@/src/store/user/hooks"
function exit() {
+ const router = Navigation.rootNavigation
if (router.canGoBack()) {
router.back()
} else {
- router.replace("/")
+ router.popToRoot()
}
}
-export default function LoginPage() {
+export const LoginScreen: NavigationControllerView = () => {
const whoami = useWhoami()
useEffect(() => {
@@ -26,6 +29,7 @@ export default function LoginPage() {
return (
<>
+
{!!whoami?.id && __DEV__ && (
{
+export const SelectReadingModeScreen: NavigationControllerView = () => {
const { behavior, updateSettings } = useReadingBehavior()
return (
-
+
)
}
-
-export default SelectReadingModeScreen
diff --git a/apps/mobile/src/screens/(modal)/profile.tsx b/apps/mobile/src/screens/(modal)/profile.tsx
index 16b5124676..279757e74d 100644
--- a/apps/mobile/src/screens/(modal)/profile.tsx
+++ b/apps/mobile/src/screens/(modal)/profile.tsx
@@ -1,6 +1,5 @@
import type { FeedViewType } from "@follow/constants"
import { cn } from "@follow/utils"
-import { useGlobalSearchParams } from "expo-router"
import { Fragment, useCallback, useEffect, useMemo } from "react"
import {
ActivityIndicator,
@@ -23,6 +22,7 @@ import type { FeedIconRequiredFeed } from "@/src/components/ui/icon/feed-icon"
import { FeedIcon } from "@/src/components/ui/icon/feed-icon"
import { Share3CuteReIcon } from "@/src/icons/share_3_cute_re"
import type { apiClient } from "@/src/lib/api-fetch"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { toast } from "@/src/lib/toast"
import { useShareSubscription } from "@/src/modules/settings/hooks/useShareSubscription"
import { UserHeaderBanner } from "@/src/modules/settings/UserHeaderBanner"
@@ -34,12 +34,10 @@ import { useColor } from "@/src/theme/colors"
type Subscription = Awaited>["data"][number]
-export default function ProfileScreen() {
+export const ProfileScreen: NavigationControllerView<{
+ userId: string
+}> = ({ userId }) => {
const whoami = useWhoami()
- const globalSearchParams = useGlobalSearchParams<{
- userId: string
- }>()
- const { userId } = globalSearchParams
if (!whoami) {
return null
diff --git a/apps/mobile/src/screens/(modal)/rsshub-form.tsx b/apps/mobile/src/screens/(modal)/rsshub-form.tsx
index f097c0b48f..1e7bf3dd90 100644
--- a/apps/mobile/src/screens/(modal)/rsshub-form.tsx
+++ b/apps/mobile/src/screens/(modal)/rsshub-form.tsx
@@ -5,35 +5,42 @@ import {
parseRegexpPathParams,
regexpPathToPath,
} from "@follow/utils"
+import { PortalProvider } from "@gorhom/portal"
import { zodResolver } from "@hookform/resolvers/zod"
-import { router, useLocalSearchParams, useNavigation } from "expo-router"
import { memo, useEffect, useMemo, useState } from "react"
import type { FieldErrors } from "react-hook-form"
import { Controller, useForm } from "react-hook-form"
import { KeyboardAvoidingView, Linking, Text, TouchableOpacity, View } from "react-native"
import { z } from "zod"
-import { ModalHeaderSubmitButton } from "@/src/components/common/ModalSharedComponents"
-import { ModalHeader } from "@/src/components/layouts/header/ModalHeader"
-import { SafeModalScrollView } from "@/src/components/layouts/views/SafeModalScrollView"
+import { HeaderSubmitButton } from "@/src/components/layouts/header/HeaderElements"
+import {
+ NavigationBlurEffectHeader,
+ SafeNavigationScrollView,
+} from "@/src/components/layouts/views/SafeNavigationScrollView"
import { FormProvider, useFormContext } from "@/src/components/ui/form/FormProvider"
import { Select } from "@/src/components/ui/form/Select"
import { TextField } from "@/src/components/ui/form/TextField"
-import { PortalHost } from "@/src/components/ui/portal"
import { Markdown } from "@/src/components/ui/typography/Markdown"
+import { useNavigation } from "@/src/lib/navigation/hooks"
+import { useSetModalScreenOptions } from "@/src/lib/navigation/ScreenOptionsContext"
+import type { NavigationControllerView } from "@/src/lib/navigation/types"
import { toast } from "@/src/lib/toast"
import { feedSyncServices } from "@/src/store/feed/store"
+import { FollowScreen } from "./follow"
+
interface RsshubFormParams {
route: RSSHubRoute
routePrefix: string
name: string
}
-export default function RsshubForm() {
- const params = useLocalSearchParams()
-
- const { route, routePrefix, name } = (params || {}) as Record