tangled mirror of catsky-🐱 Soothing soft social-app fork with all the niche toggles! (Unofficial); for issues and PRs please put them on github:NekoDrone/catsky-social

chore: sync with upstream

i hope i didn't fuck up lol

serenity aad8b02f c37986b2

Changed files
+4604 -4346
.github
__tests__
bskylink
src
bskyogcard
bskyweb
cmd
bskyweb
templates
docs
jest
modules
bottom-sheet
expo-scroll-forwarder
patches
src
alf
components
ContextMenu
Dialog
FocusScope
LabelingServiceCard
Layout
Header
Menu
PolicyUpdateOverlay
updates
202508
Post
Embed
ExternalEmbed
VideoEmbed
PostControls
ProfileHoverCard
ProgressGuide
ReportDialog
Select
StarterPack
activity-notifications
ageAssurance
dialogs
dms
forms
intents
interstitials
live
moderation
verification
lib
locale
locales
screens
state
view
+6 -1
.github/workflows/build-and-push-ogcard-aws.yaml
··· 1 1 name: build-and-push-ogcard-aws 2 2 on: 3 3 workflow_dispatch: 4 + pull_request: 5 + paths: 6 + - 'bskyogcard/**' 7 + - 'Dockerfile.bskyogcard' 8 + - '.github/workflows/build-and-push-ogcard-aws.yaml' 4 9 5 10 env: 6 11 REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }} ··· 45 50 uses: docker/build-push-action@v4 46 51 with: 47 52 context: . 48 - push: ${{ github.event_name != 'pull_request' }} 53 + push: true 49 54 file: ./Dockerfile.bskyogcard 50 55 tags: ${{ steps.meta.outputs.tags }} 51 56 labels: ${{ steps.meta.outputs.labels }}
+2 -2
.github/workflows/build-submit-ios.yml
··· 53 53 54 54 - uses: maxim-lobanov/setup-xcode@v1 55 55 with: 56 - xcode-version: '16.4' 56 + xcode-version: "16.4" 57 57 58 58 - name: ☕️ Setup Cocoapods 59 59 uses: maxim-lobanov/setup-cocoapods@v1 60 60 with: 61 - version: 1.14.3 61 + version: 1.16.2 62 62 63 63 - name: 💾 Cache Pods 64 64 uses: actions/cache@v3
+5 -5
.github/workflows/bundle-deploy-eas-update.yml
··· 192 192 193 193 - uses: maxim-lobanov/setup-xcode@v1 194 194 with: 195 - xcode-version: '16.2' 195 + xcode-version: "16.2" 196 196 197 197 - name: ☕️ Setup Cocoapods 198 198 uses: maxim-lobanov/setup-cocoapods@v1 199 199 with: 200 - version: 1.14.3 200 + version: 1.16.2 201 201 202 202 - name: 💾 Cache Pods 203 203 uses: actions/cache@v3 ··· 293 293 294 294 - uses: actions/setup-java@v4 295 295 with: 296 - distribution: 'temurin' 297 - java-version: '17' 296 + distribution: "temurin" 297 + java-version: "17" 298 298 299 299 - name: ⚙️ Install dependencies 300 300 run: yarn install ··· 332 332 id: timestamp 333 333 uses: nanzm/get-time-action@master 334 334 with: 335 - format: 'MM-DD-HH-mm-ss' 335 + format: "MM-DD-HH-mm-ss" 336 336 337 337 - name: 🚀 Upload Artifact 338 338 id: upload-artifact
+2 -1
Dockerfile.bskyogcard
··· 26 26 RUN mkdir /app/data && chown node /app/data 27 27 28 28 VOLUME /app/data 29 - EXPOSE 3000 29 + EXPOSE 3000 3001 30 30 ENV CARD_PORT=3000 31 + ENV CARD_METRICS_PORT=3001 31 32 ENV NODE_ENV=production 32 33 # potential perf issues w/ io_uring on this version of node 33 34 ENV UV_USE_IO_URING=0
+1 -1
__tests__/lib/images.test.ts
··· 1 - import {createDownloadResumable, deleteAsync} from 'expo-file-system' 1 + import {createDownloadResumable, deleteAsync} from 'expo-file-system/legacy' 2 2 import {manipulateAsync, SaveFormat} from 'expo-image-manipulator' 3 3 4 4 import {
+3 -2
app.config.js
··· 43 43 icon: './assets/app-icons/ios_icon_default_light.png', 44 44 userInterfaceStyle: 'automatic', 45 45 primaryColor: '#1083fe', 46 + newArchEnabled: false, 46 47 ios: { 47 48 supportsTablet: false, 48 49 bundleIdentifier: 'xyz.blueskyweb.app', ··· 102 103 'zh-Hans', 103 104 'zh-Hant', 104 105 ], 106 + UIDesignRequiresCompatibility: true, 105 107 }, 106 108 associatedDomains: ASSOCIATED_DOMAINS, 107 109 entitlements: { ··· 207 209 { 208 210 ios: { 209 211 deploymentTarget: '15.1', 210 - newArchEnabled: false, 212 + buildReactNativeFromSource: true, 211 213 }, 212 214 android: { 213 215 compileSdkVersion: 35, 214 216 targetSdkVersion: 35, 215 217 buildToolsVersion: '35.0.0', 216 - newArchEnabled: false, 217 218 }, 218 219 }, 219 220 ],
+55 -22
bskylink/src/bin.ts
··· 1 1 import {Database, envToCfg, httpLogger, LinkService, readEnv} from './index.js' 2 + 2 3 async function main() { 3 - const env = readEnv() 4 - const cfg = envToCfg(env) 5 - if (cfg.db.migrationUrl) { 6 - const migrateDb = Database.postgres({ 7 - url: cfg.db.migrationUrl, 8 - schema: cfg.db.schema, 9 - }) 10 - await migrateDb.migrateToLatestOrThrow() 11 - await migrateDb.close() 12 - } 4 + try { 5 + httpLogger.info('Starting blink service') 6 + 7 + const env = readEnv() 8 + const cfg = envToCfg(env) 9 + 10 + httpLogger.info( 11 + { 12 + port: cfg.service.port, 13 + safelinkEnabled: cfg.service.safelinkEnabled, 14 + hasDbUrl: !!cfg.db.url, 15 + hasDbMigrationUrl: !!cfg.db.migrationUrl, 16 + }, 17 + 'Configuration loaded', 18 + ) 19 + 20 + if (cfg.db.migrationUrl) { 21 + httpLogger.info('Running database migrations') 22 + const migrateDb = Database.postgres({ 23 + url: cfg.db.migrationUrl, 24 + schema: cfg.db.schema, 25 + }) 26 + await migrateDb.migrateToLatestOrThrow() 27 + await migrateDb.close() 28 + httpLogger.info('Database migrations completed') 29 + } 30 + 31 + httpLogger.info('Creating LinkService') 32 + const link = await LinkService.create(cfg) 33 + 34 + if (link.ctx.cfg.service.safelinkEnabled) { 35 + httpLogger.info('Starting Safelink client') 36 + link.ctx.safelinkClient.runFetchEvents() 37 + } 13 38 14 - const link = await LinkService.create(cfg) 39 + await link.start() 40 + httpLogger.info('Link service is running') 15 41 16 - if (link.ctx.cfg.service.safelinkEnabled) { 17 - link.ctx.safelinkClient.runFetchEvents() 42 + process.on('SIGTERM', async () => { 43 + httpLogger.info('Link service is stopping') 44 + await link.destroy() 45 + httpLogger.info('Link service is stopped') 46 + }) 47 + } catch (error) { 48 + httpLogger.error( 49 + { 50 + error: String(error), 51 + stack: error instanceof Error ? error.stack : undefined, 52 + }, 53 + 'Failed to start blink service', 54 + ) 55 + process.exit(1) 18 56 } 19 - 20 - await link.start() 21 - httpLogger.info('link service is running') 22 - process.on('SIGTERM', async () => { 23 - httpLogger.info('link service is stopping') 24 - await link.destroy() 25 - httpLogger.info('link service is stopped') 26 - }) 27 57 } 28 58 29 - main() 59 + main().catch(error => { 60 + console.error('Unhandled startup error:', error) 61 + process.exit(1) 62 + })
+10
bskylink/src/db/index.ts
··· 34 34 35 35 static postgres(opts: PgOptions): Database { 36 36 const {schema, url, txLockNonce} = opts 37 + log.info( 38 + { 39 + schema, 40 + poolSize: opts.poolSize, 41 + poolMaxUses: opts.poolMaxUses, 42 + poolIdleTimeoutMs: opts.poolIdleTimeoutMs, 43 + }, 44 + 'Creating database connection', 45 + ) 46 + 37 47 const pool = 38 48 opts.pool ?? 39 49 new Pg.Pool({
+3
bskyogcard/package.json
··· 14 14 "@atproto/common": "^0.4.0", 15 15 "@resvg/resvg-js": "^2.6.2", 16 16 "express": "^4.19.2", 17 + "express-prom-bundle": "^7.0.0", 17 18 "http-terminator": "^3.2.0", 18 19 "pino": "^9.2.0", 20 + "prom-client": "^15.1.3", 19 21 "react": "^18.3.1", 20 22 "satori": "^0.10.13", 21 23 "twemoji": "^14.0.2" 22 24 }, 23 25 "devDependencies": { 26 + "@types/express": "^4.17.21", 24 27 "@types/node": "^20.14.3", 25 28 "ts-node": "^10.9.2", 26 29 "typescript": "^5.4.5"
+4
bskyogcard/src/config.ts
··· 6 6 7 7 export type ServiceConfig = { 8 8 port: number 9 + metricsPort: number 9 10 version?: string 10 11 appviewUrl: string 11 12 originVerify?: string ··· 13 14 14 15 export type Environment = { 15 16 port?: number 17 + metricsPort?: number 16 18 version?: string 17 19 appviewUrl?: string 18 20 originVerify?: string ··· 21 23 export const readEnv = (): Environment => { 22 24 return { 23 25 port: envInt('CARD_PORT'), 26 + metricsPort: envInt('CARD_METRICS_PORT'), 24 27 version: envStr('CARD_VERSION'), 25 28 appviewUrl: envStr('CARD_APPVIEW_URL'), 26 29 originVerify: envStr('CARD_ORIGIN_VERIFY'), ··· 30 33 export const envToCfg = (env: Environment): Config => { 31 34 const serviceCfg: ServiceConfig = { 32 35 port: env.port ?? 3000, 36 + metricsPort: env.metricsPort ?? 3001, 33 37 version: env.version, 34 38 appviewUrl: env.appviewUrl ?? 'https://api.bsky.app', 35 39 originVerify: env.originVerify,
+65 -2
bskyogcard/src/index.ts
··· 2 2 import type http from 'node:http' 3 3 4 4 import express from 'express' 5 + import promBundle from 'express-prom-bundle' 5 6 import {createHttpTerminator, type HttpTerminator} from 'http-terminator' 7 + import {register} from 'prom-client' 6 8 7 9 import {type Config} from './config.js' 8 10 import {AppContext} from './context.js' ··· 13 15 14 16 export class CardService { 15 17 public server?: http.Server 18 + public metricsServer?: http.Server 16 19 private terminator?: HttpTerminator 20 + private metricsTerminator?: HttpTerminator 17 21 18 22 constructor( 19 23 public app: express.Application, ··· 24 28 let app = express() 25 29 26 30 const ctx = await AppContext.fromConfig(cfg) 31 + 32 + // Add Prometheus middleware for automatic HTTP instrumentation 33 + const metricsMiddleware = promBundle({ 34 + includeMethod: true, 35 + includePath: true, 36 + includeStatusCode: true, 37 + includeUp: true, 38 + promClient: { 39 + collectDefaultMetrics: {}, 40 + }, 41 + 42 + autoregister: false, 43 + normalizePath: req => { 44 + // If we have a matched route, use its path (with :params) instead of the full URL path 45 + if (req.route) { 46 + return req.route.path 47 + } 48 + 49 + // Group all unmatched paths together to reduce cardinality 50 + return '<unmatched>' 51 + }, 52 + }) 53 + app.use(metricsMiddleware) 54 + 27 55 app = routes(ctx, app) 28 56 app.use(errorHandler) 29 57 ··· 31 59 } 32 60 33 61 async start() { 62 + // Start main application server 34 63 this.server = this.app.listen(this.ctx.cfg.service.port) 35 64 this.server.keepAliveTimeout = 90000 36 - this.terminator = createHttpTerminator({server: this.server}) 65 + this.terminator = createHttpTerminator({ 66 + server: this.server, 67 + gracefulTerminationTimeout: 15000, // 15s timeout for in-flight requests 68 + }) 37 69 await events.once(this.server, 'listening') 70 + 71 + // Start separate metrics server 72 + const metricsApp = express() 73 + metricsApp.get('/metrics', async (_req, res) => { 74 + res.set('Content-Type', register.contentType) 75 + res.end(await register.metrics()) 76 + }) 77 + 78 + this.metricsServer = metricsApp.listen(this.ctx.cfg.service.metricsPort) 79 + this.metricsTerminator = createHttpTerminator({ 80 + server: this.metricsServer, 81 + gracefulTerminationTimeout: 2000, // 2s timeout for metrics server 82 + }) 83 + await events.once(this.metricsServer, 'listening') 38 84 } 39 85 40 86 async destroy() { 87 + const startTime = Date.now() 88 + 41 89 this.ctx.abortController.abort() 42 - await this.terminator?.terminate() 90 + 91 + const shutdownPromises = [] 92 + 93 + if (this.terminator) { 94 + shutdownPromises.push(this.terminator.terminate()) 95 + } 96 + 97 + if (this.metricsTerminator) { 98 + shutdownPromises.push(this.metricsTerminator.terminate()) 99 + } 100 + 101 + await Promise.all(shutdownPromises) 102 + 103 + const elapsed = Date.now() - startTime 104 + const {httpLogger} = await import('./logger.js') 105 + httpLogger.info(`Graceful shutdown completed in ${elapsed}ms`) 43 106 } 44 107 }
+371 -2
bskyogcard/yarn.lock
··· 123 123 "@jridgewell/resolve-uri" "^3.0.3" 124 124 "@jridgewell/sourcemap-codec" "^1.4.10" 125 125 126 + "@opentelemetry/api@^1.4.0": 127 + version "1.9.0" 128 + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" 129 + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== 130 + 126 131 "@resvg/resvg-js-android-arm-eabi@2.6.2": 127 132 version "2.6.2" 128 133 resolved "https://registry.yarnpkg.com/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.6.2.tgz#e761e0b688127db64879f455178c92468a9aeabe" ··· 229 234 resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" 230 235 integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== 231 236 237 + "@types/body-parser@*": 238 + version "1.19.6" 239 + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" 240 + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== 241 + dependencies: 242 + "@types/connect" "*" 243 + "@types/node" "*" 244 + 245 + "@types/connect@*": 246 + version "3.4.38" 247 + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" 248 + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== 249 + dependencies: 250 + "@types/node" "*" 251 + 252 + "@types/express-serve-static-core@^4.17.33": 253 + version "4.19.6" 254 + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" 255 + integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== 256 + dependencies: 257 + "@types/node" "*" 258 + "@types/qs" "*" 259 + "@types/range-parser" "*" 260 + "@types/send" "*" 261 + 262 + "@types/express@^4.17.21": 263 + version "4.17.23" 264 + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef" 265 + integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== 266 + dependencies: 267 + "@types/body-parser" "*" 268 + "@types/express-serve-static-core" "^4.17.33" 269 + "@types/qs" "*" 270 + "@types/serve-static" "*" 271 + 272 + "@types/http-errors@*": 273 + version "2.0.5" 274 + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" 275 + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== 276 + 277 + "@types/mime@^1": 278 + version "1.3.5" 279 + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" 280 + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== 281 + 282 + "@types/node@*": 283 + version "24.5.2" 284 + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.5.2.tgz#52ceb83f50fe0fcfdfbd2a9fab6db2e9e7ef6446" 285 + integrity sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ== 286 + dependencies: 287 + undici-types "~7.12.0" 288 + 232 289 "@types/node@^20.14.3": 233 290 version "20.14.3" 234 291 resolved "https://registry.npmjs.org/@types/node/-/node-20.14.3.tgz" ··· 236 293 dependencies: 237 294 undici-types "~5.26.4" 238 295 296 + "@types/qs@*": 297 + version "6.14.0" 298 + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" 299 + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== 300 + 301 + "@types/range-parser@*": 302 + version "1.2.7" 303 + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" 304 + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== 305 + 306 + "@types/send@*": 307 + version "0.17.5" 308 + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74" 309 + integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w== 310 + dependencies: 311 + "@types/mime" "^1" 312 + "@types/node" "*" 313 + 314 + "@types/serve-static@*": 315 + version "1.15.8" 316 + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.8.tgz#8180c3fbe4a70e8f00b9f70b9ba7f08f35987877" 317 + integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg== 318 + dependencies: 319 + "@types/http-errors" "*" 320 + "@types/node" "*" 321 + "@types/send" "*" 322 + 239 323 abort-controller@^3.0.0: 240 324 version "3.0.0" 241 325 resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" ··· 288 372 resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" 289 373 integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 290 374 375 + bintrees@1.0.2: 376 + version "1.0.2" 377 + resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" 378 + integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== 379 + 291 380 body-parser@1.20.2: 292 381 version "1.20.2" 293 382 resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz" ··· 306 395 type-is "~1.6.18" 307 396 unpipe "1.0.0" 308 397 398 + body-parser@1.20.3: 399 + version "1.20.3" 400 + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" 401 + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== 402 + dependencies: 403 + bytes "3.1.2" 404 + content-type "~1.0.5" 405 + debug "2.6.9" 406 + depd "2.0.0" 407 + destroy "1.2.0" 408 + http-errors "2.0.0" 409 + iconv-lite "0.4.24" 410 + on-finished "2.4.1" 411 + qs "6.13.0" 412 + raw-body "2.5.2" 413 + type-is "~1.6.18" 414 + unpipe "1.0.0" 415 + 309 416 boolean@^3.1.4: 310 417 version "3.2.0" 311 418 resolved "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz" ··· 324 431 resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" 325 432 integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 326 433 434 + call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: 435 + version "1.0.2" 436 + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" 437 + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== 438 + dependencies: 439 + es-errors "^1.3.0" 440 + function-bind "^1.1.2" 441 + 327 442 call-bind@^1.0.7: 328 443 version "1.0.7" 329 444 resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" ··· 335 450 get-intrinsic "^1.2.4" 336 451 set-function-length "^1.2.1" 337 452 453 + call-bound@^1.0.2: 454 + version "1.0.4" 455 + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" 456 + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== 457 + dependencies: 458 + call-bind-apply-helpers "^1.0.2" 459 + get-intrinsic "^1.3.0" 460 + 338 461 camelize@^1.0.0: 339 462 version "1.0.1" 340 463 resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz" ··· 392 515 version "0.6.0" 393 516 resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz" 394 517 integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== 518 + 519 + cookie@0.7.1: 520 + version "0.7.1" 521 + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" 522 + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== 395 523 396 524 create-require@^1.1.0: 397 525 version "1.1.1" ··· 463 591 resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 464 592 integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 465 593 594 + dunder-proto@^1.0.1: 595 + version "1.0.1" 596 + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" 597 + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== 598 + dependencies: 599 + call-bind-apply-helpers "^1.0.1" 600 + es-errors "^1.3.0" 601 + gopd "^1.2.0" 602 + 466 603 ee-first@1.1.1: 467 604 version "1.1.1" 468 605 resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" ··· 478 615 resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" 479 616 integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 480 617 618 + encodeurl@~2.0.0: 619 + version "2.0.0" 620 + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" 621 + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== 622 + 481 623 es-define-property@^1.0.0: 482 624 version "1.0.0" 483 625 resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" 484 626 integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== 485 627 dependencies: 486 628 get-intrinsic "^1.2.4" 629 + 630 + es-define-property@^1.0.1: 631 + version "1.0.1" 632 + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" 633 + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== 487 634 488 635 es-errors@^1.3.0: 489 636 version "1.3.0" 490 637 resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" 491 638 integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 492 639 640 + es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: 641 + version "1.1.1" 642 + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" 643 + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== 644 + dependencies: 645 + es-errors "^1.3.0" 646 + 493 647 escape-html@^1.0.3, escape-html@~1.0.3: 494 648 version "1.0.3" 495 649 resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" ··· 510 664 resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" 511 665 integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 512 666 667 + express-prom-bundle@^7.0.0: 668 + version "7.0.2" 669 + resolved "https://registry.yarnpkg.com/express-prom-bundle/-/express-prom-bundle-7.0.2.tgz#73a83b9033639dae81c78906a9df78844f3c93fa" 670 + integrity sha512-ffFV4HGHvCKnkNJFqm42sYztRJE5mLgOj8MpGey1HOatuFhtcwXoBD2m5gca7ZbcyjkIf7lOH5ZdrhlrBf0sGw== 671 + dependencies: 672 + "@types/express" "^4.17.21" 673 + express "^4.18.2" 674 + on-finished "^2.3.0" 675 + url-value-parser "^2.0.0" 676 + 677 + express@^4.18.2: 678 + version "4.21.2" 679 + resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" 680 + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== 681 + dependencies: 682 + accepts "~1.3.8" 683 + array-flatten "1.1.1" 684 + body-parser "1.20.3" 685 + content-disposition "0.5.4" 686 + content-type "~1.0.4" 687 + cookie "0.7.1" 688 + cookie-signature "1.0.6" 689 + debug "2.6.9" 690 + depd "2.0.0" 691 + encodeurl "~2.0.0" 692 + escape-html "~1.0.3" 693 + etag "~1.8.1" 694 + finalhandler "1.3.1" 695 + fresh "0.5.2" 696 + http-errors "2.0.0" 697 + merge-descriptors "1.0.3" 698 + methods "~1.1.2" 699 + on-finished "2.4.1" 700 + parseurl "~1.3.3" 701 + path-to-regexp "0.1.12" 702 + proxy-addr "~2.0.7" 703 + qs "6.13.0" 704 + range-parser "~1.2.1" 705 + safe-buffer "5.2.1" 706 + send "0.19.0" 707 + serve-static "1.16.2" 708 + setprototypeof "1.2.0" 709 + statuses "2.0.1" 710 + type-is "~1.6.18" 711 + utils-merge "1.0.1" 712 + vary "~1.1.2" 713 + 513 714 express@^4.19.2: 514 715 version "4.19.2" 515 716 resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz" ··· 577 778 statuses "2.0.1" 578 779 unpipe "~1.0.0" 579 780 781 + finalhandler@1.3.1: 782 + version "1.3.1" 783 + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" 784 + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== 785 + dependencies: 786 + debug "2.6.9" 787 + encodeurl "~2.0.0" 788 + escape-html "~1.0.3" 789 + on-finished "2.4.1" 790 + parseurl "~1.3.3" 791 + statuses "2.0.1" 792 + unpipe "~1.0.0" 793 + 580 794 forwarded@0.2.0: 581 795 version "0.2.0" 582 796 resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" ··· 612 826 has-symbols "^1.0.3" 613 827 hasown "^2.0.0" 614 828 829 + get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: 830 + version "1.3.0" 831 + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" 832 + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== 833 + dependencies: 834 + call-bind-apply-helpers "^1.0.2" 835 + es-define-property "^1.0.1" 836 + es-errors "^1.3.0" 837 + es-object-atoms "^1.1.1" 838 + function-bind "^1.1.2" 839 + get-proto "^1.0.1" 840 + gopd "^1.2.0" 841 + has-symbols "^1.1.0" 842 + hasown "^2.0.2" 843 + math-intrinsics "^1.1.0" 844 + 845 + get-proto@^1.0.1: 846 + version "1.0.1" 847 + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" 848 + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== 849 + dependencies: 850 + dunder-proto "^1.0.1" 851 + es-object-atoms "^1.0.0" 852 + 615 853 gopd@^1.0.1: 616 854 version "1.0.1" 617 855 resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" 618 856 integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 619 857 dependencies: 620 858 get-intrinsic "^1.1.3" 859 + 860 + gopd@^1.2.0: 861 + version "1.2.0" 862 + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" 863 + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== 621 864 622 865 graceful-fs@^4.1.6, graceful-fs@^4.2.0: 623 866 version "4.2.11" ··· 646 889 resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" 647 890 integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 648 891 649 - hasown@^2.0.0: 892 + has-symbols@^1.1.0: 893 + version "1.1.0" 894 + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" 895 + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== 896 + 897 + hasown@^2.0.0, hasown@^2.0.2: 650 898 version "2.0.2" 651 899 resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" 652 900 integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== ··· 747 995 resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 748 996 integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 749 997 998 + math-intrinsics@^1.1.0: 999 + version "1.1.0" 1000 + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" 1001 + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== 1002 + 750 1003 media-typer@0.3.0: 751 1004 version "0.3.0" 752 1005 resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" ··· 757 1010 resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" 758 1011 integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== 759 1012 1013 + merge-descriptors@1.0.3: 1014 + version "1.0.3" 1015 + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" 1016 + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== 1017 + 760 1018 methods@~1.1.2: 761 1019 version "1.1.2" 762 1020 resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" ··· 811 1069 resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" 812 1070 integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== 813 1071 1072 + object-inspect@^1.13.3: 1073 + version "1.13.4" 1074 + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" 1075 + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== 1076 + 814 1077 on-exit-leak-free@^2.1.0: 815 1078 version "2.1.2" 816 1079 resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz" 817 1080 integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== 818 1081 819 - on-finished@2.4.1: 1082 + on-finished@2.4.1, on-finished@^2.3.0: 820 1083 version "2.4.1" 821 1084 resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" 822 1085 integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== ··· 860 1123 resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" 861 1124 integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 862 1125 1126 + path-to-regexp@0.1.12: 1127 + version "0.1.12" 1128 + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" 1129 + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== 1130 + 863 1131 path-to-regexp@0.1.7: 864 1132 version "0.1.7" 865 1133 resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" ··· 931 1199 version "0.11.10" 932 1200 resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" 933 1201 integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== 1202 + 1203 + prom-client@^15.1.3: 1204 + version "15.1.3" 1205 + resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.3.tgz#69fa8de93a88bc9783173db5f758dc1c69fa8fc2" 1206 + integrity sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g== 1207 + dependencies: 1208 + "@opentelemetry/api" "^1.4.0" 1209 + tdigest "^0.1.1" 934 1210 935 1211 proxy-addr@~2.0.7: 936 1212 version "2.0.7" ··· 947 1223 dependencies: 948 1224 side-channel "^1.0.4" 949 1225 1226 + qs@6.13.0: 1227 + version "6.13.0" 1228 + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" 1229 + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== 1230 + dependencies: 1231 + side-channel "^1.0.6" 1232 + 950 1233 quick-format-unescaped@^4.0.3: 951 1234 version "4.0.4" 952 1235 resolved "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz" ··· 1054 1337 range-parser "~1.2.1" 1055 1338 statuses "2.0.1" 1056 1339 1340 + send@0.19.0: 1341 + version "0.19.0" 1342 + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" 1343 + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== 1344 + dependencies: 1345 + debug "2.6.9" 1346 + depd "2.0.0" 1347 + destroy "1.2.0" 1348 + encodeurl "~1.0.2" 1349 + escape-html "~1.0.3" 1350 + etag "~1.8.1" 1351 + fresh "0.5.2" 1352 + http-errors "2.0.0" 1353 + mime "1.6.0" 1354 + ms "2.1.3" 1355 + on-finished "2.4.1" 1356 + range-parser "~1.2.1" 1357 + statuses "2.0.1" 1358 + 1057 1359 serve-static@1.15.0: 1058 1360 version "1.15.0" 1059 1361 resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" ··· 1064 1366 parseurl "~1.3.3" 1065 1367 send "0.18.0" 1066 1368 1369 + serve-static@1.16.2: 1370 + version "1.16.2" 1371 + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" 1372 + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== 1373 + dependencies: 1374 + encodeurl "~2.0.0" 1375 + escape-html "~1.0.3" 1376 + parseurl "~1.3.3" 1377 + send "0.19.0" 1378 + 1067 1379 set-function-length@^1.2.1: 1068 1380 version "1.2.2" 1069 1381 resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" ··· 1081 1393 resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" 1082 1394 integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1083 1395 1396 + side-channel-list@^1.0.0: 1397 + version "1.0.0" 1398 + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" 1399 + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== 1400 + dependencies: 1401 + es-errors "^1.3.0" 1402 + object-inspect "^1.13.3" 1403 + 1404 + side-channel-map@^1.0.1: 1405 + version "1.0.1" 1406 + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" 1407 + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== 1408 + dependencies: 1409 + call-bound "^1.0.2" 1410 + es-errors "^1.3.0" 1411 + get-intrinsic "^1.2.5" 1412 + object-inspect "^1.13.3" 1413 + 1414 + side-channel-weakmap@^1.0.2: 1415 + version "1.0.2" 1416 + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" 1417 + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== 1418 + dependencies: 1419 + call-bound "^1.0.2" 1420 + es-errors "^1.3.0" 1421 + get-intrinsic "^1.2.5" 1422 + object-inspect "^1.13.3" 1423 + side-channel-map "^1.0.1" 1424 + 1084 1425 side-channel@^1.0.4: 1085 1426 version "1.0.6" 1086 1427 resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" ··· 1091 1432 get-intrinsic "^1.2.4" 1092 1433 object-inspect "^1.13.1" 1093 1434 1435 + side-channel@^1.0.6: 1436 + version "1.1.0" 1437 + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" 1438 + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== 1439 + dependencies: 1440 + es-errors "^1.3.0" 1441 + object-inspect "^1.13.3" 1442 + side-channel-list "^1.0.0" 1443 + side-channel-map "^1.0.1" 1444 + side-channel-weakmap "^1.0.2" 1445 + 1094 1446 sonic-boom@^3.7.0: 1095 1447 version "3.8.1" 1096 1448 resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz" ··· 1126 1478 integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1127 1479 dependencies: 1128 1480 safe-buffer "~5.2.0" 1481 + 1482 + tdigest@^0.1.1: 1483 + version "0.1.2" 1484 + resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" 1485 + integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== 1486 + dependencies: 1487 + bintrees "1.0.2" 1129 1488 1130 1489 thread-stream@^2.6.0: 1131 1490 version "2.7.0" ··· 1220 1579 resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" 1221 1580 integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 1222 1581 1582 + undici-types@~7.12.0: 1583 + version "7.12.0" 1584 + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.12.0.tgz#15c5c7475c2a3ba30659529f5cdb4674b622fafb" 1585 + integrity sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ== 1586 + 1223 1587 unicode-trie@^2.0.0: 1224 1588 version "2.0.0" 1225 1589 resolved "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz" ··· 1237 1601 version "1.0.0" 1238 1602 resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" 1239 1603 integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1604 + 1605 + url-value-parser@^2.0.0: 1606 + version "2.2.0" 1607 + resolved "https://registry.yarnpkg.com/url-value-parser/-/url-value-parser-2.2.0.tgz#f38ae8cd24604ec69bc219d66929ddbbd93a2b32" 1608 + integrity sha512-yIQdxJpgkPamPPAPuGdS7Q548rLhny42tg8d4vyTNzFqvOnwqrgHXvgehT09U7fwrzxi3RxCiXjoNUNnNOlQ8A== 1240 1609 1241 1610 utils-merge@1.0.1: 1242 1611 version "1.0.1"
+7 -3
bskyweb/cmd/bskyweb/server.go
··· 394 394 func (srv *Server) NewTemplateContext() pongo2.Context { 395 395 return pongo2.Context{ 396 396 "staticCDNHost": srv.cfg.staticCDNHost, 397 + "favicon": fmt.Sprintf("%s/static/favicon.png", srv.cfg.staticCDNHost), 397 398 } 398 399 } 399 400 ··· 599 600 unauthedViewingOkay = false 600 601 } 601 602 } 602 - if !unauthedViewingOkay { 603 - return c.Render(http.StatusOK, "profile.html", data) 604 - } 603 + 605 604 req := c.Request() 606 605 data["profileView"] = pv 607 606 data["requestURI"] = fmt.Sprintf("https://%s%s", req.Host, req.URL.Path) 608 607 data["requestHost"] = req.Host 608 + 609 + if !unauthedViewingOkay { 610 + data["requiresAuth"] = true 611 + } 612 + 609 613 return c.Render(http.StatusOK, "profile.html", data) 610 614 } 611 615
+1
bskyweb/templates/base.html
··· 95 95 <meta name="application-name" content="Bluesky"> 96 96 <meta name="generator" content="bskyweb"> 97 97 <meta property="og:site_name" content="Bluesky Social"> 98 + <meta property="og:logo" content="{{ favicon }}"> 98 99 <meta name="twitter:site" content="@bluesky" /> 99 100 <link type="application/activity+json" href="" /> 100 101
+35
bskyweb/templates/post.html
··· 56 56 <meta property="article:published_time" content="{{ postView.IndexedAt }}"> 57 57 <link rel="alternate" type="application/json+oembed" href="https://embed.bsky.app/oembed?format=json&url={{ postView.Uri | urlencode }}" /> 58 58 <link rel="alternate" href="{{ postView.Uri }}" /> 59 + <script type="application/ld+json"> 60 + { 61 + "@context": "https://schema.org", 62 + "@type": "DiscussionForumPosting", 63 + "author": { 64 + "@type": "Person", 65 + "name": "{{ postView.Author.DisplayName }}", 66 + "url": "https://bsky.app/profile/{{ postView.Author.Handle }}" 67 + }, 68 + {%- if postText %} 69 + "text": "{{ postText }}", 70 + {% endif %} 71 + {%- if imageThumbUrls %} 72 + "image": "{{ imageThumbUrls[0] }}", 73 + {% endif %} 74 + "datePublished": "{{ postView.IndexedAt }}", 75 + "interactionStatistic": [ 76 + { 77 + "@type": "InteractionCounter", 78 + "interactionType": "https://schema.org/LikeAction", 79 + "userInteractionCount": {{ postView.LikeCount }} 80 + }, 81 + { 82 + "@type": "InteractionCounter", 83 + "interactionType": "https://schema.org/CommentAction", 84 + "userInteractionCount": {{ postView.ReplyCount }} 85 + }, 86 + { 87 + "@type": "InteractionCounter", 88 + "interactionType": "https://schema.org/ShareAction", 89 + "userInteractionCount": {{ postView.RepostCount + postView.QuoteCount }} 90 + } 91 + ] 92 + } 93 + </script> 59 94 {%- elif requiresAuth and profileHandle -%} 60 95 <meta property="og:type" content="article"> 61 96 <meta property="profile:username" content="{{ profileHandle }}">
+63 -16
bskyweb/templates/profile.html
··· 9 9 {% endblock %} 10 10 11 11 {% block html_head_extra -%} 12 - {%- if profileView -%} 13 12 <meta property="og:site_name" content="Bluesky Social"> 14 13 <meta property="og:type" content="profile"> 15 - <meta property="profile:username" content="{{ profileView.Handle }}"> 16 - {%- if requestURI %} 14 + {%- if requestURI %} 17 15 <meta property="og:url" content="{{ requestURI }}"> 18 16 <link rel="canonical" href="{{ requestURI|canonicalize_url }}" /> 19 - {% endif -%} 17 + {% endif -%} 18 + 19 + {%- if profileView -%} 20 + <meta property="profile:username" content="{{ profileView.Handle }}"> 20 21 {%- if profileView.DisplayName %} 21 22 <meta property="og:title" content="{{ profileView.DisplayName }} (@{{ profileView.Handle }})"> 22 23 {% else %} 23 24 <meta property="og:title" content="{{ profileView.Handle }}"> 24 25 {% endif -%} 25 - {%- if profileView.Description %} 26 - <meta name="description" content="{{ profileView.Description }}"> 27 - <meta property="og:description" content="{{ profileView.Description }}"> 28 - {% endif -%} 29 - {%- if profileView.Banner %} 30 - <meta property="og:image" content="{{ profileView.Banner }}"> 31 - <meta name="twitter:card" content="summary_large_image"> 32 - {%- elif profileView.Avatar -%} 33 - {# Don't use avatar image in cards; usually looks bad #} 34 - <meta name="twitter:card" content="summary"> 35 - {% endif %} 26 + 27 + <link rel="alternate" href="at://{{ profileView.Did }}/app.bsky.actor.profile/self" /> 28 + 36 29 <meta name="twitter:label1" content="Account DID"> 37 30 <meta name="twitter:value1" content="{{ profileView.Did }}"> 31 + 38 32 {%- if requestHost %} 39 33 <link rel="alternate" type="application/rss+xml" href="https://{{ requestHost }}/profile/{{ profileView.Did }}/rss"> 40 34 {% endif %} 41 - <link rel="alternate" href="at://{{ profileView.Did }}/app.bsky.actor.profile/self" /> 35 + 36 + {# Only show details if auth isn't required #} 37 + {% if not requiresAuth %} 38 + {%- if profileView.Description %} 39 + <meta name="description" content="{{ profileView.Description }}"> 40 + <meta property="og:description" content="{{ profileView.Description }}"> 41 + {% endif -%} 42 + {%- if profileView.Banner %} 43 + <meta property="og:image" content="{{ profileView.Banner }}"> 44 + <meta name="twitter:card" content="summary_large_image"> 45 + {%- elif profileView.Avatar -%} 46 + {# Don't use avatar image in cards; usually looks bad #} 47 + <meta name="twitter:card" content="summary"> 48 + {% endif %} 49 + {% else %} 50 + <meta name="description" content="This profile requires authentication to view."> 51 + <meta property="og:description" content="This profile requires authentication to view."> 52 + <meta property="twitter:description" content="This profile requires authentication to view."> 53 + {% endif %} 54 + 55 + <script type="application/ld+json"> 56 + { 57 + "@context": "https://schema.org", 58 + "@type": "ProfilePage", 59 + "dateCreated": "{{ profileView.CreatedAt }}", 60 + "mainEntity": { 61 + "@type": "Person", 62 + "name": "{{ profileView.DisplayName }}", 63 + "alternateName": "@{{ profileView.Handle }}", 64 + "identifier": "{{ profileView.Did }}", 65 + "description": "{{ profileView.Description }}", 66 + "image": "{{ profileView.Avatar }}", 67 + "interactionStatistic": [ 68 + { 69 + "@type": "InteractionCounter", 70 + "interactionType": "https://schema.org/FollowAction", 71 + "userInteractionCount": {{ profileView.FollowersCount }} 72 + } 73 + ], 74 + "agentInteractionStatistic": [ 75 + { 76 + "@type": "InteractionCounter", 77 + "interactionType": "https://schema.org/FollowAction", 78 + "userInteractionCount": {{ profileView.FollowsCount }} 79 + }, 80 + { 81 + "@type": "InteractionCounter", 82 + "interactionType": "https://schema.org/WriteAction", 83 + "userInteractionCount": {{ profileView.PostsCount }} 84 + } 85 + ] 86 + } 87 + } 88 + </script> 42 89 {% endif -%} 43 90 {%- endblock %} 44 91
+1 -2
docs/build.md
··· 63 63 ### Tips 64 64 65 65 - Copy the `.env.example` to `.env` and fill in any necessary tokens. (The Sentry token is NOT required; see instructions below if you want to enable Sentry.) 66 - - To run on the device, add `--device` to the command (e.g. `yarn android --device`). To build in production mode (slower build, faster app), also add `--variant release`. 66 + - To run on the device, add `--device` to the command (e.g. `yarn android --device`). To build in production mode (slower build, faster app), also add `--variant release` on Android or `--configuration Release` on iOS. 67 67 - If you want to use Expo EAS on your own builds without ejecting from Expo, make sure to change the `owner` and `extra.eas.projectId` properties. If you do not have an Expo account, you may remove these properties. 68 68 - `npx react-native info` Checks what has been installed. 69 69 - If the Android simulator frequently hangs or is very sluggish, [bump its memory limit](https://stackoverflow.com/a/40068396) ··· 164 164 - TextEncoder / TextDecoder 165 165 - react-native-url-polyfill 166 166 - Array#findLast (on web) 167 - - atob (on native) 168 167 169 168 ### Sentry sourcemaps 170 169
+1 -1
eas.json
··· 6 6 }, 7 7 "build": { 8 8 "base": { 9 - "node": "18.18.2" 9 + "node": "20.19.4" 10 10 }, 11 11 "development": { 12 12 "extends": "base",
+1 -1
jest/jestSetup.js
··· 33 33 } 34 34 }) 35 35 36 - jest.mock('expo-file-system', () => ({ 36 + jest.mock('expo-file-system/legacy', () => ({ 37 37 getInfoAsync: jest.fn().mockResolvedValue({exists: true, size: 100}), 38 38 deleteAsync: jest.fn(), 39 39 createDownloadResumable: jest.fn(),
+1
modules/bottom-sheet/ios/SheetView.swift
··· 1 1 import ExpoModulesCore 2 + import React 2 3 import UIKit 3 4 4 5 class SheetView: ExpoView, UISheetPresentationControllerDelegate {
+1
modules/expo-scroll-forwarder/ios/ExpoScrollForwarderView.swift
··· 1 1 import ExpoModulesCore 2 + import React 2 3 3 4 // This view will be used as a native component. Make sure to inherit from `ExpoView` 4 5 // to apply the proper styling (e.g. border radius and shadows).
+58 -62
package.json
··· 74 74 "@atproto/api": "^0.16.7", 75 75 "@bitdrift/react-native": "^0.6.8", 76 76 "@braintree/sanitize-url": "^6.0.2", 77 + "@bsky.app/alf": "^0.1.2", 77 78 "@discord/bottom-sheet": "bluesky-social/react-native-bottom-sheet", 78 79 "@emoji-mart/react": "^1.1.1", 79 80 "@expo/html-elements": "^0.12.5", ··· 92 93 "@lingui/react": "^4.14.1", 93 94 "@mattermost/react-native-paste-input": "mattermost/react-native-paste-input", 94 95 "@miblanchard/react-native-slider": "^2.6.0", 95 - "@mozzius/expo-dynamic-app-icon": "^1.7.1", 96 - "@react-native-async-storage/async-storage": "2.1.2", 97 - "@react-native-menu/menu": "^1.2.3", 98 - "@react-native-picker/picker": "2.11.0", 96 + "@mozzius/expo-dynamic-app-icon": "^1.8.0", 97 + "@react-native-async-storage/async-storage": "2.2.0", 99 98 "@react-navigation/bottom-tabs": "^7.3.13", 100 99 "@react-navigation/drawer": "^7.3.12", 101 100 "@react-navigation/native": "^7.1.9", 102 101 "@react-navigation/native-stack": "^7.3.13", 103 - "@sentry/react-native": "~6.14.0", 102 + "@sentry/react-native": "~6.20.0", 104 103 "@tanstack/query-async-storage-persister": "^5.25.0", 105 104 "@tanstack/react-query": "^5.8.1", 106 105 "@tanstack/react-query-persist-client": "^5.25.0", ··· 126 125 "bcp-47": "^2.1.0", 127 126 "bcp-47-match": "^2.0.3", 128 127 "date-fns": "^2.30.0", 129 - "deprecated-react-native-prop-types": "^5.0.0", 130 128 "email-validator": "^2.0.4", 131 129 "emoji-mart": "^5.5.2", 132 130 "emoji-regex": "^10.4.0", 133 131 "eventemitter3": "^5.0.1", 134 - "expo": "53.0.11", 135 - "expo-application": "~6.1.4", 136 - "expo-blur": "~14.1.5", 137 - "expo-build-properties": "~0.14.6", 138 - "expo-camera": "~16.1.8", 139 - "expo-clipboard": "~7.1.4", 140 - "expo-dev-client": "~5.2.0", 141 - "expo-device": "~7.1.4", 142 - "expo-file-system": "~18.1.10", 143 - "expo-font": "~13.3.1", 144 - "expo-haptics": "~14.1.4", 145 - "expo-image": "^2.4.0", 132 + "expo": "^54.0.9", 133 + "expo-application": "~7.0.7", 134 + "expo-blur": "~15.0.7", 135 + "expo-build-properties": "~1.0.9", 136 + "expo-camera": "~17.0.8", 137 + "expo-clipboard": "~8.0.7", 138 + "expo-dev-client": "~6.0.12", 139 + "expo-device": "~8.0.8", 140 + "expo-file-system": "~19.0.14", 141 + "expo-font": "~14.0.8", 142 + "expo-haptics": "~15.0.7", 143 + "expo-image": "~3.0.8", 146 144 "expo-image-crop-tool": "^0.1.8", 147 - "expo-image-manipulator": "~13.1.7", 148 - "expo-image-picker": "17.0.5", 149 - "expo-intent-launcher": "^12.1.5", 150 - "expo-linear-gradient": "~14.1.5", 151 - "expo-linking": "~7.1.5", 152 - "expo-localization": "~16.1.5", 153 - "expo-location": "~18.1.6", 154 - "expo-media-library": "~17.1.7", 155 - "expo-notifications": "~0.31.3", 156 - "expo-screen-orientation": "~8.1.7", 157 - "expo-sharing": "~13.1.5", 158 - "expo-splash-screen": "~0.30.9", 159 - "expo-system-ui": "~5.0.8", 160 - "expo-task-manager": "~13.1.5", 161 - "expo-updates": "~0.28.14", 162 - "expo-video": "~2.2.1", 163 - "expo-web-browser": "~14.1.6", 145 + "expo-image-manipulator": "~14.0.7", 146 + "expo-image-picker": "~17.0.8", 147 + "expo-intent-launcher": "~13.0.7", 148 + "expo-linear-gradient": "~15.0.7", 149 + "expo-linking": "~8.0.8", 150 + "expo-localization": "~17.0.7", 151 + "expo-location": "~19.0.7", 152 + "expo-media-library": "~18.2.0", 153 + "expo-notifications": "~0.32.11", 154 + "expo-screen-orientation": "~9.0.7", 155 + "expo-sharing": "~14.0.7", 156 + "expo-splash-screen": "~31.0.10", 157 + "expo-system-ui": "~6.0.7", 158 + "expo-task-manager": "~14.0.7", 159 + "expo-updates": "~29.0.11", 160 + "expo-video": "~3.0.11", 161 + "expo-web-browser": "~15.0.7", 164 162 "fast-text-encoding": "^1.0.6", 165 163 "history": "^5.3.0", 166 164 "hls.js": "^1.6.2", ··· 178 176 "patch-package": "^6.5.1", 179 177 "postinstall-postinstall": "^2.1.0", 180 178 "psl": "^1.9.0", 181 - "radix-ui": "^1.2.0", 182 - "react": "19.0.0", 179 + "radix-ui": "^1.4.3", 180 + "react": "19.1.0", 183 181 "react-compiler-runtime": "^19.1.0-rc.1", 184 - "react-dom": "19.0.0", 182 + "react-dom": "19.1.0", 185 183 "react-image-crop": "^11.0.7", 186 184 "react-is": "19", 187 185 "react-keyed-flatten-children": "^5.0.0", 188 - "react-native": "^0.79.3", 189 - "react-native-compressor": "^1.11.0", 190 - "react-native-date-picker": "^5.0.12", 186 + "react-native": "0.81.4", 187 + "react-native-compressor": "^1.13.0", 188 + "react-native-date-picker": "^5.0.13", 191 189 "react-native-device-attest": "^0.1.6", 192 190 "react-native-drawer-layout": "^4.1.8", 193 191 "react-native-edge-to-edge": "^1.6.0", 194 - "react-native-gesture-handler": "2.25.0", 192 + "react-native-gesture-handler": "~2.28.0", 195 193 "react-native-get-random-values": "~1.11.0", 196 - "react-native-ios-context-menu": "^1.15.3", 197 - "react-native-keyboard-controller": "^1.17.5", 194 + "react-native-keyboard-controller": "1.18.5", 198 195 "react-native-mmkv": "^2.12.2", 199 196 "react-native-pager-view": "6.8.0", 200 197 "react-native-progress": "bluesky-social/react-native-progress", 201 198 "react-native-qrcode-styled": "^0.3.3", 202 - "react-native-reanimated": "~3.17.5", 199 + "react-native-reanimated": "^3.19.1", 203 200 "react-native-root-siblings": "^5.0.1", 204 - "react-native-safe-area-context": "5.4.0", 205 - "react-native-screens": "^4.11.1", 206 - "react-native-svg": "15.12.0", 201 + "react-native-safe-area-context": "~5.6.0", 202 + "react-native-screens": "~4.16.0", 203 + "react-native-svg": "15.12.1", 207 204 "react-native-uitextview": "^1.4.0", 208 205 "react-native-url-polyfill": "^1.3.0", 209 206 "react-native-uuid": "^2.0.3", 210 207 "react-native-view-shot": "^4.0.3", 211 - "react-native-web": "~0.20.0", 208 + "react-native-web": "^0.21.0", 212 209 "react-native-web-webview": "^1.0.2", 213 210 "react-native-webview": "^13.13.5", 214 211 "react-remove-scroll-bar": "^2.3.8", ··· 220 217 "tippy.js": "^6.3.7", 221 218 "tlds": "^1.234.0", 222 219 "tldts": "^6.1.46", 223 - "zeego": "^1.6.2", 224 220 "zod": "^3.20.2" 225 221 }, 226 222 "devDependencies": { ··· 228 224 "@babel/core": "^7.26.0", 229 225 "@babel/preset-env": "^7.26.0", 230 226 "@babel/runtime": "^7.26.0", 231 - "@expo/config-plugins": "~10.0.2", 227 + "@expo/config-plugins": "~54.0.1", 232 228 "@lingui/cli": "^4.14.1", 233 229 "@lingui/macro": "^4.14.1", 234 230 "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", 235 - "@react-native/babel-preset": "0.79.3", 236 - "@react-native/eslint-config": "^0.79.3", 237 - "@react-native/typescript-config": "^0.79.3", 231 + "@react-native/babel-preset": "0.81.4", 232 + "@react-native/eslint-config": "^0.81.4", 233 + "@react-native/typescript-config": "^0.81.4", 238 234 "@sentry/webpack-plugin": "^3.2.2", 239 235 "@testing-library/jest-native": "^5.4.3", 240 236 "@testing-library/react-native": "^13.2.0", ··· 245 241 "@types/lodash.shuffle": "^4.2.7", 246 242 "@types/psl": "^1.1.1", 247 243 "@types/react": "^19.1.12", 248 - "@types/react-dom": "^19.1.8", 244 + "@types/react-dom": "^19.1.9", 249 245 "@typescript-eslint/eslint-plugin": "^7.18.0", 250 246 "@typescript-eslint/parser": "^7.18.0", 251 247 "babel-jest": "^29.7.0", 252 248 "babel-plugin-macros": "^3.1.0", 253 249 "babel-plugin-module-resolver": "^5.0.2", 254 250 "babel-plugin-react-compiler": "^19.1.0-rc.1", 255 - "babel-preset-expo": "~13.1.11", 251 + "babel-preset-expo": "~54.0.0", 256 252 "eslint": "^8.19.0", 257 253 "eslint-plugin-bsky-internal": "link:./eslint", 258 254 "eslint-plugin-ft-flow": "^2.0.3", ··· 266 262 "husky": "^8.0.3", 267 263 "is-ci": "^3.0.1", 268 264 "jest": "^29.7.0", 269 - "jest-expo": "~53.0.7", 265 + "jest-expo": "~54.0.12", 270 266 "jest-junit": "^16.0.0", 271 267 "lint-staged": "^13.2.3", 272 268 "lockfile-lint": "^4.14.0", ··· 276 272 "react-refresh": "^0.14.0", 277 273 "svgo": "^3.3.2", 278 274 "ts-node": "^10.9.1", 279 - "typescript": "~5.8.3", 275 + "typescript": "^5.9.2", 280 276 "webpack-bundle-analyzer": "^4.10.1" 281 277 }, 282 278 "resolutions": { 283 - "@expo/image-utils": "0.6.3", 284 - "@react-native/babel-preset": "0.79.3", 285 - "@react-native/normalize-colors": "0.79.3", 286 - "**/expo-constants": "17.0.3", 279 + "@react-native/babel-preset": "0.81.4", 280 + "@react-native/normalize-colors": "0.81.4", 281 + "**/@expo/image-utils": "0.8.7", 282 + "**/expo-constants": "18.0.8", 287 283 "**/expo-device": "7.1.4", 288 284 "**/zod": "3.23.8", 289 285 "**/multiformats": "9.9.0"
+13
patches/@mattermost+react-native-paste-input+0.8.1.patch
··· 1 + diff --git a/node_modules/@mattermost/react-native-paste-input/android/src/main/java/com/mattermost/pasteinputtext/PasteTextInputManager.kt b/node_modules/@mattermost/react-native-paste-input/android/src/main/java/com/mattermost/pasteinputtext/PasteTextInputManager.kt 2 + index 4ed2307..ede1181 100644 3 + --- a/node_modules/@mattermost/react-native-paste-input/android/src/main/java/com/mattermost/pasteinputtext/PasteTextInputManager.kt 4 + +++ b/node_modules/@mattermost/react-native-paste-input/android/src/main/java/com/mattermost/pasteinputtext/PasteTextInputManager.kt 5 + @@ -54,7 +54,7 @@ class PasteTextInputManager(context: ReactApplicationContext) : ReactTextInputMa 6 + } 7 + 8 + override fun getExportedCustomBubblingEventTypeConstants(): MutableMap<String, Any> { 9 + - val map = super.getExportedCustomBubblingEventTypeConstants()!! 10 + + val map = super.getExportedCustomBubblingEventTypeConstants().toMutableMap() 11 + map["onPaste"] = MapBuilder.of( 12 + "phasedRegistrationNames", 13 + MapBuilder.of("bubbled", "onPaste")
-13
patches/@sentry+react-native+6.14.0.patch
··· 1 - diff --git a/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js b/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js 2 - index c282ade..8777755 100755 3 - --- a/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js 4 - +++ b/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js 5 - @@ -215,7 +215,7 @@ for (const [assetGroupName, assets] of Object.entries(groupedAssets)) { 6 - 7 - const isHermes = assets.find(asset => asset.endsWith('.hbc')); 8 - const windowsCallback = process.platform === "win32" ? 'node ' : ''; 9 - - execSync(`${windowsCallback}${sentryCliBin} sourcemaps upload ${isHermes ? '--debug-id-reference' : ''} ${assets.join(' ')}`, { 10 - + execSync(`${windowsCallback}${sentryCliBin} sourcemaps upload ${isHermes ? '--debug-id-reference' : ''} ${assets.join(' ')} --dist ${process.env.SENTRY_DIST}`, { 11 - env: { 12 - ...process.env, 13 - [SENTRY_PROJECT]: sentryProject,
+33
patches/@sentry+react-native+6.20.0.patch
··· 1 + diff --git a/node_modules/@sentry/react-native/dist/js/tools/sentryMetroSerializer.js b/node_modules/@sentry/react-native/dist/js/tools/sentryMetroSerializer.js 2 + index d7f2350..e9c0368 100644 3 + --- a/node_modules/@sentry/react-native/dist/js/tools/sentryMetroSerializer.js 4 + +++ b/node_modules/@sentry/react-native/dist/js/tools/sentryMetroSerializer.js 5 + @@ -12,12 +12,9 @@ exports.createSentryMetroSerializer = exports.unstable_beforeAssetSerializationP 6 + const crypto = require("crypto"); 7 + const utils_1 = require("./utils"); 8 + const utils_2 = require("./vendor/metro/utils"); 9 + -let countLines; 10 + -try { 11 + - countLines = require('metro/private/lib/countLines'); 12 + -} 13 + -catch (e) { 14 + - countLines = require('metro/src/lib/countLines'); 15 + +const newline = /\r\n?|\n|\u2028|\u2029/g; 16 + +function countLines(string) { 17 + + return (string.match(newline) || []).length + 1; 18 + } 19 + const DEBUG_ID_PLACE_HOLDER = '__debug_id_place_holder__'; 20 + const DEBUG_ID_MODULE_PATH = '__debugid__'; 21 + diff --git a/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js b/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js 22 + index b3783b5..d5e3e45 100755 23 + --- a/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js 24 + +++ b/node_modules/@sentry/react-native/scripts/expo-upload-sourcemaps.js 25 + @@ -218,7 +218,7 @@ for (const [assetGroupName, assets] of Object.entries(groupedAssets)) { 26 + 27 + const isHermes = assets.find(asset => asset.endsWith('.hbc')); 28 + const windowsCallback = process.platform === "win32" ? 'node ' : ''; 29 + - execSync(`${windowsCallback}${sentryCliBin} sourcemaps upload ${isHermes ? '--debug-id-reference' : ''} ${assets.join(' ')}`, { 30 + + execSync(`${windowsCallback}${sentryCliBin} sourcemaps upload ${isHermes ? '--debug-id-reference' : ''} ${assets.join(' ')} --dist ${process.env.SENTRY_DIST}`, { 31 + env: { 32 + ...process.env, 33 + [SENTRY_PROJECT]: sentryProject,
+9
patches/@sentry+react-native+6.20.0.patch.md
··· 1 + # @sentry/react-native/scripts/expo-upload-sourcemaps.js patch 2 + 3 + Lets us specify the output directory for the sourcemaps via an environment variable. 4 + 5 + # @sentry/react-native/dist/js/tools/sentryMetroSerializer.js patch 6 + 7 + Patch of this: https://github.com/getsentry/sentry-react-native/issues/5180#issuecomment-3311772038 8 + 9 + Will be fixed in an upcoming release of @sentry/react-native - remove when available.
patches/expo-haptics+14.1.4.patch patches/expo-haptics+15.0.7.patch
patches/expo-haptics+14.1.4.patch.md patches/expo-haptics+15.0.7.patch.md
-19
patches/expo-media-library+17.1.7.patch
··· 1 - diff --git a/node_modules/expo-media-library/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt b/node_modules/expo-media-library/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt 2 - index f1255e8..a9b49e5 100644 3 - --- a/node_modules/expo-media-library/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt 4 - +++ b/node_modules/expo-media-library/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt 5 - @@ -112,11 +112,9 @@ class MediaLibraryModule : Module() { 6 - } 7 - 8 - AsyncFunction("createAssetAsync") { localUri: String, albumId: String?, promise: Promise -> 9 - - throwUnlessPermissionsGranted { 10 - - withModuleScope(promise) { 11 - - CreateAssetWithAlbumId(context, localUri, promise, true, albumId) 12 - - .execute() 13 - - } 14 - + withModuleScope(promise) { 15 - + CreateAssetWithAlbumId(context, localUri, promise, true, albumId) 16 - + .execute() 17 - } 18 - } 19 -
+13
patches/expo-media-library+18.2.0.patch
··· 1 + diff --git a/node_modules/expo-media-library/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt b/node_modules/expo-media-library/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt 2 + index 2dc1db2..ee844e8 100644 3 + --- a/node_modules/expo-media-library/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt 4 + +++ b/node_modules/expo-media-library/android/src/main/java/expo/modules/medialibrary/MediaLibraryModule.kt 5 + @@ -105,7 +105,7 @@ class MediaLibraryModule : Module() { 6 + } 7 + 8 + AsyncFunction("createAssetAsync") Coroutine { localUri: String, albumId: String? -> 9 + - requireSystemPermissions() 10 + + // requireSystemPermissions() 11 + return@Coroutine createAssetWithAlbumId(context, localUri, true, albumId) 12 + } 13 +
patches/expo-modules-core+2.4.0.patch patches/expo-modules-core+3.0.17.patch
patches/expo-modules-core+2.4.0.patch.md patches/expo-modules-core+3.0.17.patch.md
patches/expo-notifications+0.31.3.patch patches/expo-notifications+0.32.11.patch
patches/expo-notifications+0.31.3.patch.md patches/expo-notifications+0.32.11.patch.md
patches/expo-updates+0.28.14.patch patches/expo-updates+29.0.11.patch
patches/expo-updates+0.28.14.patch.md patches/expo-updates+29.0.11.patch.md
+1 -1
patches/react-native+0.79.3.patch patches/react-native+0.81.4.patch
··· 15 15 index d029337..0f63ea3 100644 16 16 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm 17 17 +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/ScrollView/RCTScrollViewComponentView.mm 18 - @@ -1003,6 +1003,11 @@ - (void)_adjustForMaintainVisibleContentPosition 18 + @@ -1038,6 +1038,11 @@ - (void)_adjustForMaintainVisibleContentPosition 19 19 } 20 20 } 21 21
patches/react-native+0.79.3.patch.md patches/react-native+0.81.4.patch.md
+17
patches/react-native-date-picker+5.0.13.patch
··· 1 + diff --git a/node_modules/react-native-date-picker/ios/RNDatePicker.h b/node_modules/react-native-date-picker/ios/RNDatePicker.h 2 + index 480746e..470dc3a 100644 3 + --- a/node_modules/react-native-date-picker/ios/RNDatePicker.h 4 + +++ b/node_modules/react-native-date-picker/ios/RNDatePicker.h 5 + @@ -15,6 +15,7 @@ NS_ASSUME_NONNULL_END 6 + #else 7 + #import "DatePicker.h" 8 + #import <UIKit/UIKit.h> 9 + +#include <string> 10 + 11 + @interface RNDatePicker : DatePicker 12 + 13 + @@ -22,4 +23,3 @@ NS_ASSUME_NONNULL_END 14 + @end 15 + 16 + #endif 17 + -
-36
patches/react-native-gesture-handler+2.25.0.patch
··· 1 - diff --git a/node_modules/react-native-gesture-handler/apple/RNGestureHandler.mm b/node_modules/react-native-gesture-handler/apple/RNGestureHandler.mm 2 - index 43d11b4..5bf0d32 100644 3 - --- a/node_modules/react-native-gesture-handler/apple/RNGestureHandler.mm 4 - +++ b/node_modules/react-native-gesture-handler/apple/RNGestureHandler.mm 5 - @@ -461,16 +461,23 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 6 - - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 7 - shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 8 - { 9 - - if ([_handlersToWaitFor count]) { 10 - - RNGestureHandler *handler = [RNGestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer]; 11 - - if (handler != nil) { 12 - - for (NSNumber *handlerTag in _handlersToWaitFor) { 13 - - if ([handler.tag isEqual:handlerTag]) { 14 - - return YES; 15 - - } 16 - - } 17 - + RNGestureHandler *handler = [RNGestureHandler findGestureHandlerByRecognizer:otherGestureRecognizer]; 18 - + if (handler == nil) { 19 - + return NO; 20 - + } 21 - + 22 - + for (NSNumber *handlerTag in _handlersToWaitFor) { 23 - + if ([handler.tag isEqual:handlerTag]) { 24 - + return YES; 25 - } 26 - } 27 - + 28 - + for (NSNumber *handlerTag in handler->_handlersThatShouldWait) { 29 - + if ([_tag isEqual:handlerTag]) { 30 - + return YES; 31 - + } 32 - + } 33 - + 34 - return NO; 35 - } 36 -
-44
patches/react-native-reanimated+3.17.5.patch
··· 1 - diff --git a/node_modules/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp b/node_modules/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp 2 - index eae3989..432745a 100644 3 - --- a/node_modules/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp 4 - +++ b/node_modules/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.cpp 5 - @@ -416,6 +416,10 @@ void NativeProxy::progressLayoutAnimation( 6 - tag, newPropsJNI, isSharedTransition); 7 - } 8 - 9 - +void NativeProxy::endLayoutAnimation(int tag, bool shouldRemove) { 10 - + layoutAnimations_->cthis()->endLayoutAnimation(tag, shouldRemove); 11 - +} 12 - + 13 - PlatformDepMethodsHolder NativeProxy::getPlatformDependentMethods() { 14 - #ifdef RCT_NEW_ARCH_ENABLED 15 - // nothing 16 - @@ -455,14 +459,7 @@ PlatformDepMethodsHolder NativeProxy::getPlatformDependentMethods() { 17 - auto progressLayoutAnimation = 18 - bindThis(&NativeProxy::progressLayoutAnimation); 19 - 20 - - auto endLayoutAnimation = [weakThis = weak_from_this()]( 21 - - int tag, bool removeView) { 22 - - auto strongThis = weakThis.lock(); 23 - - if (!strongThis) { 24 - - return; 25 - - } 26 - - strongThis->layoutAnimations_->cthis()->endLayoutAnimation(tag, removeView); 27 - - }; 28 - + auto endLayoutAnimation = bindThis(&NativeProxy::endLayoutAnimation); 29 - 30 - auto maybeFlushUiUpdatesQueueFunction = 31 - bindThis(&NativeProxy::maybeFlushUIUpdatesQueue); 32 - diff --git a/node_modules/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.h b/node_modules/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.h 33 - index 2ee2cc8..2edb5c9 100644 34 - --- a/node_modules/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.h 35 - +++ b/node_modules/react-native-reanimated/android/src/main/cpp/reanimated/android/NativeProxy.h 36 - @@ -234,6 +234,8 @@ class NativeProxy : public jni::HybridClass<NativeProxy>, 37 - const jsi::Object &newProps, 38 - bool isSharedTransition); 39 - 40 - + void endLayoutAnimation(int tag, bool shouldRemove); 41 - + 42 - /*** 43 - * Wraps a method of `NativeProxy` in a function object capturing `this` 44 - * @tparam TReturn return type of passed method
+326
patches/react-native-screens+4.16.0.patch
··· 1 + diff --git a/node_modules/react-native-screens/ios/RNSScreen.mm b/node_modules/react-native-screens/ios/RNSScreen.mm 2 + index b62a2e2..cb469db 100644 3 + --- a/node_modules/react-native-screens/ios/RNSScreen.mm 4 + +++ b/node_modules/react-native-screens/ios/RNSScreen.mm 5 + @@ -729,9 +729,26 @@ - (void)notifyTransitionProgress:(double)progress closing:(BOOL)closing goingFor 6 + #endif 7 + } 8 + 9 + -#if !RCT_NEW_ARCH_ENABLED 10 + +- (void)willMoveToWindow:(UIWindow *)newWindow 11 + +{ 12 + + if (@available(iOS 26, *)) { 13 + + // In iOS 26, as soon as another screen appears in transition, it is interactable 14 + + // To avoid glitches resulting from clicking buttons mid transition, we temporarily disable all interactions 15 + + // Disabling interactions for parent navigation controller won't be enough in case of nested stack 16 + + // Furthermore, a stack put inside a modal will exist in an entirely different hierarchy 17 + + // To be sure, we block interactions on the whole window. 18 + + // Note that newWindows is nil when moving from instead of moving to, and Obj-C handles nil correctly 19 + + newWindow.userInteractionEnabled = false; 20 + + } 21 + +} 22 + + 23 + - (void)presentationControllerWillDismiss:(UIPresentationController *)presentationController 24 + { 25 + + if (@available(iOS 26, *)) { 26 + + // Disable interactions to disallow multiple modals dismissed at once; see willMoveToWindow 27 + + presentationController.containerView.window.userInteractionEnabled = false; 28 + + } 29 + +#if !RCT_NEW_ARCH_ENABLED 30 + // On Paper, we need to call both "cancel" and "reset" here because RN's gesture 31 + // recognizer does not handle the scenario when it gets cancelled by other top 32 + // level gesture recognizer. In this case by the modal dismiss gesture. 33 + @@ -744,8 +761,8 @@ - (void)presentationControllerWillDismiss:(UIPresentationController *)presentati 34 + // down. 35 + [_touchHandler cancel]; 36 + [_touchHandler reset]; 37 + -} 38 + #endif // !RCT_NEW_ARCH_ENABLED 39 + +} 40 + 41 + - (BOOL)presentationControllerShouldDismiss:(UIPresentationController *)presentationController 42 + { 43 + @@ -757,6 +774,10 @@ - (BOOL)presentationControllerShouldDismiss:(UIPresentationController *)presenta 44 + 45 + - (void)presentationControllerDidAttemptToDismiss:(UIPresentationController *)presentationController 46 + { 47 + + if (@available(iOS 26, *)) { 48 + + // Reenable interactions; see presentationControllerWillDismiss 49 + + presentationController.containerView.window.userInteractionEnabled = true; 50 + + } 51 + // NOTE(kkafar): We should consider depracating the use of gesture cancel here & align 52 + // with usePreventRemove API of react-navigation v7. 53 + [self notifyGestureCancel]; 54 + @@ -767,6 +788,11 @@ - (void)presentationControllerDidAttemptToDismiss:(UIPresentationController *)pr 55 + 56 + - (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController 57 + { 58 + + if (@available(iOS 26, *)) { 59 + + // Reenable interactions; see presentationControllerWillDismiss 60 + + // Dismissed screen doesn't hold a reference to window, but presentingViewController.view does 61 + + presentationController.presentingViewController.view.window.userInteractionEnabled = true; 62 + + } 63 + if ([_reactSuperview respondsToSelector:@selector(presentationControllerDidDismiss:)]) { 64 + [_reactSuperview performSelector:@selector(presentationControllerDidDismiss:) withObject:presentationController]; 65 + } 66 + @@ -1518,6 +1544,10 @@ - (void)viewWillDisappear:(BOOL)animated 67 + 68 + - (void)viewDidAppear:(BOOL)animated 69 + { 70 + + if (@available(iOS 26, *)) { 71 + + // Reenable interactions, see willMoveToWindow 72 + + self.view.window.userInteractionEnabled = true; 73 + + } 74 + [super viewDidAppear:animated]; 75 + if (!_isSwiping || _shouldNotify) { 76 + // we are going forward or dismissing without swipe 77 + diff --git a/node_modules/react-native-screens/ios/RNSScreenStack.mm b/node_modules/react-native-screens/ios/RNSScreenStack.mm 78 + index 229dc58..10b365b 100644 79 + --- a/node_modules/react-native-screens/ios/RNSScreenStack.mm 80 + +++ b/node_modules/react-native-screens/ios/RNSScreenStack.mm 81 + @@ -62,26 +62,6 @@ @interface RNSScreenStackView () < 82 + 83 + @implementation RNSNavigationController 84 + 85 + -#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0) 86 + -- (void)viewDidLoad 87 + -{ 88 + - // iOS 26 introduces new gesture recognizer which replaces our RNSPanGestureRecognizer. 89 + - // The problem is that we are not able to handle it here for various reasons: 90 + - // - the new recognizer comes with its own delegate and our current approach is to wire 91 + - // all recognizers to RNSScreenStackView; to be 100% sure we don't break the logic, 92 + - // we would have to decorate its delegate and call it after our code, which would 93 + - // break other recognizers that the stack view is the delegate for 94 + - // - when RNSScreenStackView.setupGestureHandler method is called, the recognizer hasn't been 95 + - // loaded yet and there is no other place to configure in a not "hacky" way 96 + - // - the official docs warn us to not use it for anything other than "setting up failure requirements with it" 97 + - // - we expose fullScreenGestureEnabled prop to enable/disable the feature, 98 + - // so we need control over the delegate 99 + - if (@available(iOS 26.0, *)) { 100 + - self.interactiveContentPopGestureRecognizer.enabled = NO; 101 + - } 102 + -} 103 + -#endif // iOS 26 104 + - 105 + #if !TARGET_OS_TV 106 + - (UIViewController *)childViewControllerForStatusBarStyle 107 + { 108 + @@ -219,50 +199,6 @@ - (bool)onRepeatedTabSelectionOfTabScreenController:(RNSTabsScreenViewController 109 + return false; 110 + } 111 + 112 + -#pragma mark - UINavigationBarDelegate 113 + - 114 + -#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0) 115 + -- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item 116 + -{ 117 + - if (@available(iOS 26, *)) { 118 + - // To prevent popping multiple screens when back button is pressed repeatedly, 119 + - // We allow for pop operation to proceed only if no transition is in progress, 120 + - // which we check indirectly by checking if transitionCoordinator is set. 121 + - // If it's not, we are safe to proceed. 122 + - if (self.transitionCoordinator == nil) { 123 + - // We still need to disable interactions for back button so click effects are not applied, 124 + - // and there is unfortunately no better place for it currently 125 + - UIView *button = [navigationBar rnscreens_findBackButtonWrapperView]; 126 + - if (button != nil) { 127 + - button.userInteractionEnabled = false; 128 + - } 129 + - 130 + - return true; 131 + - } 132 + - 133 + - return false; 134 + - } 135 + - 136 + - return true; 137 + -} 138 + - 139 + -- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item 140 + -{ 141 + - if (@available(iOS 26, *)) { 142 + - // Reset interactions on back button -> see navigationBar:shouldPopItem 143 + - // IMPORTANT: This reset won't execute when preventNativeDismiss is on. 144 + - // However, on iOS 26, unlike in previous versions, the back button instance changes 145 + - // when handling preventNativeDismiss and userIteractionEnabled is reset. 146 + - // The instance also changes when regular screen pop happens, but in that case 147 + - // the value of userInteractionEnabled is carried on, and we reset it here. 148 + - UIView *button = [navigationBar rnscreens_findBackButtonWrapperView]; 149 + - if (button != nil) { 150 + - button.userInteractionEnabled = true; 151 + - } 152 + - } 153 + -} 154 + -#endif // Check for iOS >= 26 155 + - 156 + #pragma mark - RNSFrameCorrectionProvider 157 + 158 + #ifdef RNS_GAMMA_ENABLED 159 + @@ -327,7 +263,7 @@ @implementation RNSScreenStackView { 160 + UINavigationController *_controller; 161 + NSMutableArray<RNSScreenView *> *_reactSubviews; 162 + BOOL _invalidated; 163 + - BOOL _isFullWidthSwiping; 164 + + BOOL _isFullWidthSwipingWithPanGesture; // used only for content swipe with RNSPanGestureRecognizer 165 + RNSPercentDrivenInteractiveTransition *_interactionController; 166 + __weak RNSScreenStackManager *_manager; 167 + BOOL _updateScheduled; 168 + @@ -522,6 +458,11 @@ - (void)reactAddControllerToClosestParent:(UIViewController *)controller 169 + [self addSubview:controller.view]; 170 + #if !TARGET_OS_TV 171 + _controller.interactivePopGestureRecognizer.delegate = self; 172 + + #if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0) 173 + + if (@available(iOS 26, *)) { 174 + + _controller.interactiveContentPopGestureRecognizer.delegate = self; 175 + + } 176 + +#endif // Check for iOS >= 26.0 177 + #endif 178 + [controller didMoveToParentViewController:parentView.reactViewController]; 179 + // On iOS pre 12 we observed that `willShowViewController` delegate method does not always 180 + @@ -943,7 +884,7 @@ - (void)dismissOnReload 181 + // when preventing the native dismiss with back button, we have to return the animator. 182 + // Also, we need to return the animator when full width swiping even if the animation is not custom, 183 + // otherwise the screen will be just popped immediately due to no animation 184 + - ((operation == UINavigationControllerOperationPop && shouldCancelDismiss) || _isFullWidthSwiping || 185 + + ((operation == UINavigationControllerOperationPop && shouldCancelDismiss) || _isFullWidthSwipingWithPanGesture || 186 + [RNSScreenStackAnimator isCustomAnimation:screen.stackAnimation] || _customAnimation)) { 187 + return [[RNSScreenStackAnimator alloc] initWithOperation:operation]; 188 + } 189 + @@ -967,23 +908,39 @@ - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 190 + } 191 + RNSScreenView *topScreen = _reactSubviews.lastObject; 192 + 193 + + BOOL customAnimationOnSwipePropSetAndSelectedAnimationIsCustom = 194 + + topScreen.customAnimationOnSwipe && [RNSScreenStackAnimator isCustomAnimation:topScreen.stackAnimation]; 195 + + 196 + #if TARGET_OS_TV || TARGET_OS_VISION 197 + [self cancelTouchesInParent]; 198 + return YES; 199 + #else 200 + - // RNSPanGestureRecognizer will receive events iff topScreen.fullScreenSwipeEnabled == YES; 201 + - // Events are filtered in gestureRecognizer:shouldReceivePressOrTouchEvent: method 202 + if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) { 203 + - if ([self isInGestureResponseDistance:gestureRecognizer topScreen:topScreen]) { 204 + - _isFullWidthSwiping = YES; 205 + - [self cancelTouchesInParent]; 206 + - return YES; 207 + + // On iOS < 26, we have a custom full screen swipe recognizer that functions similarily 208 + + // to interactiveContentPopGestureRecognizer introduced in iOS 26. 209 + + // On iOS >= 26, we want to use the native one, but we are unable to handle custom animations 210 + + // with native interactiveContentPopGestureRecognizer, so we have to fallback to the old implementation. 211 + + // In this case, the old one should behave as close as the new native one, having only the difference 212 + + // in animation, and without any customization that is exclusive for it (e.g. gestureResponseDistance). 213 + + if (@available(iOS 26, *)) { 214 + + if (customAnimationOnSwipePropSetAndSelectedAnimationIsCustom) { 215 + + _isFullWidthSwipingWithPanGesture = YES; 216 + + [self cancelTouchesInParent]; 217 + + return YES; 218 + + } 219 + + return NO; 220 + + } else { 221 + + if ([self isInGestureResponseDistance:gestureRecognizer topScreen:topScreen]) { 222 + + _isFullWidthSwipingWithPanGesture = YES; 223 + + [self cancelTouchesInParent]; 224 + + return YES; 225 + + } 226 + + return NO; 227 + } 228 + - return NO; 229 + } 230 + 231 + // Now we're dealing with RNSScreenEdgeGestureRecognizer (or _UIParallaxTransitionPanGestureRecognizer) 232 + - if (topScreen.customAnimationOnSwipe && [RNSScreenStackAnimator isCustomAnimation:topScreen.stackAnimation]) { 233 + + if (customAnimationOnSwipePropSetAndSelectedAnimationIsCustom) { 234 + if ([gestureRecognizer isKindOfClass:[RNSScreenEdgeGestureRecognizer class]]) { 235 + UIRectEdge edges = ((RNSScreenEdgeGestureRecognizer *)gestureRecognizer).edges; 236 + BOOL isRTL = _controller.view.semanticContentAttribute == UISemanticContentAttributeForceRightToLeft; 237 + @@ -1028,7 +985,9 @@ - (void)setupGestureHandlers 238 + rightEdgeSwipeGestureRecognizer.delegate = self; 239 + [self addGestureRecognizer:rightEdgeSwipeGestureRecognizer]; 240 + 241 + - // gesture recognizer for full width swipe gesture 242 + + // Starting from iOS 26, RNSPanGestureRecognizer has been mostly replaced by native 243 + + // interactiveContentPopGestureRecognizer. It still needs to handle custom dismiss animations, 244 + + // which we are not able to handle with the latter. 245 + RNSPanGestureRecognizer *panRecognizer = [[RNSPanGestureRecognizer alloc] initWithTarget:self 246 + action:@selector(handleSwipe:)]; 247 + panRecognizer.delegate = self; 248 + @@ -1091,7 +1050,7 @@ - (void)handleSwipe:(UIPanGestureRecognizer *)gestureRecognizer 249 + [_interactionController cancelInteractiveTransition]; 250 + } 251 + _interactionController = nil; 252 + - _isFullWidthSwiping = NO; 253 + + _isFullWidthSwipingWithPanGesture = NO; 254 + } 255 + default: { 256 + break; 257 + @@ -1225,14 +1184,6 @@ - (BOOL)isScrollViewPanGestureRecognizer:(UIGestureRecognizer *)gestureRecognize 258 + // Be careful when adding another type of gesture recognizer. 259 + - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceivePressOrTouchEvent:(NSObject *)event 260 + { 261 + - if (@available(iOS 26, *)) { 262 + - // in iOS 26, you can swipe to pop screen before the previous one finished transitioning; 263 + - // this prevents from registering the second gesture 264 + - if ([self isTransitionInProgress]) { 265 + - return NO; 266 + - } 267 + - } 268 + - 269 + RNSScreenView *topScreen = _reactSubviews.lastObject; 270 + 271 + for (RNSScreenView *s in _reactSubviews.reverseObjectEnumerator) { 272 + @@ -1249,10 +1200,30 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive 273 + return NO; 274 + } 275 + 276 + + BOOL customAnimationOnSwipePropSetAndSelectedAnimationIsCustom = 277 + + topScreen.customAnimationOnSwipe && [RNSScreenStackAnimator isCustomAnimation:topScreen.stackAnimation]; 278 + +#if RNS_IPHONE_OS_VERSION_AVAILABLE(26_0) 279 + + if (@available(iOS 26, *)) { 280 + + // On iOS 26, fullScreenSwipeEnabled takes no effect, and depending on whether custom animations are on, 281 + + // we select either interactiveContentPopGestureRecognizer or RNSPanGestureRecognizer 282 + + if (([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]] && 283 + + !customAnimationOnSwipePropSetAndSelectedAnimationIsCustom) || 284 + + (gestureRecognizer == _controller.interactiveContentPopGestureRecognizer && 285 + + customAnimationOnSwipePropSetAndSelectedAnimationIsCustom)) { 286 + + return NO; 287 + + } 288 + + } else { 289 + + // We want to pass events to RNSPanGestureRecognizer iff full screen swipe is enabled. 290 + + if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) { 291 + + return topScreen.fullScreenSwipeEnabled; 292 + + } 293 + + } 294 + +#else // check for iOS >= 26 295 + // We want to pass events to RNSPanGestureRecognizer iff full screen swipe is enabled. 296 + if ([gestureRecognizer isKindOfClass:[RNSPanGestureRecognizer class]]) { 297 + return topScreen.fullScreenSwipeEnabled; 298 + } 299 + +#endif // check for iOS >= 26 300 + 301 + // RNSScreenEdgeGestureRecognizer || _UIParallaxTransitionPanGestureRecognizer 302 + return YES; 303 + @@ -1268,15 +1239,6 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceive 304 + return [self gestureRecognizer:gestureRecognizer shouldReceivePressOrTouchEvent:touch]; 305 + } 306 + 307 + -- (BOOL)isTransitionInProgress 308 + -{ 309 + - if (_controller.transitionCoordinator != nil) { 310 + - return YES; 311 + - } 312 + - 313 + - return NO; 314 + -} 315 + - 316 + - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 317 + shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 318 + { 319 + @@ -1289,7 +1251,6 @@ - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 320 + if (gestureRecognizer.state == UIGestureRecognizerStateBegan || isBackGesture) { 321 + return NO; 322 + } 323 + - 324 + return YES; 325 + } 326 + return NO;
patches/react-native-svg+15.12.0.patch patches/react-native-svg+15.12.1.patch
+16 -19
src/App.native.tsx
··· 38 38 } from '#/state/geolocation' 39 39 import {GlobalGestureEventsProvider} from '#/state/global-gesture-events' 40 40 import {Provider as HomeBadgeProvider} from '#/state/home-badge' 41 - import {Provider as InvitesStateProvider} from '#/state/invites' 42 41 import {Provider as LightboxStateProvider} from '#/state/lightbox' 43 42 import {MessagesProvider} from '#/state/messages' 44 43 import {Provider as ModalStateProvider} from '#/state/modals' ··· 225 224 <PrefsStateProvider> 226 225 <I18nProvider> 227 226 <ShellStateProvider> 228 - <InvitesStateProvider> 229 - <ModalStateProvider> 230 - <DialogStateProvider> 231 - <LightboxStateProvider> 232 - <PortalProvider> 233 - <BottomSheetProvider> 234 - <StarterPackProvider> 235 - <SafeAreaProvider 236 - initialMetrics={initialWindowMetrics}> 237 - <InnerApp /> 238 - </SafeAreaProvider> 239 - </StarterPackProvider> 240 - </BottomSheetProvider> 241 - </PortalProvider> 242 - </LightboxStateProvider> 243 - </DialogStateProvider> 244 - </ModalStateProvider> 245 - </InvitesStateProvider> 227 + <ModalStateProvider> 228 + <DialogStateProvider> 229 + <LightboxStateProvider> 230 + <PortalProvider> 231 + <BottomSheetProvider> 232 + <StarterPackProvider> 233 + <SafeAreaProvider 234 + initialMetrics={initialWindowMetrics}> 235 + <InnerApp /> 236 + </SafeAreaProvider> 237 + </StarterPackProvider> 238 + </BottomSheetProvider> 239 + </PortalProvider> 240 + </LightboxStateProvider> 241 + </DialogStateProvider> 242 + </ModalStateProvider> 246 243 </ShellStateProvider> 247 244 </I18nProvider> 248 245 </PrefsStateProvider>
+11 -14
src/App.web.tsx
··· 26 26 Provider as GeolocationProvider, 27 27 } from '#/state/geolocation' 28 28 import {Provider as HomeBadgeProvider} from '#/state/home-badge' 29 - import {Provider as InvitesStateProvider} from '#/state/invites' 30 29 import {Provider as LightboxStateProvider} from '#/state/lightbox' 31 30 import {MessagesProvider} from '#/state/messages' 32 31 import {Provider as ModalStateProvider} from '#/state/modals' ··· 199 198 <PrefsStateProvider> 200 199 <I18nProvider> 201 200 <ShellStateProvider> 202 - <InvitesStateProvider> 203 - <ModalStateProvider> 204 - <DialogStateProvider> 205 - <LightboxStateProvider> 206 - <PortalProvider> 207 - <StarterPackProvider> 208 - <InnerApp /> 209 - </StarterPackProvider> 210 - </PortalProvider> 211 - </LightboxStateProvider> 212 - </DialogStateProvider> 213 - </ModalStateProvider> 214 - </InvitesStateProvider> 201 + <ModalStateProvider> 202 + <DialogStateProvider> 203 + <LightboxStateProvider> 204 + <PortalProvider> 205 + <StarterPackProvider> 206 + <InnerApp /> 207 + </StarterPackProvider> 208 + </PortalProvider> 209 + </LightboxStateProvider> 210 + </DialogStateProvider> 211 + </ModalStateProvider> 215 212 </ShellStateProvider> 216 213 </I18nProvider> 217 214 </PrefsStateProvider>
+4 -997
src/alf/atoms.ts
··· 1 - import { 2 - Platform, 3 - type StyleProp, 4 - StyleSheet, 5 - type ViewStyle, 6 - } from 'react-native' 1 + import {type StyleProp, type ViewStyle} from 'react-native' 2 + import {atoms as baseAtoms} from '@bsky.app/alf' 7 3 8 - import * as tokens from '#/alf/tokens' 9 - import {ios, native, platform, web} from '#/alf/util/platform' 4 + import {native, platform, web} from '#/alf/util/platform' 10 5 import * as Layout from '#/components/Layout' 11 6 12 7 export const atoms = { 13 - debug: { 14 - borderColor: 'red', 15 - borderWidth: 1, 16 - }, 17 - 18 - /* 19 - * Positioning 20 - */ 21 - fixed: { 22 - position: Platform.select({web: 'fixed', native: 'absolute'}) as 'absolute', 23 - }, 24 - absolute: { 25 - position: 'absolute', 26 - }, 27 - relative: { 28 - position: 'relative', 29 - }, 30 - static: { 31 - position: 'static', 32 - }, 33 - sticky: web({ 34 - position: 'sticky', 35 - }), 36 - inset_0: { 37 - top: 0, 38 - left: 0, 39 - right: 0, 40 - bottom: 0, 41 - }, 42 - top_0: { 43 - top: 0, 44 - }, 45 - right_0: { 46 - right: 0, 47 - }, 48 - bottom_0: { 49 - bottom: 0, 50 - }, 51 - left_0: { 52 - left: 0, 53 - }, 54 - z_10: { 55 - zIndex: 10, 56 - }, 57 - z_20: { 58 - zIndex: 20, 59 - }, 60 - z_30: { 61 - zIndex: 30, 62 - }, 63 - z_40: { 64 - zIndex: 40, 65 - }, 66 - z_50: { 67 - zIndex: 50, 68 - }, 69 - 70 - overflow_visible: { 71 - overflow: 'visible', 72 - }, 73 - overflow_x_visible: { 74 - overflowX: 'visible', 75 - }, 76 - overflow_y_visible: { 77 - overflowY: 'visible', 78 - }, 79 - overflow_hidden: { 80 - overflow: 'hidden', 81 - }, 82 - overflow_x_hidden: { 83 - overflowX: 'hidden', 84 - }, 85 - overflow_y_hidden: { 86 - overflowY: 'hidden', 87 - }, 88 - /** 89 - * @platform web 90 - */ 91 - overflow_auto: web({ 92 - overflow: 'auto', 93 - }), 8 + ...baseAtoms, 94 9 95 - /* 96 - * Width & Height 97 - */ 98 - w_full: { 99 - width: '100%', 100 - }, 101 - h_full: { 102 - height: '100%', 103 - }, 104 10 h_full_vh: web({ 105 11 height: '100vh', 106 12 }), 107 - max_w_full: { 108 - maxWidth: '100%', 109 - }, 110 - max_h_full: { 111 - maxHeight: '100%', 112 - }, 113 13 114 14 /** 115 15 * Used for the outermost components on screens, to ensure that they can fill ··· 132 32 }, 133 33 134 34 /* 135 - * Border radius 136 - */ 137 - rounded_0: { 138 - borderRadius: 0, 139 - }, 140 - rounded_2xs: { 141 - borderRadius: tokens.borderRadius._2xs, 142 - }, 143 - rounded_xs: { 144 - borderRadius: tokens.borderRadius.xs, 145 - }, 146 - rounded_sm: { 147 - borderRadius: tokens.borderRadius.sm, 148 - }, 149 - rounded_md: { 150 - borderRadius: tokens.borderRadius.md, 151 - }, 152 - rounded_lg: { 153 - borderRadius: tokens.borderRadius.lg, 154 - }, 155 - rounded_full: { 156 - borderRadius: tokens.borderRadius.full, 157 - }, 158 - 159 - /* 160 - * Flex 161 - */ 162 - gap_0: { 163 - gap: 0, 164 - }, 165 - gap_2xs: { 166 - gap: tokens.space._2xs, 167 - }, 168 - gap_xs: { 169 - gap: tokens.space.xs, 170 - }, 171 - gap_sm: { 172 - gap: tokens.space.sm, 173 - }, 174 - gap_md: { 175 - gap: tokens.space.md, 176 - }, 177 - gap_lg: { 178 - gap: tokens.space.lg, 179 - }, 180 - gap_xl: { 181 - gap: tokens.space.xl, 182 - }, 183 - gap_2xl: { 184 - gap: tokens.space._2xl, 185 - }, 186 - gap_3xl: { 187 - gap: tokens.space._3xl, 188 - }, 189 - gap_4xl: { 190 - gap: tokens.space._4xl, 191 - }, 192 - gap_5xl: { 193 - gap: tokens.space._5xl, 194 - }, 195 - flex: { 196 - display: 'flex', 197 - }, 198 - flex_col: { 199 - flexDirection: 'column', 200 - }, 201 - flex_row: { 202 - flexDirection: 'row', 203 - }, 204 - flex_col_reverse: { 205 - flexDirection: 'column-reverse', 206 - }, 207 - flex_row_reverse: { 208 - flexDirection: 'row-reverse', 209 - }, 210 - flex_wrap: { 211 - flexWrap: 'wrap', 212 - }, 213 - flex_nowrap: { 214 - flexWrap: 'nowrap', 215 - }, 216 - flex_0: { 217 - flex: web('0 0 auto') || (native(0) as number), 218 - }, 219 - flex_1: { 220 - flex: 1, 221 - }, 222 - flex_grow: { 223 - flexGrow: 1, 224 - }, 225 - flex_grow_0: { 226 - flexGrow: 0, 227 - }, 228 - flex_shrink: { 229 - flexShrink: 1, 230 - }, 231 - flex_shrink_0: { 232 - flexShrink: 0, 233 - }, 234 - justify_start: { 235 - justifyContent: 'flex-start', 236 - }, 237 - justify_center: { 238 - justifyContent: 'center', 239 - }, 240 - justify_between: { 241 - justifyContent: 'space-between', 242 - }, 243 - justify_end: { 244 - justifyContent: 'flex-end', 245 - }, 246 - align_center: { 247 - alignItems: 'center', 248 - }, 249 - align_start: { 250 - alignItems: 'flex-start', 251 - }, 252 - align_end: { 253 - alignItems: 'flex-end', 254 - }, 255 - align_baseline: { 256 - alignItems: 'baseline', 257 - }, 258 - align_stretch: { 259 - alignItems: 'stretch', 260 - }, 261 - self_auto: { 262 - alignSelf: 'auto', 263 - }, 264 - self_start: { 265 - alignSelf: 'flex-start', 266 - }, 267 - self_end: { 268 - alignSelf: 'flex-end', 269 - }, 270 - self_center: { 271 - alignSelf: 'center', 272 - }, 273 - self_stretch: { 274 - alignSelf: 'stretch', 275 - }, 276 - self_baseline: { 277 - alignSelf: 'baseline', 278 - }, 279 - 280 - /* 281 - * Text 282 - */ 283 - text_left: { 284 - textAlign: 'left', 285 - }, 286 - text_center: { 287 - textAlign: 'center', 288 - }, 289 - text_right: { 290 - textAlign: 'right', 291 - }, 292 - text_2xs: { 293 - fontSize: tokens.fontSize._2xs, 294 - letterSpacing: tokens.TRACKING, 295 - }, 296 - text_xs: { 297 - fontSize: tokens.fontSize.xs, 298 - letterSpacing: tokens.TRACKING, 299 - }, 300 - text_sm: { 301 - fontSize: tokens.fontSize.sm, 302 - letterSpacing: tokens.TRACKING, 303 - }, 304 - text_md: { 305 - fontSize: tokens.fontSize.md, 306 - letterSpacing: tokens.TRACKING, 307 - }, 308 - text_lg: { 309 - fontSize: tokens.fontSize.lg, 310 - letterSpacing: tokens.TRACKING, 311 - }, 312 - text_xl: { 313 - fontSize: tokens.fontSize.xl, 314 - letterSpacing: tokens.TRACKING, 315 - }, 316 - text_2xl: { 317 - fontSize: tokens.fontSize._2xl, 318 - letterSpacing: tokens.TRACKING, 319 - }, 320 - text_3xl: { 321 - fontSize: tokens.fontSize._3xl, 322 - letterSpacing: tokens.TRACKING, 323 - }, 324 - text_4xl: { 325 - fontSize: tokens.fontSize._4xl, 326 - letterSpacing: tokens.TRACKING, 327 - }, 328 - text_5xl: { 329 - fontSize: tokens.fontSize._5xl, 330 - letterSpacing: tokens.TRACKING, 331 - }, 332 - leading_tight: { 333 - lineHeight: 1.15, 334 - }, 335 - leading_snug: { 336 - lineHeight: 1.3, 337 - }, 338 - leading_normal: { 339 - lineHeight: 1.5, 340 - }, 341 - tracking_normal: { 342 - letterSpacing: tokens.TRACKING, 343 - }, 344 - font_normal: { 345 - fontWeight: tokens.fontWeight.normal, 346 - }, 347 - font_medium: { 348 - fontWeight: tokens.fontWeight.medium, 349 - }, 350 - font_bold: { 351 - fontWeight: tokens.fontWeight.bold, 352 - }, 353 - font_heavy: { 354 - fontWeight: tokens.fontWeight.heavy, 355 - }, 356 - italic: { 357 - fontStyle: 'italic', 358 - }, 359 - 360 - /* 361 - * Border 362 - */ 363 - border_0: { 364 - borderWidth: 0, 365 - }, 366 - border_t_0: { 367 - borderTopWidth: 0, 368 - }, 369 - border_b_0: { 370 - borderBottomWidth: 0, 371 - }, 372 - border_l_0: { 373 - borderLeftWidth: 0, 374 - }, 375 - border_r_0: { 376 - borderRightWidth: 0, 377 - }, 378 - border_x_0: { 379 - borderLeftWidth: 0, 380 - borderRightWidth: 0, 381 - }, 382 - border_y_0: { 383 - borderTopWidth: 0, 384 - borderBottomWidth: 0, 385 - }, 386 - border: { 387 - borderWidth: StyleSheet.hairlineWidth, 388 - }, 389 - border_t: { 390 - borderTopWidth: StyleSheet.hairlineWidth, 391 - }, 392 - border_b: { 393 - borderBottomWidth: StyleSheet.hairlineWidth, 394 - }, 395 - border_l: { 396 - borderLeftWidth: StyleSheet.hairlineWidth, 397 - }, 398 - border_r: { 399 - borderRightWidth: StyleSheet.hairlineWidth, 400 - }, 401 - border_x: { 402 - borderLeftWidth: StyleSheet.hairlineWidth, 403 - borderRightWidth: StyleSheet.hairlineWidth, 404 - }, 405 - border_y: { 406 - borderTopWidth: StyleSheet.hairlineWidth, 407 - borderBottomWidth: StyleSheet.hairlineWidth, 408 - }, 409 - border_transparent: { 410 - borderColor: 'transparent', 411 - }, 412 - curve_circular: ios({ 413 - borderCurve: 'circular', 414 - }), 415 - curve_continuous: ios({ 416 - borderCurve: 'continuous', 417 - }), 418 - 419 - /* 420 - * Shadow 421 - */ 422 - shadow_sm: { 423 - shadowRadius: 8, 424 - shadowOpacity: 0.1, 425 - elevation: 8, 426 - }, 427 - shadow_md: { 428 - shadowRadius: 16, 429 - shadowOpacity: 0.1, 430 - elevation: 16, 431 - }, 432 - shadow_lg: { 433 - shadowRadius: 32, 434 - shadowOpacity: 0.1, 435 - elevation: 24, 436 - }, 437 - 438 - /* 439 - * Padding 440 - */ 441 - p_0: { 442 - padding: 0, 443 - }, 444 - p_2xs: { 445 - padding: tokens.space._2xs, 446 - }, 447 - p_xs: { 448 - padding: tokens.space.xs, 449 - }, 450 - p_sm: { 451 - padding: tokens.space.sm, 452 - }, 453 - p_md: { 454 - padding: tokens.space.md, 455 - }, 456 - p_lg: { 457 - padding: tokens.space.lg, 458 - }, 459 - p_xl: { 460 - padding: tokens.space.xl, 461 - }, 462 - p_2xl: { 463 - padding: tokens.space._2xl, 464 - }, 465 - p_3xl: { 466 - padding: tokens.space._3xl, 467 - }, 468 - p_4xl: { 469 - padding: tokens.space._4xl, 470 - }, 471 - p_5xl: { 472 - padding: tokens.space._5xl, 473 - }, 474 - px_0: { 475 - paddingLeft: 0, 476 - paddingRight: 0, 477 - }, 478 - px_2xs: { 479 - paddingLeft: tokens.space._2xs, 480 - paddingRight: tokens.space._2xs, 481 - }, 482 - px_xs: { 483 - paddingLeft: tokens.space.xs, 484 - paddingRight: tokens.space.xs, 485 - }, 486 - px_sm: { 487 - paddingLeft: tokens.space.sm, 488 - paddingRight: tokens.space.sm, 489 - }, 490 - px_md: { 491 - paddingLeft: tokens.space.md, 492 - paddingRight: tokens.space.md, 493 - }, 494 - px_lg: { 495 - paddingLeft: tokens.space.lg, 496 - paddingRight: tokens.space.lg, 497 - }, 498 - px_xl: { 499 - paddingLeft: tokens.space.xl, 500 - paddingRight: tokens.space.xl, 501 - }, 502 - px_2xl: { 503 - paddingLeft: tokens.space._2xl, 504 - paddingRight: tokens.space._2xl, 505 - }, 506 - px_3xl: { 507 - paddingLeft: tokens.space._3xl, 508 - paddingRight: tokens.space._3xl, 509 - }, 510 - px_4xl: { 511 - paddingLeft: tokens.space._4xl, 512 - paddingRight: tokens.space._4xl, 513 - }, 514 - px_5xl: { 515 - paddingLeft: tokens.space._5xl, 516 - paddingRight: tokens.space._5xl, 517 - }, 518 - py_0: { 519 - paddingTop: 0, 520 - paddingBottom: 0, 521 - }, 522 - py_2xs: { 523 - paddingTop: tokens.space._2xs, 524 - paddingBottom: tokens.space._2xs, 525 - }, 526 - py_xs: { 527 - paddingTop: tokens.space.xs, 528 - paddingBottom: tokens.space.xs, 529 - }, 530 - py_sm: { 531 - paddingTop: tokens.space.sm, 532 - paddingBottom: tokens.space.sm, 533 - }, 534 - py_md: { 535 - paddingTop: tokens.space.md, 536 - paddingBottom: tokens.space.md, 537 - }, 538 - py_lg: { 539 - paddingTop: tokens.space.lg, 540 - paddingBottom: tokens.space.lg, 541 - }, 542 - py_xl: { 543 - paddingTop: tokens.space.xl, 544 - paddingBottom: tokens.space.xl, 545 - }, 546 - py_2xl: { 547 - paddingTop: tokens.space._2xl, 548 - paddingBottom: tokens.space._2xl, 549 - }, 550 - py_3xl: { 551 - paddingTop: tokens.space._3xl, 552 - paddingBottom: tokens.space._3xl, 553 - }, 554 - py_4xl: { 555 - paddingTop: tokens.space._4xl, 556 - paddingBottom: tokens.space._4xl, 557 - }, 558 - py_5xl: { 559 - paddingTop: tokens.space._5xl, 560 - paddingBottom: tokens.space._5xl, 561 - }, 562 - pt_0: { 563 - paddingTop: 0, 564 - }, 565 - pt_2xs: { 566 - paddingTop: tokens.space._2xs, 567 - }, 568 - pt_xs: { 569 - paddingTop: tokens.space.xs, 570 - }, 571 - pt_sm: { 572 - paddingTop: tokens.space.sm, 573 - }, 574 - pt_md: { 575 - paddingTop: tokens.space.md, 576 - }, 577 - pt_lg: { 578 - paddingTop: tokens.space.lg, 579 - }, 580 - pt_xl: { 581 - paddingTop: tokens.space.xl, 582 - }, 583 - pt_2xl: { 584 - paddingTop: tokens.space._2xl, 585 - }, 586 - pt_3xl: { 587 - paddingTop: tokens.space._3xl, 588 - }, 589 - pt_4xl: { 590 - paddingTop: tokens.space._4xl, 591 - }, 592 - pt_5xl: { 593 - paddingTop: tokens.space._5xl, 594 - }, 595 - pb_0: { 596 - paddingBottom: 0, 597 - }, 598 - pb_2xs: { 599 - paddingBottom: tokens.space._2xs, 600 - }, 601 - pb_xs: { 602 - paddingBottom: tokens.space.xs, 603 - }, 604 - pb_sm: { 605 - paddingBottom: tokens.space.sm, 606 - }, 607 - pb_md: { 608 - paddingBottom: tokens.space.md, 609 - }, 610 - pb_lg: { 611 - paddingBottom: tokens.space.lg, 612 - }, 613 - pb_xl: { 614 - paddingBottom: tokens.space.xl, 615 - }, 616 - pb_2xl: { 617 - paddingBottom: tokens.space._2xl, 618 - }, 619 - pb_3xl: { 620 - paddingBottom: tokens.space._3xl, 621 - }, 622 - pb_4xl: { 623 - paddingBottom: tokens.space._4xl, 624 - }, 625 - pb_5xl: { 626 - paddingBottom: tokens.space._5xl, 627 - }, 628 - pl_0: { 629 - paddingLeft: 0, 630 - }, 631 - pl_2xs: { 632 - paddingLeft: tokens.space._2xs, 633 - }, 634 - pl_xs: { 635 - paddingLeft: tokens.space.xs, 636 - }, 637 - pl_sm: { 638 - paddingLeft: tokens.space.sm, 639 - }, 640 - pl_md: { 641 - paddingLeft: tokens.space.md, 642 - }, 643 - pl_lg: { 644 - paddingLeft: tokens.space.lg, 645 - }, 646 - pl_xl: { 647 - paddingLeft: tokens.space.xl, 648 - }, 649 - pl_2xl: { 650 - paddingLeft: tokens.space._2xl, 651 - }, 652 - pl_3xl: { 653 - paddingLeft: tokens.space._3xl, 654 - }, 655 - pl_4xl: { 656 - paddingLeft: tokens.space._4xl, 657 - }, 658 - pl_5xl: { 659 - paddingLeft: tokens.space._5xl, 660 - }, 661 - pr_0: { 662 - paddingRight: 0, 663 - }, 664 - pr_2xs: { 665 - paddingRight: tokens.space._2xs, 666 - }, 667 - pr_xs: { 668 - paddingRight: tokens.space.xs, 669 - }, 670 - pr_sm: { 671 - paddingRight: tokens.space.sm, 672 - }, 673 - pr_md: { 674 - paddingRight: tokens.space.md, 675 - }, 676 - pr_lg: { 677 - paddingRight: tokens.space.lg, 678 - }, 679 - pr_xl: { 680 - paddingRight: tokens.space.xl, 681 - }, 682 - pr_2xl: { 683 - paddingRight: tokens.space._2xl, 684 - }, 685 - pr_3xl: { 686 - paddingRight: tokens.space._3xl, 687 - }, 688 - pr_4xl: { 689 - paddingRight: tokens.space._4xl, 690 - }, 691 - pr_5xl: { 692 - paddingRight: tokens.space._5xl, 693 - }, 694 - 695 - /* 696 - * Margin 697 - */ 698 - m_0: { 699 - margin: 0, 700 - }, 701 - m_2xs: { 702 - margin: tokens.space._2xs, 703 - }, 704 - m_xs: { 705 - margin: tokens.space.xs, 706 - }, 707 - m_sm: { 708 - margin: tokens.space.sm, 709 - }, 710 - m_md: { 711 - margin: tokens.space.md, 712 - }, 713 - m_lg: { 714 - margin: tokens.space.lg, 715 - }, 716 - m_xl: { 717 - margin: tokens.space.xl, 718 - }, 719 - m_2xl: { 720 - margin: tokens.space._2xl, 721 - }, 722 - m_3xl: { 723 - margin: tokens.space._3xl, 724 - }, 725 - m_4xl: { 726 - margin: tokens.space._4xl, 727 - }, 728 - m_5xl: { 729 - margin: tokens.space._5xl, 730 - }, 731 - m_auto: { 732 - margin: 'auto', 733 - }, 734 - mx_0: { 735 - marginLeft: 0, 736 - marginRight: 0, 737 - }, 738 - mx_2xs: { 739 - marginLeft: tokens.space._2xs, 740 - marginRight: tokens.space._2xs, 741 - }, 742 - mx_xs: { 743 - marginLeft: tokens.space.xs, 744 - marginRight: tokens.space.xs, 745 - }, 746 - mx_sm: { 747 - marginLeft: tokens.space.sm, 748 - marginRight: tokens.space.sm, 749 - }, 750 - mx_md: { 751 - marginLeft: tokens.space.md, 752 - marginRight: tokens.space.md, 753 - }, 754 - mx_lg: { 755 - marginLeft: tokens.space.lg, 756 - marginRight: tokens.space.lg, 757 - }, 758 - mx_xl: { 759 - marginLeft: tokens.space.xl, 760 - marginRight: tokens.space.xl, 761 - }, 762 - mx_2xl: { 763 - marginLeft: tokens.space._2xl, 764 - marginRight: tokens.space._2xl, 765 - }, 766 - mx_3xl: { 767 - marginLeft: tokens.space._3xl, 768 - marginRight: tokens.space._3xl, 769 - }, 770 - mx_4xl: { 771 - marginLeft: tokens.space._4xl, 772 - marginRight: tokens.space._4xl, 773 - }, 774 - mx_5xl: { 775 - marginLeft: tokens.space._5xl, 776 - marginRight: tokens.space._5xl, 777 - }, 778 - mx_auto: { 779 - marginLeft: 'auto', 780 - marginRight: 'auto', 781 - }, 782 - my_0: { 783 - marginTop: 0, 784 - marginBottom: 0, 785 - }, 786 - my_2xs: { 787 - marginTop: tokens.space._2xs, 788 - marginBottom: tokens.space._2xs, 789 - }, 790 - my_xs: { 791 - marginTop: tokens.space.xs, 792 - marginBottom: tokens.space.xs, 793 - }, 794 - my_sm: { 795 - marginTop: tokens.space.sm, 796 - marginBottom: tokens.space.sm, 797 - }, 798 - my_md: { 799 - marginTop: tokens.space.md, 800 - marginBottom: tokens.space.md, 801 - }, 802 - my_lg: { 803 - marginTop: tokens.space.lg, 804 - marginBottom: tokens.space.lg, 805 - }, 806 - my_xl: { 807 - marginTop: tokens.space.xl, 808 - marginBottom: tokens.space.xl, 809 - }, 810 - my_2xl: { 811 - marginTop: tokens.space._2xl, 812 - marginBottom: tokens.space._2xl, 813 - }, 814 - my_3xl: { 815 - marginTop: tokens.space._3xl, 816 - marginBottom: tokens.space._3xl, 817 - }, 818 - my_4xl: { 819 - marginTop: tokens.space._4xl, 820 - marginBottom: tokens.space._4xl, 821 - }, 822 - my_5xl: { 823 - marginTop: tokens.space._5xl, 824 - marginBottom: tokens.space._5xl, 825 - }, 826 - my_auto: { 827 - marginTop: 'auto', 828 - marginBottom: 'auto', 829 - }, 830 - mt_0: { 831 - marginTop: 0, 832 - }, 833 - mt_2xs: { 834 - marginTop: tokens.space._2xs, 835 - }, 836 - mt_xs: { 837 - marginTop: tokens.space.xs, 838 - }, 839 - mt_sm: { 840 - marginTop: tokens.space.sm, 841 - }, 842 - mt_md: { 843 - marginTop: tokens.space.md, 844 - }, 845 - mt_lg: { 846 - marginTop: tokens.space.lg, 847 - }, 848 - mt_xl: { 849 - marginTop: tokens.space.xl, 850 - }, 851 - mt_2xl: { 852 - marginTop: tokens.space._2xl, 853 - }, 854 - mt_3xl: { 855 - marginTop: tokens.space._3xl, 856 - }, 857 - mt_4xl: { 858 - marginTop: tokens.space._4xl, 859 - }, 860 - mt_5xl: { 861 - marginTop: tokens.space._5xl, 862 - }, 863 - mt_auto: { 864 - marginTop: 'auto', 865 - }, 866 - mb_0: { 867 - marginBottom: 0, 868 - }, 869 - mb_2xs: { 870 - marginBottom: tokens.space._2xs, 871 - }, 872 - mb_xs: { 873 - marginBottom: tokens.space.xs, 874 - }, 875 - mb_sm: { 876 - marginBottom: tokens.space.sm, 877 - }, 878 - mb_md: { 879 - marginBottom: tokens.space.md, 880 - }, 881 - mb_lg: { 882 - marginBottom: tokens.space.lg, 883 - }, 884 - mb_xl: { 885 - marginBottom: tokens.space.xl, 886 - }, 887 - mb_2xl: { 888 - marginBottom: tokens.space._2xl, 889 - }, 890 - mb_3xl: { 891 - marginBottom: tokens.space._3xl, 892 - }, 893 - mb_4xl: { 894 - marginBottom: tokens.space._4xl, 895 - }, 896 - mb_5xl: { 897 - marginBottom: tokens.space._5xl, 898 - }, 899 - mb_auto: { 900 - marginBottom: 'auto', 901 - }, 902 - ml_0: { 903 - marginLeft: 0, 904 - }, 905 - ml_2xs: { 906 - marginLeft: tokens.space._2xs, 907 - }, 908 - ml_xs: { 909 - marginLeft: tokens.space.xs, 910 - }, 911 - ml_sm: { 912 - marginLeft: tokens.space.sm, 913 - }, 914 - ml_md: { 915 - marginLeft: tokens.space.md, 916 - }, 917 - ml_lg: { 918 - marginLeft: tokens.space.lg, 919 - }, 920 - ml_xl: { 921 - marginLeft: tokens.space.xl, 922 - }, 923 - ml_2xl: { 924 - marginLeft: tokens.space._2xl, 925 - }, 926 - ml_3xl: { 927 - marginLeft: tokens.space._3xl, 928 - }, 929 - ml_4xl: { 930 - marginLeft: tokens.space._4xl, 931 - }, 932 - ml_5xl: { 933 - marginLeft: tokens.space._5xl, 934 - }, 935 - ml_auto: { 936 - marginLeft: 'auto', 937 - }, 938 - mr_0: { 939 - marginRight: 0, 940 - }, 941 - mr_2xs: { 942 - marginRight: tokens.space._2xs, 943 - }, 944 - mr_xs: { 945 - marginRight: tokens.space.xs, 946 - }, 947 - mr_sm: { 948 - marginRight: tokens.space.sm, 949 - }, 950 - mr_md: { 951 - marginRight: tokens.space.md, 952 - }, 953 - mr_lg: { 954 - marginRight: tokens.space.lg, 955 - }, 956 - mr_xl: { 957 - marginRight: tokens.space.xl, 958 - }, 959 - mr_2xl: { 960 - marginRight: tokens.space._2xl, 961 - }, 962 - mr_3xl: { 963 - marginRight: tokens.space._3xl, 964 - }, 965 - mr_4xl: { 966 - marginRight: tokens.space._4xl, 967 - }, 968 - mr_5xl: { 969 - marginRight: tokens.space._5xl, 970 - }, 971 - mr_auto: { 972 - marginRight: 'auto', 973 - }, 974 - 975 - /* 976 - * Pointer events & user select 977 - */ 978 - pointer_events_none: { 979 - pointerEvents: 'none', 980 - }, 981 - pointer_events_auto: { 982 - pointerEvents: 'auto', 983 - }, 984 - user_select_none: { 985 - userSelect: 'none', 986 - }, 987 - user_select_text: { 988 - userSelect: 'text', 989 - }, 990 - user_select_all: { 991 - userSelect: 'all', 992 - }, 993 - outline_inset_1: { 994 - outlineOffset: -1, 995 - }, 996 - 997 - /* 998 - * Text decoration 999 - */ 1000 - underline: { 1001 - textDecorationLine: 'underline', 1002 - }, 1003 - strike_through: { 1004 - textDecorationLine: 'line-through', 1005 - }, 1006 - 1007 - /* 1008 - * Display 1009 - */ 1010 - hidden: { 1011 - display: 'none', 1012 - }, 1013 - inline: web({ 1014 - display: 'inline', 1015 - }), 1016 - block: web({ 1017 - display: 'block', 1018 - }), 1019 - contents: web({ 1020 - display: 'contents', 1021 - }), 1022 - 1023 - /* 1024 35 * Transition 1025 36 */ 1026 37 transition_none: web({ ··· 1099 110 transform: [], 1100 111 }, 1101 112 }) as {transform: Exclude<ViewStyle['transform'], string | undefined>}, 1102 - 1103 - pointer: web({ 1104 - cursor: 'pointer', 1105 - }), 1106 113 } as const
+5 -5
src/alf/fonts.ts
··· 7 7 8 8 const factor = 0.0625 // 1 - (15/16) 9 9 const fontScaleMultipliers: Record<Device['fontScale'], number> = { 10 - '-2': 1 - factor * 3, 11 - '-1': 1 - factor * 2, 12 - '0': 1 - factor * 1, // default 13 - '1': 1, 14 - '2': 1 + factor * 1, 10 + '-2': 1 - factor * 1, // unused 11 + '-1': 1 - factor * 1, 12 + '0': 1, // default 13 + '1': 1 + factor * 1, 14 + '2': 1 + factor * 1, // unused 15 15 } 16 16 17 17 export function computeFontScaleMultiplier(scale: Device['fontScale']) {
+13 -30
src/alf/index.tsx
··· 1 1 import React from 'react' 2 + import {type Theme, type ThemeName} from '@bsky.app/alf' 2 3 3 4 import { 4 5 computeFontScaleMultiplier, ··· 7 8 setFontFamily as persistFontFamily, 8 9 setFontScale as persistFontScale, 9 10 } from '#/alf/fonts' 10 - import {createThemes, defaultTheme} from '#/alf/themes' 11 - import {type Theme, type ThemeName} from '#/alf/types' 12 - import {BLUE_HUE, GREEN_HUE, RED_HUE} from '#/alf/util/colorGeneration' 11 + import {themes} from '#/alf/themes' 13 12 import {type Device} from '#/storage' 14 13 14 + export {type TextStyleProp, type Theme, type ViewStyleProp} from '@bsky.app/alf' 15 15 export {atoms} from '#/alf/atoms' 16 16 export * from '#/alf/breakpoints' 17 17 export * from '#/alf/fonts' 18 18 export * as tokens from '#/alf/tokens' 19 - export * from '#/alf/types' 20 19 export * from '#/alf/util/flatten' 21 20 export * from '#/alf/util/platform' 22 21 export * from '#/alf/util/themeSelector' ··· 25 24 export type Alf = { 26 25 themeName: ThemeName 27 26 theme: Theme 28 - themes: ReturnType<typeof createThemes> 27 + themes: typeof themes 29 28 fonts: { 30 29 scale: Exclude<Device['fontScale'], undefined> 31 30 scaleMultiplier: number ··· 44 43 */ 45 44 export const Context = React.createContext<Alf>({ 46 45 themeName: 'light', 47 - theme: defaultTheme, 48 - themes: createThemes({ 49 - hues: { 50 - primary: BLUE_HUE, 51 - negative: RED_HUE, 52 - positive: GREEN_HUE, 53 - }, 54 - }), 46 + theme: themes.light, 47 + themes, 55 48 fonts: { 56 49 scale: getFontScale(), 57 50 scaleMultiplier: computeFontScaleMultiplier(getFontScale()), ··· 76 69 const setFontScaleAndPersist = React.useCallback< 77 70 Alf['fonts']['setFontScale'] 78 71 >( 79 - fontScale => { 80 - setFontScale(fontScale) 81 - persistFontScale(fontScale) 82 - setFontScaleMultiplier(computeFontScaleMultiplier(fontScale)) 72 + fs => { 73 + setFontScale(fs) 74 + persistFontScale(fs) 75 + setFontScaleMultiplier(computeFontScaleMultiplier(fs)) 83 76 }, 84 77 [setFontScale], 85 78 ) ··· 89 82 const setFontFamilyAndPersist = React.useCallback< 90 83 Alf['fonts']['setFontFamily'] 91 84 >( 92 - fontFamily => { 93 - setFontFamily(fontFamily) 94 - persistFontFamily(fontFamily) 85 + ff => { 86 + setFontFamily(ff) 87 + persistFontFamily(ff) 95 88 }, 96 89 [setFontFamily], 97 90 ) 98 - const themes = React.useMemo(() => { 99 - return createThemes({ 100 - hues: { 101 - primary: BLUE_HUE, 102 - negative: RED_HUE, 103 - positive: GREEN_HUE, 104 - }, 105 - }) 106 - }, []) 107 91 108 92 const value = React.useMemo<Alf>( 109 93 () => ({ ··· 121 105 }), 122 106 [ 123 107 themeName, 124 - themes, 125 108 fontScale, 126 109 setFontScaleAndPersist, 127 110 fontFamily,
+29 -13
src/alf/themes.ts
··· 1 1 import {atoms} from '#/alf/atoms' 2 2 import {mocha} from '#/alf/catppuccin/palette' 3 3 import {type Palette, type Theme} from '#/alf/types' 4 - import { 5 - BLUE_HUE, 6 - defaultScale, 7 - dimScale, 8 - GREEN_HUE, 9 - RED_HUE, 10 - } from '#/alf/util/colorGeneration' 4 + import {defaultScale, dimScale} from '#/alf/util/colorGeneration' 11 5 import {fade} from '#/alf/util/colors' 12 6 13 - const themes = createThemes({ 14 - hues: { 15 - primary: BLUE_HUE, 16 - negative: RED_HUE, 17 - positive: GREEN_HUE, 18 - }, 7 + const DEFAULT_THEMES = createThemes({ 8 + defaultPalette: DEFAULT_PALETTE, 9 + subduedPalette: DEFAULT_SUBDUED_PALETTE, 19 10 }) 20 11 21 12 /** ··· 611 602 dim, 612 603 } 613 604 } 605 + 606 + /** 607 + * @deprecated use ALF and access palette from `useTheme()` 608 + */ 609 + export const lightPalette = DEFAULT_THEMES.light.palette 610 + /** 611 + * @deprecated use ALF and access palette from `useTheme()` 612 + */ 613 + export const darkPalette = DEFAULT_THEMES.dark.palette 614 + /** 615 + * @deprecated use ALF and access palette from `useTheme()` 616 + */ 617 + export const dimPalette = DEFAULT_THEMES.dim.palette 618 + /** 619 + * @deprecated use ALF and access theme from `useTheme()` 620 + */ 621 + export const light = DEFAULT_THEMES.light 622 + /** 623 + * @deprecated use ALF and access theme from `useTheme()` 624 + */ 625 + export const dark = DEFAULT_THEMES.dark 626 + /** 627 + * @deprecated use ALF and access theme from `useTheme()` 628 + */ 629 + export const dim = DEFAULT_THEMES.dim
+4 -55
src/alf/tokens.ts
··· 1 - import {isAndroid} from '#/platform/detection' 1 + import {tokens} from '@bsky.app/alf' 2 2 3 - export const TRACKING = isAndroid ? 0.1 : 0 3 + export * from '@bsky.app/alf/dist/tokens' 4 4 5 5 export const color = { 6 - temp_purple: 'rgb(105 0 255)', 7 - temp_purple_dark: 'rgb(83 0 202)', 8 - } as const 9 - 10 - export const space = { 11 - _2xs: 2, 12 - xs: 4, 13 - sm: 8, 14 - md: 12, 15 - lg: 16, 16 - xl: 20, 17 - _2xl: 24, 18 - _3xl: 28, 19 - _4xl: 32, 20 - _5xl: 40, 21 - } as const 22 - 23 - export const fontSize = { 24 - _2xs: 10, 25 - xs: 12, 26 - sm: 14, 27 - md: 16, 28 - lg: 18, 29 - xl: 20, 30 - _2xl: 22, 31 - _3xl: 26, 32 - _4xl: 32, 33 - _5xl: 40, 34 - } as const 35 - 36 - export const lineHeight = { 37 - none: 1, 38 - normal: 1.5, 39 - relaxed: 1.625, 40 - } as const 41 - 42 - export const borderRadius = { 43 - _2xs: 2, 44 - xs: 4, 45 - sm: 8, 46 - md: 12, 47 - lg: 16, 48 - full: 999, 49 - } as const 50 - 51 - /** 52 - * These correspond to Inter font files we actually load. 53 - */ 54 - export const fontWeight = { 55 - normal: '400', 56 - medium: '500', 57 - bold: '600', 58 - heavy: '800', 6 + temp_purple: tokens.labelerColor.purple, 7 + temp_purple_dark: tokens.labelerColor.purple_dark, 59 8 } as const 60 9 61 10 export const gradients = {
-15
src/alf/typography.tsx
··· 9 9 import {type Alf, applyFonts, atoms, flatten} from '#/alf' 10 10 11 11 /** 12 - * Util to calculate lineHeight from a text size atom and a leading atom 13 - * 14 - * Example: 15 - * `leading(atoms.text_md, atoms.leading_normal)` // => 24 16 - */ 17 - export function leading< 18 - Size extends {fontSize?: number}, 19 - Leading extends {lineHeight?: number}, 20 - >(textSize: Size, leading: Leading) { 21 - const size = textSize?.fontSize || atoms.text_md.fontSize 22 - const lineHeight = leading?.lineHeight || atoms.leading_normal.lineHeight 23 - return Math.round(size * lineHeight) 24 - } 25 - 26 - /** 27 12 * Ensures that `lineHeight` defaults to a relative value of `1`, or applies 28 13 * other relative leading atoms. 29 14 *
-8
src/alf/util/__tests__/colors.test.ts
··· 1 1 import {jest} from '@jest/globals' 2 2 3 - import {logger} from '#/logger' 4 3 import {transparentifyColor} from '../colorGeneration' 5 - 6 - jest.mock('#/logger', () => ({ 7 - logger: {warn: jest.fn()}, 8 - })) 9 4 10 5 describe('transparentifyColor', () => { 11 6 beforeEach(() => { ··· 41 36 const unsupported = 'blue' 42 37 const result = transparentifyColor(unsupported, 0.5) 43 38 expect(result).toBe(unsupported) 44 - expect(logger.warn).toHaveBeenCalledWith( 45 - `Could not make '${unsupported}' transparent`, 46 - ) 47 39 }) 48 40 })
+1 -62
src/alf/util/platform.ts
··· 1 - import {Platform} from 'react-native' 2 - 3 - import {isAndroid, isIOS, isNative, isWeb} from '#/platform/detection' 4 - 5 - /** 6 - * Identity function on web. Returns nothing on other platforms. 7 - * 8 - * Note: Platform splitting does not tree-shake away the other platforms, 9 - * so don't do stuff like e.g. rely on platform-specific imports. Use 10 - * platform-split files instead. 11 - */ 12 - export function web(value: any) { 13 - if (isWeb) { 14 - return value 15 - } 16 - } 17 - 18 - /** 19 - * Identity function on iOS. Returns nothing on other platforms. 20 - * 21 - * Note: Platform splitting does not tree-shake away the other platforms, 22 - * so don't do stuff like e.g. rely on platform-specific imports. Use 23 - * platform-split files instead. 24 - */ 25 - export function ios(value: any) { 26 - if (isIOS) { 27 - return value 28 - } 29 - } 30 - 31 - /** 32 - * Identity function on Android. Returns nothing on other platforms.. 33 - * 34 - * Note: Platform splitting does not tree-shake away the other platforms, 35 - * so don't do stuff like e.g. rely on platform-specific imports. Use 36 - * platform-split files instead. 37 - */ 38 - export function android(value: any) { 39 - if (isAndroid) { 40 - return value 41 - } 42 - } 43 - 44 - /** 45 - * Identity function on iOS and Android. Returns nothing on web. 46 - * 47 - * Note: Platform splitting does not tree-shake away the other platforms, 48 - * so don't do stuff like e.g. rely on platform-specific imports. Use 49 - * platform-split files instead. 50 - */ 51 - export function native(value: any) { 52 - if (isNative) { 53 - return value 54 - } 55 - } 56 - 57 - /** 58 - * Note: Platform splitting does not tree-shake away the other platforms, 59 - * so don't do stuff like e.g. rely on platform-specific imports. Use 60 - * platform-split files instead. 61 - */ 62 - export const platform = Platform.select 1 + export {android, ios, native, platform, web} from '@bsky.app/alf'
+1 -1
src/alf/util/systemUI.ts
··· 1 1 import * as SystemUI from 'expo-system-ui' 2 + import {type Theme} from '@bsky.app/alf' 2 3 3 4 import {isAndroid} from '#/platform/detection' 4 - import {type Theme} from '../types' 5 5 6 6 export function setSystemUITheme(themeType: 'theme' | 'lightbox', t: Theme) { 7 7 if (isAndroid) {
+2 -13
src/alf/util/themeSelector.ts
··· 1 - import {type ThemeName} from '#/alf/types' 1 + import {utils} from '@bsky.app/alf' 2 2 3 - export function select<T>(name: ThemeName, options: Record<ThemeName, T>) { 4 - switch (name) { 5 - case 'light': 6 - return options.light 7 - case 'dark': 8 - return options.dark || options.dim 9 - case 'dim': 10 - return options.dim || options.dark 11 - default: 12 - throw new Error(`select(theme, options) received unknown theme ${name}`) 13 - } 14 - } 3 + export const select = utils.select
+1 -1
src/alf/util/useColorModeTheme.ts
··· 1 1 import React from 'react' 2 2 import {type ColorSchemeName, useColorScheme} from 'react-native' 3 + import {type ThemeName} from '@bsky.app/alf' 3 4 4 5 import {isWeb} from '#/platform/detection' 5 6 import {useThemePrefs} from '#/state/shell' 6 7 import {dark, dim, light} from '#/alf/themes' 7 - import {type ThemeName} from '#/alf/types' 8 8 9 9 export function useColorModeTheme(): ThemeName { 10 10 const theme = useThemeName()
+2 -2
src/components/AccountList.tsx
··· 77 77 ]}> 78 78 <Text 79 79 style={[ 80 - a.font_bold, 80 + a.font_semi_bold, 81 81 a.flex_1, 82 82 a.flex_row, 83 83 a.py_sm, ··· 151 151 <View style={[a.flex_row, a.align_center, a.gap_xs]}> 152 152 <Text 153 153 emoji 154 - style={[a.font_bold, a.leading_tight]} 154 + style={[a.font_semi_bold, a.leading_tight]} 155 155 numberOfLines={1}> 156 156 {sanitizeDisplayName( 157 157 profile?.displayName || profile?.handle || account.handle,
+2 -3
src/components/BlockedGeoOverlay.tsx
··· 96 96 <Mark fill={t.palette.primary_600} width={14} /> 97 97 <Text 98 98 style={[ 99 - a.font_bold, 99 + a.font_semi_bold, 100 100 { 101 101 color: t.palette.primary_600, 102 102 }, ··· 121 121 </View> 122 122 123 123 <View style={[a.mt_xl, a.align_start]}> 124 - <Text 125 - style={[a.text_lg, a.font_heavy, a.leading_snug, a.pb_xs]}> 124 + <Text style={[a.text_lg, a.font_bold, a.leading_snug, a.pb_xs]}> 126 125 <Trans>Not in Mississippi?</Trans> 127 126 </Text> 128 127 <Text
+5 -13
src/components/Button.tsx
··· 240 240 } 241 241 } else if (color === 'secondary') { 242 242 if (!disabled) { 243 - baseStyles.push(t.atoms.bg_contrast_25) 243 + baseStyles.push(t.atoms.bg_contrast_50) 244 244 hoverStyles.push(t.atoms.bg_contrast_100) 245 245 } else { 246 246 baseStyles.push(t.atoms.bg_contrast_50) ··· 289 289 }) 290 290 } else { 291 291 baseStyles.push({ 292 - backgroundColor: select(t.name, { 293 - light: t.palette.primary_25, 294 - dim: t.palette.primary_50, 295 - dark: t.palette.primary_50, 296 - }), 292 + backgroundColor: t.palette.primary_50, 297 293 }) 298 294 } 299 295 } else if (color === 'negative_subtle') { ··· 314 310 }) 315 311 } else { 316 312 baseStyles.push({ 317 - backgroundColor: select(t.name, { 318 - light: t.palette.negative_25, 319 - dim: t.palette.negative_50, 320 - dark: t.palette.negative_50, 321 - }), 313 + backgroundColor: t.palette.negative_50, 322 314 }) 323 315 } 324 316 } ··· 372 364 if (!disabled) { 373 365 baseStyles.push(t.atoms.bg) 374 366 hoverStyles.push({ 375 - backgroundColor: t.palette.contrast_25, 367 + backgroundColor: t.palette.contrast_50, 376 368 }) 377 369 } 378 370 } ··· 396 388 if (!disabled) { 397 389 baseStyles.push(t.atoms.bg) 398 390 hoverStyles.push({ 399 - backgroundColor: t.palette.contrast_25, 391 + backgroundColor: t.palette.contrast_50, 400 392 }) 401 393 } 402 394 }
+6 -2
src/components/ContextMenu/index.tsx
··· 796 796 style={[ 797 797 a.flex_1, 798 798 a.text_md, 799 - a.font_bold, 799 + a.font_semi_bold, 800 800 t.atoms.text_contrast_high, 801 801 {paddingTop: 3}, 802 802 style, ··· 855 855 const t = useTheme() 856 856 return ( 857 857 <Text 858 - style={[a.font_bold, t.atoms.text_contrast_medium, {marginBottom: -8}]}> 858 + style={[ 859 + a.font_semi_bold, 860 + t.atoms.text_contrast_medium, 861 + {marginBottom: -8}, 862 + ]}> 859 863 {children} 860 864 </Text> 861 865 )
+4 -1
src/components/Dialog/index.tsx
··· 267 267 scrollEventThrottle={50} 268 268 onScroll={isAndroid ? onScroll : undefined} 269 269 keyboardShouldPersistTaps="handled" 270 - stickyHeaderIndices={header ? [0] : undefined}> 270 + // TODO: figure out why this positions the header absolutely (rather than stickily) 271 + // on Android. fine to disable for now, because we don't have any 272 + // dialogs that use this that actually scroll -sfn 273 + stickyHeaderIndices={ios(header ? [0] : undefined)}> 271 274 {header} 272 275 {children} 273 276 </KeyboardAwareScrollView>
+1 -1
src/components/Dialog/shared.tsx
··· 62 62 style?: StyleProp<TextStyle> 63 63 }) { 64 64 return ( 65 - <Text style={[a.text_lg, a.text_center, a.font_heavy, style]}> 65 + <Text style={[a.text_lg, a.text_center, a.font_bold, style]}> 66 66 {children} 67 67 </Text> 68 68 )
+1 -1
src/components/Error.tsx
··· 40 40 ]} 41 41 sideBorders={sideBorders}> 42 42 <View style={[a.w_full, a.align_center, a.gap_lg]}> 43 - <Text style={[a.font_bold, a.text_3xl]}>{title}</Text> 43 + <Text style={[a.font_semi_bold, a.text_3xl]}>{title}</Text> 44 44 <Text 45 45 style={[ 46 46 a.text_md,
+2 -2
src/components/FeedCard.tsx
··· 128 128 <View style={[a.flex_1]}> 129 129 <Text 130 130 emoji 131 - style={[a.text_md, a.font_bold, a.leading_snug]} 131 + style={[a.text_md, a.font_semi_bold, a.leading_snug]} 132 132 numberOfLines={1}> 133 133 {title} 134 134 </Text> ··· 214 214 export function Likes({count}: {count: number}) { 215 215 const t = useTheme() 216 216 return ( 217 - <Text style={[a.text_sm, t.atoms.text_contrast_medium, a.font_bold]}> 217 + <Text style={[a.text_sm, t.atoms.text_contrast_medium, a.font_semi_bold]}> 218 218 <Trans> 219 219 Liked by <Plural value={count || 0} one="# user" other="# users" /> 220 220 </Trans>
+2 -2
src/components/FeedInterstitials.tsx
··· 380 380 a.justify_between, 381 381 ]} 382 382 pointerEvents={isIOS ? 'auto' : 'box-none'}> 383 - <Text style={[a.text_sm, a.font_bold, t.atoms.text]}> 383 + <Text style={[a.text_sm, a.font_semi_bold, t.atoms.text]}> 384 384 {isFeedContext ? ( 385 385 <Trans>Suggested for you</Trans> 386 386 ) : ( ··· 516 516 style={[ 517 517 a.flex_1, 518 518 a.text_lg, 519 - a.font_bold, 519 + a.font_semi_bold, 520 520 t.atoms.text_contrast_medium, 521 521 ]}> 522 522 <Trans>Some other feeds you might like</Trans>
+3 -5
src/components/FocusScope/index.tsx
··· 2 2 Children, 3 3 cloneElement, 4 4 isValidElement, 5 - type ReactElement, 6 - type ReactNode, 7 5 useCallback, 8 6 useEffect, 9 7 useMemo, ··· 26 24 * screen reader support is enabled. THIS SHOULD BE USED SPARINGLY, only when 27 25 * no better option is available. 28 26 */ 29 - export function FocusScope({children}: {children: ReactNode}) { 27 + export function FocusScope({children}: {children: React.ReactNode}) { 30 28 const {screenReaderEnabled} = useA11y() 31 29 32 30 return screenReaderEnabled ? <FocusTrap>{children}</FocusTrap> : children ··· 41 39 * they have reached the start or end of the content and tell them how to 42 40 * remain within the active content section. 43 41 */ 44 - function FocusTrap({children}: {children: ReactNode}) { 42 + function FocusTrap({children}: {children: React.ReactNode}) { 45 43 const {_} = useLingui() 46 44 const child = useRef<View>(null) 47 45 ··· 53 51 const decoratedChildren = useMemo(() => { 54 52 return Children.toArray(children).map((node, i) => { 55 53 if (i === 0 && isValidElement(node)) { 56 - const n = node as ReactElement<any> 54 + const n = node as React.ReactElement<any> 57 55 if (n.props.ref !== undefined) { 58 56 throw new Error( 59 57 'FocusScope needs to override the ref on its first child.',
+1 -2
src/components/FocusScope/index.web.tsx
··· 1 - import {type ReactNode} from 'react' 2 1 import {FocusScope as RadixFocusScope} from 'radix-ui/internal' 3 2 4 3 /* ··· 6 5 * use this in Dialogs and such already. It's here as a convenient counterpart 7 6 * to the hacky native solution. 8 7 */ 9 - export function FocusScope({children}: {children: ReactNode}) { 8 + export function FocusScope({children}: {children: React.ReactNode}) { 10 9 return ( 11 10 <RadixFocusScope.FocusScope loop asChild trapped> 12 11 {children}
+1 -1
src/components/LabelingServiceCard/index.tsx
··· 45 45 46 46 export function Title({value}: {value: string}) { 47 47 return ( 48 - <Text emoji style={[a.text_md, a.font_bold, a.leading_tight]}> 48 + <Text emoji style={[a.text_md, a.font_semi_bold, a.leading_tight]}> 49 49 {value} 50 50 </Text> 51 51 )
+1 -1
src/components/Layout/Header/index.tsx
··· 181 181 <Text 182 182 style={[ 183 183 a.text_lg, 184 - a.font_heavy, 184 + a.font_bold, 185 185 a.leading_tight, 186 186 isIOS && align === 'platform' && a.text_center, 187 187 gtMobile && a.text_xl,
+2 -2
src/components/ListCard.tsx
··· 127 127 allowOverride={creator && currentAccount?.did === creator.did}> 128 128 <Hider.Mask> 129 129 <Text 130 - style={[a.text_md, a.font_bold, a.leading_snug, a.italic]} 130 + style={[a.text_md, a.font_semi_bold, a.leading_snug, a.italic]} 131 131 numberOfLines={1}> 132 132 <Trans>Hidden list</Trans> 133 133 </Text> ··· 135 135 <Hider.Content> 136 136 <Text 137 137 emoji 138 - style={[a.text_md, a.font_bold, a.leading_snug]} 138 + style={[a.text_md, a.font_semi_bold, a.leading_snug]} 139 139 numberOfLines={1}> 140 140 {title} 141 141 </Text>
+1 -1
src/components/LoggedOutCTA.tsx
··· 50 50 <View style={[a.flex_row, a.align_center, a.flex_1, a.pr_md]}> 51 51 <Logo width={30} style={[a.mr_md]} /> 52 52 <View style={[a.flex_1]}> 53 - <Text style={[a.text_lg, a.font_bold, a.leading_snug]}> 53 + <Text style={[a.text_lg, a.font_semi_bold, a.leading_snug]}> 54 54 <Trans>Join Bluesky</Trans> 55 55 </Text> 56 56 <Text
+2 -2
src/components/Menu/index.tsx
··· 191 191 style={[ 192 192 a.flex_1, 193 193 a.text_md, 194 - a.font_bold, 194 + a.font_semi_bold, 195 195 t.atoms.text_contrast_high, 196 196 {paddingTop: 3}, 197 197 style, ··· 293 293 return ( 294 294 <Text 295 295 style={[ 296 - a.font_bold, 296 + a.font_semi_bold, 297 297 t.atoms.text_contrast_medium, 298 298 {marginBottom: -8}, 299 299 style,
+2 -2
src/components/Menu/index.web.tsx
··· 292 292 <Text 293 293 style={[ 294 294 a.flex_1, 295 - a.font_bold, 295 + a.font_semi_bold, 296 296 t.atoms.text_contrast_high, 297 297 style, 298 298 disabled && t.atoms.text_contrast_low, ··· 372 372 return ( 373 373 <Text 374 374 style={[ 375 - a.font_bold, 375 + a.font_semi_bold, 376 376 a.p_sm, 377 377 t.atoms.text_contrast_low, 378 378 a.leading_snug,
+1 -1
src/components/NewskieDialog.tsx
··· 135 135 style={[a.absolute, a.inset_0]} 136 136 /> 137 137 </View> 138 - <Text style={[a.font_bold, a.text_xl]}> 138 + <Text style={[a.font_semi_bold, a.text_xl]}> 139 139 {isMe ? <Trans>Welcome, friend!</Trans> : <Trans>Say hello!</Trans>} 140 140 </Text> 141 141 </View>
+1 -1
src/components/Pills.tsx
··· 133 133 emoji 134 134 style={[ 135 135 text, 136 - a.font_bold, 136 + a.font_semi_bold, 137 137 a.leading_tight, 138 138 t.atoms.text_contrast_medium, 139 139 {paddingRight: 3},
+1 -1
src/components/PolicyUpdateOverlay/Badge.tsx
··· 25 25 <Logo fill={t.palette.primary_600} width={14} /> 26 26 <Text 27 27 style={[ 28 - a.font_bold, 28 + a.font_semi_bold, 29 29 { 30 30 color: t.palette.primary_600, 31 31 },
+2 -2
src/components/PolicyUpdateOverlay/updates/202508/index.tsx
··· 69 69 70 70 {screenReaderEnabled ? ( 71 71 <View style={[a.gap_sm]}> 72 - <Text emoji style={[a.text_2xl, a.font_bold, a.leading_snug]}> 72 + <Text emoji style={[a.text_2xl, a.font_semi_bold, a.leading_snug]}> 73 73 <Trans>Hey there 👋</Trans> 74 74 </Text> 75 75 <Text style={[a.leading_snug, a.text_md]}> ··· 115 115 </View> 116 116 ) : ( 117 117 <View style={[a.gap_sm]}> 118 - <Text emoji style={[a.text_2xl, a.font_bold, a.leading_snug]}> 118 + <Text emoji style={[a.text_2xl, a.font_semi_bold, a.leading_snug]}> 119 119 <Trans>Hey there 👋</Trans> 120 120 </Text> 121 121 <Text style={[a.leading_snug, a.text_md]}>
+1 -1
src/components/Post/Embed/ExternalEmbed/index.tsx
··· 126 126 <Text 127 127 emoji 128 128 numberOfLines={3} 129 - style={[a.text_md, a.font_bold, a.leading_snug]}> 129 + style={[a.text_md, a.font_semi_bold, a.leading_snug]}> 130 130 {link.title || link.uri} 131 131 </Text> 132 132 )}
+1 -1
src/components/Post/Embed/VideoEmbed/VideoEmbedInner/TimeIndicator.tsx
··· 54 54 <Text 55 55 style={[ 56 56 {color: t.palette.white, fontSize: 12, fontVariant: ['tabular-nums']}, 57 - a.font_bold, 57 + a.font_semi_bold, 58 58 {lineHeight: 1.25}, 59 59 ]}> 60 60 {`${minutes}:${seconds}`}
+4 -1
src/components/Post/Embed/VideoEmbed/index.tsx
··· 71 71 ) : ( 72 72 <ConstrainedImage 73 73 fullBleed={crop === 'square'} 74 - aspectRatio={constrained || 1}> 74 + aspectRatio={constrained || 1} 75 + // slightly smaller max height than images 76 + // images use 16 / 9, for reference 77 + minMobileAspectRatio={14 / 9}> 75 78 {contents} 76 79 </ConstrainedImage> 77 80 )}
+15 -3
src/components/Post/Embed/VideoEmbed/index.web.tsx
··· 14 14 import {isFirefox} from '#/lib/browser' 15 15 import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' 16 16 import {ConstrainedImage} from '#/view/com/util/images/AutoSizedImage' 17 - import {atoms as a} from '#/alf' 17 + import {atoms as a, useTheme} from '#/alf' 18 18 import {useIsWithinMessage} from '#/components/dms/MessageContext' 19 19 import {useFullscreen} from '#/components/hooks/useFullscreen' 20 20 import { ··· 32 32 embed: AppBskyEmbedVideo.View 33 33 crop?: 'none' | 'square' | 'constrained' 34 34 }) { 35 + const t = useTheme() 35 36 const ref = useRef<HTMLDivElement>(null) 36 37 const {active, setActive, sendPosition, currentActiveView} = 37 38 useActiveVideoWeb() ··· 114 115 sendPosition={sendPosition} 115 116 isAnyViewActive={currentActiveView !== null}> 116 117 {cropDisabled ? ( 117 - <View style={[a.w_full, a.overflow_hidden, {aspectRatio: max ?? 1}]}> 118 + <View 119 + style={[ 120 + a.w_full, 121 + a.overflow_hidden, 122 + {aspectRatio: max ?? 1}, 123 + a.rounded_md, 124 + a.overflow_hidden, 125 + t.atoms.bg_contrast_25, 126 + ]}> 118 127 {contents} 119 128 </View> 120 129 ) : ( 121 130 <ConstrainedImage 122 131 fullBleed={crop === 'square'} 123 - aspectRatio={constrained || 1}> 132 + aspectRatio={constrained || 1} 133 + // slightly smaller max height than images 134 + // images use 16 / 9, for reference 135 + minMobileAspectRatio={14 / 9}> 124 136 {contents} 125 137 </ConstrainedImage> 126 138 )}
+1 -1
src/components/Post/Embed/index.tsx
··· 111 111 <ContentHider 112 112 modui={rest.moderation?.ui('contentMedia')} 113 113 activeStyle={[a.mt_sm]}> 114 - <VideoEmbed embed={embed.view} /> 114 + <VideoEmbed embed={embed.view} crop="constrained" /> 115 115 </ContentHider> 116 116 ) 117 117 }
+6 -1
src/components/PostControls/PostControlButton.tsx
··· 128 128 129 129 return ( 130 130 <Text 131 - style={[color, big ? a.text_md : a.text_sm, active && a.font_bold, style]} 131 + style={[ 132 + color, 133 + big ? a.text_md : a.text_sm, 134 + active && a.font_semi_bold, 135 + style, 136 + ]} 132 137 {...props} 133 138 /> 134 139 )
+2 -2
src/components/PostControls/RepostButton.tsx
··· 157 157 variant="ghost" 158 158 color="primary"> 159 159 <Repost size="lg" fill={t.palette.primary_500} /> 160 - <Text style={[a.font_bold, a.text_xl]}> 160 + <Text style={[a.font_semi_bold, a.text_xl]}> 161 161 {isReposted ? ( 162 162 <Trans>Remove repost</Trans> 163 163 ) : ( ··· 188 188 /> 189 189 <Text 190 190 style={[ 191 - a.font_bold, 191 + a.font_semi_bold, 192 192 a.text_xl, 193 193 embeddingDisabled && t.atoms.text_contrast_low, 194 194 ]}>
+1 -1
src/components/PostControls/ShareMenu/RecentChats.tsx
··· 203 203 a.text_sm, 204 204 t.atoms.text_contrast_high, 205 205 a.text_center, 206 - a.font_bold, 206 + a.font_semi_bold, 207 207 ]}> 208 208 <Trans>Start a conversation, and it will appear here.</Trans> 209 209 </Text>
+2 -2
src/components/ProfileCard.tsx
··· 233 233 <Text 234 234 emoji 235 235 style={[ 236 - a.font_bold, 236 + a.font_semi_bold, 237 237 a.leading_tight, 238 238 a.flex_shrink_0, 239 239 {maxWidth: '70%'}, ··· 287 287 emoji 288 288 style={[ 289 289 a.text_md, 290 - a.font_bold, 290 + a.font_semi_bold, 291 291 a.leading_snug, 292 292 a.self_start, 293 293 a.flex_shrink,
+3 -3
src/components/ProfileHoverCard/index.web.tsx
··· 515 515 <View style={[a.flex_row, a.align_center, a.pt_md, a.pb_xs]}> 516 516 <Text 517 517 numberOfLines={1} 518 - style={[a.text_lg, a.font_bold, a.self_start]}> 518 + style={[a.text_lg, a.font_semi_bold, a.self_start]}> 519 519 {sanitizeDisplayName( 520 520 profile.displayName || sanitizeHandle(profile.handle), 521 521 moderation.ui('displayName'), ··· 562 562 label={`${followers} ${pluralizedFollowers}`} 563 563 style={[t.atoms.text]} 564 564 onPress={hide}> 565 - <Text style={[a.text_md, a.font_bold]}>{followers} </Text> 565 + <Text style={[a.text_md, a.font_semi_bold]}>{followers} </Text> 566 566 <Text style={[t.atoms.text_contrast_medium]}> 567 567 {pluralizedFollowers} 568 568 </Text> ··· 572 572 label={_(msg`${following} following`)} 573 573 style={[t.atoms.text]} 574 574 onPress={hide}> 575 - <Text style={[a.text_md, a.font_bold]}>{following} </Text> 575 + <Text style={[a.text_md, a.font_semi_bold]}>{following} </Text> 576 576 <Text style={[t.atoms.text_contrast_medium]}> 577 577 {pluralizedFollowings} 578 578 </Text>
+1 -1
src/components/ProgressGuide/FollowDialog.tsx
··· 360 360 style={[ 361 361 a.z_10, 362 362 a.text_lg, 363 - a.font_heavy, 363 + a.font_bold, 364 364 a.leading_tight, 365 365 t.atoms.text_contrast_high, 366 366 ]}>
+1 -1
src/components/ProgressGuide/List.tsx
··· 28 28 <Text 29 29 style={[ 30 30 t.atoms.text_contrast_medium, 31 - a.font_bold, 31 + a.font_semi_bold, 32 32 a.text_sm, 33 33 {textTransform: 'uppercase'}, 34 34 ]}>
+1 -1
src/components/ProgressGuide/Task.tsx
··· 39 39 <Text 40 40 style={[ 41 41 a.text_sm, 42 - a.font_bold, 42 + a.font_semi_bold, 43 43 a.leading_tight, 44 44 tabularNumsTitle && {fontVariant: ['tabular-nums']}, 45 45 ]}>
+1 -1
src/components/ProgressGuide/Toast.tsx
··· 160 160 ref={animatedCheckRef} 161 161 /> 162 162 <View> 163 - <Text style={[a.text_md, a.font_bold]}>{title}</Text> 163 + <Text style={[a.text_md, a.font_semi_bold]}>{title}</Text> 164 164 {subtitle && ( 165 165 <Text style={[a.text_sm, t.atoms.text_contrast_medium]}> 166 166 {subtitle}
+1 -1
src/components/Prompt.tsx
··· 77 77 style={[ 78 78 a.flex_1, 79 79 a.text_2xl, 80 - a.font_bold, 80 + a.font_semi_bold, 81 81 a.pb_sm, 82 82 a.leading_snug, 83 83 style,
+3 -2
src/components/ReportDialog/SelectLabelerView.tsx
··· 24 24 return ( 25 25 <View style={[a.gap_lg]}> 26 26 <View style={[a.justify_center, gtMobile ? a.gap_sm : a.gap_xs]}> 27 - <Text style={[a.text_2xl, a.font_bold]}> 27 + <Text style={[a.text_2xl, a.font_semi_bold]}> 28 28 <Trans>Select moderator</Trans> 29 29 </Text> 30 30 <Text style={[a.text_md, t.atoms.text_contrast_medium]}> ··· 75 75 handle: labeler.creator.handle, 76 76 })} 77 77 /> 78 - <Text style={[t.atoms.text_contrast_medium, a.text_sm, a.font_bold]}> 78 + <Text 79 + style={[t.atoms.text_contrast_medium, a.text_sm, a.font_semi_bold]}> 79 80 @{labeler.creator.handle} 80 81 </Text> 81 82 </LabelingServiceCard.Content>
+3 -2
src/components/ReportDialog/SelectReportOptionView.tsx
··· 85 85 ) : null} 86 86 87 87 <View style={[a.justify_center, gtMobile ? a.gap_sm : a.gap_xs]}> 88 - <Text style={[a.text_2xl, a.font_bold]}>{i18n.title}</Text> 88 + <Text style={[a.text_2xl, a.font_semi_bold]}>{i18n.title}</Text> 89 89 <Text style={[a.text_md, t.atoms.text_contrast_medium]}> 90 90 {i18n.description} 91 91 </Text> ··· 173 173 interacted && t.atoms.bg_contrast_50, 174 174 ]}> 175 175 <View style={[a.flex_1, a.gap_xs]}> 176 - <Text style={[a.text_md, a.font_bold, t.atoms.text_contrast_medium]}> 176 + <Text 177 + style={[a.text_md, a.font_semi_bold, t.atoms.text_contrast_medium]}> 177 178 {title} 178 179 </Text> 179 180 <Text style={[a.leading_tight, {maxWidth: 400}]}>{description}</Text>
+1 -1
src/components/ReportDialog/SubmitView.tsx
··· 125 125 t.atoms.border_contrast_low, 126 126 ]}> 127 127 <View style={[a.flex_1, a.gap_xs]}> 128 - <Text style={[a.text_md, a.font_bold]}> 128 + <Text style={[a.text_md, a.font_semi_bold]}> 129 129 {selectedReportOption.title} 130 130 </Text> 131 131 <Text style={[a.leading_tight, {maxWidth: 400}]}>
+40
src/components/ScreenTransition.tsx
··· 1 + import {type StyleProp, type ViewStyle} from 'react-native' 2 + import Animated, { 3 + Easing, 4 + FadeIn, 5 + FadeOut, 6 + SlideInLeft, 7 + SlideInRight, 8 + } from 'react-native-reanimated' 9 + import type React from 'react' 10 + 11 + import {isWeb} from '#/platform/detection' 12 + 13 + export function ScreenTransition({ 14 + direction, 15 + style, 16 + children, 17 + enabledWeb, 18 + }: { 19 + direction: 'Backward' | 'Forward' 20 + style?: StyleProp<ViewStyle> 21 + children: React.ReactNode 22 + enabledWeb?: boolean 23 + }) { 24 + const entering = 25 + direction === 'Forward' 26 + ? SlideInRight.easing(Easing.out(Easing.exp)) 27 + : SlideInLeft.easing(Easing.out(Easing.exp)) 28 + const webEntering = enabledWeb ? FadeIn.duration(90) : undefined 29 + const exiting = FadeOut.duration(90) // Totally vibes based 30 + const webExiting = enabledWeb ? FadeOut.duration(90) : undefined 31 + 32 + return ( 33 + <Animated.View 34 + entering={isWeb ? webEntering : entering} 35 + exiting={isWeb ? webExiting : exiting} 36 + style={style}> 37 + {children} 38 + </Animated.View> 39 + ) 40 + }
+7 -1
src/components/SearchError.tsx
··· 36 36 {maxWidth: gtMobile ? 394 : 294}, 37 37 gtMobile ? a.gap_md : a.gap_sm, 38 38 ]}> 39 - <Text style={[a.font_bold, a.text_lg, a.text_center, a.leading_snug]}> 39 + <Text 40 + style={[ 41 + a.font_semi_bold, 42 + a.text_lg, 43 + a.text_center, 44 + a.leading_snug, 45 + ]}> 40 46 {title} 41 47 </Text> 42 48 {children}
+1 -1
src/components/Select/index.tsx
··· 280 280 // eslint-disable-next-line bsky-internal/avoid-unwrapped-text 281 281 return ( 282 282 <View style={[a.flex_1, a.py_md, a.border_b, t.atoms.border_contrast_low]}> 283 - <Text style={[a.text_md, selected && a.font_bold]}>{children}</Text> 283 + <Text style={[a.text_md, selected && a.font_semi_bold]}>{children}</Text> 284 284 </View> 285 285 ) 286 286 }
+1 -1
src/components/Select/index.web.tsx
··· 259 259 a.text_sm, 260 260 {outline: 0}, 261 261 (hovered || focused) && {backgroundColor: t.palette.primary_50}, 262 - selected && [a.font_bold], 262 + selected && [a.font_semi_bold], 263 263 a.transition_color, 264 264 style, 265 265 ])}>
+1 -1
src/components/StarterPack/ProfileStarterPacks.tsx
··· 255 255 {marginTop: a.border.borderWidth}, 256 256 ]}> 257 257 <View style={[a.gap_xs]}> 258 - <Text style={[a.font_bold, a.text_lg, {color: 'white'}]}> 258 + <Text style={[a.font_semi_bold, a.text_lg, {color: 'white'}]}> 259 259 <Trans>You haven't created a starter pack yet!</Trans> 260 260 </Text> 261 261 <Text style={[a.text_md, {color: 'white'}]}>
+8 -3
src/components/StarterPack/QrCode.tsx
··· 54 54 ]}> 55 55 <View style={[a.gap_sm]}> 56 56 <Text 57 - style={[a.font_bold, a.text_3xl, a.text_center, {color: 'white'}]}> 57 + style={[ 58 + a.font_semi_bold, 59 + a.text_3xl, 60 + a.text_center, 61 + {color: 'white'}, 62 + ]}> 58 63 {record.name} 59 64 </Text> 60 65 </View> 61 66 <View style={[a.gap_xl, a.align_center]}> 62 67 <Text 63 68 style={[ 64 - a.font_bold, 69 + a.font_semi_bold, 65 70 a.text_center, 66 71 {color: 'white', fontSize: 18}, 67 72 ]}> ··· 76 81 a.flex, 77 82 a.flex_row, 78 83 a.align_center, 79 - a.font_bold, 84 + a.font_semi_bold, 80 85 {color: 'white', fontSize: 18, gap: 6}, 81 86 ]}> 82 87 <Trans>
+1 -1
src/components/StarterPack/ShareDialog.tsx
··· 77 77 ) : ( 78 78 <View style={[!gtMobile && a.gap_lg]}> 79 79 <View style={[a.gap_sm, gtMobile && a.pb_lg]}> 80 - <Text style={[a.font_bold, a.text_2xl]}> 80 + <Text style={[a.font_semi_bold, a.text_2xl]}> 81 81 <Trans>Invite people to this starter pack!</Trans> 82 82 </Text> 83 83 <Text style={[a.text_md, t.atoms.text_contrast_medium]}>
+2 -2
src/components/StarterPack/StarterPackCard.tsx
··· 77 77 <View style={[a.flex_1]}> 78 78 <Text 79 79 emoji 80 - style={[a.text_md, a.font_bold, a.leading_snug]} 80 + style={[a.text_md, a.font_semi_bold, a.leading_snug]} 81 81 numberOfLines={2}> 82 82 {record.name} 83 83 </Text> ··· 97 97 </Text> 98 98 ) : null} 99 99 {!!joinedAllTimeCount && joinedAllTimeCount >= 50 && ( 100 - <Text style={[a.font_bold, t.atoms.text_contrast_medium]}> 100 + <Text style={[a.font_semi_bold, t.atoms.text_contrast_medium]}> 101 101 <Trans comment="Number of users (always at least 50) who have joined Bluesky using a specific starter pack"> 102 102 <Plural value={joinedAllTimeCount} other="# users have" /> joined! 103 103 </Trans>
-31
src/components/StarterPack/Wizard/ScreenTransition.tsx
··· 1 - import {type StyleProp, type ViewStyle} from 'react-native' 2 - import Animated, { 3 - FadeIn, 4 - FadeOut, 5 - SlideInLeft, 6 - SlideInRight, 7 - } from 'react-native-reanimated' 8 - import type React from 'react' 9 - 10 - import {isWeb} from '#/platform/detection' 11 - 12 - export function ScreenTransition({ 13 - direction, 14 - style, 15 - children, 16 - }: { 17 - direction: 'Backward' | 'Forward' 18 - style?: StyleProp<ViewStyle> 19 - children: React.ReactNode 20 - }) { 21 - const entering = direction === 'Forward' ? SlideInRight : SlideInLeft 22 - 23 - return ( 24 - <Animated.View 25 - entering={isWeb ? FadeIn.duration(90) : entering} 26 - exiting={FadeOut.duration(90)} // Totally vibes based 27 - style={style}> 28 - {children} 29 - </Animated.View> 30 - ) 31 - }
+1 -1
src/components/StarterPack/Wizard/WizardEditListDialog.tsx
··· 105 105 : [a.pb_sm, a.align_end], 106 106 ]}> 107 107 <View style={{width: 60}} /> 108 - <Text style={[a.font_bold, a.text_xl]}> 108 + <Text style={[a.font_semi_bold, a.text_xl]}> 109 109 {state.currentStep === 'Profiles' ? ( 110 110 <Trans>Edit People</Trans> 111 111 ) : (
+1 -1
src/components/StarterPack/Wizard/WizardListCard.tsx
··· 83 83 emoji 84 84 style={[ 85 85 a.flex_1, 86 - a.font_bold, 86 + a.font_semi_bold, 87 87 a.text_md, 88 88 a.leading_tight, 89 89 a.self_start,
+1 -1
src/components/SubtleWebHover.web.tsx
··· 11 11 if (isTouchDevice) { 12 12 return null 13 13 } 14 - let opacity: number 14 + let opacity = 0.5 15 15 switch (t.name) { 16 16 case 'dark': 17 17 opacity = 0.4
+1 -1
src/components/TrendingTopics.tsx
··· 90 90 91 91 <Text 92 92 style={[ 93 - a.font_bold, 93 + a.font_semi_bold, 94 94 a.leading_tight, 95 95 isSmall ? [a.text_sm] : [a.text_md, {paddingBottom: 1}], 96 96 ]}
+9 -3
src/components/VideoPostCard.tsx
··· 227 227 {likeCount > 0 && ( 228 228 <View style={[a.flex_row, a.align_center, a.gap_xs]}> 229 229 <Heart size="sm" fill="white" /> 230 - <Text style={[a.text_sm, a.font_bold, {color: 'white'}]}> 230 + <Text 231 + style={[a.text_sm, a.font_semi_bold, {color: 'white'}]}> 231 232 {formatCount(i18n, likeCount)} 232 233 </Text> 233 234 </View> ··· 235 236 {repostCount > 0 && ( 236 237 <View style={[a.flex_row, a.align_center, a.gap_xs]}> 237 238 <Repost size="sm" fill="white" /> 238 - <Text style={[a.text_sm, a.font_bold, {color: 'white'}]}> 239 + <Text 240 + style={[a.text_sm, a.font_semi_bold, {color: 'white'}]}> 239 241 {formatCount(i18n, repostCount)} 240 242 </Text> 241 243 </View> ··· 520 522 <View style={[a.flex_row, a.align_center, a.gap_xs]}> 521 523 <Heart size="sm" fill="white" /> 522 524 <Text 523 - style={[a.text_sm, a.font_bold, {color: 'white'}]}> 525 + style={[ 526 + a.text_sm, 527 + a.font_semi_bold, 528 + {color: 'white'}, 529 + ]}> 524 530 {formatCount(i18n, likeCount)} 525 531 </Text> 526 532 </View>
+2 -2
src/components/WelcomeModal.tsx
··· 108 108 <Text 109 109 style={[ 110 110 a.text_2xl, 111 - a.font_bold, 111 + a.font_semi_bold, 112 112 a.user_select_none, 113 113 {color: '#354358', letterSpacing: -0.5}, 114 114 ]}> ··· 127 127 <Text 128 128 style={[ 129 129 gtMobile ? a.text_4xl : a.text_3xl, 130 - a.font_bold, 130 + a.font_semi_bold, 131 131 a.text_center, 132 132 {color: '#354358'}, 133 133 web({
+1 -1
src/components/WhoCanReply.tsx
··· 188 188 label={_(msg`Dialog: adjust who can interact with this post`)} 189 189 style={web({maxWidth: 400})}> 190 190 <View style={[a.gap_sm]}> 191 - <Text style={[a.font_bold, a.text_xl, a.pb_sm]}> 191 + <Text style={[a.font_semi_bold, a.text_xl, a.pb_sm]}> 192 192 <Trans>Who can interact with this post?</Trans> 193 193 </Text> 194 194 <Rules
+1 -1
src/components/activity-notifications/SubscribeProfileDialog.tsx
··· 219 219 label={_(msg`Get notified of new posts from ${name}`)}> 220 220 <View style={[a.gap_lg]}> 221 221 <View style={[a.gap_xs]}> 222 - <Text style={[a.font_heavy, a.text_2xl]}> 222 + <Text style={[a.font_bold, a.text_2xl]}> 223 223 <Trans>Keep me posted</Trans> 224 224 </Text> 225 225 <Text style={[t.atoms.text_contrast_medium, a.text_md]}>
+2 -2
src/components/ageAssurance/AgeAssuranceAdmonition.tsx
··· 82 82 </View> 83 83 <View style={[a.flex_1, a.gap_xs, a.pr_4xl]}> 84 84 <Text style={[a.text_sm, a.leading_snug]}>{children}</Text> 85 - <Text style={[a.text_sm, a.leading_snug, a.font_bold]}> 85 + <Text style={[a.text_sm, a.leading_snug, a.font_semi_bold]}> 86 86 <Trans> 87 87 Learn more in your{' '} 88 88 <InlineLinkText 89 89 label={_(msg`Go to account settings`)} 90 90 to={'/settings/account'} 91 - style={[a.text_sm, a.leading_snug, a.font_bold]} 91 + style={[a.text_sm, a.leading_snug, a.font_semi_bold]} 92 92 onPress={() => { 93 93 logger.metric('ageAssurance:navigateToSettings', {}) 94 94 }}>
+1 -1
src/components/ageAssurance/AgeAssuranceAppealDialog.tsx
··· 89 89 <AgeAssuranceBadge /> 90 90 </View> 91 91 92 - <Text style={[a.text_2xl, a.font_heavy, a.pt_md, a.leading_tight]}> 92 + <Text style={[a.text_2xl, a.font_bold, a.pt_md, a.leading_tight]}> 93 93 <Trans>Contact us</Trans> 94 94 </Text> 95 95
+1 -1
src/components/ageAssurance/AgeAssuranceBadge.tsx
··· 29 29 <Shield size="sm" /> 30 30 <Text 31 31 style={[ 32 - a.font_bold, 32 + a.font_semi_bold, 33 33 a.leading_snug, 34 34 { 35 35 color: select(t.name, {
+1 -1
src/components/ageAssurance/AgeAssuranceInitDialog.tsx
··· 178 178 <View style={[a.align_start]}> 179 179 <AgeAssuranceBadge /> 180 180 181 - <Text style={[a.text_xl, a.font_heavy, a.pt_xl, a.pb_md]}> 181 + <Text style={[a.text_xl, a.font_bold, a.pt_xl, a.pb_md]}> 182 182 {success ? <Trans>Success!</Trans> : <Trans>Verify your age</Trans>} 183 183 </Text> 184 184
+2 -2
src/components/ageAssurance/AgeAssuranceRedirectDialog.tsx
··· 160 160 a.pb_md, 161 161 ]}> 162 162 <SuccessIcon size="sm" fill={t.palette.positive_600} /> 163 - <Text style={[a.text_xl, a.font_heavy]}> 163 + <Text style={[a.text_xl, a.font_bold]}> 164 164 <Trans>Success</Trans> 165 165 </Text> 166 166 </View> ··· 209 209 ]}> 210 210 {error && <ErrorIcon size="md" fill={t.palette.negative_500} />} 211 211 212 - <Text style={[a.text_xl, a.font_heavy]}> 212 + <Text style={[a.text_xl, a.font_bold]}> 213 213 {error ? <Trans>Connection issue</Trans> : <Trans>Verifying</Trans>} 214 214 </Text> 215 215
+1 -1
src/components/ageAssurance/AgeRestrictedScreen.tsx
··· 62 62 </View> 63 63 64 64 <View style={[a.gap_sm, a.pb_lg]}> 65 - <Text style={[a.text_xl, a.leading_snug, a.font_heavy]}> 65 + <Text style={[a.text_xl, a.leading_snug, a.font_bold]}> 66 66 <Trans> 67 67 You must complete age assurance in order to access this screen. 68 68 </Trans>
+1 -1
src/components/dialogs/BirthDateSettings.tsx
··· 38 38 label={_(msg`My Birthday`)} 39 39 style={web({maxWidth: 400})}> 40 40 <View style={[a.gap_sm]}> 41 - <Text style={[a.text_xl, a.font_bold]}> 41 + <Text style={[a.text_xl, a.font_semi_bold]}> 42 42 <Trans>My Birthday</Trans> 43 43 </Text> 44 44 <Text style={[a.leading_snug, t.atoms.text_contrast_medium]}>
+1 -1
src/components/dialogs/DeviceLocationRequestDialog.tsx
··· 108 108 109 109 return ( 110 110 <View style={[a.gap_md]}> 111 - <Text style={[a.text_xl, a.font_heavy]}> 111 + <Text style={[a.text_xl, a.font_bold]}> 112 112 <Trans>Confirm your location</Trans> 113 113 </Text> 114 114 <View style={[a.gap_sm, a.pb_xs]}>
+3 -3
src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx
··· 153 153 154 154 return ( 155 155 <View style={[a.gap_sm]}> 156 - <Text style={[a.text_xl, a.font_heavy, a.leading_snug]}> 156 + <Text style={[a.text_xl, a.font_bold, a.leading_snug]}> 157 157 <Trans>Disable email 2FA</Trans> 158 158 </Text> 159 159 ··· 163 163 style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_medium]}> 164 164 <Trans> 165 165 To disable your email 2FA method, please verify your access to{' '} 166 - <Span style={[a.font_bold]}>{currentAccount?.email}</Span> 166 + <Span style={[a.font_semi_bold]}>{currentAccount?.email}</Span> 167 167 </Trans> 168 168 </Text> 169 169 ··· 214 214 style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_medium]}> 215 215 <Trans> 216 216 To disable your email 2FA method, please verify your access to{' '} 217 - <Span style={[a.font_bold]}>{currentAccount?.email}</Span> 217 + <Span style={[a.font_semi_bold]}>{currentAccount?.email}</Span> 218 218 </Trans> 219 219 </Text> 220 220
+1 -1
src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx
··· 88 88 return ( 89 89 <View style={[a.gap_lg]}> 90 90 <View style={[a.gap_sm]}> 91 - <Text style={[a.text_xl, a.font_heavy, a.leading_snug]}> 91 + <Text style={[a.text_xl, a.font_bold, a.leading_snug]}> 92 92 <Trans>Enable email 2FA</Trans> 93 93 </Text> 94 94
+3 -3
src/components/dialogs/EmailDialog/screens/Update.tsx
··· 199 199 200 200 return ( 201 201 <View style={[a.gap_lg]}> 202 - <Text style={[a.text_xl, a.font_heavy]}> 202 + <Text style={[a.text_xl, a.font_bold]}> 203 203 <Trans>Update your email</Trans> 204 204 </Text> 205 205 ··· 239 239 <> 240 240 <Divider /> 241 241 <View> 242 - <Text style={[a.text_md, a.pb_sm, a.font_bold]}> 242 + <Text style={[a.text_md, a.pb_sm, a.font_semi_bold]}> 243 243 <Trans>Security step required</Trans> 244 244 </Text> 245 245 <Text ··· 282 282 <View style={[a.gap_sm]}> 283 283 <View style={[a.flex_row, a.gap_sm, a.align_center]}> 284 284 <Check fill={t.palette.positive_600} size="xs" /> 285 - <Text style={[a.text_md, a.font_heavy]}> 285 + <Text style={[a.text_md, a.font_bold]}> 286 286 <Trans>Success!</Trans> 287 287 </Text> 288 288 </View>
+1 -1
src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx
··· 58 58 <View style={[a.mb_xs, {height: 150 - dialogPadding}]} /> 59 59 60 60 <View style={[a.gap_sm]}> 61 - <Text style={[a.text_xl, a.font_heavy]}> 61 + <Text style={[a.text_xl, a.font_bold]}> 62 62 <Trans>Please verify your email</Trans> 63 63 </Text> 64 64 <Text style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_medium]}>
+5 -5
src/components/dialogs/EmailDialog/screens/Verify.tsx
··· 174 174 return ( 175 175 <View style={[a.gap_lg]}> 176 176 <View style={[a.gap_sm]}> 177 - <Text style={[a.text_xl, a.font_heavy]}> 177 + <Text style={[a.text_xl, a.font_bold]}> 178 178 <Span style={{top: 1}}> 179 179 <Check size="sm" fill={t.palette.positive_600} /> 180 180 </Span> ··· 197 197 return ( 198 198 <View style={[a.gap_lg]}> 199 199 <View style={[a.gap_sm]}> 200 - <Text style={[a.text_xl, a.font_heavy]}> 200 + <Text style={[a.text_xl, a.font_bold]}> 201 201 {state.step === 'email' ? ( 202 202 state.mutationStatus === 'success' ? ( 203 203 <> ··· 239 239 state.mutationStatus === 'success' ? ( 240 240 <Trans> 241 241 We sent an email to{' '} 242 - <Span style={[a.font_bold, t.atoms.text]}> 242 + <Span style={[a.font_semi_bold, t.atoms.text]}> 243 243 {currentAccount!.email} 244 244 </Span>{' '} 245 245 containing a link. Please click on it to complete the email ··· 248 248 ) : ( 249 249 <Trans> 250 250 We'll send an email to{' '} 251 - <Span style={[a.font_bold, t.atoms.text]}> 251 + <Span style={[a.font_semi_bold, t.atoms.text]}> 252 252 {currentAccount!.email} 253 253 </Span>{' '} 254 254 containing a link. Please click on it to complete the email ··· 258 258 ) : ( 259 259 <Trans> 260 260 Please enter the code we sent to{' '} 261 - <Span style={[a.font_bold, t.atoms.text]}> 261 + <Span style={[a.font_semi_bold, t.atoms.text]}> 262 262 {currentAccount!.email} 263 263 </Span>{' '} 264 264 below.
+2 -2
src/components/dialogs/Embed.tsx
··· 104 104 <Dialog.Inner label={_(msg`Embed post`)} style={[{maxWidth: 500}]}> 105 105 <View style={[a.gap_lg]}> 106 106 <View style={[a.gap_sm]}> 107 - <Text style={[a.text_2xl, a.font_heavy]}> 107 + <Text style={[a.text_2xl, a.font_bold]}> 108 108 <Trans>Embed post</Trans> 109 109 </Text> 110 110 <Text ··· 147 147 148 148 {showCustomisation && ( 149 149 <View style={[a.gap_sm, a.p_md]}> 150 - <Text style={[t.atoms.text_contrast_medium, a.font_bold]}> 150 + <Text style={[t.atoms.text_contrast_medium, a.font_semi_bold]}> 151 151 <Trans>Color theme</Trans> 152 152 </Text> 153 153 <ToggleButton.Group
+1 -1
src/components/dialogs/EmbedConsent.tsx
··· 54 54 label={_(msg`External Media`)} 55 55 style={[gtMobile ? {width: 'auto', maxWidth: 400} : a.w_full]}> 56 56 <View style={a.gap_sm}> 57 - <Text style={[a.text_2xl, a.font_bold]}> 57 + <Text style={[a.text_2xl, a.font_semi_bold]}> 58 58 <Trans>External Media</Trans> 59 59 </Text> 60 60
+1 -1
src/components/dialogs/InAppBrowserConsent.tsx
··· 62 62 <Dialog.ScrollableInner label={_(msg`How should we open this link?`)}> 63 63 <View style={[a.gap_2xl]}> 64 64 <View style={[a.gap_sm]}> 65 - <Text style={[a.font_heavy, a.text_2xl]}> 65 + <Text style={[a.font_bold, a.text_2xl]}> 66 66 <Trans>How should we open this link?</Trans> 67 67 </Text> 68 68 <Text style={[t.atoms.text_contrast_high, a.leading_snug, a.text_md]}>
+3 -2
src/components/dialogs/LinkWarning.tsx
··· 68 68 }> 69 69 <View style={[a.gap_2xl]}> 70 70 <View style={[a.gap_sm]}> 71 - <Text style={[a.font_heavy, a.text_2xl]}> 71 + <Text style={[a.font_bold, a.text_2xl]}> 72 72 {potentiallyMisleading ? ( 73 73 <Trans>Potentially misleading link</Trans> 74 74 ) : ( ··· 151 151 ]}> 152 152 <Text style={[a.text_md, a.leading_snug, t.atoms.text_contrast_medium]}> 153 153 {scheme} 154 - <Text style={[a.text_md, a.leading_snug, t.atoms.text, a.font_bold]}> 154 + <Text 155 + style={[a.text_md, a.leading_snug, t.atoms.text, a.font_semi_bold]}> 155 156 {hostname} 156 157 </Text> 157 158 {rest}
+15 -8
src/components/dialogs/MutedWords.tsx
··· 108 108 <Dialog.ScrollableInner label={_(msg`Manage your muted words and tags`)}> 109 109 <View> 110 110 <Text 111 - style={[a.text_md, a.font_bold, a.pb_sm, t.atoms.text_contrast_high]}> 111 + style={[ 112 + a.text_md, 113 + a.font_semi_bold, 114 + a.pb_sm, 115 + t.atoms.text_contrast_high, 116 + ]}> 112 117 <Trans>Add muted words and tags</Trans> 113 118 </Text> 114 119 <Text style={[a.pb_lg, a.leading_snug, t.atoms.text_contrast_medium]}> ··· 147 152 style={[ 148 153 a.pb_xs, 149 154 a.text_sm, 150 - a.font_bold, 155 + a.font_semi_bold, 151 156 t.atoms.text_contrast_medium, 152 157 ]}> 153 158 <Trans>Duration:</Trans> ··· 247 252 style={[ 248 253 a.pb_xs, 249 254 a.text_sm, 250 - a.font_bold, 255 + a.font_semi_bold, 251 256 t.atoms.text_contrast_medium, 252 257 ]}> 253 258 <Trans>Mute in:</Trans> ··· 293 298 style={[ 294 299 a.pb_xs, 295 300 a.text_sm, 296 - a.font_bold, 301 + a.font_semi_bold, 297 302 t.atoms.text_contrast_medium, 298 303 ]}> 299 304 <Trans>Options:</Trans> ··· 362 367 <Text 363 368 style={[ 364 369 a.text_md, 365 - a.font_bold, 370 + a.font_semi_bold, 366 371 a.pb_md, 367 372 t.atoms.text_contrast_high, 368 373 ]}> ··· 455 460 style={[ 456 461 a.flex_1, 457 462 a.leading_snug, 458 - a.font_bold, 463 + a.font_semi_bold, 459 464 web({ 460 465 overflowWrap: 'break-word', 461 466 wordBreak: 'break-word', ··· 466 471 {word.value}{' '} 467 472 <Text style={[a.font_normal, t.atoms.text_contrast_medium]}> 468 473 in{' '} 469 - <Text style={[a.font_bold, t.atoms.text_contrast_medium]}> 474 + <Text 475 + style={[a.font_semi_bold, t.atoms.text_contrast_medium]}> 470 476 text & tags 471 477 </Text> 472 478 </Text> ··· 476 482 {word.value}{' '} 477 483 <Text style={[a.font_normal, t.atoms.text_contrast_medium]}> 478 484 in{' '} 479 - <Text style={[a.font_bold, t.atoms.text_contrast_medium]}> 485 + <Text 486 + style={[a.font_semi_bold, t.atoms.text_contrast_medium]}> 480 487 tags 481 488 </Text> 482 489 </Text>
+7 -5
src/components/dialogs/PostInteractionSettingsDialog.tsx
··· 84 84 ]}> 85 85 <Trans> 86 86 You can set default interaction settings in{' '} 87 - <Text style={[a.font_bold, t.atoms.text_contrast_medium]}> 87 + <Text style={[a.font_semi_bold, t.atoms.text_contrast_medium]}> 88 88 Settings &rarr; Moderation &rarr; Interaction settings 89 89 </Text> 90 90 . ··· 100 100 export function Header() { 101 101 return ( 102 102 <View style={[a.gap_md, a.pb_sm]}> 103 - <Text style={[a.text_2xl, a.font_bold]}> 103 + <Text style={[a.text_2xl, a.font_semi_bold]}> 104 104 <Trans>Post interaction settings</Trans> 105 105 </Text> 106 106 <Text style={[a.text_md, a.pb_xs]}> ··· 329 329 <View style={[a.flex_1, a.gap_md]}> 330 330 <View style={[a.gap_lg]}> 331 331 <View style={[a.gap_sm]}> 332 - <Text style={[a.font_bold, a.text_lg]}> 332 + <Text style={[a.font_semi_bold, a.text_lg]}> 333 333 <Trans>Quote settings</Trans> 334 334 </Text> 335 335 ··· 385 385 opacity: replySettingsDisabled ? 0.3 : 1, 386 386 }, 387 387 ]}> 388 - <Text style={[a.font_bold, a.text_lg]}> 388 + <Text style={[a.font_semi_bold, a.text_lg]}> 389 389 <Trans>Reply settings</Trans> 390 390 </Text> 391 391 ··· 535 535 }, 536 536 style, 537 537 ]}> 538 - <Text style={[a.text_sm, isSelected && a.font_bold]}>{label}</Text> 538 + <Text style={[a.text_sm, isSelected && a.font_semi_bold]}> 539 + {label} 540 + </Text> 539 541 {isSelected ? ( 540 542 <Check size="sm" fill={t.palette.primary_500} /> 541 543 ) : (
+1 -1
src/components/dialogs/SearchablePeopleList.tsx
··· 284 284 style={[ 285 285 a.z_10, 286 286 a.text_lg, 287 - a.font_heavy, 287 + a.font_bold, 288 288 a.leading_tight, 289 289 t.atoms.text_contrast_high, 290 290 ]}>
+3 -3
src/components/dialogs/StarterPackDialog.tsx
··· 172 172 isWeb ? a.mb_2xl : a.my_lg, 173 173 a.align_center, 174 174 ]}> 175 - <Text style={[a.text_lg, a.font_bold]}> 175 + <Text style={[a.text_lg, a.font_semi_bold]}> 176 176 <Trans>Add to starter packs</Trans> 177 177 </Text> 178 178 <Button ··· 189 189 <> 190 190 <View 191 191 style={[a.flex_row, a.justify_between, a.align_center, a.py_md]}> 192 - <Text style={[a.text_md, a.font_bold]}> 192 + <Text style={[a.text_md, a.font_semi_bold]}> 193 193 <Trans>New starter pack</Trans> 194 194 </Text> 195 195 <Button ··· 331 331 return ( 332 332 <View style={[a.flex_row, a.justify_between, a.align_center, a.py_md]}> 333 333 <View> 334 - <Text emoji style={[a.text_md, a.font_bold]} numberOfLines={1}> 334 + <Text emoji style={[a.text_md, a.font_semi_bold]} numberOfLines={1}> 335 335 {record.name} 336 336 </Text> 337 337
+1 -1
src/components/dialogs/SwitchAccount.tsx
··· 45 45 <Dialog.Handle /> 46 46 <Dialog.ScrollableInner label={_(msg`Switch Account`)}> 47 47 <View style={[a.gap_lg]}> 48 - <Text style={[a.text_2xl, a.font_bold]}> 48 + <Text style={[a.text_2xl, a.font_semi_bold]}> 49 49 <Trans>Switch Account</Trans> 50 50 </Text> 51 51
+454
src/components/dialogs/lists/CreateOrEditListDialog.tsx
··· 1 + import {useCallback, useEffect, useMemo, useState} from 'react' 2 + import {useWindowDimensions, View} from 'react-native' 3 + import {type AppBskyGraphDefs, RichText as RichTextAPI} from '@atproto/api' 4 + import {msg, Plural, Trans} from '@lingui/macro' 5 + import {useLingui} from '@lingui/react' 6 + 7 + import {cleanError} from '#/lib/strings/errors' 8 + import {useWarnMaxGraphemeCount} from '#/lib/strings/helpers' 9 + import {richTextToString} from '#/lib/strings/rich-text-helpers' 10 + import {shortenLinks, stripInvalidMentions} from '#/lib/strings/rich-text-manip' 11 + import {logger} from '#/logger' 12 + import {isWeb} from '#/platform/detection' 13 + import {type ImageMeta} from '#/state/gallery' 14 + import { 15 + useListCreateMutation, 16 + useListMetadataMutation, 17 + } from '#/state/queries/list' 18 + import {useAgent} from '#/state/session' 19 + import {ErrorMessage} from '#/view/com/util/error/ErrorMessage' 20 + import * as Toast from '#/view/com/util/Toast' 21 + import {EditableUserAvatar} from '#/view/com/util/UserAvatar' 22 + import {atoms as a, useTheme, web} from '#/alf' 23 + import {Button, ButtonIcon, ButtonText} from '#/components/Button' 24 + import * as Dialog from '#/components/Dialog' 25 + import * as TextField from '#/components/forms/TextField' 26 + import {Loader} from '#/components/Loader' 27 + import * as Prompt from '#/components/Prompt' 28 + import {Text} from '#/components/Typography' 29 + 30 + const DISPLAY_NAME_MAX_GRAPHEMES = 64 31 + const DESCRIPTION_MAX_GRAPHEMES = 300 32 + 33 + export function CreateOrEditListDialog({ 34 + control, 35 + list, 36 + purpose, 37 + onSave, 38 + }: { 39 + control: Dialog.DialogControlProps 40 + list?: AppBskyGraphDefs.ListView 41 + purpose?: AppBskyGraphDefs.ListPurpose 42 + onSave?: (uri: string) => void 43 + }) { 44 + const {_} = useLingui() 45 + const cancelControl = Dialog.useDialogControl() 46 + const [dirty, setDirty] = useState(false) 47 + const {height} = useWindowDimensions() 48 + 49 + // 'You might lose unsaved changes' warning 50 + useEffect(() => { 51 + if (isWeb && dirty) { 52 + const abortController = new AbortController() 53 + const {signal} = abortController 54 + window.addEventListener('beforeunload', evt => evt.preventDefault(), { 55 + signal, 56 + }) 57 + return () => { 58 + abortController.abort() 59 + } 60 + } 61 + }, [dirty]) 62 + 63 + const onPressCancel = useCallback(() => { 64 + if (dirty) { 65 + cancelControl.open() 66 + } else { 67 + control.close() 68 + } 69 + }, [dirty, control, cancelControl]) 70 + 71 + return ( 72 + <Dialog.Outer 73 + control={control} 74 + nativeOptions={{ 75 + preventDismiss: dirty, 76 + minHeight: height, 77 + }} 78 + testID="createOrEditListDialog"> 79 + <DialogInner 80 + list={list} 81 + purpose={purpose} 82 + onSave={onSave} 83 + setDirty={setDirty} 84 + onPressCancel={onPressCancel} 85 + /> 86 + 87 + <Prompt.Basic 88 + control={cancelControl} 89 + title={_(msg`Discard changes?`)} 90 + description={_(msg`Are you sure you want to discard your changes?`)} 91 + onConfirm={() => control.close()} 92 + confirmButtonCta={_(msg`Discard`)} 93 + confirmButtonColor="negative" 94 + /> 95 + </Dialog.Outer> 96 + ) 97 + } 98 + 99 + function DialogInner({ 100 + list, 101 + purpose, 102 + onSave, 103 + setDirty, 104 + onPressCancel, 105 + }: { 106 + list?: AppBskyGraphDefs.ListView 107 + purpose?: AppBskyGraphDefs.ListPurpose 108 + onSave?: (uri: string) => void 109 + setDirty: (dirty: boolean) => void 110 + onPressCancel: () => void 111 + }) { 112 + const activePurpose = useMemo(() => { 113 + if (list?.purpose) { 114 + return list.purpose 115 + } 116 + if (purpose) { 117 + return purpose 118 + } 119 + return 'app.bsky.graph.defs#curatelist' 120 + }, [list, purpose]) 121 + const isCurateList = activePurpose === 'app.bsky.graph.defs#curatelist' 122 + 123 + const {_} = useLingui() 124 + const t = useTheme() 125 + const agent = useAgent() 126 + const control = Dialog.useDialogContext() 127 + const { 128 + mutateAsync: createListMutation, 129 + error: createListError, 130 + isError: isCreateListError, 131 + isPending: isCreatingList, 132 + } = useListCreateMutation() 133 + const { 134 + mutateAsync: updateListMutation, 135 + error: updateListError, 136 + isError: isUpdateListError, 137 + isPending: isUpdatingList, 138 + } = useListMetadataMutation() 139 + const [imageError, setImageError] = useState('') 140 + const [displayNameTooShort, setDisplayNameTooShort] = useState(false) 141 + const initialDisplayName = list?.name || '' 142 + const [displayName, setDisplayName] = useState(initialDisplayName) 143 + const initialDescription = list?.description || '' 144 + const [descriptionRt, setDescriptionRt] = useState<RichTextAPI>(() => { 145 + const text = list?.description 146 + const facets = list?.descriptionFacets 147 + 148 + if (!text || !facets) { 149 + return new RichTextAPI({text: text || ''}) 150 + } 151 + 152 + // We want to be working with a blank state here, so let's get the 153 + // serialized version and turn it back into a RichText 154 + const serialized = richTextToString(new RichTextAPI({text, facets}), false) 155 + 156 + const richText = new RichTextAPI({text: serialized}) 157 + richText.detectFacetsWithoutResolution() 158 + 159 + return richText 160 + }) 161 + 162 + const [listAvatar, setListAvatar] = useState<string | undefined | null>( 163 + list?.avatar, 164 + ) 165 + const [newListAvatar, setNewListAvatar] = useState< 166 + ImageMeta | undefined | null 167 + >() 168 + 169 + const dirty = 170 + displayName !== initialDisplayName || 171 + descriptionRt.text !== initialDescription || 172 + listAvatar !== list?.avatar 173 + 174 + useEffect(() => { 175 + setDirty(dirty) 176 + }, [dirty, setDirty]) 177 + 178 + const onSelectNewAvatar = useCallback( 179 + (img: ImageMeta | null) => { 180 + setImageError('') 181 + if (img === null) { 182 + setNewListAvatar(null) 183 + setListAvatar(null) 184 + return 185 + } 186 + try { 187 + setNewListAvatar(img) 188 + setListAvatar(img.path) 189 + } catch (e: any) { 190 + setImageError(cleanError(e)) 191 + } 192 + }, 193 + [setNewListAvatar, setListAvatar, setImageError], 194 + ) 195 + 196 + const onPressSave = useCallback(async () => { 197 + setImageError('') 198 + setDisplayNameTooShort(false) 199 + try { 200 + if (displayName.length === 0) { 201 + setDisplayNameTooShort(true) 202 + return 203 + } 204 + 205 + let richText = new RichTextAPI( 206 + {text: descriptionRt.text.trimEnd()}, 207 + {cleanNewlines: true}, 208 + ) 209 + 210 + await richText.detectFacets(agent) 211 + richText = shortenLinks(richText) 212 + richText = stripInvalidMentions(richText) 213 + 214 + if (list) { 215 + await updateListMutation({ 216 + uri: list.uri, 217 + name: displayName, 218 + description: richText.text, 219 + descriptionFacets: richText.facets, 220 + avatar: newListAvatar, 221 + }) 222 + Toast.show( 223 + isCurateList 224 + ? _(msg({message: 'User list updated', context: 'toast'})) 225 + : _(msg({message: 'Moderation list updated', context: 'toast'})), 226 + ) 227 + control.close(() => onSave?.(list.uri)) 228 + } else { 229 + const {uri} = await createListMutation({ 230 + purpose: activePurpose, 231 + name: displayName, 232 + description: richText.text, 233 + descriptionFacets: richText.facets, 234 + avatar: newListAvatar, 235 + }) 236 + Toast.show( 237 + isCurateList 238 + ? _(msg({message: 'User list created', context: 'toast'})) 239 + : _(msg({message: 'Moderation list created', context: 'toast'})), 240 + ) 241 + control.close(() => onSave?.(uri)) 242 + } 243 + } catch (e: any) { 244 + logger.error('Failed to create/edit list', {message: String(e)}) 245 + } 246 + }, [ 247 + list, 248 + createListMutation, 249 + updateListMutation, 250 + onSave, 251 + control, 252 + displayName, 253 + descriptionRt, 254 + newListAvatar, 255 + setImageError, 256 + activePurpose, 257 + isCurateList, 258 + agent, 259 + _, 260 + ]) 261 + 262 + const displayNameTooLong = useWarnMaxGraphemeCount({ 263 + text: displayName, 264 + maxCount: DISPLAY_NAME_MAX_GRAPHEMES, 265 + }) 266 + const descriptionTooLong = useWarnMaxGraphemeCount({ 267 + text: descriptionRt, 268 + maxCount: DESCRIPTION_MAX_GRAPHEMES, 269 + }) 270 + 271 + const cancelButton = useCallback( 272 + () => ( 273 + <Button 274 + label={_(msg`Cancel`)} 275 + onPress={onPressCancel} 276 + size="small" 277 + color="primary" 278 + variant="ghost" 279 + style={[a.rounded_full]} 280 + testID="editProfileCancelBtn"> 281 + <ButtonText style={[a.text_md]}> 282 + <Trans>Cancel</Trans> 283 + </ButtonText> 284 + </Button> 285 + ), 286 + [onPressCancel, _], 287 + ) 288 + 289 + const saveButton = useCallback( 290 + () => ( 291 + <Button 292 + label={_(msg`Save`)} 293 + onPress={onPressSave} 294 + disabled={ 295 + !dirty || 296 + isCreatingList || 297 + isUpdatingList || 298 + displayNameTooLong || 299 + descriptionTooLong 300 + } 301 + size="small" 302 + color="primary" 303 + variant="ghost" 304 + style={[a.rounded_full]} 305 + testID="editProfileSaveBtn"> 306 + <ButtonText style={[a.text_md, !dirty && t.atoms.text_contrast_low]}> 307 + <Trans>Save</Trans> 308 + </ButtonText> 309 + {(isCreatingList || isUpdatingList) && <ButtonIcon icon={Loader} />} 310 + </Button> 311 + ), 312 + [ 313 + _, 314 + t, 315 + dirty, 316 + onPressSave, 317 + isCreatingList, 318 + isUpdatingList, 319 + displayNameTooLong, 320 + descriptionTooLong, 321 + ], 322 + ) 323 + 324 + const onChangeDisplayName = useCallback( 325 + (text: string) => { 326 + setDisplayName(text) 327 + if (text.length > 0 && displayNameTooShort) { 328 + setDisplayNameTooShort(false) 329 + } 330 + }, 331 + [displayNameTooShort], 332 + ) 333 + 334 + const onChangeDescription = useCallback( 335 + (newText: string) => { 336 + const richText = new RichTextAPI({text: newText}) 337 + richText.detectFacetsWithoutResolution() 338 + 339 + setDescriptionRt(richText) 340 + }, 341 + [setDescriptionRt], 342 + ) 343 + 344 + const title = list 345 + ? isCurateList 346 + ? _(msg`Edit user list`) 347 + : _(msg`Edit moderation list`) 348 + : isCurateList 349 + ? _(msg`Create user list`) 350 + : _(msg`Create moderation list`) 351 + 352 + return ( 353 + <Dialog.ScrollableInner 354 + label={title} 355 + style={[a.overflow_hidden, web({maxWidth: 500})]} 356 + contentContainerStyle={[a.px_0, a.pt_0]} 357 + header={ 358 + <Dialog.Header renderLeft={cancelButton} renderRight={saveButton}> 359 + <Dialog.HeaderText>{title}</Dialog.HeaderText> 360 + </Dialog.Header> 361 + }> 362 + {isUpdateListError && ( 363 + <ErrorMessage message={cleanError(updateListError)} /> 364 + )} 365 + {isCreateListError && ( 366 + <ErrorMessage message={cleanError(createListError)} /> 367 + )} 368 + {imageError !== '' && <ErrorMessage message={imageError} />} 369 + <View style={[a.pt_xl, a.px_xl, a.gap_xl]}> 370 + <View> 371 + <TextField.LabelText> 372 + <Trans>List avatar</Trans> 373 + </TextField.LabelText> 374 + <View style={[a.align_start]}> 375 + <EditableUserAvatar 376 + size={80} 377 + avatar={listAvatar} 378 + onSelectNewAvatar={onSelectNewAvatar} 379 + type="list" 380 + /> 381 + </View> 382 + </View> 383 + <View> 384 + <TextField.LabelText> 385 + <Trans>List name</Trans> 386 + </TextField.LabelText> 387 + <TextField.Root isInvalid={displayNameTooLong || displayNameTooShort}> 388 + <Dialog.Input 389 + defaultValue={displayName} 390 + onChangeText={onChangeDisplayName} 391 + label={_(msg`Name`)} 392 + placeholder={_(msg`e.g. Great Posters`)} 393 + testID="editListNameInput" 394 + /> 395 + </TextField.Root> 396 + {(displayNameTooLong || displayNameTooShort) && ( 397 + <Text 398 + style={[ 399 + a.text_sm, 400 + a.mt_xs, 401 + a.font_bold, 402 + {color: t.palette.negative_400}, 403 + ]}> 404 + {displayNameTooLong ? ( 405 + <Trans> 406 + List name is too long.{' '} 407 + <Plural 408 + value={DISPLAY_NAME_MAX_GRAPHEMES} 409 + other="The maximum number of characters is #." 410 + /> 411 + </Trans> 412 + ) : displayNameTooShort ? ( 413 + <Trans>List must have a name.</Trans> 414 + ) : null} 415 + </Text> 416 + )} 417 + </View> 418 + 419 + <View> 420 + <TextField.LabelText> 421 + <Trans>List description</Trans> 422 + </TextField.LabelText> 423 + <TextField.Root isInvalid={descriptionTooLong}> 424 + <Dialog.Input 425 + defaultValue={descriptionRt.text} 426 + onChangeText={onChangeDescription} 427 + multiline 428 + label={_(msg`Description`)} 429 + placeholder={_(msg`e.g. The posters that never miss.`)} 430 + testID="editProfileDescriptionInput" 431 + /> 432 + </TextField.Root> 433 + {descriptionTooLong && ( 434 + <Text 435 + style={[ 436 + a.text_sm, 437 + a.mt_xs, 438 + a.font_bold, 439 + {color: t.palette.negative_400}, 440 + ]}> 441 + <Trans> 442 + List description is too long.{' '} 443 + <Plural 444 + value={DESCRIPTION_MAX_GRAPHEMES} 445 + other="The maximum number of characters is #." 446 + /> 447 + </Trans> 448 + </Text> 449 + )} 450 + </View> 451 + </View> 452 + </Dialog.ScrollableInner> 453 + ) 454 + }
+2 -2
src/components/dialogs/nuxs/ActivitySubscriptions.tsx
··· 66 66 <SparkleIcon fill={t.palette.primary_800} size="sm" /> 67 67 <Text 68 68 style={[ 69 - a.font_bold, 69 + a.font_semi_bold, 70 70 { 71 71 color: t.palette.primary_800, 72 72 }, ··· 127 127 style={[ 128 128 a.text_3xl, 129 129 a.leading_tight, 130 - a.font_heavy, 130 + a.font_bold, 131 131 a.text_center, 132 132 { 133 133 fontSize: isWeb ? 28 : 32,
+2 -2
src/components/dialogs/nuxs/BookmarksAnnouncement.tsx
··· 65 65 <SparkleIcon fill={t.palette.primary_800} size="sm" /> 66 66 <Text 67 67 style={[ 68 - a.font_bold, 68 + a.font_semi_bold, 69 69 { 70 70 color: t.palette.primary_800, 71 71 }, ··· 133 133 style={[ 134 134 a.text_3xl, 135 135 a.leading_tight, 136 - a.font_heavy, 136 + a.font_bold, 137 137 a.text_center, 138 138 { 139 139 fontSize: isWeb ? 28 : 32,
+4 -4
src/components/dialogs/nuxs/InitialVerificationAnnouncement.tsx
··· 55 55 <SparkleIcon fill={t.palette.primary_700} size="sm" /> 56 56 <Text 57 57 style={[ 58 - a.font_bold, 58 + a.font_semi_bold, 59 59 { 60 60 color: t.palette.primary_700, 61 61 }, ··· 87 87 </View> 88 88 89 89 <View style={[a.gap_xs]}> 90 - <Text style={[a.text_2xl, a.font_bold, a.leading_snug]}> 90 + <Text style={[a.text_2xl, a.font_semi_bold, a.leading_snug]}> 91 91 <Trans>A new form of verification</Trans> 92 92 </Text> 93 93 <Text style={[a.leading_snug, a.text_md]}> ··· 123 123 <View style={[a.gap_sm]}> 124 124 <View style={[a.flex_row, a.align_center, a.gap_xs]}> 125 125 <VerifierCheck width={14} /> 126 - <Text style={[a.text_lg, a.font_bold, a.leading_snug]}> 126 + <Text style={[a.text_lg, a.font_semi_bold, a.leading_snug]}> 127 127 <Trans>Who can verify?</Trans> 128 128 </Text> 129 129 </View> ··· 138 138 <Trans> 139 139 Trust emerges from relationships, communities, and shared 140 140 context, so we’re also enabling{' '} 141 - <Span style={[a.font_bold]}>trusted verifiers</Span>: 141 + <Span style={[a.font_semi_bold]}>trusted verifiers</Span>: 142 142 organizations that can directly issue verification. 143 143 </Trans> 144 144 </Text>
+1 -1
src/components/dms/ActionsWrapper.web.tsx
··· 72 72 73 73 return ( 74 74 <View 75 - // @ts-expect-error web only 76 75 onMouseEnter={onMouseEnter} 77 76 onMouseLeave={onMouseLeave} 77 + // @ts-expect-error web only 78 78 onFocus={onFocus} 79 79 onBlur={onMouseLeave} 80 80 style={[a.flex_1, isFromSelf ? a.flex_row : a.flex_row_reverse]}
+3 -1
src/components/dms/ChatEmptyPill.tsx
··· 89 89 onPress={onPress} 90 90 onPressIn={onPressIn} 91 91 onPressOut={onPressOut}> 92 - <Text style={[a.font_bold, a.pointer_events_none]} selectable={false}> 92 + <Text 93 + style={[a.font_semi_bold, a.pointer_events_none]} 94 + selectable={false}> 93 95 {prompts[promptIndex]} 94 96 </Text> 95 97 </AnimatedPressable>
+2 -1
src/components/dms/DateDivider.tsx
··· 67 67 a.px_md, 68 68 ]}> 69 69 <Trans> 70 - <Text style={[a.text_xs, t.atoms.text_contrast_medium, a.font_bold]}> 70 + <Text 71 + style={[a.text_xs, t.atoms.text_contrast_medium, a.font_semi_bold]}> 71 72 {date} 72 73 </Text>{' '} 73 74 at {time}
+1 -1
src/components/dms/EmojiPopup.android.tsx
··· 51 51 a.border_b, 52 52 t.atoms.border_contrast_low, 53 53 ]}> 54 - <Text style={[a.font_bold, a.text_md]}> 54 + <Text style={[a.font_semi_bold, a.text_md]}> 55 55 <Trans>Add Reaction</Trans> 56 56 </Text> 57 57 <Button
+1 -1
src/components/dms/MessagesListBlockedFooter.tsx
··· 61 61 return ( 62 62 <View style={[hasMessages && a.pt_md, a.pb_xl, a.gap_lg]}> 63 63 <Divider /> 64 - <Text style={[a.text_md, a.font_bold, a.text_center]}> 64 + <Text style={[a.text_md, a.font_semi_bold, a.text_center]}> 65 65 {isBlocking ? ( 66 66 <Trans>You have blocked this user</Trans> 67 67 ) : (
+1 -1
src/components/dms/MessagesListHeader.tsx
··· 154 154 emoji 155 155 style={[ 156 156 a.text_md, 157 - a.font_bold, 157 + a.font_semi_bold, 158 158 a.self_start, 159 159 web(a.leading_normal), 160 160 ]}
+1 -1
src/components/dms/NewMessagesPill.tsx
··· 88 88 onPress={onPress} 89 89 onPressIn={onPressIn} 90 90 onPressOut={onPressOut}> 91 - <Text style={[a.font_bold]}> 91 + <Text style={[a.font_semi_bold]}> 92 92 <Trans>New messages</Trans> 93 93 </Text> 94 94 </AnimatedPressable>
+5 -4
src/components/dms/ReportDialog.tsx
··· 200 200 </Button> 201 201 202 202 <View style={[a.justify_center, gtMobile ? a.gap_sm : a.gap_xs]}> 203 - <Text style={[a.text_2xl, a.font_bold]}>{copy.title}</Text> 203 + <Text style={[a.text_2xl, a.font_semi_bold]}>{copy.title}</Text> 204 204 <Text style={[a.text_md, t.atoms.text_contrast_medium]}> 205 205 <Trans> 206 206 Your report will be sent to the Bluesky Moderation Service ··· 213 213 )} 214 214 215 215 <Text style={[a.text_md, t.atoms.text_contrast_medium]}> 216 - <Text style={[a.font_bold, a.text_md, t.atoms.text_contrast_medium]}> 216 + <Text 217 + style={[a.font_semi_bold, a.text_md, t.atoms.text_contrast_medium]}> 217 218 <Trans>Reason:</Trans> 218 219 </Text>{' '} 219 - <Text style={[a.font_bold, a.text_md]}>{reportOption.title}</Text> 220 + <Text style={[a.font_semi_bold, a.text_md]}>{reportOption.title}</Text> 220 221 </Text> 221 222 222 223 <Divider /> ··· 346 347 return ( 347 348 <View style={a.gap_2xl}> 348 349 <View style={[a.justify_center, gtMobile ? a.gap_sm : a.gap_xs]}> 349 - <Text style={[a.text_2xl, a.font_bold]}> 350 + <Text style={[a.text_2xl, a.font_semi_bold]}> 350 351 <Trans>Report submitted</Trans> 351 352 </Text> 352 353 <Text style={[a.text_md, t.atoms.text_contrast_medium]}>
+2 -1
src/components/forms/FormError.tsx
··· 20 20 ]}> 21 21 <Warning fill={t.palette.white} size="md" /> 22 22 <View style={[a.flex_1]}> 23 - <Text style={[{color: t.palette.white}, a.font_bold, a.leading_snug]}> 23 + <Text 24 + style={[{color: t.palette.white}, a.font_semi_bold, a.leading_snug]}> 24 25 {error} 25 26 </Text> 26 27 </View>
+19 -9
src/components/forms/TextField.tsx
··· 15 15 android, 16 16 applyFonts, 17 17 atoms as a, 18 - ios, 19 18 platform, 20 19 type TextStyleProp, 21 20 tokens, ··· 202 201 a.px_xs, 203 202 { 204 203 // paddingVertical doesn't work w/multiline - esb 205 - lineHeight: a.text_md.fontSize * 1.1875, 204 + lineHeight: a.text_md.fontSize * 1.2, 206 205 textAlignVertical: rest.multiline ? 'top' : undefined, 207 206 minHeight: rest.multiline ? 80 : undefined, 208 207 minWidth: 0, 208 + paddingTop: 13, 209 + paddingBottom: 13, 209 210 }, 210 - ios({paddingTop: 12, paddingBottom: 13}), 211 - // Needs to be sm on Paper, md on Fabric for some godforsaken reason -sfn 212 - android(a.py_sm), 213 - // fix for autofill styles covering border 211 + android({ 212 + paddingTop: 8, 213 + paddingBottom: 9, 214 + }), 215 + /* 216 + * Margins are needed here to avoid autofill background overlapping the 217 + * top and bottom borders - esb 218 + */ 214 219 web({ 215 - paddingTop: 10, 220 + paddingTop: 11, 216 221 paddingBottom: 11, 217 222 marginTop: 2, 218 223 marginBottom: 2, ··· 262 267 a.absolute, 263 268 a.inset_0, 264 269 a.rounded_sm, 265 - t.atoms.bg_contrast_25, 270 + t.atoms.bg_contrast_50, 266 271 {borderColor: 'transparent', borderWidth: 2}, 267 272 ctx.hovered ? chromeHover : {}, 268 273 ctx.focused ? chromeFocus : {}, ··· 287 292 return ( 288 293 <Text 289 294 nativeID={nativeID} 290 - style={[a.text_sm, a.font_bold, t.atoms.text_contrast_medium, a.mb_sm]}> 295 + style={[ 296 + a.text_sm, 297 + a.font_semi_bold, 298 + t.atoms.text_contrast_medium, 299 + a.mb_sm, 300 + ]}> 291 301 {children} 292 302 </Text> 293 303 )
+1 -1
src/components/forms/Toggle.tsx
··· 249 249 return ( 250 250 <Text 251 251 style={[ 252 - a.font_bold, 252 + a.font_semi_bold, 253 253 a.leading_tight, 254 254 { 255 255 userSelect: 'none',
+1 -1
src/components/forms/ToggleButton.tsx
··· 133 133 <Text 134 134 style={[ 135 135 a.text_center, 136 - a.font_bold, 136 + a.font_semi_bold, 137 137 t.atoms.text_contrast_medium, 138 138 textStyles, 139 139 ]}>
+4 -4
src/components/intents/VerifyEmailIntentDialog.tsx
··· 75 75 </View> 76 76 ) : status === 'success' ? ( 77 77 <View style={[a.gap_sm, isNative && a.pb_xl]}> 78 - <Text style={[a.font_heavy, a.text_2xl]}> 78 + <Text style={[a.font_bold, a.text_2xl]}> 79 79 <Trans>Email Verified</Trans> 80 80 </Text> 81 81 <Text style={[a.text_md, a.leading_snug]}> ··· 87 87 </View> 88 88 ) : status === 'failure' ? ( 89 89 <View style={[a.gap_sm]}> 90 - <Text style={[a.font_heavy, a.text_2xl]}> 90 + <Text style={[a.font_bold, a.text_2xl]}> 91 91 <Trans>Invalid Verification Code</Trans> 92 92 </Text> 93 93 <Text style={[a.text_md, a.leading_snug]}> ··· 100 100 </View> 101 101 ) : ( 102 102 <View style={[a.gap_sm, isNative && a.pb_xl]}> 103 - <Text style={[a.font_heavy, a.text_2xl]}> 103 + <Text style={[a.font_bold, a.text_2xl]}> 104 104 <Trans>Email Resent</Trans> 105 105 </Text> 106 106 <Text style={[a.text_md, a.leading_snug]}> 107 107 <Trans> 108 108 We have sent another verification email to{' '} 109 - <Text style={[a.text_md, a.font_bold]}> 109 + <Text style={[a.text_md, a.font_semi_bold]}> 110 110 {currentAccount?.email} 111 111 </Text> 112 112 .
+2 -2
src/components/interstitials/Trending.tsx
··· 82 82 style={[ 83 83 t.atoms.text_contrast_medium, 84 84 a.text_sm, 85 - a.font_bold, 85 + a.font_semi_bold, 86 86 ]}> 87 87 {' '} 88 88 </Text> ··· 101 101 style={[ 102 102 t.atoms.text, 103 103 a.text_sm, 104 - a.font_bold, 104 + a.font_semi_bold, 105 105 {opacity: 0.7}, // NOTE: we use opacity 0.7 instead of a color to match the color of the home pager tab bar 106 106 ]}> 107 107 {topic.topic}
+1 -1
src/components/interstitials/TrendingVideos.tsx
··· 82 82 a.align_center, 83 83 a.justify_between, 84 84 ]}> 85 - <Text style={[a.text_sm, a.font_bold, a.leading_snug]}> 85 + <Text style={[a.text_sm, a.font_semi_bold, a.leading_snug]}> 86 86 <Trans>Trending Videos</Trans> 87 87 </Text> 88 88 <Button
+2 -2
src/components/live/EditLiveDialog.tsx
··· 120 120 style={web({maxWidth: 420})}> 121 121 <View style={[a.gap_lg]}> 122 122 <View style={[a.gap_sm]}> 123 - <Text style={[a.font_bold, a.text_2xl]}> 123 + <Text style={[a.font_semi_bold, a.text_2xl]}> 124 124 <Trans>You are Live</Trans> 125 125 </Text> 126 126 <View style={[a.flex_row, a.align_center, a.gap_xs]}> ··· 182 182 a.text_sm, 183 183 a.leading_snug, 184 184 a.flex_1, 185 - a.font_bold, 185 + a.font_semi_bold, 186 186 {color: t.palette.negative_500}, 187 187 ]}> 188 188 {liveLinkError ? (
+2 -2
src/components/live/GoLiveDialog.tsx
··· 94 94 style={web({maxWidth: 420})}> 95 95 <View style={[a.gap_xl]}> 96 96 <View style={[a.gap_sm]}> 97 - <Text style={[a.font_bold, a.text_2xl]}> 97 + <Text style={[a.font_semi_bold, a.text_2xl]}> 98 98 <Trans>Go Live</Trans> 99 99 </Text> 100 100 <Text style={[a.text_md, a.leading_snug, t.atoms.text_contrast_high]}> ··· 153 153 a.text_sm, 154 154 a.leading_snug, 155 155 a.flex_1, 156 - a.font_bold, 156 + a.font_semi_bold, 157 157 {color: t.palette.negative_500}, 158 158 ]}> 159 159 {liveLinkError ? (
+1 -1
src/components/live/LinkPreview.tsx
··· 70 70 <> 71 71 <Text 72 72 numberOfLines={2} 73 - style={[a.leading_snug, a.font_bold, a.text_md]}> 73 + style={[a.leading_snug, a.font_semi_bold, a.text_md]}> 74 74 {linkMeta.title || linkMeta.url} 75 75 </Text> 76 76 <View style={[a.flex_row, a.align_center, a.gap_2xs]}>
+1 -1
src/components/live/LiveIndicator.tsx
··· 39 39 <Text 40 40 style={[ 41 41 a.text_center, 42 - a.font_bold, 42 + a.font_semi_bold, 43 43 fontSize, 44 44 {color: t.palette.white}, 45 45 ]}>
+1 -1
src/components/live/LiveStatusDialog.tsx
··· 137 137 <View style={[a.w_full, a.justify_center, a.gap_2xs]}> 138 138 <Text 139 139 numberOfLines={3} 140 - style={[a.leading_snug, a.font_bold, a.text_xl]}> 140 + style={[a.leading_snug, a.font_semi_bold, a.text_xl]}> 141 141 {embed.external.title || embed.external.uri} 142 142 </Text> 143 143 <View style={[a.flex_row, a.align_center, a.gap_2xs]}>
+4 -4
src/components/moderation/ContentHider.tsx
··· 178 178 style={[ 179 179 a.flex_1, 180 180 a.text_left, 181 - a.font_bold, 181 + a.font_semi_bold, 182 182 a.leading_snug, 183 - gtMobile && [a.font_bold], 183 + gtMobile && [a.font_semi_bold], 184 184 t.atoms.text_contrast_medium, 185 185 web({ 186 186 marginBottom: 1, ··· 192 192 {!modui.noOverride && ( 193 193 <Text 194 194 style={[ 195 - a.font_bold, 195 + a.font_semi_bold, 196 196 a.leading_snug, 197 - gtMobile && [a.font_bold], 197 + gtMobile && [a.font_semi_bold], 198 198 t.atoms.text_contrast_high, 199 199 web({ 200 200 marginBottom: 1,
+8 -3
src/components/moderation/LabelPreference.tsx
··· 48 48 49 49 return ( 50 50 <View style={[a.gap_xs, a.flex_1]}> 51 - <Text emoji style={[a.font_bold, gtPhone ? a.text_sm : a.text_md]}> 51 + <Text emoji style={[a.font_semi_bold, gtPhone ? a.text_sm : a.text_md]}> 52 52 {name} 53 53 </Text> 54 54 <Text emoji style={[t.atoms.text_contrast_medium, a.leading_snug]}> ··· 241 241 <View style={[a.flex_row, a.gap_xs, a.align_center, a.mt_xs]}> 242 242 <CircleInfo size="sm" fill={t.atoms.text_contrast_high.color} /> 243 243 244 - <Text style={[t.atoms.text_contrast_medium, a.font_bold, a.italic]}> 244 + <Text 245 + style={[ 246 + t.atoms.text_contrast_medium, 247 + a.font_semi_bold, 248 + a.italic, 249 + ]}> 245 250 {adultDisabled ? ( 246 251 <Trans>Adult content is disabled.</Trans> 247 252 ) : isGlobalLabel ? ( ··· 274 279 t.atoms.border_contrast_low, 275 280 a.self_start, 276 281 ]}> 277 - <Text emoji style={[a.font_bold, t.atoms.text_contrast_low]}> 282 + <Text emoji style={[a.font_semi_bold, t.atoms.text_contrast_low]}> 278 283 {currentPrefLabel} 279 284 </Text> 280 285 </View>
+3 -3
src/components/moderation/LabelsOnMeDialog.tsx
··· 67 67 /> 68 68 ) : ( 69 69 <> 70 - <Text style={[a.text_2xl, a.font_heavy, a.pb_xs, a.leading_tight]}> 70 + <Text style={[a.text_2xl, a.font_bold, a.pb_xs, a.leading_tight]}> 71 71 {isAccount ? ( 72 72 <Trans>Labels on your account</Trans> 73 73 ) : ( ··· 134 134 ]}> 135 135 <View style={[a.p_md, a.gap_sm, a.flex_row]}> 136 136 <View style={[a.flex_1, a.gap_xs]}> 137 - <Text emoji style={[a.font_bold, a.text_md]}> 137 + <Text emoji style={[a.font_semi_bold, a.text_md]}> 138 138 {strings.name} 139 139 </Text> 140 140 <Text emoji style={[t.atoms.text_contrast_medium, a.leading_snug]}> ··· 264 264 return ( 265 265 <> 266 266 <View> 267 - <Text style={[a.text_2xl, a.font_bold, a.pb_xs, a.leading_tight]}> 267 + <Text style={[a.text_2xl, a.font_semi_bold, a.pb_xs, a.leading_tight]}> 268 268 <Trans>Appeal "{strings.name}" label</Trans> 269 269 </Text> 270 270 <Text style={[a.text_md, a.leading_snug]}>
+1 -1
src/components/moderation/ModerationDetailsDialog.tsx
··· 142 142 paddingBottom: 0, 143 143 }}> 144 144 <View style={[xGutters, a.pb_lg]}> 145 - <Text emoji style={[t.atoms.text, a.text_2xl, a.font_heavy, a.mb_sm]}> 145 + <Text emoji style={[t.atoms.text, a.text_2xl, a.font_bold, a.mb_sm]}> 146 146 {name} 147 147 </Text> 148 148 <Text style={[t.atoms.text, a.text_sm, a.leading_snug]}>
+6 -6
src/components/moderation/ReportDialog/index.tsx
··· 69 69 const {_} = useLingui() 70 70 return ( 71 71 <Dialog.ScrollableInner label={_(msg`Report dialog`)}> 72 - <Text style={[a.font_heavy, a.text_xl, a.leading_snug, a.pb_xs]}> 72 + <Text style={[a.font_bold, a.text_xl, a.leading_snug, a.pb_xs]}> 73 73 <Trans>Invalid report subject</Trans> 74 74 </Text> 75 75 <Text style={[a.text_md, a.leading_snug]}> ··· 393 393 <Text style={[a.leading_snug, a.pb_xs]}> 394 394 <Trans> 395 395 Your report will be sent to{' '} 396 - <Text style={[a.font_bold, a.leading_snug]}> 396 + <Text style={[a.font_semi_bold, a.leading_snug]}> 397 397 {state.selectedLabeler?.creator.displayName} 398 398 </Text> 399 399 . ··· 529 529 ) : ( 530 530 <Text 531 531 style={[ 532 - a.font_heavy, 532 + a.font_bold, 533 533 a.text_center, 534 534 t.atoms.text, 535 535 { ··· 552 552 <Text 553 553 style={[ 554 554 a.flex_1, 555 - a.font_heavy, 555 + a.font_bold, 556 556 a.text_lg, 557 557 a.leading_snug, 558 558 active ? t.atoms.text : t.atoms.text_contrast_medium, ··· 598 598 ? [t.atoms.border_contrast_high] 599 599 : [t.atoms.border_contrast_low], 600 600 ]}> 601 - <Text style={[a.text_md, a.font_bold, a.leading_snug]}> 601 + <Text style={[a.text_md, a.font_semi_bold, a.leading_snug]}> 602 602 {option.title} 603 603 </Text> 604 604 <Text ··· 670 670 avatar={labeler.creator.avatar} 671 671 /> 672 672 <View style={[a.flex_1]}> 673 - <Text style={[a.text_md, a.font_bold, a.leading_snug]}> 673 + <Text style={[a.text_md, a.font_semi_bold, a.leading_snug]}> 674 674 {title} 675 675 </Text> 676 676 <Text
+8 -2
src/components/moderation/ScreenHider.tsx
··· 86 86 </View> 87 87 </View> 88 88 <Text 89 - style={[a.text_4xl, a.font_bold, a.text_center, a.mb_md, t.atoms.text]}> 89 + style={[ 90 + a.text_4xl, 91 + a.font_semi_bold, 92 + a.text_center, 93 + a.mb_md, 94 + t.atoms.text, 95 + ]}> 90 96 {isNoPwi ? ( 91 97 <Trans>Sign-in Required</Trans> 92 98 ) : ( ··· 112 118 <Text 113 119 style={[ 114 120 a.text_lg, 115 - a.font_bold, 121 + a.font_semi_bold, 116 122 a.leading_snug, 117 123 t.atoms.text, 118 124 a.ml_xs,
+2 -2
src/components/verification/VerificationsDialog.tsx
··· 79 79 gtMobile ? {width: 'auto', maxWidth: 400, minWidth: 200} : a.w_full, 80 80 ]}> 81 81 <View style={[a.gap_sm, a.pb_lg]}> 82 - <Text style={[a.text_2xl, a.font_bold, a.pr_4xl, a.leading_tight]}> 82 + <Text style={[a.text_2xl, a.font_semi_bold, a.pr_4xl, a.leading_tight]}> 83 83 {label} 84 84 </Text> 85 85 <Text style={[a.text_md, a.leading_snug]}> ··· 206 206 <ProfileCard.AvatarPlaceholder /> 207 207 <View style={[a.flex_1]}> 208 208 <Text 209 - style={[a.text_md, a.font_bold, a.leading_snug]} 209 + style={[a.text_md, a.font_semi_bold, a.leading_snug]} 210 210 numberOfLines={1}> 211 211 <Trans>Unknown verifier</Trans> 212 212 </Text>
+2 -1
src/components/verification/VerifierDialog.tsx
··· 89 89 </View> 90 90 91 91 <View style={[a.gap_sm]}> 92 - <Text style={[a.text_2xl, a.font_bold, a.pr_4xl, a.leading_tight]}> 92 + <Text 93 + style={[a.text_2xl, a.font_semi_bold, a.pr_4xl, a.leading_tight]}> 93 94 {label} 94 95 </Text> 95 96 <Text style={[a.text_md, a.leading_snug]}>
+1 -1
src/lib/ThemeContext.tsx
··· 1 1 import {type ReactNode} from 'react' 2 2 import {createContext, useContext} from 'react' 3 3 import {type TextStyle, type ViewStyle} from 'react-native' 4 + import {type ThemeName} from '@bsky.app/alf' 4 5 5 - import {type ThemeName} from '#/alf/types' 6 6 import {darkTheme, defaultTheme, dimTheme} from './themes' 7 7 8 8 export type ColorScheme = 'light' | 'dark'
+1 -1
src/lib/api/upload-blob.ts
··· 1 - import {copyAsync} from 'expo-file-system' 1 + import {copyAsync} from 'expo-file-system/legacy' 2 2 import {type BskyAgent, type ComAtprotoRepoUploadBlob} from '@atproto/api' 3 3 4 4 import {safeDeleteAsync} from '#/lib/media/manip'
-15
src/lib/hooks/useAnimatedScrollHandler_FIXED.ts
··· 1 - // Be warned. This Hook is very buggy unless used in a very constrained way. 2 - // To use it safely: 3 - // 4 - // - DO NOT pass its return value as a prop to any user-defined component. 5 - // - DO NOT pass its return value to more than a single component. 6 - // 7 - // In other words, the only safe way to use it is next to the leaf Reanimated View. 8 - // 9 - // Relevant bug reports: 10 - // - https://github.com/software-mansion/react-native-reanimated/issues/5345 11 - // - https://github.com/software-mansion/react-native-reanimated/issues/5360 12 - // - https://github.com/software-mansion/react-native-reanimated/issues/5364 13 - // 14 - // It's great when it works though. 15 - export {useAnimatedScrollHandler} from 'react-native-reanimated'
-44
src/lib/hooks/useAnimatedScrollHandler_FIXED.web.ts
··· 1 - import {useEffect, useRef} from 'react' 2 - import {useAnimatedScrollHandler as useAnimatedScrollHandler_BUGGY} from 'react-native-reanimated' 3 - 4 - export const useAnimatedScrollHandler: typeof useAnimatedScrollHandler_BUGGY = ( 5 - config, 6 - deps, 7 - ) => { 8 - const ref = useRef(config) 9 - useEffect(() => { 10 - ref.current = config 11 - }) 12 - return useAnimatedScrollHandler_BUGGY( 13 - { 14 - onBeginDrag(e, ctx) { 15 - if (typeof ref.current !== 'function' && ref.current.onBeginDrag) { 16 - ref.current.onBeginDrag(e, ctx) 17 - } 18 - }, 19 - onEndDrag(e, ctx) { 20 - if (typeof ref.current !== 'function' && ref.current.onEndDrag) { 21 - ref.current.onEndDrag(e, ctx) 22 - } 23 - }, 24 - onMomentumBegin(e, ctx) { 25 - if (typeof ref.current !== 'function' && ref.current.onMomentumBegin) { 26 - ref.current.onMomentumBegin(e, ctx) 27 - } 28 - }, 29 - onMomentumEnd(e, ctx) { 30 - if (typeof ref.current !== 'function' && ref.current.onMomentumEnd) { 31 - ref.current.onMomentumEnd(e, ctx) 32 - } 33 - }, 34 - onScroll(e, ctx) { 35 - if (typeof ref.current === 'function') { 36 - ref.current(e, ctx) 37 - } else if (ref.current.onScroll) { 38 - ref.current.onScroll(e, ctx) 39 - } 40 - }, 41 - }, 42 - deps, 43 - ) 44 - }
+1 -1
src/lib/media/manip.ts
··· 10 10 makeDirectoryAsync, 11 11 StorageAccessFramework, 12 12 writeAsStringAsync, 13 - } from 'expo-file-system' 13 + } from 'expo-file-system/legacy' 14 14 import {manipulateAsync, SaveFormat} from 'expo-image-manipulator' 15 15 import * as MediaLibrary from 'expo-media-library' 16 16 import * as Sharing from 'expo-sharing'
+1 -1
src/lib/media/manip.web.ts
··· 157 157 158 158 export async function saveBytesToDisk( 159 159 filename: string, 160 - bytes: Uint8Array, 160 + bytes: Uint8Array<ArrayBuffer>, 161 161 type: string, 162 162 ) { 163 163 const blob = new Blob([bytes], {type})
+1 -1
src/lib/media/picker.e2e.tsx
··· 2 2 documentDirectory, 3 3 getInfoAsync, 4 4 readDirectoryAsync, 5 - } from 'expo-file-system' 5 + } from 'expo-file-system/legacy' 6 6 import ExpoImageCropTool, {type OpenCropperOptions} from 'expo-image-crop-tool' 7 7 8 8 import {compressIfNeeded} from './manip'
+1 -1
src/lib/media/video/upload.ts
··· 1 - import {createUploadTask, FileSystemUploadType} from 'expo-file-system' 1 + import {createUploadTask, FileSystemUploadType} from 'expo-file-system/legacy' 2 2 import {type AppBskyVideoDefs, type BskyAgent} from '@atproto/api' 3 3 import {type I18n} from '@lingui/core' 4 4 import {msg} from '@lingui/macro'
+1 -1
src/lib/media/video/util.ts
··· 40 40 } 41 41 42 42 export function extToMime(ext: string) { 43 - switch (ext) { 43 + switch (ext.toLowerCase()) { 44 44 case 'mp4': 45 45 return 'video/mp4' 46 46 case 'webm':
+9 -2
src/lib/strings/helpers.ts
··· 1 1 import {useCallback, useMemo} from 'react' 2 + import {type RichText} from '@atproto/api' 2 3 import Graphemer from 'graphemer' 4 + 5 + import {shortenLinks} from './rich-text-manip' 3 6 4 7 export function enforceLen( 5 8 str: string, ··· 45 48 text, 46 49 maxCount, 47 50 }: { 48 - text: string 51 + text: string | RichText 49 52 maxCount: number 50 53 }) { 51 54 const splitter = useMemo(() => new Graphemer(), []) 52 55 53 56 return useMemo(() => { 54 - return splitter.countGraphemes(text) > maxCount 57 + if (typeof text === 'string') { 58 + return splitter.countGraphemes(text) > maxCount 59 + } else { 60 + return shortenLinks(text).graphemeLength > maxCount 61 + } 55 62 }, [splitter, maxCount, text]) 56 63 } 57 64
+27 -27
src/lib/themes.ts
··· 101 101 '2xl-medium': { 102 102 fontSize: 18, 103 103 letterSpacing: tokens.TRACKING, 104 - fontWeight: fontWeight.bold, 104 + fontWeight: fontWeight.semiBold, 105 105 }, 106 106 '2xl-bold': { 107 107 fontSize: 18, 108 108 letterSpacing: tokens.TRACKING, 109 - fontWeight: fontWeight.bold, 109 + fontWeight: fontWeight.semiBold, 110 110 }, 111 111 '2xl-heavy': { 112 112 fontSize: 18, 113 113 letterSpacing: tokens.TRACKING, 114 - fontWeight: fontWeight.heavy, 114 + fontWeight: fontWeight.bold, 115 115 }, 116 116 'xl-thin': { 117 117 fontSize: 17, ··· 126 126 'xl-medium': { 127 127 fontSize: 17, 128 128 letterSpacing: tokens.TRACKING, 129 - fontWeight: fontWeight.bold, 129 + fontWeight: fontWeight.semiBold, 130 130 }, 131 131 'xl-bold': { 132 132 fontSize: 17, 133 133 letterSpacing: tokens.TRACKING, 134 - fontWeight: fontWeight.bold, 134 + fontWeight: fontWeight.semiBold, 135 135 }, 136 136 'xl-heavy': { 137 137 fontSize: 17, 138 138 letterSpacing: tokens.TRACKING, 139 - fontWeight: fontWeight.heavy, 139 + fontWeight: fontWeight.bold, 140 140 }, 141 141 'lg-thin': { 142 142 fontSize: 16, ··· 151 151 'lg-medium': { 152 152 fontSize: 16, 153 153 letterSpacing: tokens.TRACKING, 154 - fontWeight: fontWeight.bold, 154 + fontWeight: fontWeight.semiBold, 155 155 }, 156 156 'lg-bold': { 157 157 fontSize: 16, 158 158 letterSpacing: tokens.TRACKING, 159 - fontWeight: fontWeight.bold, 159 + fontWeight: fontWeight.semiBold, 160 160 }, 161 161 'lg-heavy': { 162 162 fontSize: 16, 163 163 letterSpacing: tokens.TRACKING, 164 - fontWeight: fontWeight.heavy, 164 + fontWeight: fontWeight.bold, 165 165 }, 166 166 'md-thin': { 167 167 fontSize: 15, ··· 176 176 'md-medium': { 177 177 fontSize: 15, 178 178 letterSpacing: tokens.TRACKING, 179 - fontWeight: fontWeight.bold, 179 + fontWeight: fontWeight.semiBold, 180 180 }, 181 181 'md-bold': { 182 182 fontSize: 15, 183 183 letterSpacing: tokens.TRACKING, 184 - fontWeight: fontWeight.bold, 184 + fontWeight: fontWeight.semiBold, 185 185 }, 186 186 'md-heavy': { 187 187 fontSize: 15, 188 188 letterSpacing: tokens.TRACKING, 189 - fontWeight: fontWeight.heavy, 189 + fontWeight: fontWeight.bold, 190 190 }, 191 191 'sm-thin': { 192 192 fontSize: 14, ··· 201 201 'sm-medium': { 202 202 fontSize: 14, 203 203 letterSpacing: tokens.TRACKING, 204 - fontWeight: fontWeight.bold, 204 + fontWeight: fontWeight.semiBold, 205 205 }, 206 206 'sm-bold': { 207 207 fontSize: 14, 208 208 letterSpacing: tokens.TRACKING, 209 - fontWeight: fontWeight.bold, 209 + fontWeight: fontWeight.semiBold, 210 210 }, 211 211 'sm-heavy': { 212 212 fontSize: 14, 213 213 letterSpacing: tokens.TRACKING, 214 - fontWeight: fontWeight.heavy, 214 + fontWeight: fontWeight.bold, 215 215 }, 216 216 'xs-thin': { 217 217 fontSize: 13, ··· 226 226 'xs-medium': { 227 227 fontSize: 13, 228 228 letterSpacing: tokens.TRACKING, 229 - fontWeight: fontWeight.bold, 229 + fontWeight: fontWeight.semiBold, 230 230 }, 231 231 'xs-bold': { 232 232 fontSize: 13, 233 233 letterSpacing: tokens.TRACKING, 234 - fontWeight: fontWeight.bold, 234 + fontWeight: fontWeight.semiBold, 235 235 }, 236 236 'xs-heavy': { 237 237 fontSize: 13, 238 238 letterSpacing: tokens.TRACKING, 239 - fontWeight: fontWeight.heavy, 239 + fontWeight: fontWeight.bold, 240 240 }, 241 241 242 242 'title-2xl': { 243 243 fontSize: 34, 244 244 letterSpacing: tokens.TRACKING, 245 - fontWeight: fontWeight.bold, 245 + fontWeight: fontWeight.semiBold, 246 246 }, 247 247 'title-xl': { 248 248 fontSize: 28, 249 249 letterSpacing: tokens.TRACKING, 250 - fontWeight: fontWeight.bold, 250 + fontWeight: fontWeight.semiBold, 251 251 }, 252 252 'title-lg': { 253 253 fontSize: 22, 254 - fontWeight: fontWeight.bold, 254 + fontWeight: fontWeight.semiBold, 255 255 }, 256 256 title: { 257 - fontWeight: fontWeight.bold, 257 + fontWeight: fontWeight.semiBold, 258 258 fontSize: 20, 259 259 letterSpacing: tokens.TRACKING, 260 260 }, 261 261 'title-sm': { 262 - fontWeight: fontWeight.bold, 262 + fontWeight: fontWeight.semiBold, 263 263 fontSize: 17, 264 264 letterSpacing: tokens.TRACKING, 265 265 }, ··· 274 274 fontWeight: fontWeight.normal, 275 275 }, 276 276 'button-lg': { 277 - fontWeight: fontWeight.bold, 277 + fontWeight: fontWeight.semiBold, 278 278 fontSize: 18, 279 279 letterSpacing: tokens.TRACKING, 280 280 }, 281 281 button: { 282 - fontWeight: fontWeight.bold, 282 + fontWeight: fontWeight.semiBold, 283 283 fontSize: 14, 284 284 letterSpacing: tokens.TRACKING, 285 285 }, ··· 296 296 palette: { 297 297 ...defaultTheme.palette, 298 298 default: { 299 - background: darkPalette.black, 299 + background: darkPalette.contrast_0, 300 300 backgroundLight: darkPalette.contrast_25, 301 301 text: darkPalette.white, 302 302 textLight: darkPalette.contrast_600, ··· 345 345 ...darkTheme.palette, 346 346 default: { 347 347 ...darkTheme.palette.default, 348 - background: dimPalette.black, 348 + background: dimPalette.contrast_0, 349 349 backgroundLight: dimPalette.contrast_25, 350 350 text: dimPalette.white, 351 351 textLight: dimPalette.contrast_700,
+393 -383
src/locale/locales/en/messages.po
··· 95 95 msgid "{0, plural, one {following} other {following}}" 96 96 msgstr "" 97 97 98 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:479 98 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:480 99 99 msgid "{0, plural, one {like} other {likes}}" 100 100 msgstr "" 101 101 ··· 103 103 msgid "{0, plural, one {post} other {posts}}" 104 104 msgstr "" 105 105 106 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:463 106 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:464 107 107 msgid "{0, plural, one {quote} other {quotes}}" 108 108 msgstr "" 109 109 110 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:445 110 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:446 111 111 msgid "{0, plural, one {repost} other {reposts}}" 112 112 msgstr "" 113 113 114 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:490 114 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:491 115 115 msgid "{0, plural, one {save} other {saves}}" 116 116 msgstr "" 117 117 ··· 120 120 msgstr "" 121 121 122 122 #. Number of users (always at least 25) who have joined Bluesky using a specific starter pack 123 - #: src/screens/StarterPack/StarterPackScreen.tsx:490 123 + #: src/screens/StarterPack/StarterPackScreen.tsx:494 124 124 msgid "{0, plural, other {# people have}} used this starter pack!" 125 125 msgstr "" 126 126 ··· 129 129 msgstr "" 130 130 131 131 #. Pattern: {wordValue} in tags 132 - #: src/components/dialogs/MutedWords.tsx:475 132 + #: src/components/dialogs/MutedWords.tsx:481 133 133 msgid "{0} <0>in <1>tags</1></0>" 134 134 msgstr "" 135 135 136 136 #. Pattern: {wordValue} in text, tags 137 - #: src/components/dialogs/MutedWords.tsx:465 137 + #: src/components/dialogs/MutedWords.tsx:470 138 138 msgid "{0} <0>in <1>text & tags</1></0>" 139 139 msgstr "" 140 140 ··· 150 150 msgid "{0} is not a valid URL" 151 151 msgstr "" 152 152 153 - #: src/screens/Signup/StepHandle/index.tsx:189 153 + #: src/screens/Signup/StepHandle/index.tsx:188 154 154 msgid "{0} is not available" 155 155 msgstr "" 156 156 157 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:223 157 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:232 158 158 msgid "{0} joined this week" 159 159 msgstr "" 160 160 ··· 216 216 msgid "{0}s" 217 217 msgstr "" 218 218 219 - #: src/view/shell/desktop/LeftNav.tsx:455 219 + #: src/view/shell/desktop/LeftNav.tsx:454 220 220 msgid "{count, plural, one {# unread item} other {# unread items}}" 221 221 msgstr "" 222 222 223 - #: src/screens/Profile/Header/EditProfileDialog.tsx:385 223 + #: src/screens/Profile/Header/EditProfileDialog.tsx:383 224 224 msgid "{DESCRIPTION_MAX_GRAPHEMES, plural, other {Description is too long. The maximum number of characters is #.}}" 225 225 msgstr "" 226 226 227 - #: src/screens/Profile/Header/EditProfileDialog.tsx:334 227 + #: src/screens/Profile/Header/EditProfileDialog.tsx:332 228 228 msgid "{DISPLAY_NAME_MAX_GRAPHEMES, plural, other {Display name is too long. The maximum number of characters is #.}}" 229 229 msgstr "" 230 230 ··· 505 505 msgid "⚠Invalid Handle" 506 506 msgstr "" 507 507 508 - #: src/components/dialogs/MutedWords.tsx:193 508 + #: src/components/dialogs/MutedWords.tsx:198 509 509 msgid "24 hours" 510 510 msgstr "" 511 511 ··· 513 513 msgid "2FA Confirmation" 514 514 msgstr "" 515 515 516 - #: src/components/dialogs/MutedWords.tsx:232 516 + #: src/components/dialogs/MutedWords.tsx:237 517 517 msgid "30 days" 518 518 msgstr "" 519 519 520 - #: src/components/dialogs/MutedWords.tsx:217 520 + #: src/components/dialogs/MutedWords.tsx:222 521 521 msgid "7 days" 522 522 msgstr "" 523 523 ··· 613 613 msgid "Account Muted by List" 614 614 msgstr "" 615 615 616 - #: src/screens/Settings/Settings.tsx:624 616 + #: src/screens/Settings/Settings.tsx:626 617 617 msgid "Account options" 618 618 msgstr "" 619 619 620 - #: src/screens/Settings/Settings.tsx:660 620 + #: src/screens/Settings/Settings.tsx:662 621 621 msgid "Account removed from quick access" 622 622 msgstr "" 623 623 ··· 638 638 msgid "Account unmuted" 639 639 msgstr "" 640 640 641 - #: src/components/verification/VerifierDialog.tsx:96 641 + #: src/components/verification/VerifierDialog.tsx:97 642 642 msgid "Accounts with a scalloped blue check mark <0><1/></0> can verify others. These trusted verifiers are selected by Bluesky." 643 643 msgstr "" 644 644 ··· 653 653 msgstr "" 654 654 655 655 #: src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx:169 656 - #: src/components/dialogs/MutedWords.tsx:328 656 + #: src/components/dialogs/MutedWords.tsx:333 657 657 #: src/components/dialogs/StarterPackDialog.tsx:371 658 658 #: src/components/dialogs/StarterPackDialog.tsx:377 659 659 #: src/view/com/modals/UserAddRemoveLists.tsx:284 660 660 msgid "Add" 661 661 msgstr "" 662 662 663 - #: src/screens/StarterPack/Wizard/index.tsx:608 663 + #: src/screens/StarterPack/Wizard/index.tsx:613 664 664 msgid "Add {0} more to continue" 665 665 msgstr "" 666 666 ··· 689 689 690 690 #: src/view/com/composer/GifAltText.tsx:76 691 691 #: src/view/com/composer/GifAltText.tsx:144 692 - #: src/view/com/composer/GifAltText.tsx:210 692 + #: src/view/com/composer/GifAltText.tsx:211 693 693 #: src/view/com/composer/photos/Gallery.tsx:170 694 694 #: src/view/com/composer/photos/Gallery.tsx:217 695 695 #: src/view/com/composer/photos/ImageAltTextDialog.tsx:88 ··· 701 701 msgid "Add alt text (optional)" 702 702 msgstr "" 703 703 704 - #: src/screens/Settings/Settings.tsx:564 705 - #: src/screens/Settings/Settings.tsx:567 704 + #: src/screens/Settings/Settings.tsx:566 705 + #: src/screens/Settings/Settings.tsx:569 706 706 #: src/view/shell/desktop/LeftNav.tsx:262 707 707 #: src/view/shell/desktop/LeftNav.tsx:266 708 708 msgid "Add another account" ··· 740 740 msgid "Add more details (optional)" 741 741 msgstr "" 742 742 743 - #: src/components/dialogs/MutedWords.tsx:321 743 + #: src/components/dialogs/MutedWords.tsx:326 744 744 msgid "Add mute word with chosen settings" 745 745 msgstr "" 746 746 747 - #: src/components/dialogs/MutedWords.tsx:112 747 + #: src/components/dialogs/MutedWords.tsx:117 748 748 msgid "Add muted words and tags" 749 749 msgstr "" 750 750 ··· 828 828 msgid "Adult Content" 829 829 msgstr "" 830 830 831 - #: src/screens/Moderation/index.tsx:423 831 + #: src/screens/Moderation/index.tsx:429 832 832 msgid "Adult content can only be enabled via the Web at <0>bsky.app</0>." 833 833 msgstr "" 834 834 835 - #: src/components/moderation/LabelPreference.tsx:246 835 + #: src/components/moderation/LabelPreference.tsx:251 836 836 msgid "Adult content is disabled." 837 837 msgstr "" 838 838 ··· 841 841 msgid "Adult Content labels" 842 842 msgstr "" 843 843 844 - #: src/screens/Moderation/index.tsx:473 844 + #: src/screens/Moderation/index.tsx:479 845 845 msgid "Advanced" 846 846 msgstr "" 847 847 ··· 991 991 msgid "An error occurred while generating your starter pack. Want to try again?" 992 992 msgstr "" 993 993 994 - #: src/components/Post/Embed/VideoEmbed/index.tsx:157 994 + #: src/components/Post/Embed/VideoEmbed/index.tsx:160 995 995 msgid "An error occurred while loading the video. Please try again later." 996 996 msgstr "" 997 997 998 - #: src/components/Post/Embed/VideoEmbed/index.web.tsx:232 998 + #: src/components/Post/Embed/VideoEmbed/index.web.tsx:244 999 999 msgid "An error occurred while loading the video. Please try again." 1000 1000 msgstr "" 1001 1001 ··· 1145 1145 msgstr "" 1146 1146 1147 1147 #: src/components/moderation/LabelsOnMeDialog.tsx:258 1148 - #: src/screens/Messages/components/ChatDisabled.tsx:98 1148 + #: src/screens/Messages/components/ChatDisabled.tsx:103 1149 1149 msgctxt "toast" 1150 1150 msgid "Appeal submitted" 1151 1151 msgstr "" ··· 1159 1159 msgid "Appeal Suspension" 1160 1160 msgstr "" 1161 1161 1162 - #: src/screens/Messages/components/ChatDisabled.tsx:52 1163 - #: src/screens/Messages/components/ChatDisabled.tsx:54 1164 - #: src/screens/Messages/components/ChatDisabled.tsx:106 1165 - #: src/screens/Messages/components/ChatDisabled.tsx:108 1162 + #: src/screens/Messages/components/ChatDisabled.tsx:57 1163 + #: src/screens/Messages/components/ChatDisabled.tsx:59 1164 + #: src/screens/Messages/components/ChatDisabled.tsx:111 1165 + #: src/screens/Messages/components/ChatDisabled.tsx:113 1166 1166 msgid "Appeal this decision" 1167 1167 msgstr "" 1168 1168 ··· 1183 1183 msgid "Apply Pull Request" 1184 1184 msgstr "" 1185 1185 1186 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:659 1186 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:660 1187 1187 msgid "Archived from {0}" 1188 1188 msgstr "" 1189 1189 1190 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:628 1191 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:667 1190 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:629 1191 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:668 1192 1192 msgid "Archived post" 1193 1193 msgstr "" 1194 1194 ··· 1200 1200 msgid "Are you sure you want to delete this message? The message will be deleted for you, but not for the other participant." 1201 1201 msgstr "" 1202 1202 1203 - #: src/screens/StarterPack/StarterPackScreen.tsx:657 1203 + #: src/screens/StarterPack/StarterPackScreen.tsx:661 1204 1204 msgid "Are you sure you want to delete this starter pack?" 1205 1205 msgstr "" 1206 1206 1207 - #: src/screens/Profile/Header/EditProfileDialog.tsx:81 1207 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:90 1208 + #: src/screens/Profile/Header/EditProfileDialog.tsx:80 1208 1209 msgid "Are you sure you want to discard your changes?" 1209 1210 msgstr "" 1210 1211 ··· 1228 1229 msgid "Are you sure you'd like to discard this post?" 1229 1230 msgstr "" 1230 1231 1231 - #: src/components/dialogs/MutedWords.tsx:433 1232 + #: src/components/dialogs/MutedWords.tsx:438 1232 1233 msgid "Are you sure?" 1233 1234 msgstr "" 1234 1235 ··· 1287 1288 #: src/screens/Login/LoginForm.tsx:341 1288 1289 #: src/screens/Login/SetNewPasswordForm.tsx:168 1289 1290 #: src/screens/Login/SetNewPasswordForm.tsx:174 1290 - #: src/screens/Messages/components/ChatDisabled.tsx:140 1291 - #: src/screens/Messages/components/ChatDisabled.tsx:141 1291 + #: src/screens/Messages/components/ChatDisabled.tsx:145 1292 + #: src/screens/Messages/components/ChatDisabled.tsx:146 1292 1293 #: src/screens/Profile/Header/Shell.tsx:158 1293 1294 #: src/screens/Settings/components/ChangePasswordDialog.tsx:271 1294 1295 #: src/screens/Settings/components/ChangePasswordDialog.tsx:280 ··· 1297 1298 msgid "Back" 1298 1299 msgstr "" 1299 1300 1300 - #: src/screens/Messages/Inbox.tsx:259 1301 + #: src/screens/Messages/Inbox.tsx:261 1301 1302 msgid "Back to Chats" 1302 1303 msgstr "" 1303 1304 1304 - #: src/view/screens/Lists.tsx:53 1305 - #: src/view/screens/ModerationModlists.tsx:53 1305 + #: src/view/screens/Lists.tsx:42 1306 + #: src/view/screens/ModerationModlists.tsx:42 1306 1307 msgid "Before creating a list, you must first verify your email." 1307 1308 msgstr "" 1308 1309 ··· 1326 1327 1327 1328 #: src/components/dms/dialogs/NewChatDialog.tsx:54 1328 1329 #: src/components/dms/MessageProfileButton.tsx:58 1329 - #: src/screens/Messages/ChatList.tsx:369 1330 + #: src/screens/Messages/ChatList.tsx:371 1330 1331 #: src/screens/Messages/Conversation.tsx:228 1331 1332 msgid "Before you can message another user, you must first verify your email." 1332 1333 msgstr "" ··· 1375 1376 msgid "Block accounts" 1376 1377 msgstr "" 1377 1378 1378 - #: src/components/dms/ReportDialog.tsx:322 1379 + #: src/components/dms/ReportDialog.tsx:323 1379 1380 msgid "Block and Delete" 1380 1381 msgstr "" 1381 1382 1382 - #: src/components/dms/ReportDialog.tsx:357 1383 + #: src/components/dms/ReportDialog.tsx:358 1383 1384 msgid "Block and/or delete this conversation" 1384 1385 msgstr "" 1385 1386 ··· 1395 1396 msgid "Block these accounts?" 1396 1397 msgstr "" 1397 1398 1398 - #: src/components/dms/ReportDialog.tsx:361 1399 - #: src/components/dms/ReportDialog.tsx:364 1399 + #: src/components/dms/ReportDialog.tsx:362 1400 + #: src/components/dms/ReportDialog.tsx:365 1400 1401 msgid "Block user" 1401 1402 msgstr "" 1402 1403 1403 - #: src/components/dms/ReportDialog.tsx:328 1404 + #: src/components/dms/ReportDialog.tsx:329 1404 1405 msgid "Block User" 1405 1406 msgstr "" 1406 1407 ··· 1408 1409 msgid "Blocked" 1409 1410 msgstr "" 1410 1411 1411 - #: src/screens/Moderation/index.tsx:301 1412 + #: src/screens/Moderation/index.tsx:306 1412 1413 msgid "Blocked accounts" 1413 1414 msgstr "" 1414 1415 ··· 1438 1439 msgid "Blocking will not prevent labels from being applied on your account, but it will stop this account from replying in your threads or interacting with you." 1439 1440 msgstr "" 1440 1441 1441 - #: src/view/com/auth/SplashScreen.web.tsx:175 1442 + #: src/view/com/auth/SplashScreen.web.tsx:179 1442 1443 msgid "Blog" 1443 1444 msgstr "" 1444 1445 ··· 1551 1552 msgid "Browse topic {displayName}" 1552 1553 msgstr "" 1553 1554 1554 - #: src/view/com/auth/SplashScreen.web.tsx:170 1555 + #: src/view/com/auth/SplashScreen.web.tsx:174 1555 1556 msgid "Business" 1556 1557 msgstr "" 1557 1558 ··· 1603 1604 #: src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx:131 1604 1605 #: src/components/dialogs/InAppBrowserConsent.tsx:98 1605 1606 #: src/components/dialogs/InAppBrowserConsent.tsx:104 1607 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:274 1608 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:282 1606 1609 #: src/components/live/GoLiveDialog.tsx:247 1607 1610 #: src/components/live/GoLiveDialog.tsx:253 1608 1611 #: src/components/Menu/index.tsx:350 ··· 1610 1613 #: src/components/Prompt.tsx:144 1611 1614 #: src/components/Prompt.tsx:146 1612 1615 #: src/screens/Deactivated.tsx:158 1613 - #: src/screens/Profile/Header/EditProfileDialog.tsx:220 1614 - #: src/screens/Profile/Header/EditProfileDialog.tsx:228 1616 + #: src/screens/Profile/Header/EditProfileDialog.tsx:218 1617 + #: src/screens/Profile/Header/EditProfileDialog.tsx:226 1615 1618 #: src/screens/Search/Shell.tsx:349 1616 1619 #: src/screens/Settings/AppIconSettings/index.tsx:44 1617 - #: src/screens/Settings/AppIconSettings/index.tsx:225 1620 + #: src/screens/Settings/AppIconSettings/index.tsx:230 1618 1621 #: src/screens/Settings/components/ChangeHandleDialog.tsx:78 1619 1622 #: src/screens/Settings/components/ChangeHandleDialog.tsx:85 1620 1623 #: src/screens/Settings/components/ChangePasswordDialog.tsx:246 ··· 1644 1647 msgid "Cancel account deletion" 1645 1648 msgstr "" 1646 1649 1647 - #: src/view/com/modals/CropImage.web.tsx:94 1648 - msgid "Cancel image crop" 1649 - msgstr "" 1650 - 1651 1650 #: src/components/PostControls/RepostButton.tsx:204 1652 1651 msgid "Cancel quote post" 1653 1652 msgstr "" ··· 1685 1684 msgstr "" 1686 1685 1687 1686 #: src/screens/Settings/AppIconSettings/index.tsx:38 1688 - #: src/screens/Settings/AppIconSettings/index.tsx:221 1687 + #: src/screens/Settings/AppIconSettings/index.tsx:226 1689 1688 msgid "Change app icon to \"{0}\"" 1690 1689 msgstr "" 1691 1690 ··· 1723 1722 msgid "Change your password" 1724 1723 msgstr "" 1725 1724 1726 - #: src/screens/Settings/AppIconSettings/index.tsx:216 1725 + #: src/screens/Settings/AppIconSettings/index.tsx:221 1727 1726 msgid "Changes app icon" 1728 1727 msgstr "" 1729 1728 ··· 1778 1777 #: src/Navigation.tsx:554 1779 1778 #: src/screens/Messages/ChatList.tsx:81 1780 1779 #: src/screens/Messages/ChatList.tsx:85 1781 - #: src/screens/Messages/ChatList.tsx:378 1780 + #: src/screens/Messages/ChatList.tsx:380 1782 1781 msgid "Chat settings" 1783 1782 msgstr "" 1784 1783 ··· 1792 1791 msgstr "" 1793 1792 1794 1793 #: src/screens/Messages/ChatList.tsx:76 1795 - #: src/screens/Messages/ChatList.tsx:394 1796 - #: src/screens/Messages/ChatList.tsx:418 1794 + #: src/screens/Messages/ChatList.tsx:396 1795 + #: src/screens/Messages/ChatList.tsx:420 1797 1796 msgid "Chats" 1798 1797 msgstr "" 1799 1798 ··· 1846 1845 msgid "Choose your own timeline! Feeds built by the community help you find content you love." 1847 1846 msgstr "" 1848 1847 1849 - #: src/screens/Signup/StepInfo/index.tsx:245 1848 + #: src/screens/Signup/StepInfo/index.tsx:244 1850 1849 msgid "Choose your password" 1851 1850 msgstr "" 1852 1851 1853 - #: src/screens/Signup/index.tsx:175 1852 + #: src/screens/Signup/index.tsx:181 1854 1853 msgid "Choose your username" 1855 1854 msgstr "" 1856 1855 ··· 1925 1924 #: src/components/dialogs/SearchablePeopleList.tsx:295 1926 1925 #: src/components/dialogs/StarterPackDialog.tsx:179 1927 1926 #: src/components/dms/EmojiPopup.android.tsx:58 1928 - #: src/components/dms/ReportDialog.tsx:386 1929 - #: src/components/dms/ReportDialog.tsx:395 1927 + #: src/components/dms/ReportDialog.tsx:387 1928 + #: src/components/dms/ReportDialog.tsx:396 1930 1929 #: src/components/live/EditLiveDialog.tsx:229 1931 1930 #: src/components/live/EditLiveDialog.tsx:235 1932 1931 #: src/components/NewskieDialog.tsx:167 ··· 1936 1935 #: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:118 1937 1936 #: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:124 1938 1937 #: src/components/verification/VerificationsDialog.tsx:144 1939 - #: src/components/verification/VerifierDialog.tsx:149 1938 + #: src/components/verification/VerifierDialog.tsx:150 1940 1939 #: src/components/WhoCanReply.tsx:202 1941 1940 #: src/components/WhoCanReply.tsx:209 1942 1941 #: src/screens/Settings/components/ChangePasswordDialog.tsx:286 1943 1942 #: src/screens/Settings/components/ChangePasswordDialog.tsx:291 1944 1943 #: src/view/com/composer/select-language/PostLanguageSelectDialog.tsx:313 1945 - #: src/view/com/feeds/MissingFeed.tsx:208 1946 - #: src/view/com/feeds/MissingFeed.tsx:215 1944 + #: src/view/com/feeds/MissingFeed.tsx:210 1945 + #: src/view/com/feeds/MissingFeed.tsx:217 1947 1946 msgid "Close" 1948 1947 msgstr "" 1949 1948 ··· 1964 1963 #: src/components/ageAssurance/AgeAssuranceInitDialog.tsx:230 1965 1964 #: src/components/dialogs/GifSelect.tsx:263 1966 1965 #: src/components/verification/VerificationsDialog.tsx:136 1967 - #: src/components/verification/VerifierDialog.tsx:141 1966 + #: src/components/verification/VerifierDialog.tsx:142 1968 1967 #: src/view/com/composer/select-language/PostLanguageSelectDialog.tsx:182 1969 1968 #: src/view/com/composer/select-language/PostLanguageSelectDialog.tsx:276 1970 1969 #: src/view/com/composer/select-language/PostLanguageSelectDialog.tsx:308 ··· 2061 2060 msgid "Complete onboarding and start using your account" 2062 2061 msgstr "" 2063 2062 2064 - #: src/screens/Signup/index.tsx:177 2063 + #: src/screens/Signup/index.tsx:183 2065 2064 msgid "Complete the challenge" 2066 2065 msgstr "" 2067 2066 2068 - #: src/view/shell/desktop/LeftNav.tsx:572 2067 + #: src/view/shell/desktop/LeftNav.tsx:573 2069 2068 msgid "Compose new post" 2070 2069 msgstr "" 2071 2070 ··· 2085 2084 msgid "Configure content filtering setting for category: {name}" 2086 2085 msgstr "" 2087 2086 2088 - #: src/components/moderation/LabelPreference.tsx:248 2087 + #: src/components/moderation/LabelPreference.tsx:253 2089 2088 msgid "Configured in <0>moderation settings</0>." 2090 2089 msgstr "" 2091 2090 ··· 2104 2103 msgid "Confirm delete account" 2105 2104 msgstr "" 2106 2105 2107 - #: src/screens/Moderation/index.tsx:349 2106 + #: src/screens/Moderation/index.tsx:354 2108 2107 msgid "Confirm your age:" 2109 2108 msgstr "" 2110 2109 2111 - #: src/screens/Moderation/index.tsx:340 2110 + #: src/screens/Moderation/index.tsx:345 2112 2111 msgid "Confirm your birthdate" 2113 2112 msgstr "" 2114 2113 2115 2114 #: src/components/ageAssurance/AgeAssuranceAccountCard.tsx:89 2116 - #: src/components/BlockedGeoOverlay.tsx:141 2117 - #: src/components/BlockedGeoOverlay.tsx:147 2115 + #: src/components/BlockedGeoOverlay.tsx:140 2116 + #: src/components/BlockedGeoOverlay.tsx:146 2118 2117 #: src/components/dialogs/DeviceLocationRequestDialog.tsx:45 2119 2118 #: src/components/dialogs/DeviceLocationRequestDialog.tsx:112 2120 2119 msgid "Confirm your location" 2121 2120 msgstr "" 2122 2121 2123 - #: src/components/BlockedGeoOverlay.tsx:135 2122 + #: src/components/BlockedGeoOverlay.tsx:134 2124 2123 msgid "Confirm your location with GPS. Your location data is not tracked and does not leave your device." 2125 2124 msgstr "" 2126 2125 ··· 2149 2148 msgstr "" 2150 2149 2151 2150 #: src/components/ageAssurance/AgeAssuranceInitDialog.tsx:155 2152 - #: src/screens/Signup/index.tsx:212 2153 - #: src/screens/Signup/index.tsx:215 2151 + #: src/screens/Signup/index.tsx:222 2152 + #: src/screens/Signup/index.tsx:225 2154 2153 msgid "Contact support" 2155 2154 msgstr "" 2156 2155 ··· 2175 2174 msgid "Content Blocked" 2176 2175 msgstr "" 2177 2176 2178 - #: src/screens/Moderation/index.tsx:336 2179 - #: src/screens/Moderation/index.tsx:370 2177 + #: src/screens/Moderation/index.tsx:341 2178 + #: src/screens/Moderation/index.tsx:375 2180 2179 msgid "Content filters" 2181 2180 msgstr "" 2182 2181 ··· 2195 2194 msgstr "" 2196 2195 2197 2196 #: src/components/moderation/ModerationDetailsDialog.tsx:50 2198 - #: src/components/moderation/ScreenHider.tsx:93 2197 + #: src/components/moderation/ScreenHider.tsx:99 2199 2198 #: src/lib/moderation/useGlobalLabelStrings.ts:22 2200 2199 #: src/lib/moderation/useModerationCauseDescription.ts:45 2201 2200 msgid "Content Warning" ··· 2240 2239 msgid "Conversation" 2241 2240 msgstr "" 2242 2241 2243 - #: src/components/dms/ReportDialog.tsx:323 2244 - #: src/components/dms/ReportDialog.tsx:326 2242 + #: src/components/dms/ReportDialog.tsx:324 2243 + #: src/components/dms/ReportDialog.tsx:327 2245 2244 msgctxt "toast" 2246 2245 msgid "Conversation deleted" 2247 2246 msgstr "" ··· 2315 2314 msgstr "" 2316 2315 2317 2316 #: src/components/StarterPack/ShareDialog.tsx:113 2318 - #: src/screens/StarterPack/StarterPackScreen.tsx:617 2317 + #: src/screens/StarterPack/StarterPackScreen.tsx:621 2319 2318 msgid "Copy link" 2320 2319 msgstr "" 2321 2320 ··· 2323 2322 msgid "Copy Link" 2324 2323 msgstr "" 2325 2324 2326 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:172 2327 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:176 2325 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:165 2326 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:169 2328 2327 msgid "Copy link to list" 2329 2328 msgstr "" 2330 2329 ··· 2340 2339 msgid "Copy link to profile" 2341 2340 msgstr "" 2342 2341 2343 - #: src/screens/StarterPack/StarterPackScreen.tsx:610 2342 + #: src/screens/StarterPack/StarterPackScreen.tsx:614 2344 2343 msgid "Copy link to starter pack" 2345 2344 msgstr "" 2346 2345 ··· 2387 2386 msgstr "" 2388 2387 2389 2388 #: src/components/dms/LeaveConvoPrompt.tsx:35 2390 - #: src/components/dms/ReportDialog.tsx:315 2389 + #: src/components/dms/ReportDialog.tsx:316 2391 2390 msgid "Could not leave chat" 2392 2391 msgstr "" 2393 2392 ··· 2454 2453 msgid "Create account" 2455 2454 msgstr "" 2456 2455 2457 - #: src/screens/Signup/index.tsx:122 2456 + #: src/screens/Signup/index.tsx:124 2458 2457 msgid "Create Account" 2459 2458 msgstr "" 2460 2459 ··· 2464 2463 msgid "Create an account" 2465 2464 msgstr "" 2466 2465 2467 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:303 2468 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:310 2466 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:312 2467 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:319 2469 2468 msgid "Create an account without using this starter pack" 2470 2469 msgstr "" 2471 2470 ··· 2477 2476 msgid "Create another" 2478 2477 msgstr "" 2479 2478 2480 - #: src/view/com/auth/SplashScreen.tsx:47 2481 - #: src/view/com/auth/SplashScreen.web.tsx:109 2479 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:350 2480 + msgid "Create moderation list" 2481 + msgstr "" 2482 + 2483 + #: src/view/com/auth/SplashScreen.tsx:64 2484 + #: src/view/com/auth/SplashScreen.web.tsx:113 2482 2485 msgid "Create new account" 2483 2486 msgstr "" 2484 2487 ··· 2490 2493 #: src/components/dialogs/StarterPackDialog.tsx:107 2491 2494 #: src/components/dialogs/StarterPackDialog.tsx:196 2492 2495 msgid "Create starter pack" 2496 + msgstr "" 2497 + 2498 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:349 2499 + msgid "Create user list" 2493 2500 msgstr "" 2494 2501 2495 2502 #: src/screens/Settings/AppPasswords.tsx:174 ··· 2513 2520 msgid "Customize who can interact with this post." 2514 2521 msgstr "" 2515 2522 2516 - #: src/screens/Onboarding/Layout.tsx:61 2523 + #: src/screens/Onboarding/Layout.tsx:60 2517 2524 msgid "Customizes your Bluesky experience" 2518 2525 msgstr "" 2519 2526 ··· 2537 2544 msgid "Dark theme" 2538 2545 msgstr "" 2539 2546 2540 - #: src/screens/Signup/StepInfo/index.tsx:273 2547 + #: src/screens/Signup/StepInfo/index.tsx:272 2541 2548 msgid "Date of birth" 2542 2549 msgstr "" 2543 2550 ··· 2566 2573 #: src/components/dms/MessageContextMenu.tsx:185 2567 2574 #: src/components/PostControls/PostMenu/PostMenuItems.tsx:704 2568 2575 #: src/screens/Messages/components/ChatStatusInfo.tsx:55 2569 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:285 2576 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:280 2570 2577 #: src/screens/Settings/AppPasswords.tsx:212 2571 - #: src/screens/StarterPack/StarterPackScreen.tsx:599 2572 - #: src/screens/StarterPack/StarterPackScreen.tsx:688 2573 - #: src/screens/StarterPack/StarterPackScreen.tsx:760 2578 + #: src/screens/StarterPack/StarterPackScreen.tsx:603 2579 + #: src/screens/StarterPack/StarterPackScreen.tsx:692 2580 + #: src/screens/StarterPack/StarterPackScreen.tsx:764 2574 2581 msgid "Delete" 2575 2582 msgstr "" 2576 2583 ··· 2600 2607 msgid "Delete chat declaration record" 2601 2608 msgstr "" 2602 2609 2603 - #: src/components/dms/ReportDialog.tsx:367 2604 - #: src/components/dms/ReportDialog.tsx:370 2610 + #: src/components/dms/ReportDialog.tsx:368 2611 + #: src/components/dms/ReportDialog.tsx:371 2605 2612 #: src/screens/Messages/components/RequestButtons.tsx:136 2606 2613 #: src/screens/Messages/components/RequestButtons.tsx:139 2607 2614 msgid "Delete conversation" 2608 2615 msgstr "" 2609 2616 2610 - #: src/components/dms/ReportDialog.tsx:325 2617 + #: src/components/dms/ReportDialog.tsx:326 2611 2618 msgid "Delete Conversation" 2612 2619 msgstr "" 2613 2620 ··· 2615 2622 msgid "Delete for me" 2616 2623 msgstr "" 2617 2624 2618 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:211 2619 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:214 2625 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:204 2626 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:207 2620 2627 msgid "Delete list" 2621 2628 msgstr "" 2622 2629 ··· 2638 2645 msgid "Delete post" 2639 2646 msgstr "" 2640 2647 2641 - #: src/screens/StarterPack/StarterPackScreen.tsx:593 2642 - #: src/screens/StarterPack/StarterPackScreen.tsx:751 2648 + #: src/screens/StarterPack/StarterPackScreen.tsx:597 2649 + #: src/screens/StarterPack/StarterPackScreen.tsx:755 2643 2650 msgid "Delete starter pack" 2644 2651 msgstr "" 2645 2652 2646 - #: src/screens/StarterPack/StarterPackScreen.tsx:654 2653 + #: src/screens/StarterPack/StarterPackScreen.tsx:658 2647 2654 msgid "Delete starter pack?" 2648 2655 msgstr "" 2649 2656 2650 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:280 2657 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:275 2651 2658 msgid "Delete this list?" 2652 2659 msgstr "" 2653 2660 ··· 2741 2748 #: src/lib/moderation/useLabelBehaviorDescription.ts:71 2742 2749 #: src/screens/Messages/Settings.tsx:144 2743 2750 #: src/screens/Messages/Settings.tsx:147 2744 - #: src/screens/Moderation/index.tsx:413 2751 + #: src/screens/Moderation/index.tsx:419 2745 2752 msgid "Disabled" 2746 2753 msgstr "" 2747 2754 2748 - #: src/screens/Profile/Header/EditProfileDialog.tsx:83 2755 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:92 2756 + #: src/screens/Profile/Header/EditProfileDialog.tsx:82 2749 2757 #: src/view/com/composer/Composer.tsx:762 2750 2758 #: src/view/com/composer/Composer.tsx:957 2751 2759 msgid "Discard" 2752 2760 msgstr "" 2753 2761 2754 - #: src/screens/Profile/Header/EditProfileDialog.tsx:80 2762 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:89 2763 + #: src/screens/Profile/Header/EditProfileDialog.tsx:79 2755 2764 msgid "Discard changes?" 2756 2765 msgstr "" 2757 2766 ··· 2778 2787 msgid "Discover New Feeds" 2779 2788 msgstr "" 2780 2789 2781 - #: src/components/Dialog/index.tsx:370 2790 + #: src/components/Dialog/index.tsx:373 2782 2791 msgid "Dismiss" 2783 2792 msgstr "" 2784 2793 ··· 2803 2812 msgid "Display larger alt text badges" 2804 2813 msgstr "" 2805 2814 2806 - #: src/screens/Profile/Header/EditProfileDialog.tsx:315 2807 - #: src/screens/Profile/Header/EditProfileDialog.tsx:321 2808 - #: src/screens/Profile/Header/EditProfileDialog.tsx:372 2815 + #: src/screens/Profile/Header/EditProfileDialog.tsx:313 2816 + #: src/screens/Profile/Header/EditProfileDialog.tsx:319 2809 2817 msgid "Display name" 2810 2818 msgstr "" 2811 2819 ··· 2818 2826 msgid "DNS Panel" 2819 2827 msgstr "" 2820 2828 2821 - #: src/components/dialogs/MutedWords.tsx:302 2829 + #: src/components/dialogs/MutedWords.tsx:307 2822 2830 msgid "Do not apply this mute word to users you follow" 2823 2831 msgstr "" 2824 2832 ··· 2849 2857 2850 2858 #: src/components/dialogs/BirthDateSettings.tsx:149 2851 2859 #: src/components/dialogs/BirthDateSettings.tsx:156 2852 - #: src/components/dms/ReportDialog.tsx:319 2860 + #: src/components/dms/ReportDialog.tsx:320 2853 2861 #: src/components/forms/DateField/index.tsx:103 2854 2862 #: src/components/forms/DateField/index.tsx:109 2855 2863 #: src/components/Select/index.tsx:185 ··· 2885 2893 msgid "Double tap or long press the message to add a reaction" 2886 2894 msgstr "" 2887 2895 2888 - #: src/components/Dialog/index.tsx:371 2896 + #: src/components/Dialog/index.tsx:374 2889 2897 msgid "Double tap to close the dialog" 2890 2898 msgstr "" 2891 2899 ··· 2893 2901 msgid "Double tap to like" 2894 2902 msgstr "" 2895 2903 2896 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:321 2904 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:330 2897 2905 msgid "Download Bluesky" 2898 2906 msgstr "" 2899 2907 ··· 2906 2914 msgid "Drop to add images" 2907 2915 msgstr "" 2908 2916 2909 - #: src/components/dialogs/MutedWords.tsx:153 2917 + #: src/components/dialogs/MutedWords.tsx:158 2910 2918 msgid "Duration:" 2911 2919 msgstr "" 2912 2920 ··· 2914 2922 msgid "e.g. alice" 2915 2923 msgstr "" 2916 2924 2917 - #: src/screens/Profile/Header/EditProfileDialog.tsx:322 2925 + #: src/screens/Profile/Header/EditProfileDialog.tsx:320 2918 2926 msgid "e.g. Alice Lastname" 2919 2927 msgstr "" 2920 2928 ··· 2947 2955 msgstr "" 2948 2956 2949 2957 #: src/screens/Settings/AccountSettings.tsx:145 2950 - #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:249 2951 - #: src/screens/StarterPack/StarterPackScreen.tsx:588 2958 + #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:252 2959 + #: src/screens/StarterPack/StarterPackScreen.tsx:592 2952 2960 #: src/screens/StarterPack/Wizard/index.tsx:339 2953 2961 #: src/screens/StarterPack/Wizard/index.tsx:344 2954 2962 msgid "Edit" ··· 2985 2993 msgid "Edit interests" 2986 2994 msgstr "" 2987 2995 2988 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:203 2989 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:206 2996 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:196 2997 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:199 2990 2998 msgid "Edit list details" 2991 2999 msgstr "" 2992 3000 ··· 3004 3012 msgid "Edit My Feeds" 3005 3013 msgstr "" 3006 3014 3007 - #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:240 3015 + #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:243 3008 3016 msgid "Edit notifications from {0}" 3009 3017 msgstr "" 3010 3018 ··· 3017 3025 msgid "Edit post interaction settings" 3018 3026 msgstr "" 3019 3027 3020 - #: src/screens/Profile/Header/EditProfileDialog.tsx:270 3021 - #: src/screens/Profile/Header/EditProfileDialog.tsx:276 3028 + #: src/screens/Profile/Header/EditProfileDialog.tsx:268 3029 + #: src/screens/Profile/Header/EditProfileDialog.tsx:274 3022 3030 #: src/screens/Profile/Header/ProfileHeaderLabeler.tsx:183 3023 3031 #: src/screens/Profile/Header/ProfileHeaderStandard.tsx:190 3024 3032 msgid "Edit profile" ··· 3029 3037 msgid "Edit Profile" 3030 3038 msgstr "" 3031 3039 3032 - #: src/screens/StarterPack/StarterPackScreen.tsx:580 3040 + #: src/screens/StarterPack/StarterPackScreen.tsx:584 3033 3041 msgid "Edit starter pack" 3034 3042 msgstr "" 3035 3043 ··· 3055 3063 msgstr "" 3056 3064 3057 3065 #: src/screens/Settings/AccountSettings.tsx:66 3058 - #: src/screens/Signup/StepInfo/index.tsx:197 3066 + #: src/screens/Signup/StepInfo/index.tsx:196 3059 3067 msgid "Email" 3060 3068 msgstr "" 3061 3069 ··· 3117 3125 msgid "Enable {0} only" 3118 3126 msgstr "" 3119 3127 3120 - #: src/screens/Moderation/index.tsx:400 3128 + #: src/screens/Moderation/index.tsx:406 3121 3129 msgid "Enable adult content" 3122 3130 msgstr "" 3123 3131 ··· 3163 3171 3164 3172 #: src/screens/Messages/Settings.tsx:135 3165 3173 #: src/screens/Messages/Settings.tsx:138 3166 - #: src/screens/Moderation/index.tsx:411 3174 + #: src/screens/Moderation/index.tsx:417 3167 3175 msgid "Enabled" 3168 3176 msgstr "" 3169 3177 ··· 3179 3187 msgid "Enter a password" 3180 3188 msgstr "" 3181 3189 3182 - #: src/components/dialogs/MutedWords.tsx:127 3183 - #: src/components/dialogs/MutedWords.tsx:128 3190 + #: src/components/dialogs/MutedWords.tsx:132 3191 + #: src/components/dialogs/MutedWords.tsx:133 3184 3192 msgid "Enter a word or tag" 3185 3193 msgstr "" 3186 3194 ··· 3211 3219 msgstr "" 3212 3220 3213 3221 #: src/screens/Login/ForgotPasswordForm.tsx:99 3214 - #: src/screens/Signup/StepInfo/index.tsx:217 3222 + #: src/screens/Signup/StepInfo/index.tsx:216 3215 3223 msgid "Enter your email address" 3216 3224 msgstr "" 3217 3225 ··· 3244 3252 msgid "Error loading preference" 3245 3253 msgstr "" 3246 3254 3247 - #: src/view/com/feeds/MissingFeed.tsx:198 3255 + #: src/view/com/feeds/MissingFeed.tsx:200 3248 3256 msgid "Error message" 3249 3257 msgstr "" 3250 3258 ··· 3252 3260 msgid "Error occurred while saving file" 3253 3261 msgstr "" 3254 3262 3255 - #: src/screens/Signup/StepCaptcha/index.tsx:124 3263 + #: src/screens/Signup/StepCaptcha/index.tsx:123 3256 3264 msgid "Error receiving captcha response." 3257 3265 msgstr "" 3258 3266 ··· 3298 3306 msgid "Excessive or unwanted messages" 3299 3307 msgstr "" 3300 3308 3301 - #: src/components/dialogs/MutedWords.tsx:311 3309 + #: src/components/dialogs/MutedWords.tsx:316 3302 3310 msgid "Exclude users you follow" 3303 3311 msgstr "" 3304 3312 3305 - #: src/components/dialogs/MutedWords.tsx:514 3313 + #: src/components/dialogs/MutedWords.tsx:521 3306 3314 msgid "Excludes users you follow" 3307 3315 msgstr "" 3308 3316 ··· 3312 3320 3313 3321 #: src/view/com/modals/DeleteAccount.tsx:301 3314 3322 msgid "Exits account deletion process" 3315 - msgstr "" 3316 - 3317 - #: src/view/com/modals/CropImage.web.tsx:95 3318 - msgid "Exits image cropping process" 3319 3323 msgstr "" 3320 3324 3321 3325 #: src/view/com/lightbox/Lightbox.web.tsx:111 ··· 3350 3354 msgid "Experimental" 3351 3355 msgstr "" 3352 3356 3353 - #: src/components/dialogs/MutedWords.tsx:500 3357 + #: src/components/dialogs/MutedWords.tsx:507 3354 3358 msgid "Expired" 3355 3359 msgstr "" 3356 3360 3357 - #: src/components/dialogs/MutedWords.tsx:502 3361 + #: src/components/dialogs/MutedWords.tsx:509 3358 3362 msgid "Expires {0}" 3359 3363 msgstr "" 3360 3364 ··· 3466 3470 msgid "Failed to delete post, please try again" 3467 3471 msgstr "" 3468 3472 3469 - #: src/screens/StarterPack/StarterPackScreen.tsx:722 3473 + #: src/screens/StarterPack/StarterPackScreen.tsx:726 3470 3474 msgid "Failed to delete starter pack" 3471 3475 msgstr "" 3472 3476 ··· 3474 3478 msgid "Failed to follow all suggested accounts, please try again" 3475 3479 msgstr "" 3476 3480 3477 - #: src/screens/Messages/ChatList.tsx:281 3478 - #: src/screens/Messages/Inbox.tsx:208 3481 + #: src/screens/Messages/ChatList.tsx:282 3482 + #: src/screens/Messages/Inbox.tsx:209 3479 3483 msgid "Failed to load conversations" 3480 3484 msgstr "" 3481 3485 ··· 3523 3527 msgid "Failed to load suggested follows" 3524 3528 msgstr "" 3525 3529 3526 - #: src/screens/Messages/Inbox.tsx:316 3527 - #: src/screens/Messages/Inbox.tsx:339 3530 + #: src/screens/Messages/Inbox.tsx:318 3531 + #: src/screens/Messages/Inbox.tsx:341 3528 3532 msgid "Failed to mark all requests as read" 3529 3533 msgstr "" 3530 3534 ··· 3572 3576 msgstr "" 3573 3577 3574 3578 #: src/components/moderation/LabelsOnMeDialog.tsx:254 3575 - #: src/screens/Messages/components/ChatDisabled.tsx:94 3579 + #: src/screens/Messages/components/ChatDisabled.tsx:99 3576 3580 msgid "Failed to submit appeal, please try again." 3577 3581 msgstr "" 3578 3582 ··· 3580 3584 msgid "Failed to toggle thread mute, please try again" 3581 3585 msgstr "" 3582 3586 3583 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:111 3587 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:104 3584 3588 msgid "Failed to unpin list" 3585 3589 msgstr "" 3586 3590 ··· 3633 3637 msgid "Feed creator" 3634 3638 msgstr "" 3635 3639 3636 - #: src/view/com/feeds/MissingFeed.tsx:188 3640 + #: src/view/com/feeds/MissingFeed.tsx:189 3637 3641 msgid "Feed identifier" 3638 3642 msgstr "" 3639 3643 ··· 3936 3940 msgid "For You" 3937 3941 msgstr "" 3938 3942 3939 - #: src/components/dialogs/MutedWords.tsx:178 3943 + #: src/components/dialogs/MutedWords.tsx:183 3940 3944 msgid "Forever" 3941 3945 msgstr "" 3942 3946 ··· 4095 4099 #: src/components/dms/ReportDialog.tsx:197 4096 4100 #: src/components/ReportDialog/SelectReportOptionView.tsx:81 4097 4101 #: src/components/ReportDialog/SubmitView.tsx:110 4098 - #: src/screens/Onboarding/Layout.tsx:121 4099 - #: src/screens/Onboarding/Layout.tsx:214 4102 + #: src/screens/Onboarding/Layout.tsx:120 4103 + #: src/screens/Onboarding/Layout.tsx:213 4100 4104 #: src/screens/Signup/BackNextButtons.tsx:35 4101 4105 msgid "Go back to previous step" 4102 4106 msgstr "" ··· 4212 4216 msgid "Have a code? <0>Click here.</0>" 4213 4217 msgstr "" 4214 4218 4215 - #: src/screens/Signup/index.tsx:210 4219 + #: src/screens/Signup/index.tsx:220 4216 4220 msgid "Having trouble?" 4217 4221 msgstr "" 4218 4222 ··· 4238 4242 msgstr "" 4239 4243 4240 4244 #: src/components/VideoPostCard.tsx:178 4241 - #: src/components/VideoPostCard.tsx:460 4245 + #: src/components/VideoPostCard.tsx:462 4242 4246 msgid "Hidden" 4243 4247 msgstr "" 4244 4248 ··· 4410 4414 msgid "If you are not yet an adult according to the laws of your country, your parent or legal guardian must read these Terms on your behalf." 4411 4415 msgstr "" 4412 4416 4413 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:282 4417 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:277 4414 4418 msgid "If you delete this list, you won't be able to recover it." 4415 4419 msgstr "" 4416 4420 ··· 4434 4438 msgid "If you want to change your password, we will send you a code to verify that this is your account." 4435 4439 msgstr "" 4436 4440 4437 - #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:154 4441 + #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:157 4438 4442 msgid "If you want to restrict who can receive notifications for your account's activity, you can change this in <0>Settings → Privacy and Security</0>." 4439 4443 msgstr "" 4440 4444 ··· 4516 4520 msgstr "" 4517 4521 4518 4522 #. Title message shown in chat requests inbox when it's empty 4519 - #: src/screens/Messages/Inbox.tsx:229 4523 + #: src/screens/Messages/Inbox.tsx:231 4520 4524 msgid "Inbox zero!" 4521 4525 msgstr "" 4522 4526 ··· 4548 4552 msgid "Interaction limited" 4549 4553 msgstr "" 4550 4554 4551 - #: src/screens/Moderation/index.tsx:241 4555 + #: src/screens/Moderation/index.tsx:246 4552 4556 msgid "Interaction settings" 4553 4557 msgstr "" 4554 4558 ··· 4585 4589 msgid "Invite code" 4586 4590 msgstr "" 4587 4591 4588 - #: src/screens/Signup/state.ts:340 4592 + #: src/screens/Signup/state.ts:342 4589 4593 msgid "Invite code not accepted. Check that you input it correctly and try again." 4590 4594 msgstr "" 4591 4595 ··· 4613 4617 msgid "Is your location not accurate? <0>Tap here to confirm your location.</0>" 4614 4618 msgstr "" 4615 4619 4616 - #: src/screens/Signup/StepInfo/index.tsx:293 4620 + #: src/screens/Signup/StepInfo/index.tsx:292 4617 4621 msgid "It's correct" 4618 4622 msgstr "" 4619 4623 ··· 4630 4634 msgstr "" 4631 4635 4632 4636 #. Link to a page with job openings at Bluesky 4633 - #: src/view/com/auth/SplashScreen.web.tsx:180 4637 + #: src/view/com/auth/SplashScreen.web.tsx:184 4634 4638 msgid "Jobs" 4635 4639 msgstr "" 4636 4640 4637 4641 #: src/components/LoggedOutCTA.tsx:54 4638 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:205 4639 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:211 4642 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:210 4643 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:216 4640 4644 #: src/screens/StarterPack/StarterPackScreen.tsx:466 4641 4645 #: src/screens/StarterPack/StarterPackScreen.tsx:477 4642 4646 msgid "Join Bluesky" 4643 4647 msgstr "" 4644 4648 4645 - #: src/components/StarterPack/QrCode.tsx:68 4649 + #: src/components/StarterPack/QrCode.tsx:73 4646 4650 #: src/view/shell/NavSignupCard.tsx:40 4647 4651 msgid "Join the conversation" 4648 4652 msgstr "" ··· 4726 4730 msgstr "" 4727 4731 4728 4732 #: src/components/verification/VerificationsDialog.tsx:170 4729 - #: src/components/verification/VerifierDialog.tsx:137 4733 + #: src/components/verification/VerifierDialog.tsx:138 4730 4734 #: src/screens/Moderation/VerificationSettings.tsx:48 4731 - #: src/screens/Profile/Header/EditProfileDialog.tsx:351 4735 + #: src/screens/Profile/Header/EditProfileDialog.tsx:349 4732 4736 #: src/screens/Settings/components/ChangeHandleDialog.tsx:213 4733 4737 #: src/screens/Settings/components/ChangeHandleDialog.tsx:277 4734 4738 msgctxt "english-only-resource" 4735 4739 msgid "Learn more" 4736 4740 msgstr "" 4737 4741 4738 - #: src/components/moderation/ScreenHider.tsx:140 4742 + #: src/components/moderation/ScreenHider.tsx:146 4739 4743 msgid "Learn More" 4740 4744 msgstr "" 4741 4745 ··· 4743 4747 msgid "Learn more about age assurance" 4744 4748 msgstr "" 4745 4749 4746 - #: src/view/com/auth/SplashScreen.web.tsx:168 4750 + #: src/view/com/auth/SplashScreen.web.tsx:172 4747 4751 msgid "Learn more about Bluesky" 4748 4752 msgstr "" 4749 4753 ··· 4765 4769 msgstr "" 4766 4770 4767 4771 #: src/components/moderation/PostHider.tsx:110 4768 - #: src/components/moderation/ScreenHider.tsx:127 4772 + #: src/components/moderation/ScreenHider.tsx:133 4769 4773 msgid "Learn more about this warning" 4770 4774 msgstr "" 4771 4775 4772 4776 #: src/components/verification/VerificationsDialog.tsx:151 4773 - #: src/components/verification/VerifierDialog.tsx:118 4777 + #: src/components/verification/VerifierDialog.tsx:119 4774 4778 msgctxt "english-only-resource" 4775 4779 msgid "Learn more about verification on Bluesky" 4776 4780 msgstr "" ··· 4881 4885 4882 4886 #: src/screens/Post/PostLikedBy.tsx:41 4883 4887 #: src/screens/Profile/ProfileLabelerLikedBy.tsx:32 4884 - #: src/view/screens/ProfileFeedLikedBy.tsx:33 4888 + #: src/view/screens/ProfileFeedLikedBy.tsx:34 4885 4889 msgid "Liked By" 4886 4890 msgstr "" 4887 4891 ··· 4914 4918 msgid "Likes of your reposts notifications" 4915 4919 msgstr "" 4916 4920 4917 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:472 4921 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:473 4918 4922 msgid "Likes on this post" 4919 4923 msgstr "" 4920 4924 ··· 4953 4957 msgid "List creator" 4954 4958 msgstr "" 4955 4959 4956 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:97 4960 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:90 4957 4961 msgctxt "toast" 4958 4962 msgid "List deleted" 4959 4963 msgstr "" 4960 4964 4965 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:421 4966 + msgid "List description" 4967 + msgstr "" 4968 + 4969 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:441 4970 + msgid "List description is too long. {DESCRIPTION_MAX_GRAPHEMES, plural, other {The maximum number of characters is #.}}" 4971 + msgstr "" 4972 + 4961 4973 #: src/screens/List/ListHiddenScreen.tsx:129 4962 4974 msgid "List has been hidden" 4963 4975 msgstr "" ··· 4966 4978 msgid "List Hidden" 4967 4979 msgstr "" 4968 4980 4981 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:413 4982 + msgid "List must have a name." 4983 + msgstr "" 4984 + 4969 4985 #: src/screens/ProfileList/components/SubscribeMenu.tsx:31 4970 4986 msgctxt "toast" 4971 4987 msgid "List muted" ··· 4976 4992 msgstr "" 4977 4993 4978 4994 #: src/screens/ProfileList/components/Header.tsx:116 4979 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:138 4995 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:131 4980 4996 msgctxt "toast" 4981 4997 msgid "List unblocked" 4982 4998 msgstr "" 4983 4999 4984 5000 #: src/screens/ProfileList/components/Header.tsx:98 4985 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:120 5001 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:113 4986 5002 msgctxt "toast" 4987 5003 msgid "List unmuted" 4988 5004 msgstr "" 4989 5005 4990 5006 #: src/Navigation.tsx:172 4991 - #: src/view/screens/Lists.tsx:65 5007 + #: src/view/screens/Lists.tsx:67 4992 5008 #: src/view/screens/Profile.tsx:224 4993 5009 #: src/view/screens/Profile.tsx:232 4994 5010 #: src/view/shell/desktop/LeftNav.tsx:755 ··· 5094 5110 msgid "Manage saved feeds" 5095 5111 msgstr "" 5096 5112 5097 - #: src/screens/Moderation/index.tsx:311 5113 + #: src/screens/Moderation/index.tsx:316 5098 5114 msgid "Manage verification settings" 5099 5115 msgstr "" 5100 5116 ··· 5102 5118 msgid "Manage your muted words and tags" 5103 5119 msgstr "" 5104 5120 5105 - #: src/screens/Messages/Inbox.tsx:326 5106 - #: src/screens/Messages/Inbox.tsx:345 5107 - #: src/screens/Messages/Inbox.tsx:352 5121 + #: src/screens/Messages/Inbox.tsx:328 5122 + #: src/screens/Messages/Inbox.tsx:347 5123 + #: src/screens/Messages/Inbox.tsx:354 5108 5124 msgid "Mark all as read" 5109 5125 msgstr "" 5110 5126 ··· 5113 5129 msgid "Mark as read" 5114 5130 msgstr "" 5115 5131 5116 - #: src/screens/Messages/Inbox.tsx:313 5117 - #: src/screens/Messages/Inbox.tsx:336 5132 + #: src/screens/Messages/Inbox.tsx:315 5133 + #: src/screens/Messages/Inbox.tsx:338 5118 5134 msgid "Marked all as read" 5119 5135 msgstr "" 5120 5136 ··· 5246 5262 msgid "Moderation list updated" 5247 5263 msgstr "" 5248 5264 5249 - #: src/screens/Moderation/index.tsx:271 5265 + #: src/screens/Moderation/index.tsx:276 5250 5266 msgid "Moderation lists" 5251 5267 msgstr "" 5252 5268 5253 5269 #: src/Navigation.tsx:182 5254 - #: src/view/screens/ModerationModlists.tsx:65 5270 + #: src/view/screens/ModerationModlists.tsx:67 5255 5271 msgid "Moderation Lists" 5256 5272 msgstr "" 5257 5273 5258 - #: src/components/moderation/LabelPreference.tsx:251 5274 + #: src/components/moderation/LabelPreference.tsx:256 5259 5275 msgid "moderation settings" 5260 5276 msgstr "" 5261 5277 ··· 5263 5279 msgid "Moderation states" 5264 5280 msgstr "" 5265 5281 5266 - #: src/screens/Moderation/index.tsx:225 5282 + #: src/screens/Moderation/index.tsx:230 5267 5283 msgid "Moderation tools" 5268 5284 msgstr "" 5269 5285 ··· 5282 5298 msgid "More languages..." 5283 5299 msgstr "" 5284 5300 5285 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:156 5301 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:149 5286 5302 #: src/view/com/profile/ProfileMenu.tsx:223 5287 5303 #: src/view/com/profile/ProfileMenu.tsx:229 5288 5304 msgid "More options" ··· 5332 5348 msgid "Mute conversation" 5333 5349 msgstr "" 5334 5350 5335 - #: src/components/dialogs/MutedWords.tsx:253 5351 + #: src/components/dialogs/MutedWords.tsx:258 5336 5352 msgid "Mute in:" 5337 5353 msgstr "" 5338 5354 ··· 5344 5360 msgid "Mute these accounts?" 5345 5361 msgstr "" 5346 5362 5347 - #: src/components/dialogs/MutedWords.tsx:185 5363 + #: src/components/dialogs/MutedWords.tsx:190 5348 5364 msgid "Mute this word for 24 hours" 5349 5365 msgstr "" 5350 5366 5351 - #: src/components/dialogs/MutedWords.tsx:224 5367 + #: src/components/dialogs/MutedWords.tsx:229 5352 5368 msgid "Mute this word for 30 days" 5353 5369 msgstr "" 5354 5370 5355 - #: src/components/dialogs/MutedWords.tsx:209 5371 + #: src/components/dialogs/MutedWords.tsx:214 5356 5372 msgid "Mute this word for 7 days" 5357 5373 msgstr "" 5358 5374 5359 - #: src/components/dialogs/MutedWords.tsx:258 5375 + #: src/components/dialogs/MutedWords.tsx:263 5360 5376 msgid "Mute this word in post text and tags" 5361 5377 msgstr "" 5362 5378 5363 - #: src/components/dialogs/MutedWords.tsx:274 5379 + #: src/components/dialogs/MutedWords.tsx:279 5364 5380 msgid "Mute this word in tags only" 5365 5381 msgstr "" 5366 5382 5367 - #: src/components/dialogs/MutedWords.tsx:170 5383 + #: src/components/dialogs/MutedWords.tsx:175 5368 5384 msgid "Mute this word until you unmute it" 5369 5385 msgstr "" 5370 5386 ··· 5378 5394 msgid "Mute words & tags" 5379 5395 msgstr "" 5380 5396 5381 - #: src/screens/Moderation/index.tsx:286 5397 + #: src/screens/Moderation/index.tsx:291 5382 5398 msgid "Muted accounts" 5383 5399 msgstr "" 5384 5400 ··· 5395 5411 msgid "Muted by \"{0}\"" 5396 5412 msgstr "" 5397 5413 5398 - #: src/screens/Moderation/index.tsx:256 5414 + #: src/screens/Moderation/index.tsx:261 5399 5415 msgid "Muted words & tags" 5400 5416 msgstr "" 5401 5417 ··· 5475 5491 msgid "New" 5476 5492 msgstr "" 5477 5493 5478 - #: src/view/screens/Lists.tsx:77 5479 - #: src/view/screens/ModerationModlists.tsx:77 5494 + #: src/view/screens/Lists.tsx:79 5495 + #: src/view/screens/ModerationModlists.tsx:79 5480 5496 msgctxt "action" 5481 5497 msgid "New" 5482 5498 msgstr "" ··· 5490 5506 msgstr "" 5491 5507 5492 5508 #: src/components/dms/dialogs/NewChatDialog.tsx:67 5493 - #: src/screens/Messages/ChatList.tsx:401 5494 - #: src/screens/Messages/ChatList.tsx:408 5509 + #: src/screens/Messages/ChatList.tsx:403 5510 + #: src/screens/Messages/ChatList.tsx:410 5495 5511 msgid "New chat" 5496 5512 msgstr "" 5497 5513 ··· 5521 5537 msgid "New handle" 5522 5538 msgstr "" 5523 5539 5524 - #: src/view/screens/Lists.tsx:69 5525 - #: src/view/screens/ModerationModlists.tsx:69 5540 + #: src/view/screens/Lists.tsx:71 5541 + #: src/view/screens/ModerationModlists.tsx:71 5526 5542 msgid "New list" 5527 5543 msgstr "" 5528 5544 ··· 5554 5570 msgid "New post" 5555 5571 msgstr "" 5556 5572 5557 - #: src/view/shell/desktop/LeftNav.tsx:580 5573 + #: src/view/shell/desktop/LeftNav.tsx:581 5558 5574 msgctxt "action" 5559 5575 msgid "New Post" 5560 5576 msgstr "" ··· 5640 5656 msgid "No featured GIFs found. There may be an issue with Tenor." 5641 5657 msgstr "" 5642 5658 5643 - #: src/screens/StarterPack/Wizard/StepFeeds.tsx:119 5659 + #: src/screens/StarterPack/Wizard/StepFeeds.tsx:122 5644 5660 msgid "No feeds found. Try searching for something else." 5645 5661 msgstr "" 5646 5662 ··· 5756 5772 msgid "Nobody has reposted this yet. Maybe you should be the first!" 5757 5773 msgstr "" 5758 5774 5759 - #: src/screens/StarterPack/Wizard/StepProfiles.tsx:104 5775 + #: src/screens/StarterPack/Wizard/StepProfiles.tsx:107 5760 5776 msgid "Nobody was found. Try searching for someone else." 5761 5777 msgstr "" 5762 5778 ··· 5764 5780 msgid "Non-sexual Nudity" 5765 5781 msgstr "" 5766 5782 5767 - #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:217 5783 + #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:220 5768 5784 msgid "None" 5769 5785 msgstr "" 5770 5786 ··· 5777 5793 msgid "Not Found" 5778 5794 msgstr "" 5779 5795 5780 - #: src/components/BlockedGeoOverlay.tsx:126 5796 + #: src/components/BlockedGeoOverlay.tsx:125 5781 5797 msgid "Not in Mississippi?" 5782 5798 msgstr "" 5783 5799 ··· 5793 5809 msgid "Note: This post is only visible to logged-in users." 5794 5810 msgstr "" 5795 5811 5796 - #: src/screens/Messages/ChatList.tsx:302 5812 + #: src/screens/Messages/ChatList.tsx:304 5797 5813 msgid "Nothing here" 5798 5814 msgstr "" 5799 5815 ··· 5879 5895 #: src/screens/Profile/Header/ProfileHeaderLabeler.tsx:349 5880 5896 #: src/screens/Search/modules/ExploreInterestsCard.tsx:48 5881 5897 #: src/screens/Settings/AppIconSettings/index.tsx:48 5882 - #: src/screens/Settings/AppIconSettings/index.tsx:229 5898 + #: src/screens/Settings/AppIconSettings/index.tsx:234 5883 5899 msgid "OK" 5884 5900 msgstr "" 5885 5901 5886 5902 #: src/screens/Login/PasswordUpdatedForm.tsx:37 5887 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:689 5903 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:695 5888 5904 msgid "Okay" 5889 5905 msgstr "" 5890 5906 ··· 5895 5911 msgid "Oldest replies first" 5896 5912 msgstr "" 5897 5913 5898 - #: src/components/StarterPack/QrCode.tsx:82 5914 + #: src/components/StarterPack/QrCode.tsx:87 5899 5915 msgid "on<0><1/><2><3/></2></0>" 5900 5916 msgstr "" 5901 5917 ··· 6005 6021 msgid "Open moderation debug page" 6006 6022 msgstr "" 6007 6023 6008 - #: src/screens/Moderation/index.tsx:252 6024 + #: src/screens/Moderation/index.tsx:257 6009 6025 msgid "Open muted words and tags settings" 6010 6026 msgstr "" 6011 6027 ··· 6026 6042 msgid "Open share menu" 6027 6043 msgstr "" 6028 6044 6029 - #: src/screens/StarterPack/StarterPackScreen.tsx:566 6045 + #: src/screens/StarterPack/StarterPackScreen.tsx:570 6030 6046 msgid "Open starter pack menu" 6031 6047 msgstr "" 6032 6048 ··· 6080 6096 msgid "Opens emoji picker" 6081 6097 msgstr "" 6082 6098 6083 - #: src/view/com/auth/SplashScreen.tsx:49 6084 - #: src/view/com/auth/SplashScreen.web.tsx:111 6099 + #: src/view/com/auth/SplashScreen.tsx:66 6100 + #: src/view/com/auth/SplashScreen.web.tsx:115 6085 6101 msgid "Opens flow to create a new Bluesky account" 6086 6102 msgstr "" 6087 6103 6088 - #: src/view/com/auth/SplashScreen.tsx:63 6089 - #: src/view/com/auth/SplashScreen.web.tsx:125 6104 + #: src/view/com/auth/SplashScreen.tsx:83 6105 + #: src/view/com/auth/SplashScreen.web.tsx:129 6090 6106 msgid "Opens flow to sign in to your existing Bluesky account" 6091 6107 msgstr "" 6092 6108 ··· 6123 6139 msgid "Opens this profile" 6124 6140 msgstr "" 6125 6141 6126 - #: src/components/dms/ReportDialog.tsx:226 6142 + #: src/components/dms/ReportDialog.tsx:227 6127 6143 #: src/components/ReportDialog/SubmitView.tsx:168 6128 6144 msgid "Optionally provide additional information below:" 6129 6145 msgstr "" 6130 6146 6131 - #: src/components/dialogs/MutedWords.tsx:299 6147 + #: src/components/dialogs/MutedWords.tsx:304 6132 6148 msgid "Options:" 6133 6149 msgstr "" 6134 6150 ··· 6174 6190 msgid "Our blog post" 6175 6191 msgstr "" 6176 6192 6177 - #: src/components/dms/ReportDialog.tsx:353 6193 + #: src/components/dms/ReportDialog.tsx:354 6178 6194 msgid "Our moderation team has received your report." 6179 6195 msgstr "" 6180 6196 6181 - #: src/screens/Messages/components/ChatDisabled.tsx:29 6197 + #: src/screens/Messages/components/ChatDisabled.tsx:34 6182 6198 msgid "Our moderators have reviewed reports and decided to disable your access to chats on Bluesky." 6183 6199 msgstr "" 6184 6200 ··· 6317 6333 msgid "Play {0}" 6318 6334 msgstr "" 6319 6335 6320 - #: src/components/Post/Embed/VideoEmbed/index.tsx:132 6336 + #: src/components/Post/Embed/VideoEmbed/index.tsx:135 6321 6337 #: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VideoControls.tsx:321 6322 6338 msgid "Play video" 6323 6339 msgstr "" ··· 6350 6366 msgid "Please check your email inbox for further instructions. It may take a minute or two to arrive." 6351 6367 msgstr "" 6352 6368 6353 - #: src/screens/Signup/state.ts:287 6369 + #: src/screens/Signup/state.ts:289 6354 6370 msgid "Please choose your handle." 6355 6371 msgstr "" 6356 6372 6357 - #: src/screens/Signup/state.ts:279 6358 - #: src/screens/Signup/StepInfo/index.tsx:123 6373 + #: src/screens/Signup/state.ts:281 6374 + #: src/screens/Signup/StepInfo/index.tsx:122 6359 6375 msgid "Please choose your password." 6360 6376 msgstr "" 6361 6377 ··· 6363 6379 msgid "Please click on the link in the email we just sent you to verify your new email address. This is an important step to allow you to continue enjoying all the features of Bluesky." 6364 6380 msgstr "" 6365 6381 6366 - #: src/screens/Signup/state.ts:302 6382 + #: src/screens/Signup/state.ts:304 6367 6383 msgid "Please complete the verification captcha." 6368 6384 msgstr "" 6369 6385 6370 6386 #: src/components/ageAssurance/AgeAssuranceInitDialog.tsx:101 6371 - #: src/screens/Signup/StepInfo/index.tsx:112 6387 + #: src/screens/Signup/StepInfo/index.tsx:111 6372 6388 msgid "Please double-check that you have entered your email address correctly." 6373 6389 msgstr "" 6374 6390 ··· 6419 6435 msgid "Please enter the security code we sent to your previous email address." 6420 6436 msgstr "" 6421 6437 6422 - #: src/screens/Signup/state.ts:263 6423 - #: src/screens/Signup/StepInfo/index.tsx:94 6438 + #: src/screens/Signup/state.ts:265 6439 + #: src/screens/Signup/StepInfo/index.tsx:93 6424 6440 msgid "Please enter your email." 6425 6441 msgstr "" 6426 6442 6427 - #: src/screens/Signup/StepInfo/index.tsx:87 6443 + #: src/screens/Signup/StepInfo/index.tsx:86 6428 6444 msgid "Please enter your invite code." 6429 6445 msgstr "" 6430 6446 ··· 6448 6464 msgid "Please explain why you think this label was incorrectly applied by {0}" 6449 6465 msgstr "" 6450 6466 6451 - #: src/screens/Messages/components/ChatDisabled.tsx:117 6467 + #: src/screens/Messages/components/ChatDisabled.tsx:122 6452 6468 msgid "Please explain why you think your chats were incorrectly disabled" 6453 6469 msgstr "" 6454 6470 6455 - #: src/components/FocusScope/index.tsx:93 6456 - #: src/components/FocusScope/index.tsx:117 6471 + #: src/components/FocusScope/index.tsx:91 6472 + #: src/components/FocusScope/index.tsx:115 6457 6473 msgid "Please go back, or activate this element to return to the start of the active content." 6458 6474 msgstr "" 6459 6475 ··· 6531 6547 msgid "Post failed to upload. Please check your Internet connection and try again." 6532 6548 msgstr "" 6533 6549 6534 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:133 6535 - #: src/screens/PostThread/components/ThreadItemPost.tsx:110 6550 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:134 6551 + #: src/screens/PostThread/components/ThreadItemPost.tsx:111 6536 6552 #: src/screens/PostThread/components/ThreadItemTreePost.tsx:107 6537 6553 #: src/screens/VideoFeed/index.tsx:532 6538 6554 msgid "Post has been deleted" ··· 6584 6600 #: src/components/activity-notifications/SubscribeProfileDialog.tsx:250 6585 6601 #: src/components/activity-notifications/SubscribeProfileDialog.tsx:262 6586 6602 #: src/screens/ProfileList/index.tsx:166 6587 - #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:213 6603 + #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:216 6588 6604 #: src/screens/StarterPack/StarterPackScreen.tsx:191 6589 6605 #: src/view/screens/Profile.tsx:225 6590 6606 msgid "Posts" 6591 6607 msgstr "" 6592 6608 6593 - #: src/components/dialogs/MutedWords.tsx:115 6609 + #: src/components/dialogs/MutedWords.tsx:120 6594 6610 msgid "Posts can be muted based on their text, their tags, or both. We recommend avoiding common words that appear in many posts, since it can result in no posts being shown." 6595 6611 msgstr "" 6596 6612 ··· 6598 6614 msgid "Posts hidden" 6599 6615 msgstr "" 6600 6616 6601 - #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:211 6617 + #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:214 6602 6618 msgid "Posts, Replies" 6603 6619 msgstr "" 6604 6620 ··· 6655 6671 msgid "Privacy and Security" 6656 6672 msgstr "" 6657 6673 6658 - #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:158 6674 + #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:161 6659 6675 msgid "Privacy and Security settings" 6660 6676 msgstr "" 6661 6677 ··· 6679 6695 msgid "Processing..." 6680 6696 msgstr "" 6681 6697 6682 - #: src/view/screens/DebugMod.tsx:934 6698 + #: src/view/screens/DebugMod.tsx:936 6683 6699 #: src/view/screens/Profile.tsx:364 6684 6700 msgid "profile" 6685 6701 msgstr "" ··· 6691 6707 msgid "Profile" 6692 6708 msgstr "" 6693 6709 6694 - #: src/screens/Profile/Header/EditProfileDialog.tsx:191 6710 + #: src/screens/Profile/Header/EditProfileDialog.tsx:189 6695 6711 msgctxt "toast" 6696 6712 msgid "Profile updated" 6697 6713 msgstr "" ··· 6793 6809 msgid "Quotes" 6794 6810 msgstr "" 6795 6811 6796 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:456 6812 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:457 6797 6813 msgid "Quotes of this post" 6798 6814 msgstr "" 6799 6815 ··· 6840 6856 msgid "Read our blog post" 6841 6857 msgstr "" 6842 6858 6843 - #: src/view/com/auth/SplashScreen.web.tsx:173 6859 + #: src/view/com/auth/SplashScreen.web.tsx:177 6844 6860 msgid "Read the Bluesky blog" 6845 6861 msgstr "" 6846 6862 ··· 6867 6883 msgid "Reason for appeal" 6868 6884 msgstr "" 6869 6885 6870 - #: src/components/dms/ReportDialog.tsx:217 6886 + #: src/components/dms/ReportDialog.tsx:218 6871 6887 msgid "Reason:" 6872 6888 msgstr "" 6873 6889 ··· 6904 6920 msgid "Reject chat request" 6905 6921 msgstr "" 6906 6922 6907 - #: src/screens/Messages/ChatList.tsx:285 6908 - #: src/screens/Messages/Inbox.tsx:212 6923 + #: src/screens/Messages/ChatList.tsx:286 6924 + #: src/screens/Messages/Inbox.tsx:213 6909 6925 msgid "Reload conversations" 6910 6926 msgstr "" 6911 6927 6912 6928 #: src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx:171 6913 - #: src/components/dialogs/MutedWords.tsx:438 6929 + #: src/components/dialogs/MutedWords.tsx:443 6914 6930 #: src/components/dialogs/StarterPackDialog.tsx:371 6915 6931 #: src/components/dialogs/StarterPackDialog.tsx:377 6916 6932 #: src/components/FeedCard.tsx:343 ··· 6931 6947 msgid "Remove {historyItem}" 6932 6948 msgstr "" 6933 6949 6934 - #: src/screens/Settings/Settings.tsx:641 6935 - #: src/screens/Settings/Settings.tsx:644 6950 + #: src/screens/Settings/Settings.tsx:643 6951 + #: src/screens/Settings/Settings.tsx:646 6936 6952 msgid "Remove account" 6937 6953 msgstr "" 6938 6954 ··· 6966 6982 6967 6983 #: src/screens/Profile/components/ProfileFeedHeader.tsx:319 6968 6984 #: src/screens/Profile/components/ProfileFeedHeader.tsx:325 6969 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:188 6970 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:191 6985 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:181 6986 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:184 6971 6987 #: src/screens/SavedFeeds.tsx:340 6972 6988 msgid "Remove from my feeds" 6973 6989 msgstr "" 6974 6990 6975 - #: src/screens/Settings/Settings.tsx:654 6991 + #: src/screens/Settings/Settings.tsx:656 6976 6992 msgid "Remove from quick access?" 6977 6993 msgstr "" 6978 6994 ··· 6999 7015 msgid "Remove live status" 7000 7016 msgstr "" 7001 7017 7002 - #: src/components/dialogs/MutedWords.tsx:523 7018 + #: src/components/dialogs/MutedWords.tsx:530 7003 7019 msgid "Remove mute word from your list" 7004 7020 msgstr "" 7005 7021 ··· 7099 7115 #: src/components/activity-notifications/SubscribeProfileDialog.tsx:267 7100 7116 #: src/components/activity-notifications/SubscribeProfileDialog.tsx:279 7101 7117 #: src/lib/hooks/useNotificationHandler.ts:140 7102 - #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:215 7118 + #: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:218 7103 7119 #: src/screens/Settings/NotificationSettings/index.tsx:148 7104 7120 #: src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx:41 7105 7121 #: src/view/screens/Profile.tsx:226 ··· 7189 7205 msgid "Report feed" 7190 7206 msgstr "" 7191 7207 7192 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:222 7193 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:225 7208 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:215 7209 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:218 7194 7210 msgid "Report list" 7195 7211 msgstr "" 7196 7212 ··· 7203 7219 msgid "Report post" 7204 7220 msgstr "" 7205 7221 7206 - #: src/screens/StarterPack/StarterPackScreen.tsx:630 7207 - #: src/screens/StarterPack/StarterPackScreen.tsx:633 7222 + #: src/screens/StarterPack/StarterPackScreen.tsx:634 7223 + #: src/screens/StarterPack/StarterPackScreen.tsx:637 7208 7224 msgid "Report starter pack" 7209 7225 msgstr "" 7210 7226 7211 - #: src/components/dms/ReportDialog.tsx:350 7227 + #: src/components/dms/ReportDialog.tsx:351 7212 7228 msgid "Report submitted" 7213 7229 msgstr "" 7214 7230 ··· 7268 7284 #: src/components/PostControls/RepostButton.tsx:145 7269 7285 #: src/components/PostControls/RepostButton.web.tsx:44 7270 7286 #: src/components/PostControls/RepostButton.web.tsx:104 7271 - #: src/screens/StarterPack/StarterPackScreen.tsx:561 7287 + #: src/screens/StarterPack/StarterPackScreen.tsx:565 7272 7288 msgid "Repost or quote post" 7273 7289 msgstr "" 7274 7290 ··· 7295 7311 msgid "Reposts" 7296 7312 msgstr "" 7297 7313 7298 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:438 7314 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:439 7299 7315 msgid "Reposts of this post" 7300 7316 msgstr "" 7301 7317 ··· 7323 7339 msgid "Require an email code to sign in to your account." 7324 7340 msgstr "" 7325 7341 7326 - #: src/screens/Signup/StepInfo/index.tsx:181 7342 + #: src/screens/Signup/StepInfo/index.tsx:180 7327 7343 msgid "Required for this provider" 7328 7344 msgstr "" 7329 7345 ··· 7386 7402 #: src/screens/Login/LoginForm.tsx:355 7387 7403 #: src/screens/Messages/ChatList.tsx:291 7388 7404 #: src/screens/Messages/components/MessageListError.tsx:25 7389 - #: src/screens/Messages/Inbox.tsx:218 7405 + #: src/screens/Messages/Inbox.tsx:219 7390 7406 #: src/screens/Onboarding/StepInterests/index.tsx:226 7391 7407 #: src/screens/Onboarding/StepInterests/index.tsx:229 7392 7408 #: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:209 7393 7409 #: src/screens/Onboarding/StepSuggestedAccounts/index.tsx:212 7394 - #: src/screens/PostThread/components/ThreadError.tsx:75 7395 - #: src/screens/PostThread/components/ThreadError.tsx:81 7410 + #: src/screens/PostThread/components/ThreadError.tsx:80 7411 + #: src/screens/PostThread/components/ThreadError.tsx:86 7396 7412 #: src/screens/Signup/BackNextButtons.tsx:53 7397 7413 #: src/view/com/util/error/ErrorMessage.tsx:64 7398 7414 #: src/view/com/util/error/ErrorScreen.tsx:102 ··· 7405 7421 7406 7422 #: src/components/Error.tsx:73 7407 7423 #: src/screens/List/ListHiddenScreen.tsx:219 7408 - #: src/screens/StarterPack/StarterPackScreen.tsx:767 7424 + #: src/screens/StarterPack/StarterPackScreen.tsx:771 7409 7425 msgid "Return to previous page" 7410 7426 msgstr "" 7411 7427 ··· 7426 7442 msgstr "" 7427 7443 7428 7444 #: src/components/dialogs/BirthDateSettings.tsx:156 7445 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:292 7446 + #: src/components/dialogs/lists/CreateOrEditListDialog.tsx:307 7429 7447 #: src/components/dialogs/PostInteractionSettingsDialog.tsx:483 7430 7448 #: src/components/dialogs/PostInteractionSettingsDialog.tsx:489 7431 7449 #: src/components/live/EditLiveDialog.tsx:216 7432 7450 #: src/components/live/EditLiveDialog.tsx:223 7433 7451 #: src/components/StarterPack/QrCodeDialog.tsx:204 7434 - #: src/screens/Profile/Header/EditProfileDialog.tsx:238 7435 - #: src/screens/Profile/Header/EditProfileDialog.tsx:252 7452 + #: src/screens/Profile/Header/EditProfileDialog.tsx:236 7453 + #: src/screens/Profile/Header/EditProfileDialog.tsx:250 7436 7454 #: src/screens/SavedFeeds.tsx:120 7437 7455 #: src/screens/Settings/components/ChangeHandleDialog.tsx:267 7438 7456 #: src/view/com/composer/GifAltText.tsx:193 ··· 7467 7485 msgid "Save image" 7468 7486 msgstr "" 7469 7487 7470 - #: src/view/com/modals/CropImage.web.tsx:104 7471 - msgid "Save image crop" 7472 - msgstr "" 7473 - 7474 7488 #: src/screens/Settings/components/ChangeHandleDialog.tsx:253 7475 7489 msgid "Save new handle" 7476 7490 msgstr "" ··· 7505 7519 msgid "Saved to your feeds" 7506 7520 msgstr "" 7507 7521 7508 - #: src/view/com/modals/CropImage.web.tsx:105 7509 - msgid "Saves image crop settings" 7510 - msgstr "" 7511 - 7512 7522 #: src/components/dms/ChatEmptyPill.tsx:33 7513 7523 #: src/components/NewskieDialog.tsx:139 7514 7524 #: src/view/com/notifications/NotificationFeedItem.tsx:770 ··· 7649 7659 msgid "See #{tag} posts by user" 7650 7660 msgstr "" 7651 7661 7652 - #: src/view/com/auth/SplashScreen.web.tsx:178 7662 + #: src/view/com/auth/SplashScreen.web.tsx:182 7653 7663 msgid "See jobs at Bluesky" 7654 7664 msgstr "" 7655 7665 ··· 7732 7742 msgid "Select GIF \"{0}\"" 7733 7743 msgstr "" 7734 7744 7735 - #: src/components/dialogs/MutedWords.tsx:142 7745 + #: src/components/dialogs/MutedWords.tsx:147 7736 7746 msgid "Select how long to mute this word for." 7737 7747 msgstr "" 7738 7748 ··· 7783 7793 msgid "Select up to 3 languages used in this post" 7784 7794 msgstr "" 7785 7795 7786 - #: src/components/dialogs/MutedWords.tsx:242 7796 + #: src/components/dialogs/MutedWords.tsx:247 7787 7797 msgid "Select what content this mute word should apply to." 7788 7798 msgstr "" 7789 7799 ··· 7795 7805 msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown." 7796 7806 msgstr "" 7797 7807 7798 - #: src/screens/Signup/StepInfo/index.tsx:274 7808 + #: src/screens/Signup/StepInfo/index.tsx:273 7799 7809 msgid "Select your date of birth" 7800 7810 msgstr "" 7801 7811 ··· 7849 7859 msgid "Send post to..." 7850 7860 msgstr "" 7851 7861 7852 - #: src/components/dms/ReportDialog.tsx:276 7853 - #: src/components/dms/ReportDialog.tsx:279 7862 + #: src/components/dms/ReportDialog.tsx:277 7863 + #: src/components/dms/ReportDialog.tsx:280 7854 7864 #: src/components/ReportDialog/SubmitView.tsx:221 7855 7865 #: src/components/ReportDialog/SubmitView.tsx:225 7856 7866 msgid "Send report" ··· 7889 7899 msgid "Set app icon to {0}" 7890 7900 msgstr "" 7891 7901 7892 - #: src/screens/Moderation/index.tsx:352 7902 + #: src/screens/Moderation/index.tsx:357 7893 7903 msgid "Set birthdate" 7894 7904 msgstr "" 7895 7905 ··· 7897 7907 msgid "Set new password" 7898 7908 msgstr "" 7899 7909 7900 - #: src/screens/Onboarding/Layout.tsx:50 7910 + #: src/screens/Onboarding/Layout.tsx:49 7901 7911 msgid "Set up your account" 7902 7912 msgstr "" 7903 7913 ··· 8033 8043 8034 8044 #: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:117 8035 8045 #: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:120 8036 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:172 8037 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:178 8038 - #: src/screens/StarterPack/StarterPackScreen.tsx:611 8039 - #: src/screens/StarterPack/StarterPackScreen.tsx:619 8046 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:165 8047 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:171 8048 + #: src/screens/StarterPack/StarterPackScreen.tsx:615 8049 + #: src/screens/StarterPack/StarterPackScreen.tsx:623 8040 8050 #: src/view/com/profile/ProfileMenu.tsx:246 8041 8051 #: src/view/com/profile/ProfileMenu.tsx:259 8042 8052 msgid "Share via..." ··· 8060 8070 msgid "Show alt text" 8061 8071 msgstr "" 8062 8072 8063 - #: src/components/moderation/ScreenHider.tsx:172 8064 - #: src/components/moderation/ScreenHider.tsx:175 8073 + #: src/components/moderation/ScreenHider.tsx:178 8074 + #: src/components/moderation/ScreenHider.tsx:181 8065 8075 #: src/screens/List/ListHiddenScreen.tsx:190 8066 8076 #: src/screens/VideoFeed/index.tsx:631 8067 8077 #: src/screens/VideoFeed/index.tsx:637 ··· 8148 8158 msgid "Show warning and filter from feeds" 8149 8159 msgstr "" 8150 8160 8151 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:630 8161 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:631 8152 8162 msgid "Shows information about when this post was created" 8153 8163 msgstr "" 8154 8164 ··· 8233 8243 msgid "Sign out?" 8234 8244 msgstr "" 8235 8245 8236 - #: src/components/moderation/ScreenHider.tsx:91 8246 + #: src/components/moderation/ScreenHider.tsx:97 8237 8247 #: src/lib/moderation/useGlobalLabelStrings.ts:28 8238 8248 msgid "Sign-in Required" 8239 8249 msgstr "" ··· 8339 8349 msgid "Something wrong? Let us know." 8340 8350 msgstr "" 8341 8351 8342 - #: src/App.native.tsx:126 8343 - #: src/App.web.tsx:102 8352 + #: src/App.native.tsx:125 8353 + #: src/App.web.tsx:101 8344 8354 msgid "Sorry! Your session expired. Please sign in again." 8345 8355 msgstr "" 8346 8356 ··· 8420 8430 msgid "Starter pack by you" 8421 8431 msgstr "" 8422 8432 8423 - #: src/screens/StarterPack/StarterPackScreen.tsx:731 8433 + #: src/screens/StarterPack/StarterPackScreen.tsx:735 8424 8434 msgid "Starter pack is invalid" 8425 8435 msgstr "" 8426 8436 ··· 8438 8448 msgid "Status Page" 8439 8449 msgstr "" 8440 8450 8441 - #: src/screens/Signup/index.tsx:163 8451 + #: src/screens/Signup/index.tsx:169 8442 8452 msgid "Step {0} of {1}" 8443 8453 msgstr "" 8444 8454 ··· 8455 8465 #: src/components/ageAssurance/AgeAssuranceAppealDialog.tsx:123 8456 8466 #: src/components/moderation/LabelsOnMeDialog.tsx:324 8457 8467 #: src/components/moderation/LabelsOnMeDialog.tsx:325 8458 - #: src/screens/Messages/components/ChatDisabled.tsx:149 8459 - #: src/screens/Messages/components/ChatDisabled.tsx:150 8468 + #: src/screens/Messages/components/ChatDisabled.tsx:154 8469 + #: src/screens/Messages/components/ChatDisabled.tsx:155 8460 8470 msgid "Submit" 8461 8471 msgstr "" 8462 8472 ··· 8544 8554 8545 8555 #: src/screens/Settings/Settings.tsx:123 8546 8556 #: src/screens/Settings/Settings.tsx:137 8547 - #: src/screens/Settings/Settings.tsx:604 8557 + #: src/screens/Settings/Settings.tsx:606 8548 8558 #: src/view/shell/desktop/LeftNav.tsx:247 8549 8559 msgid "Switch account" 8550 8560 msgstr "" ··· 8576 8586 msgid "System log" 8577 8587 msgstr "" 8578 8588 8579 - #: src/components/dialogs/MutedWords.tsx:282 8589 + #: src/components/dialogs/MutedWords.tsx:287 8580 8590 msgid "Tags only" 8581 8591 msgstr "" 8582 8592 ··· 8627 8637 msgid "Tell a joke!" 8628 8638 msgstr "" 8629 8639 8630 - #: src/screens/Profile/Header/EditProfileDialog.tsx:373 8640 + #: src/screens/Profile/Header/EditProfileDialog.tsx:371 8631 8641 msgid "Tell us a bit about yourself" 8632 8642 msgstr "" 8633 8643 ··· 8663 8673 msgid "Terms used violate community standards" 8664 8674 msgstr "" 8665 8675 8666 - #: src/components/dialogs/MutedWords.tsx:266 8676 + #: src/components/dialogs/MutedWords.tsx:271 8667 8677 msgid "Text & tags" 8668 8678 msgstr "" 8669 8679 8670 - #: src/components/dms/ReportDialog.tsx:234 8680 + #: src/components/dms/ReportDialog.tsx:235 8671 8681 msgid "Text field" 8672 8682 msgstr "" 8673 8683 8674 8684 #: src/components/moderation/LabelsOnMeDialog.tsx:288 8675 - #: src/screens/Messages/components/ChatDisabled.tsx:115 8685 + #: src/screens/Messages/components/ChatDisabled.tsx:120 8676 8686 msgid "Text input field" 8677 8687 msgstr "" 8678 8688 ··· 8689 8699 msgstr "" 8690 8700 8691 8701 #: src/components/ageAssurance/AgeAssuranceAccountCard.tsx:115 8692 - #: src/components/BlockedGeoOverlay.tsx:169 8702 + #: src/components/BlockedGeoOverlay.tsx:168 8693 8703 msgid "Thanks! You're all set." 8694 8704 msgstr "" 8695 8705 ··· 8706 8716 msgid "That starter pack could not be found." 8707 8717 msgstr "" 8708 8718 8709 - #: src/screens/Signup/StepHandle/index.tsx:78 8719 + #: src/screens/Signup/StepHandle/index.tsx:77 8710 8720 msgid "That username is already taken" 8711 8721 msgstr "" 8712 8722 ··· 8724 8734 msgstr "" 8725 8735 8726 8736 #: src/screens/Settings/AppIconSettings/index.tsx:41 8727 - #: src/screens/Settings/AppIconSettings/index.tsx:222 8737 + #: src/screens/Settings/AppIconSettings/index.tsx:227 8728 8738 msgid "The app will be restarted" 8729 8739 msgstr "" 8730 8740 ··· 8737 8747 msgid "The birthdate you've entered means you are under 18 years old. Certain content and features may be unavailable to you." 8738 8748 msgstr "" 8739 8749 8740 - #: src/screens/Moderation/index.tsx:426 8750 + #: src/screens/Moderation/index.tsx:432 8741 8751 msgid "The Bluesky web application" 8742 8752 msgstr "" 8743 8753 ··· 8757 8767 msgid "The Discover feed now knows what you like" 8758 8768 msgstr "" 8759 8769 8760 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:324 8770 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:333 8761 8771 msgid "The experience is better in the app. Download Bluesky now and we'll pick back up where you left off." 8762 8772 msgstr "" 8763 8773 ··· 8803 8813 msgid "The server appears to be experiencing issues. Please try again in a few moments." 8804 8814 msgstr "" 8805 8815 8806 - #: src/screens/StarterPack/StarterPackScreen.tsx:741 8816 + #: src/screens/StarterPack/StarterPackScreen.tsx:745 8807 8817 msgid "The starter pack that you are trying to view is invalid. You may delete this starter pack instead." 8808 8818 msgstr "" 8809 8819 ··· 8877 8887 msgid "There was an issue removing this feed. Please check your internet connection and try again." 8878 8888 msgstr "" 8879 8889 8880 - #: src/components/dms/ReportDialog.tsx:264 8890 + #: src/components/dms/ReportDialog.tsx:265 8881 8891 #: src/components/ReportDialog/SubmitView.tsx:88 8882 8892 msgid "There was an issue sending your report. Please check your internet connection." 8883 8893 msgstr "" ··· 8911 8921 #: src/screens/List/ListHiddenScreen.tsx:99 8912 8922 #: src/screens/ProfileList/components/Header.tsx:107 8913 8923 #: src/screens/ProfileList/components/Header.tsx:125 8914 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:129 8915 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:147 8924 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:122 8925 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:140 8916 8926 #: src/screens/ProfileList/components/SubscribeMenu.tsx:40 8917 8927 #: src/screens/ProfileList/components/SubscribeMenu.tsx:59 8918 8928 msgid "There was an issue. Please check your internet connection and try again." ··· 8932 8942 msgid "These settings only apply to the Following feed." 8933 8943 msgstr "" 8934 8944 8935 - #: src/components/moderation/ScreenHider.tsx:111 8945 + #: src/components/moderation/ScreenHider.tsx:117 8936 8946 msgid "This {screenDescription} has been flagged:" 8937 8947 msgstr "" 8938 8948 ··· 8944 8954 msgid "This account has one or more attempted verifications, but it is not currently verified." 8945 8955 msgstr "" 8946 8956 8947 - #: src/components/moderation/ScreenHider.tsx:106 8957 + #: src/components/moderation/ScreenHider.tsx:112 8948 8958 msgid "This account has requested that users sign in to view their profile." 8949 8959 msgstr "" 8950 8960 ··· 8960 8970 msgid "This appeal will be sent to <0>{sourceName}</0>." 8961 8971 msgstr "" 8962 8972 8963 - #: src/screens/Messages/components/ChatDisabled.tsx:111 8973 + #: src/screens/Messages/components/ChatDisabled.tsx:116 8964 8974 msgid "This appeal will be sent to Bluesky's moderation service." 8965 8975 msgstr "" 8966 8976 ··· 9080 9090 msgid "This moderation service is unavailable. See below for more details. If this issue persists, contact us." 9081 9091 msgstr "" 9082 9092 9083 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:670 9093 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:671 9084 9094 msgid "This post claims to have been created on <0>{0}</0>, but was first seen by Bluesky on <1>{1}</1>." 9085 9095 msgstr "" 9086 9096 ··· 9161 9171 msgid "This user isn't following anyone." 9162 9172 msgstr "" 9163 9173 9164 - #: src/components/dialogs/MutedWords.tsx:435 9174 + #: src/components/dialogs/MutedWords.tsx:440 9165 9175 msgid "This will delete \"{0}\" from your muted words. You can always add it back later." 9166 9176 msgstr "" 9167 9177 9168 - #: src/screens/Settings/Settings.tsx:656 9178 + #: src/screens/Settings/Settings.tsx:658 9169 9179 msgid "This will remove @{0} from the quick access list." 9170 9180 msgstr "" 9171 9181 ··· 9221 9231 msgid "Today" 9222 9232 msgstr "" 9223 9233 9224 - #: src/screens/Moderation/index.tsx:403 9234 + #: src/screens/Moderation/index.tsx:409 9225 9235 msgid "Toggle to enable or disable adult content" 9226 9236 msgstr "" 9227 9237 ··· 9250 9260 #: src/components/dms/MessageContextMenu.tsx:139 9251 9261 #: src/components/PostControls/PostMenu/PostMenuItems.tsx:444 9252 9262 #: src/components/PostControls/PostMenu/PostMenuItems.tsx:446 9253 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:592 9254 - #: src/screens/PostThread/components/ThreadItemAnchor.tsx:595 9263 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:593 9264 + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:596 9255 9265 msgid "Translate" 9256 9266 msgstr "" 9257 9267 ··· 9311 9321 #: src/screens/Login/index.tsx:83 9312 9322 #: src/screens/Login/LoginForm.tsx:178 9313 9323 #: src/screens/Login/SetNewPasswordForm.tsx:81 9314 - #: src/screens/Signup/index.tsx:76 9324 + #: src/screens/Signup/index.tsx:77 9315 9325 msgid "Unable to contact your service. Please check your Internet connection." 9316 9326 msgstr "" 9317 9327 9318 - #: src/screens/StarterPack/StarterPackScreen.tsx:673 9328 + #: src/screens/StarterPack/StarterPackScreen.tsx:677 9319 9329 msgid "Unable to delete" 9320 9330 msgstr "" 9321 9331 ··· 9364 9374 msgid "Unblock Account?" 9365 9375 msgstr "" 9366 9376 9367 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:254 9368 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:257 9377 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:247 9378 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:250 9369 9379 msgid "Unblock list" 9370 9380 msgstr "" 9371 9381 ··· 9450 9460 msgid "Unmute conversation" 9451 9461 msgstr "" 9452 9462 9453 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:264 9454 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:267 9463 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:257 9464 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:260 9455 9465 msgid "Unmute list" 9456 9466 msgstr "" 9457 9467 ··· 9489 9499 msgid "Unpin from profile" 9490 9500 msgstr "" 9491 9501 9492 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:237 9493 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:240 9502 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:230 9503 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:233 9494 9504 msgid "Unpin moderation list" 9495 9505 msgstr "" 9496 9506 ··· 9502 9512 msgid "Unpinned from your feeds" 9503 9513 msgstr "" 9504 9514 9505 - #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:109 9515 + #: src/screens/ProfileList/components/MoreOptionsMenu.tsx:102 9506 9516 msgid "Unpinned list" 9507 9517 msgstr "" 9508 9518 ··· 9705 9715 msgid "User list updated" 9706 9716 msgstr "" 9707 9717 9708 - #: src/screens/Signup/StepHandle/index.tsx:234 9718 + #: src/screens/Signup/StepHandle/index.tsx:233 9709 9719 msgid "Username cannot be longer than {MAX_SERVICE_HANDLE_LENGTH, plural, other {# characters}}" 9710 9720 msgstr "" 9711 9721 9712 - #: src/screens/Signup/StepHandle/index.tsx:218 9722 + #: src/screens/Signup/StepHandle/index.tsx:217 9713 9723 msgid "Username cannot begin or end with a hyphen" 9714 9724 msgstr "" 9715 9725 9716 - #: src/screens/Signup/StepHandle/index.tsx:222 9726 + #: src/screens/Signup/StepHandle/index.tsx:221 9717 9727 msgid "Username must only contain letters (a-z), numbers, and hyphens" 9718 9728 msgstr "" 9719 9729 ··· 9750 9760 msgid "Verification failed, please try again." 9751 9761 msgstr "" 9752 9762 9753 - #: src/screens/Moderation/index.tsx:316 9763 + #: src/screens/Moderation/index.tsx:321 9754 9764 msgid "Verification settings" 9755 9765 msgstr "" 9756 9766 ··· 9868 9878 msgid "Video is playing" 9869 9879 msgstr "" 9870 9880 9871 - #: src/components/Post/Embed/VideoEmbed/index.web.tsx:225 9881 + #: src/components/Post/Embed/VideoEmbed/index.web.tsx:237 9872 9882 msgid "Video not found." 9873 9883 msgstr "" 9874 9884 ··· 9983 9993 msgid "View users who like this feed" 9984 9994 msgstr "" 9985 9995 9986 - #: src/components/VideoPostCard.tsx:399 9996 + #: src/components/VideoPostCard.tsx:401 9987 9997 msgid "View video" 9988 9998 msgstr "" 9989 9999 9990 - #: src/screens/Moderation/index.tsx:296 10000 + #: src/screens/Moderation/index.tsx:301 9991 10001 msgid "View your blocked accounts" 9992 10002 msgstr "" 9993 10003 9994 - #: src/screens/Moderation/index.tsx:236 10004 + #: src/screens/Moderation/index.tsx:241 9995 10005 msgid "View your default post interaction settings" 9996 10006 msgstr "" 9997 10007 ··· 10000 10010 msgid "View your feeds and explore more" 10001 10011 msgstr "" 10002 10012 10003 - #: src/screens/Moderation/index.tsx:266 10013 + #: src/screens/Moderation/index.tsx:271 10004 10014 msgid "View your moderation lists" 10005 10015 msgstr "" 10006 10016 10007 - #: src/screens/Moderation/index.tsx:281 10017 + #: src/screens/Moderation/index.tsx:286 10008 10018 msgid "View your muted accounts" 10009 10019 msgstr "" 10010 10020 ··· 10012 10022 msgid "View your verifications" 10013 10023 msgstr "" 10014 10024 10015 - #: src/view/com/util/images/AutoSizedImage.tsx:205 10016 - #: src/view/com/util/images/AutoSizedImage.tsx:227 10025 + #: src/view/com/util/images/AutoSizedImage.tsx:206 10026 + #: src/view/com/util/images/AutoSizedImage.tsx:228 10017 10027 msgid "Views full image" 10018 10028 msgstr "" 10019 10029 ··· 10109 10119 msgid "We were unable to load your birth date preferences. Please try again." 10110 10120 msgstr "" 10111 10121 10112 - #: src/screens/Moderation/index.tsx:483 10122 + #: src/screens/Moderation/index.tsx:489 10113 10123 msgid "We were unable to load your configured labelers at this time." 10114 10124 msgstr "" 10115 10125 ··· 10158 10168 msgid "We’re introducing a new layer of verification on Bluesky — an easy-to-see checkmark." 10159 10169 msgstr "" 10160 10170 10161 - #: src/screens/Signup/index.tsx:123 10171 + #: src/screens/Signup/index.tsx:125 10162 10172 msgid "We're so excited to have you join us!" 10163 10173 msgstr "" 10164 10174 ··· 10166 10176 msgid "We're sorry, but based on your device's location, you are currently located in a region that requires age assurance." 10167 10177 msgstr "" 10168 10178 10169 - #: src/components/BlockedGeoOverlay.tsx:159 10179 + #: src/components/BlockedGeoOverlay.tsx:158 10170 10180 msgid "We're sorry, but based on your device's location, you are currently located in a region where we cannot provide access at this time." 10171 10181 msgstr "" 10172 10182 ··· 10174 10184 msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}." 10175 10185 msgstr "" 10176 10186 10177 - #: src/components/dialogs/MutedWords.tsx:378 10187 + #: src/components/dialogs/MutedWords.tsx:383 10178 10188 msgid "We're sorry, but we weren't able to load your muted words at this time. Please try again." 10179 10189 msgstr "" 10180 10190 ··· 10231 10241 msgid "What do you want to call your starter pack?" 10232 10242 msgstr "" 10233 10243 10234 - #: src/view/com/auth/SplashScreen.tsx:38 10235 - #: src/view/com/auth/SplashScreen.web.tsx:99 10244 + #: src/view/com/auth/SplashScreen.tsx:51 10245 + #: src/view/com/auth/SplashScreen.web.tsx:103 10236 10246 #: src/view/com/composer/Composer.tsx:812 10237 10247 msgid "What's up?" 10238 10248 msgstr "" ··· 10258 10268 msgstr "" 10259 10269 10260 10270 #: src/screens/Home/NoFeedsPinned.tsx:79 10261 - #: src/screens/Messages/ChatList.tsx:269 10262 - #: src/screens/Messages/Inbox.tsx:197 10271 + #: src/screens/Messages/ChatList.tsx:270 10272 + #: src/screens/Messages/Inbox.tsx:198 10263 10273 msgid "Whoops!" 10264 10274 msgstr "" 10265 10275 ··· 10343 10353 msgid "Yes, deactivate" 10344 10354 msgstr "" 10345 10355 10346 - #: src/screens/StarterPack/StarterPackScreen.tsx:685 10356 + #: src/screens/StarterPack/StarterPackScreen.tsx:689 10347 10357 msgid "Yes, delete this starter pack" 10348 10358 msgstr "" 10349 10359 ··· 10412 10422 msgid "You are verified" 10413 10423 msgstr "" 10414 10424 10415 - #: src/screens/Profile/Header/EditProfileDialog.tsx:346 10425 + #: src/screens/Profile/Header/EditProfileDialog.tsx:344 10416 10426 msgid "You are verified. You will lose your verification status if you change your display name. <0>Learn more.</0>" 10417 10427 msgstr "" 10418 10428 ··· 10485 10495 msgid "You don't follow any users who follow @{name}." 10486 10496 msgstr "" 10487 10497 10488 - #: src/screens/Messages/Inbox.tsx:241 10498 + #: src/screens/Messages/Inbox.tsx:243 10489 10499 msgid "You don't have any chat requests at the moment." 10490 10500 msgstr "" 10491 10501 ··· 10538 10548 msgid "You have muted this user" 10539 10549 msgstr "" 10540 10550 10541 - #: src/screens/Messages/ChatList.tsx:312 10551 + #: src/screens/Messages/ChatList.tsx:314 10542 10552 msgid "You have no conversations yet. Start one!" 10543 10553 msgstr "" 10544 10554 ··· 10579 10589 msgid "You haven't created a starter pack yet!" 10580 10590 msgstr "" 10581 10591 10582 - #: src/components/dialogs/MutedWords.tsx:398 10592 + #: src/components/dialogs/MutedWords.tsx:403 10583 10593 msgid "You haven't muted any words or tags yet" 10584 10594 msgstr "" 10585 10595 ··· 10628 10638 msgid "You must be following at least seven other people to generate a starter pack." 10629 10639 msgstr "" 10630 10640 10631 - #: src/screens/Moderation/index.tsx:374 10641 + #: src/screens/Moderation/index.tsx:379 10632 10642 msgid "You must complete age assurance in order to access the settings below." 10633 10643 msgstr "" 10634 10644 ··· 10706 10716 msgid "You: {short}" 10707 10717 msgstr "" 10708 10718 10709 - #: src/screens/Signup/index.tsx:139 10719 + #: src/screens/Signup/index.tsx:141 10710 10720 msgid "You'll follow the suggested users and feeds once you finish creating your account!" 10711 10721 msgstr "" 10712 10722 10713 - #: src/screens/Signup/index.tsx:144 10723 + #: src/screens/Signup/index.tsx:146 10714 10724 msgid "You'll follow the suggested users once you finish creating your account!" 10715 10725 msgstr "" 10716 10726 10717 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:236 10727 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:245 10718 10728 msgid "You'll follow these people and {0} others" 10719 10729 msgstr "" 10720 10730 10721 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:234 10731 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:243 10722 10732 msgid "You'll follow these people right away" 10723 10733 msgstr "" 10724 10734 ··· 10726 10736 msgid "You'll start receiving notifications for {0}!" 10727 10737 msgstr "" 10728 10738 10729 - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:274 10739 + #: src/screens/StarterPack/StarterPackLandingScreen.tsx:283 10730 10740 msgid "You'll stay updated with these feeds" 10731 10741 msgstr "" 10732 10742 ··· 10752 10762 msgid "You've found some people to follow" 10753 10763 msgstr "" 10754 10764 10755 - #: src/components/FocusScope/index.tsx:114 10765 + #: src/components/FocusScope/index.tsx:112 10756 10766 msgid "You've reached the end of the active content." 10757 10767 msgstr "" 10758 10768 ··· 10764 10774 msgid "You've reached the maximum number of requests allowed. Please try again later." 10765 10775 msgstr "" 10766 10776 10767 - #: src/components/FocusScope/index.tsx:90 10777 + #: src/components/FocusScope/index.tsx:88 10768 10778 msgid "You've reached the start of the active content." 10769 10779 msgstr "" 10770 10780 ··· 10780 10790 msgid "You've run out of videos to watch. Maybe it's a good time to take a break?" 10781 10791 msgstr "" 10782 10792 10783 - #: src/screens/Signup/index.tsx:173 10793 + #: src/screens/Signup/index.tsx:179 10784 10794 msgid "Your account" 10785 10795 msgstr "" 10786 10796 ··· 10808 10818 msgid "Your appeal has been submitted. If your appeal succeeds, you will receive an email." 10809 10819 msgstr "" 10810 10820 10811 - #: src/screens/Signup/StepInfo/index.tsx:261 10821 + #: src/screens/Signup/StepInfo/index.tsx:260 10812 10822 msgid "Your birth date" 10813 10823 msgstr "" 10814 10824 10815 - #: src/components/Post/Embed/VideoEmbed/index.web.tsx:229 10825 + #: src/components/Post/Embed/VideoEmbed/index.web.tsx:241 10816 10826 msgid "Your browser does not support the video format. Please try a different browser." 10817 10827 msgstr "" 10818 10828 10819 - #: src/screens/Messages/components/ChatDisabled.tsx:26 10829 + #: src/screens/Messages/components/ChatDisabled.tsx:31 10820 10830 msgid "Your chats have been disabled" 10821 10831 msgstr "" 10822 10832 ··· 10840 10850 10841 10851 #: src/screens/Login/ForgotPasswordForm.tsx:51 10842 10852 #: src/screens/Settings/components/ChangePasswordDialog.tsx:81 10843 - #: src/screens/Signup/state.ts:271 10844 - #: src/screens/Signup/StepInfo/index.tsx:101 10853 + #: src/screens/Signup/state.ts:273 10854 + #: src/screens/Signup/StepInfo/index.tsx:100 10845 10855 msgid "Your email appears to be invalid." 10846 10856 msgstr "" 10847 10857 ··· 10886 10896 msgid "Your location data is not tracked and does not leave your device." 10887 10897 msgstr "" 10888 10898 10889 - #: src/components/dialogs/MutedWords.tsx:369 10899 + #: src/components/dialogs/MutedWords.tsx:374 10890 10900 msgid "Your muted words" 10891 10901 msgstr "" 10892 10902 ··· 10894 10904 msgid "Your password has been changed successfully! Please use your new password when you sign in to Bluesky from now on." 10895 10905 msgstr "" 10896 10906 10897 - #: src/screens/Signup/StepInfo/index.tsx:130 10907 + #: src/screens/Signup/StepInfo/index.tsx:129 10898 10908 msgid "Your password must be at least 8 characters long." 10899 10909 msgstr "" 10900 10910
+1 -1
src/screens/Home/NoFeedsPinned.tsx
··· 75 75 }, 76 76 ]}> 77 77 <View style={[a.align_center, a.gap_sm, a.pb_xl]}> 78 - <Text style={[a.text_xl, a.font_bold]}> 78 + <Text style={[a.text_xl, a.font_semi_bold]}> 79 79 <Trans>Whoops!</Trans> 80 80 </Text> 81 81 <Text
+2 -2
src/screens/List/ListHiddenScreen.tsx
··· 122 122 width={42} 123 123 /> 124 124 <View style={[a.gap_sm, a.align_center]}> 125 - <Text style={[a.font_bold, a.text_3xl]}> 125 + <Text style={[a.font_semi_bold, a.text_3xl]}> 126 126 {list.creator.viewer?.blocking || list.creator.viewer?.blockedBy ? ( 127 127 <Trans>Creator has been blocked</Trans> 128 128 ) : ( ··· 150 150 ) : ( 151 151 <Trans> 152 152 This list – created by{' '} 153 - <Text style={[a.font_bold]}> 153 + <Text style={[a.font_semi_bold]}> 154 154 {sanitizeHandle(list.creator.handle, '@')} 155 155 </Text>{' '} 156 156 – contains possible violations of Bluesky's community guidelines
+1 -1
src/screens/Login/FormContainer.tsx
··· 22 22 testID={testID} 23 23 style={[a.gap_md, a.flex_1, !gtMobile && [a.px_lg, a.py_md], style]}> 24 24 {titleText && !gtMobile && ( 25 - <Text style={[a.text_xl, a.font_bold, t.atoms.text_contrast_high]}> 25 + <Text style={[a.text_xl, a.font_semi_bold, t.atoms.text_contrast_high]}> 26 26 {titleText} 27 27 </Text> 28 28 )}
+1 -1
src/screens/Login/PasswordUpdatedForm.tsx
··· 19 19 <FormContainer 20 20 testID="passwordUpdatedForm" 21 21 style={[a.gap_2xl, !gtMobile && a.mt_5xl]}> 22 - <Text style={[a.text_3xl, a.font_bold, a.text_center]}> 22 + <Text style={[a.text_3xl, a.font_semi_bold, a.text_center]}> 23 23 <Trans>Password updated!</Trans> 24 24 </Text> 25 25 <Text style={[a.text_center, a.mx_auto, {maxWidth: '80%'}]}>
-17
src/screens/Login/ScreenTransition.tsx
··· 1 - import {type StyleProp, type ViewStyle} from 'react-native' 2 - import Animated, {FadeInRight, FadeOutLeft} from 'react-native-reanimated' 3 - import type React from 'react' 4 - 5 - export function ScreenTransition({ 6 - style, 7 - children, 8 - }: { 9 - style?: StyleProp<ViewStyle> 10 - children: React.ReactNode 11 - }) { 12 - return ( 13 - <Animated.View style={style} entering={FadeInRight} exiting={FadeOutLeft}> 14 - {children} 15 - </Animated.View> 16 - ) 17 - }
-1
src/screens/Login/ScreenTransition.web.tsx
··· 1 - export {Fragment as ScreenTransition} from 'react'
+40 -20
src/screens/Login/index.tsx
··· 1 1 import React, {useCallback, useMemo, useRef} from 'react' 2 2 import {KeyboardAvoidingView} from 'react-native' 3 - import {LayoutAnimationConfig} from 'react-native-reanimated' 3 + import Animated, {FadeIn, LayoutAnimationConfig} from 'react-native-reanimated' 4 4 import {msg} from '@lingui/macro' 5 5 import {useLingui} from '@lingui/react' 6 6 import debounce from 'lodash.debounce' ··· 17 17 import {LoginForm} from '#/screens/Login/LoginForm' 18 18 import {PasswordUpdatedForm} from '#/screens/Login/PasswordUpdatedForm' 19 19 import {SetNewPasswordForm} from '#/screens/Login/SetNewPasswordForm' 20 - import {atoms as a} from '#/alf' 20 + import {atoms as a, native} from '#/alf' 21 + import {ScreenTransition} from '#/components/ScreenTransition' 21 22 import {ChooseAccountForm} from './ChooseAccountForm' 22 - import {ScreenTransition} from './ScreenTransition' 23 23 24 24 enum Forms { 25 25 Login, ··· 29 29 PasswordUpdated, 30 30 } 31 31 32 + const OrderedForms = [ 33 + Forms.ChooseAccount, 34 + Forms.Login, 35 + Forms.ForgotPassword, 36 + Forms.SetNewPassword, 37 + Forms.PasswordUpdated, 38 + ] as const 39 + 32 40 export const Login = ({onPressBack}: {onPressBack: () => void}) => { 33 41 const {_} = useLingui() 34 42 const failedAttemptCountRef = useRef(0) ··· 46 54 const [serviceUrl, setServiceUrl] = React.useState<string | undefined>( 47 55 requestedAccount?.service, 48 56 ) 49 - const [initialHandle, setInitialHandle] = React.useState<string>( 57 + const [initialHandle, setInitialHandle] = useState( 50 58 requestedAccount?.handle || '', 51 59 ) 52 - const [currentForm, setCurrentForm] = React.useState<Forms>( 60 + const [currentForm, setCurrentForm] = useState<Forms>( 53 61 requestedAccount 54 62 ? Forms.Login 55 63 : accounts.length 56 64 ? Forms.ChooseAccount 57 65 : Forms.Login, 58 66 ) 67 + const [screenTransitionDirection, setScreenTransitionDirection] = useState< 68 + 'Forward' | 'Backward' 69 + >('Forward') 59 70 60 71 const { 61 72 data: serviceDescription, ··· 68 79 setServiceUrl(account.service) 69 80 } 70 81 setInitialHandle(account?.handle || '') 71 - setCurrentForm(Forms.Login) 82 + gotoForm(Forms.Login) 72 83 } 73 84 74 85 const gotoForm = (form: Forms) => { 75 86 setError('') 87 + const index = OrderedForms.indexOf(currentForm) 88 + const nextIndex = OrderedForms.indexOf(form) 89 + setScreenTransitionDirection(index < nextIndex ? 'Forward' : 'Backward') 76 90 setCurrentForm(form) 77 91 } 78 92 79 - React.useEffect(() => { 93 + useEffect(() => { 80 94 if (serviceError) { 81 95 setError( 82 96 _( ··· 130 144 ) 131 145 132 146 const onPressForgotPassword = () => { 133 - setCurrentForm(Forms.ForgotPassword) 147 + gotoForm(Forms.ForgotPassword) 134 148 logEvent('signin:forgotPasswordPressed', {}) 135 149 } 136 150 137 151 const handlePressBack = () => { 138 152 onPressBack() 153 + setScreenTransitionDirection('Backward') 139 154 logEvent('signin:backPressed', { 140 155 failedAttemptsCount: failedAttemptCountRef.current, 141 156 }) ··· 147 162 timeTakenSeconds: Math.round((Date.now() - startTimeRef.current) / 1000), 148 163 failedAttemptsCount: failedAttemptCountRef.current, 149 164 }) 150 - setCurrentForm(Forms.Login) 151 165 } 152 166 153 167 const onAttemptFailed = () => { ··· 230 244 } 231 245 232 246 return ( 233 - <KeyboardAvoidingView testID="signIn" behavior="padding" style={a.flex_1}> 234 - <LoggedOutLayout 235 - leadin="" 236 - title={title} 237 - description={description} 238 - scrollable> 239 - <LayoutAnimationConfig skipEntering skipExiting> 240 - <ScreenTransition key={currentForm}>{content}</ScreenTransition> 241 - </LayoutAnimationConfig> 242 - </LoggedOutLayout> 243 - </KeyboardAvoidingView> 247 + <Animated.View style={a.flex_1} entering={native(FadeIn.duration(90))}> 248 + <KeyboardAvoidingView testID="signIn" behavior="padding" style={a.flex_1}> 249 + <LoggedOutLayout 250 + leadin="" 251 + title={title} 252 + description={description} 253 + scrollable> 254 + <LayoutAnimationConfig skipEntering> 255 + <ScreenTransition 256 + key={currentForm} 257 + direction={screenTransitionDirection}> 258 + {content} 259 + </ScreenTransition> 260 + </LayoutAnimationConfig> 261 + </LoggedOutLayout> 262 + </KeyboardAvoidingView> 263 + </Animated.View> 244 264 ) 245 265 }
+4 -2
src/screens/Messages/ChatList.tsx
··· 265 265 width={48} 266 266 fill={t.atoms.text_contrast_low.color} 267 267 /> 268 - <Text style={[a.pt_md, a.pb_sm, a.text_2xl, a.font_bold]}> 268 + <Text 269 + style={[a.pt_md, a.pb_sm, a.text_2xl, a.font_semi_bold]}> 269 270 <Trans>Whoops!</Trans> 270 271 </Text> 271 272 <Text ··· 298 299 <> 299 300 <View style={[a.pt_3xl, a.align_center]}> 300 301 <MessageIcon width={48} fill={t.palette.primary_500} /> 301 - <Text style={[a.pt_md, a.pb_sm, a.text_2xl, a.font_bold]}> 302 + <Text 303 + style={[a.pt_md, a.pb_sm, a.text_2xl, a.font_semi_bold]}> 302 304 <Trans>Nothing here</Trans> 303 305 </Text> 304 306 <Text
+4 -2
src/screens/Messages/Inbox.tsx
··· 193 193 width={48} 194 194 fill={t.atoms.text_contrast_low.color} 195 195 /> 196 - <Text style={[a.pt_md, a.pb_sm, a.text_2xl, a.font_bold]}> 196 + <Text 197 + style={[a.pt_md, a.pb_sm, a.text_2xl, a.font_semi_bold]}> 197 198 <Trans>Whoops!</Trans> 198 199 </Text> 199 200 <Text ··· 225 226 <> 226 227 <View style={[a.pt_3xl, a.align_center]}> 227 228 <MessageIcon width={48} fill={t.palette.primary_500} /> 228 - <Text style={[a.pt_md, a.pb_sm, a.text_2xl, a.font_bold]}> 229 + <Text 230 + style={[a.pt_md, a.pb_sm, a.text_2xl, a.font_semi_bold]}> 229 231 <Trans comment="Title message shown in chat requests inbox when it's empty"> 230 232 Inbox zero! 231 233 </Trans>
+2 -2
src/screens/Messages/Settings.tsx
··· 71 71 </Layout.Header.Outer> 72 72 <Layout.Content> 73 73 <View style={[a.p_lg, a.gap_md]}> 74 - <Text style={[a.text_lg, a.font_bold]}> 74 + <Text style={[a.text_lg, a.font_semi_bold]}> 75 75 <Trans>Allow new messages from</Trans> 76 76 </Text> 77 77 <Toggle.Group ··· 121 121 {isNative && ( 122 122 <> 123 123 <Divider style={a.my_md} /> 124 - <Text style={[a.text_lg, a.font_bold]}> 124 + <Text style={[a.text_lg, a.font_semi_bold]}> 125 125 <Trans>Notification Sounds</Trans> 126 126 </Text> 127 127 <Toggle.Group
+7 -2
src/screens/Messages/components/ChatDisabled.tsx
··· 22 22 <View 23 23 style={[a.align_start, a.p_xl, a.rounded_md, t.atoms.bg_contrast_25]}> 24 24 <Text 25 - style={[a.text_md, a.font_bold, a.pb_sm, t.atoms.text_contrast_high]}> 25 + style={[ 26 + a.text_md, 27 + a.font_semi_bold, 28 + a.pb_sm, 29 + t.atoms.text_contrast_high, 30 + ]}> 26 31 <Trans>Your chats have been disabled</Trans> 27 32 </Text> 28 33 <Text style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_medium]}> ··· 104 109 105 110 return ( 106 111 <Dialog.ScrollableInner label={_(msg`Appeal this decision`)}> 107 - <Text style={[a.text_2xl, a.font_bold, a.pb_xs, a.leading_tight]}> 112 + <Text style={[a.text_2xl, a.font_semi_bold, a.pb_xs, a.leading_tight]}> 108 113 <Trans>Appeal this decision</Trans> 109 114 </Text> 110 115 <Text style={[a.text_md, a.leading_snug]}>
+3 -3
src/screens/Messages/components/ChatListItem.tsx
··· 333 333 return ( 334 334 <GestureActionView actions={actions}> 335 335 <View 336 - // @ts-expect-error web only 337 336 onMouseEnter={onMouseEnter} 338 337 onMouseLeave={onMouseLeave} 338 + // @ts-expect-error web only 339 339 onFocus={onFocus} 340 340 onBlur={onMouseLeave} 341 341 style={[a.relative, t.atoms.bg]}> ··· 397 397 style={[ 398 398 a.text_md, 399 399 t.atoms.text, 400 - a.font_bold, 400 + a.font_semi_bold, 401 401 {lineHeight: 21}, 402 402 isDimStyle && t.atoms.text_contrast_medium, 403 403 ]}> ··· 461 461 style={[ 462 462 a.text_sm, 463 463 a.leading_snug, 464 - hasUnread ? a.font_bold : t.atoms.text_contrast_high, 464 + hasUnread ? a.font_semi_bold : t.atoms.text_contrast_high, 465 465 isDimStyle && t.atoms.text_contrast_medium, 466 466 ]}> 467 467 {lastMessage}
+1 -1
src/screens/Messages/components/InboxPreview.tsx
··· 57 57 )} 58 58 </View> 59 59 <ButtonText 60 - style={[a.flex_1, a.font_bold, a.text_left]} 60 + style={[a.flex_1, a.font_semi_bold, a.text_left]} 61 61 numberOfLines={1}> 62 62 <Trans>Chat requests</Trans> 63 63 </ButtonText>
+1 -1
src/screens/Messages/components/RequestListItem.tsx
··· 38 38 {/* spacer, since you can't nest pressables */} 39 39 <View style={[a.pt_md, a.pb_xs, a.w_full, {opacity: 0}]} aria-hidden> 40 40 {/* Placeholder text so that it responds to the font height */} 41 - <Text style={[a.text_xs, a.leading_tight, a.font_bold]}> 41 + <Text style={[a.text_xs, a.leading_tight, a.font_semi_bold]}> 42 42 <Trans comment="Accept a chat request">Accept Request</Trans> 43 43 </Text> 44 44 </View>
+12 -6
src/screens/Moderation/index.tsx
··· 142 142 ]}> 143 143 <View style={[a.flex_row, a.align_center, a.gap_md]}> 144 144 <Icon size="md" style={[t.atoms.text_contrast_medium]} /> 145 - <Text style={[a.text_sm, a.font_bold]}>{title}</Text> 145 + <Text style={[a.text_sm, a.font_semi_bold]}>{title}</Text> 146 146 </View> 147 147 <ChevronRight 148 148 size="sm" ··· 221 221 )} 222 222 223 223 <Text 224 - style={[a.text_md, a.font_bold, a.pb_md, t.atoms.text_contrast_high]}> 224 + style={[ 225 + a.text_md, 226 + a.font_semi_bold, 227 + a.pb_md, 228 + t.atoms.text_contrast_high, 229 + ]}> 225 230 <Trans>Moderation tools</Trans> 226 231 </Text> 227 232 ··· 330 335 a.pt_2xl, 331 336 a.pb_md, 332 337 a.text_md, 333 - a.font_bold, 338 + a.font_semi_bold, 334 339 t.atoms.text_contrast_high, 335 340 ]}> 336 341 <Trans>Content filters</Trans> ··· 364 369 a.pt_2xl, 365 370 a.pb_md, 366 371 a.text_md, 367 - a.font_bold, 372 + a.font_semi_bold, 368 373 t.atoms.text_contrast_high, 369 374 ]}> 370 375 <Trans>Content filters</Trans> ··· 396 401 a.justify_between, 397 402 disabledOnIOS && {opacity: 0.5}, 398 403 ]}> 399 - <Text style={[a.font_bold, t.atoms.text_contrast_high]}> 404 + <Text 405 + style={[a.font_semi_bold, t.atoms.text_contrast_high]}> 400 406 <Trans>Enable adult content</Trans> 401 407 </Text> 402 408 <Toggle.Item ··· 465 471 <Text 466 472 style={[ 467 473 a.text_md, 468 - a.font_bold, 474 + a.font_semi_bold, 469 475 a.pt_2xl, 470 476 a.pb_md, 471 477 t.atoms.text_contrast_high,
+2 -5
src/screens/Onboarding/Layout.tsx
··· 17 17 useTheme, 18 18 web, 19 19 } from '#/alf' 20 - import {leading} from '#/alf/typography' 21 20 import {Button, ButtonIcon, ButtonText} from '#/components/Button' 22 21 import {ArrowLeft_Stroke2_Corner0_Rounded as ArrowLeft} from '#/components/icons/Arrow' 23 22 import {HEADER_SLOT_SIZE} from '#/components/Layout' ··· 234 233 style={[ 235 234 a.pb_sm, 236 235 a.text_4xl, 237 - a.font_bold, 238 - { 239 - lineHeight: leading(a.text_4xl, a.leading_tight), 240 - }, 236 + a.font_semi_bold, 237 + a.leading_tight, 241 238 flatten(style), 242 239 ]}> 243 240 {children}
+4 -4
src/screens/Onboarding/StepFinished.tsx
··· 432 432 </View> 433 433 434 434 <View style={[a.gap_sm]}> 435 - <Text style={[a.font_heavy, a.text_3xl, a.text_center]}> 435 + <Text style={[a.font_bold, a.text_3xl, a.text_center]}> 436 436 {title} 437 437 </Text> 438 438 <Text ··· 537 537 <View style={[a.flex_row, a.align_center, a.w_full, a.gap_lg]}> 538 538 <IconCircle icon={Growth} size="lg" style={{width: 48, height: 48}} /> 539 539 <View style={[a.flex_1, a.gap_xs]}> 540 - <Text style={[a.font_bold, a.text_lg]}> 540 + <Text style={[a.font_semi_bold, a.text_lg]}> 541 541 <Trans>Public</Trans> 542 542 </Text> 543 543 <Text ··· 551 551 <View style={[a.flex_row, a.align_center, a.w_full, a.gap_lg]}> 552 552 <IconCircle icon={News} size="lg" style={{width: 48, height: 48}} /> 553 553 <View style={[a.flex_1, a.gap_xs]}> 554 - <Text style={[a.font_bold, a.text_lg]}> 554 + <Text style={[a.font_semi_bold, a.text_lg]}> 555 555 <Trans>Open</Trans> 556 556 </Text> 557 557 <Text ··· 567 567 style={{width: 48, height: 48}} 568 568 /> 569 569 <View style={[a.flex_1, a.gap_xs]}> 570 - <Text style={[a.font_bold, a.text_lg]}> 570 + <Text style={[a.font_semi_bold, a.text_lg]}> 571 571 <Trans>Flexible</Trans> 572 572 </Text> 573 573 <Text
+1 -1
src/screens/Onboarding/StepInterests/InterestButton.tsx
··· 69 69 { 70 70 color: t.palette.contrast_900, 71 71 }, 72 - a.font_bold, 72 + a.font_semi_bold, 73 73 native({paddingTop: 2}), 74 74 ctx.selected ? styles.textSelected : {}, 75 75 ]}>
+1 -1
src/screens/Onboarding/StepInterests/index.tsx
··· 184 184 <Text 185 185 style={[ 186 186 a.text_md, 187 - a.font_bold, 187 + a.font_semi_bold, 188 188 { 189 189 color: t.palette.negative_900, 190 190 },
+1 -1
src/screens/Onboarding/StepSuggestedAccounts/index.tsx
··· 133 133 134 134 return ( 135 135 <View style={[a.align_start]} testID="onboardingInterests"> 136 - <Text style={[a.font_heavy, a.text_3xl]}> 136 + <Text style={[a.font_bold, a.text_3xl]}> 137 137 <Trans comment="Accounts suggested to the user for them to follow"> 138 138 Suggested for you 139 139 </Trans>
+6 -1
src/screens/PostThread/components/ThreadError.tsx
··· 58 58 ]}> 59 59 <View style={[a.gap_xs]}> 60 60 <Text 61 - style={[a.text_center, a.text_lg, a.font_bold, a.leading_snug]}> 61 + style={[ 62 + a.text_center, 63 + a.text_lg, 64 + a.font_semi_bold, 65 + a.leading_snug, 66 + ]}> 62 67 {title} 63 68 </Text> 64 69 <Text
+16 -10
src/screens/PostThread/components/ThreadItemAnchor.tsx
··· 129 129 ]}> 130 130 <TrashIcon style={[t.atoms.text_contrast_medium]} /> 131 131 </View> 132 - <Text style={[a.text_md, a.font_bold, t.atoms.text_contrast_medium]}> 132 + <Text 133 + style={[a.text_md, a.font_semi_bold, t.atoms.text_contrast_medium]}> 133 134 <Trans>Post has been deleted</Trans> 134 135 </Text> 135 136 </View> ··· 343 344 style={[ 344 345 a.flex_shrink, 345 346 a.text_lg, 346 - a.font_bold, 347 + a.font_semi_bold, 347 348 a.leading_snug, 348 349 ]} 349 350 numberOfLines={1}> ··· 439 440 <Text 440 441 testID="repostCount-expanded" 441 442 style={[a.text_md, t.atoms.text_contrast_medium]}> 442 - <Text style={[a.text_md, a.font_bold, t.atoms.text]}> 443 + <Text style={[a.text_md, a.font_semi_bold, t.atoms.text]}> 443 444 {formatPostStatCount(post.repostCount)} 444 445 </Text>{' '} 445 446 <Plural ··· 457 458 <Text 458 459 testID="quoteCount-expanded" 459 460 style={[a.text_md, t.atoms.text_contrast_medium]}> 460 - <Text style={[a.text_md, a.font_bold, t.atoms.text]}> 461 + <Text style={[a.text_md, a.font_semi_bold, t.atoms.text]}> 461 462 {formatPostStatCount(post.quoteCount)} 462 463 </Text>{' '} 463 464 <Plural ··· 473 474 <Text 474 475 testID="likeCount-expanded" 475 476 style={[a.text_md, t.atoms.text_contrast_medium]}> 476 - <Text style={[a.text_md, a.font_bold, t.atoms.text]}> 477 + <Text style={[a.text_md, a.font_semi_bold, t.atoms.text]}> 477 478 {formatPostStatCount(post.likeCount)} 478 479 </Text>{' '} 479 480 <Plural value={post.likeCount} one="like" other="likes" /> ··· 484 485 <Text 485 486 testID="bookmarkCount-expanded" 486 487 style={[a.text_md, t.atoms.text_contrast_medium]}> 487 - <Text style={[a.text_md, a.font_bold, t.atoms.text]}> 488 + <Text style={[a.text_md, a.font_semi_bold, t.atoms.text]}> 488 489 {formatPostStatCount(post.bookmarkCount)} 489 490 </Text>{' '} 490 491 <Plural value={post.bookmarkCount} one="save" other="saves" /> ··· 652 653 <Text 653 654 style={[ 654 655 a.text_xs, 655 - a.font_bold, 656 + a.font_semi_bold, 656 657 a.leading_tight, 657 658 t.atoms.text_contrast_medium, 658 659 ]}> ··· 669 670 <Prompt.DescriptionText> 670 671 <Trans> 671 672 This post claims to have been created on{' '} 672 - <RNText style={[a.font_bold]}>{niceDate(i18n, createdAt)}</RNText>, 673 - but was first seen by Bluesky on{' '} 674 - <RNText style={[a.font_bold]}>{niceDate(i18n, indexedAt)}</RNText>. 673 + <RNText style={[a.font_semi_bold]}> 674 + {niceDate(i18n, createdAt)} 675 + </RNText> 676 + , but was first seen by Bluesky on{' '} 677 + <RNText style={[a.font_semi_bold]}> 678 + {niceDate(i18n, indexedAt)} 679 + </RNText> 680 + . 675 681 </Trans> 676 682 </Prompt.DescriptionText> 677 683 <Text
+2 -1
src/screens/PostThread/components/ThreadItemPost.tsx
··· 106 106 ]}> 107 107 <TrashIcon style={[t.atoms.text_contrast_medium]} /> 108 108 </View> 109 - <Text style={[a.text_md, a.font_bold, t.atoms.text_contrast_medium]}> 109 + <Text 110 + style={[a.text_md, a.font_semi_bold, t.atoms.text_contrast_medium]}> 110 111 <Trans>Post has been deleted</Trans> 111 112 </Text> 112 113 </View>
+2 -1
src/screens/PostThread/components/ThreadItemPostTombstone.tsx
··· 46 46 <View style={[a.flex_row, a.justify_center, {width: LINEAR_AVI_WIDTH}]}> 47 47 <Icon style={[t.atoms.text_contrast_medium]} /> 48 48 </View> 49 - <Text style={[a.text_md, a.font_bold, t.atoms.text_contrast_medium]}> 49 + <Text 50 + style={[a.text_md, a.font_semi_bold, t.atoms.text_contrast_medium]}> 50 51 {copy} 51 52 </Text> 52 53 </View>
+1 -1
src/screens/Profile/ErrorState.tsx
··· 27 27 <View style={[a.px_xl]}> 28 28 <CircleInfo width={48} style={[t.atoms.text_contrast_low]} /> 29 29 30 - <Text style={[a.text_xl, a.font_bold, a.pb_md, a.pt_xl]}> 30 + <Text style={[a.text_xl, a.font_semi_bold, a.pb_md, a.pt_xl]}> 31 31 <Trans>Hmmmm, we couldn't load that moderation service.</Trans> 32 32 </Text> 33 33 <Text
+1 -1
src/screens/Profile/Header/DisplayName.tsx
··· 26 26 t.atoms.text, 27 27 gtMobile ? a.text_4xl : a.text_3xl, 28 28 a.self_start, 29 - a.font_heavy, 29 + a.font_bold, 30 30 ]}> 31 31 {sanitizeDisplayName( 32 32 profile.displayName || sanitizeHandle(profile.handle),
+7 -9
src/screens/Profile/Header/EditProfileDialog.tsx
··· 1 1 import {useCallback, useEffect, useState} from 'react' 2 - import {Dimensions, View} from 'react-native' 2 + import {useWindowDimensions, View} from 'react-native' 3 3 import {type AppBskyActorDefs} from '@atproto/api' 4 4 import {msg, Plural, Trans} from '@lingui/macro' 5 5 import {useLingui} from '@lingui/react' ··· 27 27 28 28 const DISPLAY_NAME_MAX_GRAPHEMES = 64 29 29 const DESCRIPTION_MAX_GRAPHEMES = 256 30 - 31 - const SCREEN_HEIGHT = Dimensions.get('window').height 32 30 33 31 export function EditProfileDialog({ 34 32 profile, ··· 42 40 const {_} = useLingui() 43 41 const cancelControl = Dialog.useDialogControl() 44 42 const [dirty, setDirty] = useState(false) 43 + const {height} = useWindowDimensions() 45 44 46 45 const onPressCancel = useCallback(() => { 47 46 if (dirty) { ··· 56 55 control={control} 57 56 nativeOptions={{ 58 57 preventDismiss: dirty, 59 - minHeight: SCREEN_HEIGHT, 58 + minHeight: height, 60 59 }} 61 60 webOptions={{ 62 61 onBackgroundPress: () => { ··· 186 185 newUserAvatar, 187 186 newUserBanner, 188 187 }) 189 - onUpdate?.() 190 - control.close() 188 + control.close(() => onUpdate?.()) 191 189 Toast.show(_(msg({message: 'Profile updated', context: 'toast'}))) 192 190 } catch (e: any) { 193 191 logger.error('Failed to update user profile', {message: String(e)}) ··· 328 326 style={[ 329 327 a.text_sm, 330 328 a.mt_xs, 331 - a.font_bold, 329 + a.font_semi_bold, 332 330 {color: t.palette.negative_400}, 333 331 ]}> 334 332 <Plural ··· 369 367 defaultValue={description} 370 368 onChangeText={setDescription} 371 369 multiline 372 - label={_(msg`Display name`)} 370 + label={_(msg`Description`)} 373 371 placeholder={_(msg`Tell us a bit about yourself`)} 374 372 testID="editProfileDescriptionInput" 375 373 /> ··· 379 377 style={[ 380 378 a.text_sm, 381 379 a.mt_xs, 382 - a.font_bold, 380 + a.font_semi_bold, 383 381 {color: t.palette.negative_400}, 384 382 ]}> 385 383 <Plural
+3 -3
src/screens/Profile/Header/Metrics.tsx
··· 37 37 style={[a.flex_row, t.atoms.text]} 38 38 to={makeProfileLink(profile, 'followers')} 39 39 label={`${profile.followersCount || 0} ${pluralizedFollowers}`}> 40 - <Text style={[a.font_bold, a.text_md]}>{followers} </Text> 40 + <Text style={[a.font_semi_bold, a.text_md]}>{followers} </Text> 41 41 <Text style={[t.atoms.text_contrast_medium, a.text_md]}> 42 42 {pluralizedFollowers} 43 43 </Text> ··· 47 47 style={[a.flex_row, t.atoms.text]} 48 48 to={makeProfileLink(profile, 'follows')} 49 49 label={_(msg`${profile.followsCount || 0} following`)}> 50 - <Text style={[a.font_bold, a.text_md]}>{following} </Text> 50 + <Text style={[a.font_semi_bold, a.text_md]}>{following} </Text> 51 51 <Text style={[t.atoms.text_contrast_medium, a.text_md]}> 52 52 {pluralizedFollowings} 53 53 </Text> 54 54 </InlineLinkText> 55 - <Text style={[a.font_bold, t.atoms.text, a.text_md]}> 55 + <Text style={[a.font_semi_bold, t.atoms.text, a.text_md]}> 56 56 {formatCount(i18n, profile.postsCount || 0)}{' '} 57 57 <Text style={[t.atoms.text_contrast_medium, a.font_normal, a.text_md]}> 58 58 {plural(profile.postsCount || 0, {one: 'post', other: 'posts'})}
+2 -2
src/screens/Profile/Header/ProfileHeaderLabeler.tsx
··· 225 225 ? t.palette.contrast_700 226 226 : t.palette.white, 227 227 }, 228 - a.font_bold, 228 + a.font_semi_bold, 229 229 a.text_center, 230 230 a.leading_tight, 231 231 ]}> ··· 297 297 {({hovered, focused, pressed}) => ( 298 298 <Text 299 299 style={[ 300 - a.font_bold, 300 + a.font_semi_bold, 301 301 a.text_sm, 302 302 t.atoms.text_contrast_medium, 303 303 (hovered || focused || pressed) &&
+1 -1
src/screens/Profile/Header/ProfileHeaderStandard.tsx
··· 267 267 t.atoms.text, 268 268 gtMobile ? a.text_4xl : a.text_3xl, 269 269 a.self_start, 270 - a.font_heavy, 270 + a.font_bold, 271 271 a.leading_tight, 272 272 ]}> 273 273 {sanitizeDisplayName(
+2 -2
src/screens/Profile/components/ProfileFeedHeader.tsx
··· 234 234 <Text 235 235 style={[ 236 236 a.text_md, 237 - a.font_heavy, 237 + a.font_bold, 238 238 a.leading_tight, 239 239 gtMobile && a.text_lg, 240 240 ]} ··· 441 441 442 442 <View style={[a.flex_1, a.gap_2xs]}> 443 443 <Text 444 - style={[a.text_2xl, a.font_heavy, a.leading_tight]} 444 + style={[a.text_2xl, a.font_bold, a.leading_tight]} 445 445 numberOfLines={2}> 446 446 {info.displayName} 447 447 </Text>
+1 -1
src/screens/ProfileList/components/ErrorScreen.tsx
··· 22 22 23 23 return ( 24 24 <View style={[a.px_xl, a.py_md, a.gap_md]}> 25 - <Text style={[a.text_4xl, a.font_heavy]}> 25 + <Text style={[a.text_4xl, a.font_bold]}> 26 26 <Trans>Could not load list</Trans> 27 27 </Text> 28 28 <Text style={[a.text_md, t.atoms.text_contrast_high, a.leading_snug]}>
+5 -10
src/screens/ProfileList/components/MoreOptionsMenu.tsx
··· 8 8 import {toShareUrl} from '#/lib/strings/url-helpers' 9 9 import {logger} from '#/logger' 10 10 import {isWeb} from '#/platform/detection' 11 - import {useModalControls} from '#/state/modals' 12 11 import { 13 12 useListBlockMutation, 14 13 useListDeleteMutation, ··· 18 17 import {useSession} from '#/state/session' 19 18 import {Button, ButtonIcon} from '#/components/Button' 20 19 import {useDialogControl} from '#/components/Dialog' 20 + import {CreateOrEditListDialog} from '#/components/dialogs/lists/CreateOrEditListDialog' 21 21 import {ArrowOutOfBoxModified_Stroke2_Corner2_Rounded as ShareIcon} from '#/components/icons/ArrowOutOfBox' 22 22 import {ChainLink_Stroke2_Corner0_Rounded as ChainLink} from '#/components/icons/ChainLink' 23 23 import {DotGrid_Stroke2_Corner0_Rounded as DotGridIcon} from '#/components/icons/DotGrid' ··· 44 44 }) { 45 45 const {_} = useLingui() 46 46 const {currentAccount} = useSession() 47 - const {openModal} = useModalControls() 47 + const editListDialogControl = useDialogControl() 48 48 const deleteListPromptControl = useDialogControl() 49 49 const reportDialogControl = useReportDialogControl() 50 50 const navigation = useNavigation<NavigationProp>() ··· 80 80 } 81 81 } 82 82 83 - const onPressEdit = () => { 84 - openModal({ 85 - name: 'create-or-edit-list', 86 - list, 87 - }) 88 - } 89 - 90 83 const onPressDelete = async () => { 91 84 await deleteList({uri: list.uri}) 92 85 ··· 201 194 <Menu.Group> 202 195 <Menu.Item 203 196 label={_(msg`Edit list details`)} 204 - onPress={onPressEdit}> 197 + onPress={editListDialogControl.open}> 205 198 <Menu.ItemText> 206 199 <Trans>Edit list details</Trans> 207 200 </Menu.ItemText> ··· 274 267 )} 275 268 </Menu.Outer> 276 269 </Menu.Root> 270 + 271 + <CreateOrEditListDialog control={editListDialogControl} list={list} /> 277 272 278 273 <Prompt.Basic 279 274 control={deleteListPromptControl}
+1 -1
src/screens/Search/Explore.tsx
··· 885 885 ]}> 886 886 <CircleInfo size="md" fill={t.palette.negative_400} /> 887 887 <View style={[a.flex_1, a.gap_sm]}> 888 - <Text style={[a.font_bold, a.leading_snug]}> 888 + <Text style={[a.font_semi_bold, a.leading_snug]}> 889 889 {item.message} 890 890 </Text> 891 891 <Text
+1 -1
src/screens/Search/Shell.tsx
··· 460 460 a.pt_sm, 461 461 a.pb_lg, 462 462 ]}> 463 - <Text style={[a.text_2xl, a.font_heavy]}> 463 + <Text style={[a.text_2xl, a.font_bold]}> 464 464 <Trans>Search</Trans> 465 465 </Text> 466 466 </View>
+5 -1
src/screens/Search/components/ModuleHeader.tsx
··· 93 93 94 94 export function TitleText({style, ...props}: TextProps) { 95 95 return ( 96 - <Text style={[a.font_bold, a.flex_1, a.text_xl, style]} emoji {...props} /> 96 + <Text 97 + style={[a.font_semi_bold, a.flex_1, a.text_xl, style]} 98 + emoji 99 + {...props} 100 + /> 97 101 ) 98 102 } 99 103
+1 -1
src/screens/Search/components/SearchHistory.tsx
··· 45 45 <View style={[a.w_full, a.gap_md]}> 46 46 {(searchHistory.length > 0 || selectedProfiles.length > 0) && ( 47 47 <View style={[a.px_lg, a.pt_sm]}> 48 - <Text style={[a.text_md, a.font_bold]}> 48 + <Text style={[a.text_md, a.font_semi_bold]}> 49 49 <Trans>Recent Searches</Trans> 50 50 </Text> 51 51 </View>
+2 -2
src/screens/Search/components/StarterPackCard.tsx
··· 89 89 <View style={[a.flex_1]}> 90 90 <Text 91 91 emoji 92 - style={[a.text_md, a.font_bold, a.leading_snug]} 92 + style={[a.text_md, a.font_semi_bold, a.leading_snug]} 93 93 numberOfLines={1}> 94 94 {record.name} 95 95 </Text> ··· 242 242 <Text 243 243 style={[ 244 244 gtPhone ? a.text_md : a.text_xs, 245 - a.font_bold, 245 + a.font_semi_bold, 246 246 a.leading_snug, 247 247 {color: 'white'}, 248 248 ]}>
+1 -1
src/screens/Search/modules/ExploreInterestsCard.tsx
··· 63 63 ]}> 64 64 <View style={[a.flex_row, a.gap_sm, a.align_center]}> 65 65 <Shapes /> 66 - <Text style={[a.text_xl, a.font_bold, a.leading_tight]}> 66 + <Text style={[a.text_xl, a.font_semi_bold, a.leading_tight]}> 67 67 <Trans>Your interests</Trans> 68 68 </Text> 69 69 </View>
+1 -1
src/screens/Search/modules/ExploreRecommendations.tsx
··· 50 50 fill={t.palette.primary_500} 51 51 style={{marginLeft: -2}} 52 52 /> 53 - <Text style={[a.text_2xl, a.font_heavy, t.atoms.text]}> 53 + <Text style={[a.text_2xl, a.font_bold, t.atoms.text]}> 54 54 <Trans>Recommended</Trans> 55 55 </Text> 56 56 </View>
+2 -2
src/screens/Search/modules/ExploreTrendingTopics.tsx
··· 104 104 <Text 105 105 style={[ 106 106 a.text_md, 107 - a.font_bold, 107 + a.font_semi_bold, 108 108 a.leading_tight, 109 109 {width: 20}, 110 110 ]}> ··· 113 113 </Trans> 114 114 </Text> 115 115 <Text 116 - style={[a.text_md, a.font_bold, a.leading_tight]} 116 + style={[a.text_md, a.font_semi_bold, a.leading_tight]} 117 117 numberOfLines={1}> 118 118 {trend.displayName} 119 119 </Text>
+1 -1
src/screens/Settings/AboutSettings.tsx
··· 1 1 import {Platform} from 'react-native' 2 2 import {setStringAsync} from 'expo-clipboard' 3 - import * as FileSystem from 'expo-file-system' 3 + import * as FileSystem from 'expo-file-system/legacy' 4 4 import {Image} from 'expo-image' 5 5 import {msg, Trans} from '@lingui/macro' 6 6 import {useLingui} from '@lingui/react'
+1 -1
src/screens/Settings/AccountSettings.tsx
··· 97 97 color={t.palette.primary_500} 98 98 /> 99 99 <SettingsList.ItemText 100 - style={[{color: t.palette.primary_500}, a.font_bold]}> 100 + style={[{color: t.palette.primary_500}, a.font_semi_bold]}> 101 101 <Trans>Verify your email</Trans> 102 102 </SettingsList.ItemText> 103 103 <SettingsList.Chevron color={t.palette.primary_500} />
+7 -2
src/screens/Settings/AppIconSettings/index.tsx
··· 93 93 a.text_md, 94 94 a.mt_xl, 95 95 a.mb_sm, 96 - a.font_bold, 96 + a.font_semi_bold, 97 97 t.atoms.text_contrast_medium, 98 98 ]}> 99 99 <Trans>Bluesky+</Trans> ··· 201 201 const t = useTheme() 202 202 return ( 203 203 <Text 204 - style={[a.text_md, a.font_bold, a.flex_1, t.atoms.text_contrast_medium]} 204 + style={[ 205 + a.text_md, 206 + a.font_semi_bold, 207 + a.flex_1, 208 + t.atoms.text_contrast_medium, 209 + ]} 205 210 emoji> 206 211 {children} 207 212 </Text>
+5 -2
src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx
··· 140 140 Enable notifications for an account by visiting their 141 141 profile and pressing the{' '} 142 142 <RNText 143 - style={[a.font_bold, t.atoms.text_contrast_high]}> 143 + style={[ 144 + a.font_semi_bold, 145 + t.atoms.text_contrast_high, 146 + ]}> 144 147 bell icon 145 148 </RNText>{' '} 146 149 <BellRingingFilledIcon ··· 157 160 <InlineLinkText 158 161 label={_(msg`Privacy and Security settings`)} 159 162 to={{screen: 'ActivityPrivacySettings'}} 160 - style={[a.font_bold]}> 163 + style={[a.font_semi_bold]}> 161 164 Settings &rarr; Privacy and Security 162 165 </InlineLinkText> 163 166 .
+1 -1
src/screens/Settings/NotificationSettings/components/ItemTextWithSubtitle.tsx
··· 19 19 const t = useTheme() 20 20 return ( 21 21 <View style={[a.flex_1, bold ? a.gap_xs : a.gap_2xs]}> 22 - <SettingsList.ItemText style={bold && [a.font_bold, a.text_lg]}> 22 + <SettingsList.ItemText style={bold && [a.font_semi_bold, a.text_lg]}> 23 23 {titleText} 24 24 </SettingsList.ItemText> 25 25 {showSkeleton ? (
+1 -1
src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx
··· 150 150 {'include' in preference && ( 151 151 <> 152 152 <Divider /> 153 - <Text style={[a.font_bold, a.text_md]}> 153 + <Text style={[a.font_semi_bold, a.text_md]}> 154 154 <Trans>From</Trans> 155 155 </Text> 156 156 <Toggle.Group
+1 -1
src/screens/Settings/Settings.tsx
··· 420 420 { 421 421 style: 'default', 422 422 text: 'Apply', 423 - onPress: channel => { 423 + onPress: (channel?: string) => { 424 424 tryApplyUpdate(channel ?? '') 425 425 }, 426 426 },
+2 -2
src/screens/Settings/components/AddAppPasswordDialog.tsx
··· 107 107 style={[a.gap_lg]} 108 108 exiting={native(SlideOutLeft)} 109 109 key={0}> 110 - <Text style={[a.text_2xl, a.font_bold]}> 110 + <Text style={[a.text_2xl, a.font_semi_bold]}> 111 111 <Trans>Add App Password</Trans> 112 112 </Text> 113 113 <Text style={[a.text_md, a.leading_snug]}> ··· 183 183 style={[a.gap_lg]} 184 184 entering={isWeb ? FadeIn.delay(200) : SlideInRight} 185 185 key={1}> 186 - <Text style={[a.text_2xl, a.font_bold]}> 186 + <Text style={[a.text_2xl, a.font_semi_bold]}> 187 187 <Trans>Here is your app password!</Trans> 188 188 </Text> 189 189 <Text style={[a.text_md, a.leading_snug]}>
+3 -3
src/screens/Settings/components/ChangeHandleDialog.tsx
··· 244 244 <Text> 245 245 <Trans> 246 246 Your full handle will be{' '} 247 - <Text style={[a.font_bold]}> 247 + <Text style={[a.font_semi_bold]}> 248 248 @{createFullHandle(subdomain, host)} 249 249 </Text> 250 250 </Trans> ··· 280 280 }), 281 281 )} 282 282 to="https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial" 283 - style={[a.font_bold]} 283 + style={[a.font_semi_bold]} 284 284 disableMismatchWarning> 285 285 Learn more here. 286 286 </InlineLinkText> ··· 522 522 <Admonition type="info" style={[a.mb_md]}> 523 523 <Trans> 524 524 Your current handle{' '} 525 - <Text style={[a.font_bold]}> 525 + <Text style={[a.font_semi_bold]}> 526 526 {sanitizeHandle(currentAccount?.handle || '', '@')} 527 527 </Text>{' '} 528 528 will automatically remain reserved for you. You can switch back to
+1 -1
src/screens/Settings/components/ChangePasswordDialog.tsx
··· 165 165 style={web({maxWidth: 400})}> 166 166 <View style={[a.gap_xl]}> 167 167 <View style={[a.gap_sm]}> 168 - <Text style={[a.font_heavy, a.text_2xl]}> 168 + <Text style={[a.font_bold, a.text_2xl]}> 169 169 {uiStrings[stage].title} 170 170 </Text> 171 171 {error ? (
+1 -1
src/screens/Settings/components/CopyButton.tsx
··· 58 58 pointerEvents="none"> 59 59 <Text 60 60 style={[ 61 - a.font_bold, 61 + a.font_semi_bold, 62 62 a.text_right, 63 63 a.text_md, 64 64 t.atoms.text_contrast_high,
+1 -1
src/screens/Settings/components/DisableEmail2FADialog.tsx
··· 85 85 <View style={[a.relative, a.gap_md, a.w_full]}> 86 86 <Text 87 87 nativeID="dialog-title" 88 - style={[a.text_2xl, a.font_bold, t.atoms.text]}> 88 + style={[a.text_2xl, a.font_semi_bold, t.atoms.text]}> 89 89 <Trans>Disable Email 2FA</Trans> 90 90 </Text> 91 91 <P nativeID="dialog-description">
+1 -1
src/screens/Settings/components/ExportCarDialog.tsx
··· 58 58 accessibilityDescribedBy="dialog-description" 59 59 accessibilityLabelledBy="dialog-title"> 60 60 <View style={[a.relative, a.gap_lg, a.w_full]}> 61 - <Text nativeID="dialog-title" style={[a.text_2xl, a.font_heavy]}> 61 + <Text nativeID="dialog-title" style={[a.text_2xl, a.font_bold]}> 62 62 <Trans>Export My Data</Trans> 63 63 </Text> 64 64 <Text
+2 -3
src/screens/Signup/StepCaptcha/index.tsx
··· 8 8 import {createFullHandle} from '#/lib/strings/handles' 9 9 import {logger} from '#/logger' 10 10 import {isAndroid, isIOS, isNative, isWeb} from '#/platform/detection' 11 - import {ScreenTransition} from '#/screens/Login/ScreenTransition' 12 11 import {useSignupContext} from '#/screens/Signup/state' 13 12 import {CaptchaWebView} from '#/screens/Signup/StepCaptcha/CaptchaWebView' 14 13 import {atoms as a, useTheme} from '#/alf' ··· 143 142 }, [dispatch, state.handle]) 144 143 145 144 return ( 146 - <ScreenTransition> 145 + <> 147 146 <View style={[a.gap_lg, a.pt_lg]}> 148 147 <View 149 148 style={[ ··· 171 170 isLoading={state.isLoading} 172 171 onBackPress={onBackPress} 173 172 /> 174 - </ScreenTransition> 173 + </> 175 174 ) 176 175 } 177 176
+2 -3
src/screens/Signup/StepHandle/index.tsx
··· 19 19 checkHandleAvailability, 20 20 useHandleAvailabilityQuery, 21 21 } from '#/state/queries/handle-availability' 22 - import {ScreenTransition} from '#/screens/Login/ScreenTransition' 23 22 import {useSignupContext} from '#/screens/Signup/state' 24 23 import {atoms as a, native, useTheme} from '#/alf' 25 24 import * as TextField from '#/components/forms/TextField' ··· 141 140 !validCheck.totalLength 142 141 143 142 return ( 144 - <ScreenTransition> 143 + <> 145 144 <View style={[a.gap_sm, a.pt_lg, a.z_10]}> 146 145 <View> 147 146 <TextField.Root isInvalid={textFieldInvalid}> ··· 252 251 onNextPress={onNextPress} 253 252 /> 254 253 </Animated.View> 255 - </ScreenTransition> 254 + </> 256 255 ) 257 256 } 258 257
+2 -3
src/screens/Signup/StepInfo/index.tsx
··· 7 7 8 8 import {isEmailMaybeInvalid} from '#/lib/strings/email' 9 9 import {logger} from '#/logger' 10 - import {ScreenTransition} from '#/screens/Login/ScreenTransition' 11 10 import {is13, is18, useSignupContext} from '#/screens/Signup/state' 12 11 import {Policies} from '#/screens/Signup/StepInfo/Policies' 13 12 import {atoms as a, native} from '#/alf' ··· 147 146 } 148 147 149 148 return ( 150 - <ScreenTransition> 149 + <> 151 150 <View style={[a.gap_md, a.pt_lg]}> 152 151 <FormError error={state.error} /> 153 152 <HostingProvider ··· 292 291 onRetryPress={refetchServer} 293 292 overrideNextText={hasWarnedEmail ? _(msg`It's correct`) : undefined} 294 293 /> 295 - </ScreenTransition> 294 + </> 296 295 ) 297 296 }
+113 -100
src/screens/Signup/index.tsx
··· 23 23 import {StepCaptcha} from '#/screens/Signup/StepCaptcha' 24 24 import {StepHandle} from '#/screens/Signup/StepHandle' 25 25 import {StepInfo} from '#/screens/Signup/StepInfo' 26 - import {atoms as a, useBreakpoints, useTheme} from '#/alf' 26 + import {atoms as a, native, useBreakpoints, useTheme} from '#/alf' 27 27 import {AppLanguageDropdown} from '#/components/AppLanguageDropdown' 28 28 import {Divider} from '#/components/Divider' 29 29 import {LinearGradientBackground} from '#/components/LinearGradientBackground' 30 30 import {InlineLinkText} from '#/components/Link' 31 + import {ScreenTransition} from '#/components/ScreenTransition' 31 32 import {Text} from '#/components/Typography' 32 33 import {GCP_PROJECT_ID} from '#/env' 33 34 import * as bsky from '#/types/bsky' ··· 116 117 }, []) 117 118 118 119 return ( 119 - <SignupContext.Provider value={{state, dispatch}}> 120 - <LoggedOutLayout 121 - leadin="" 122 - title={_(msg`Create Account`)} 123 - description={_(msg`We're so excited to have you join us!`)} 124 - scrollable> 125 - <View testID="createAccount" style={a.flex_1}> 126 - {showStarterPackCard && 127 - bsky.dangerousIsType<AppBskyGraphStarterpack.Record>( 128 - starterPack.record, 129 - AppBskyGraphStarterpack.isRecord, 130 - ) ? ( 131 - <Animated.View entering={!isFetchedAtMount ? FadeIn : undefined}> 132 - <LinearGradientBackground 133 - style={[a.mx_lg, a.p_lg, a.gap_sm, a.rounded_sm]}> 134 - <Text style={[a.font_bold, a.text_xl, {color: 'white'}]}> 135 - {starterPack.record.name} 136 - </Text> 137 - <Text style={[{color: 'white'}]}> 138 - {starterPack.feeds?.length ? ( 139 - <Trans> 140 - You'll follow the suggested users and feeds once you 141 - finish creating your account! 142 - </Trans> 120 + <Animated.View exiting={native(FadeIn.duration(90))} style={a.flex_1}> 121 + <SignupContext.Provider value={{state, dispatch}}> 122 + <LoggedOutLayout 123 + leadin="" 124 + title={_(msg`Create Account`)} 125 + description={_(msg`We're so excited to have you join us!`)} 126 + scrollable> 127 + <View testID="createAccount" style={a.flex_1}> 128 + {showStarterPackCard && 129 + bsky.dangerousIsType<AppBskyGraphStarterpack.Record>( 130 + starterPack.record, 131 + AppBskyGraphStarterpack.isRecord, 132 + ) ? ( 133 + <Animated.View entering={!isFetchedAtMount ? FadeIn : undefined}> 134 + <LinearGradientBackground 135 + style={[a.mx_lg, a.p_lg, a.gap_sm, a.rounded_sm]}> 136 + <Text style={[a.font_semi_bold, a.text_xl, {color: 'white'}]}> 137 + {starterPack.record.name} 138 + </Text> 139 + <Text style={[{color: 'white'}]}> 140 + {starterPack.feeds?.length ? ( 141 + <Trans> 142 + You'll follow the suggested users and feeds once you 143 + finish creating your account! 144 + </Trans> 145 + ) : ( 146 + <Trans> 147 + You'll follow the suggested users once you finish 148 + creating your account! 149 + </Trans> 150 + )} 151 + </Text> 152 + </LinearGradientBackground> 153 + </Animated.View> 154 + ) : null} 155 + <LayoutAnimationConfig skipEntering> 156 + <ScreenTransition 157 + key={state.activeStep} 158 + direction={state.screenTransitionDirection}> 159 + <View 160 + style={[ 161 + a.flex_1, 162 + a.px_xl, 163 + a.pt_2xl, 164 + !gtMobile && {paddingBottom: 100}, 165 + ]}> 166 + <View style={[a.gap_sm, a.pb_3xl]}> 167 + <Text 168 + style={[a.font_semi_bold, t.atoms.text_contrast_medium]}> 169 + <Trans> 170 + Step {state.activeStep + 1} of{' '} 171 + {state.serviceDescription && 172 + !state.serviceDescription.phoneVerificationRequired 173 + ? '2' 174 + : '3'} 175 + </Trans> 176 + </Text> 177 + <Text style={[a.text_3xl, a.font_semi_bold]}> 178 + {state.activeStep === SignupStep.INFO ? ( 179 + <Trans>Your account</Trans> 180 + ) : state.activeStep === SignupStep.HANDLE ? ( 181 + <Trans>Choose your username</Trans> 182 + ) : ( 183 + <Trans>Complete the challenge</Trans> 184 + )} 185 + </Text> 186 + </View> 187 + 188 + {state.activeStep === SignupStep.INFO ? ( 189 + <StepInfo 190 + onPressBack={onPressBack} 191 + isLoadingStarterPack={ 192 + isFetchingStarterPack && !isErrorStarterPack 193 + } 194 + isServerError={isError} 195 + refetchServer={refetch} 196 + /> 197 + ) : state.activeStep === SignupStep.HANDLE ? ( 198 + <StepHandle /> 143 199 ) : ( 144 - <Trans> 145 - You'll follow the suggested users once you finish creating 146 - your account! 147 - </Trans> 200 + <StepCaptcha /> 148 201 )} 149 - </Text> 150 - </LinearGradientBackground> 151 - </Animated.View> 152 - ) : null} 153 - <View 154 - style={[ 155 - a.flex_1, 156 - a.px_xl, 157 - a.pt_2xl, 158 - !gtMobile && {paddingBottom: 100}, 159 - ]}> 160 - <View style={[a.gap_sm, a.pb_sm]}> 161 - <Text 162 - style={[a.text_sm, a.font_bold, t.atoms.text_contrast_medium]}> 163 - <Trans> 164 - Step {state.activeStep + 1} of{' '} 165 - {state.serviceDescription && 166 - !state.serviceDescription.phoneVerificationRequired 167 - ? '2' 168 - : '3'} 169 - </Trans> 170 - </Text> 171 - <Text style={[a.text_3xl, a.font_heavy]}> 172 - {state.activeStep === SignupStep.INFO ? ( 173 - <Trans>Your account</Trans> 174 - ) : state.activeStep === SignupStep.HANDLE ? ( 175 - <Trans>Choose your username</Trans> 176 - ) : ( 177 - <Trans>Complete the challenge</Trans> 178 - )} 179 - </Text> 180 - </View> 181 - 182 - <LayoutAnimationConfig skipEntering skipExiting> 183 - {state.activeStep === SignupStep.INFO ? ( 184 - <StepInfo 185 - onPressBack={onPressBack} 186 - isLoadingStarterPack={ 187 - isFetchingStarterPack && !isErrorStarterPack 188 - } 189 - isServerError={isError} 190 - refetchServer={refetch} 191 - /> 192 - ) : state.activeStep === SignupStep.HANDLE ? ( 193 - <StepHandle /> 194 - ) : ( 195 - <StepCaptcha /> 196 - )} 197 - </LayoutAnimationConfig> 198 202 199 - <Divider /> 203 + <Divider /> 200 204 201 - <View 202 - style={[a.w_full, a.py_lg, a.flex_row, a.gap_md, a.align_center]}> 203 - <AppLanguageDropdown /> 204 - <Text 205 - style={[ 206 - a.flex_1, 207 - t.atoms.text_contrast_medium, 208 - !gtMobile && a.text_md, 209 - ]}> 210 - <Trans>Having trouble?</Trans>{' '} 211 - <InlineLinkText 212 - label={_(msg`Contact support`)} 213 - to={FEEDBACK_FORM_URL({email: state.email})} 214 - style={[!gtMobile && a.text_md]}> 215 - <Trans>Contact support</Trans> 216 - </InlineLinkText> 217 - </Text> 218 - </View> 205 + <View 206 + style={[ 207 + a.w_full, 208 + a.py_lg, 209 + a.flex_row, 210 + a.gap_md, 211 + a.align_center, 212 + ]}> 213 + <AppLanguageDropdown /> 214 + <Text 215 + style={[ 216 + a.flex_1, 217 + t.atoms.text_contrast_medium, 218 + !gtMobile && a.text_md, 219 + ]}> 220 + <Trans>Having trouble?</Trans>{' '} 221 + <InlineLinkText 222 + label={_(msg`Contact support`)} 223 + to={FEEDBACK_FORM_URL({email: state.email})} 224 + style={[!gtMobile && a.text_md]}> 225 + <Trans>Contact support</Trans> 226 + </InlineLinkText> 227 + </Text> 228 + </View> 229 + </View> 230 + </ScreenTransition> 231 + </LayoutAnimationConfig> 219 232 </View> 220 - </View> 221 - </LoggedOutLayout> 222 - </SignupContext.Provider> 233 + </LoggedOutLayout> 234 + </SignupContext.Provider> 235 + </Animated.View> 223 236 ) 224 237 }
+4 -2
src/screens/Signup/state.ts
··· 41 41 export type SignupState = { 42 42 hasPrev: boolean 43 43 activeStep: SignupStep 44 + screenTransitionDirection: 'Forward' | 'Backward' 44 45 45 46 serviceUrl: string 46 47 serviceDescription?: ServiceDescription ··· 84 85 export const initialState: SignupState = { 85 86 hasPrev: false, 86 87 activeStep: SignupStep.INFO, 88 + screenTransitionDirection: 'Forward', 87 89 88 90 serviceUrl: DEFAULT_SERVICE, 89 91 serviceDescription: undefined, ··· 126 128 switch (a.type) { 127 129 case 'prev': { 128 130 if (s.activeStep !== SignupStep.INFO) { 129 - LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) 131 + next.screenTransitionDirection = 'Backward' 130 132 next.activeStep-- 131 133 next.error = '' 132 134 next.errorField = undefined ··· 135 137 } 136 138 case 'next': { 137 139 if (s.activeStep !== SignupStep.CAPTCHA) { 138 - LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut) 140 + next.screenTransitionDirection = 'Forward' 139 141 next.activeStep++ 140 142 next.error = '' 141 143 next.errorField = undefined
+2 -2
src/screens/StarterPack/Wizard/StepDetails.tsx
··· 8 8 import {atoms as a, useTheme} from '#/alf' 9 9 import * as TextField from '#/components/forms/TextField' 10 10 import {StarterPack} from '#/components/icons/StarterPack' 11 - import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition' 11 + import {ScreenTransition} from '#/components/ScreenTransition' 12 12 import {Text} from '#/components/Typography' 13 13 14 14 export function StepDetails() { ··· 23 23 }) 24 24 25 25 return ( 26 - <ScreenTransition direction={state.transitionDirection}> 26 + <ScreenTransition direction={state.transitionDirection} enabledWeb> 27 27 <View style={[a.px_xl, a.gap_xl, a.mt_4xl]}> 28 28 <View style={[a.gap_md, a.align_center, a.px_md, a.mb_md]}> 29 29 <StarterPack width={90} gradient="sky" />
+5 -2
src/screens/StarterPack/Wizard/StepFeeds.tsx
··· 17 17 import {SearchInput} from '#/components/forms/SearchInput' 18 18 import {useThrottledValue} from '#/components/hooks/useThrottledValue' 19 19 import {Loader} from '#/components/Loader' 20 - import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition' 20 + import {ScreenTransition} from '#/components/ScreenTransition' 21 21 import {WizardFeedCard} from '#/components/StarterPack/Wizard/WizardListCard' 22 22 import {Text} from '#/components/Typography' 23 23 ··· 79 79 } 80 80 81 81 return ( 82 - <ScreenTransition style={[a.flex_1]} direction={state.transitionDirection}> 82 + <ScreenTransition 83 + style={[a.flex_1]} 84 + direction={state.transitionDirection} 85 + enabledWeb> 83 86 <View style={[a.border_b, t.atoms.border_contrast_medium]}> 84 87 <View style={[a.py_sm, a.px_md, {height: 60}]}> 85 88 <SearchInput
+5 -2
src/screens/StarterPack/Wizard/StepProfiles.tsx
··· 13 13 import {atoms as a, useTheme} from '#/alf' 14 14 import {SearchInput} from '#/components/forms/SearchInput' 15 15 import {Loader} from '#/components/Loader' 16 - import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition' 16 + import {ScreenTransition} from '#/components/ScreenTransition' 17 17 import {WizardProfileCard} from '#/components/StarterPack/Wizard/WizardListCard' 18 18 import {Text} from '#/components/Typography' 19 19 import type * as bsky from '#/types/bsky' ··· 64 64 } 65 65 66 66 return ( 67 - <ScreenTransition style={[a.flex_1]} direction={state.transitionDirection}> 67 + <ScreenTransition 68 + style={[a.flex_1]} 69 + direction={state.transitionDirection} 70 + enabledWeb> 68 71 <View style={[a.border_b, t.atoms.border_contrast_medium]}> 69 72 <View style={[a.py_sm, a.px_md, {height: 60}]}> 70 73 <SearchInput
+1 -1
src/state/gallery.ts
··· 3 3 deleteAsync, 4 4 makeDirectoryAsync, 5 5 moveAsync, 6 - } from 'expo-file-system' 6 + } from 'expo-file-system/legacy' 7 7 import { 8 8 type Action, 9 9 type ActionCrop,
-59
src/state/invites.tsx
··· 1 - import React from 'react' 2 - 3 - import * as persisted from '#/state/persisted' 4 - 5 - type StateContext = persisted.Schema['invites'] 6 - type ApiContext = { 7 - setInviteCopied: (code: string) => void 8 - } 9 - 10 - const stateContext = React.createContext<StateContext>( 11 - persisted.defaults.invites, 12 - ) 13 - stateContext.displayName = 'InvitesStateContext' 14 - const apiContext = React.createContext<ApiContext>({ 15 - setInviteCopied(_: string) {}, 16 - }) 17 - apiContext.displayName = 'InvitesApiContext' 18 - 19 - export function Provider({children}: React.PropsWithChildren<{}>) { 20 - const [state, setState] = React.useState(persisted.get('invites')) 21 - 22 - const api = React.useMemo( 23 - () => ({ 24 - setInviteCopied(code: string) { 25 - setState(state => { 26 - state = { 27 - ...state, 28 - copiedInvites: state.copiedInvites.includes(code) 29 - ? state.copiedInvites 30 - : state.copiedInvites.concat([code]), 31 - } 32 - persisted.write('invites', state) 33 - return state 34 - }) 35 - }, 36 - }), 37 - [setState], 38 - ) 39 - 40 - React.useEffect(() => { 41 - return persisted.onUpdate('invites', nextInvites => { 42 - setState(nextInvites) 43 - }) 44 - }, [setState]) 45 - 46 - return ( 47 - <stateContext.Provider value={state}> 48 - <apiContext.Provider value={api}>{children}</apiContext.Provider> 49 - </stateContext.Provider> 50 - ) 51 - } 52 - 53 - export function useInvitesState() { 54 - return React.useContext(stateContext) 55 - } 56 - 57 - export function useInvitesAPI() { 58 - return React.useContext(apiContext) 59 - }
-21
src/state/modals/index.tsx
··· 1 1 import React from 'react' 2 - import {type AppBskyGraphDefs} from '@atproto/api' 3 2 4 3 import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' 5 - 6 - export interface CreateOrEditListModal { 7 - name: 'create-or-edit-list' 8 - purpose?: string 9 - list?: AppBskyGraphDefs.ListView 10 - onSave?: (uri: string) => void 11 - } 12 4 13 5 export interface UserAddRemoveListsModal { 14 6 name: 'user-add-remove-lists' ··· 23 15 name: 'delete-account' 24 16 } 25 17 26 - export interface WaitlistModal { 27 - name: 'waitlist' 28 - } 29 - 30 - export interface InviteCodesModal { 31 - name: 'invite-codes' 32 - } 33 - 34 18 export interface ContentLanguagesSettingsModal { 35 19 name: 'content-languages-settings' 36 20 } ··· 46 30 | ContentLanguagesSettingsModal 47 31 48 32 // Lists 49 - | CreateOrEditListModal 50 33 | UserAddRemoveListsModal 51 - 52 - // Bluesky access 53 - | WaitlistModal 54 - | InviteCodesModal 55 34 56 35 const ModalContext = React.createContext<{ 57 36 isModalActive: boolean
-65
src/state/queries/invites.ts
··· 1 - import {type ComAtprotoServerDefs} from '@atproto/api' 2 - import {useQuery} from '@tanstack/react-query' 3 - 4 - import {cleanError} from '#/lib/strings/errors' 5 - import {STALE} from '#/state/queries' 6 - import {useAgent} from '#/state/session' 7 - 8 - function isInviteAvailable(invite: ComAtprotoServerDefs.InviteCode): boolean { 9 - return invite.available - invite.uses.length > 0 && !invite.disabled 10 - } 11 - 12 - const inviteCodesQueryKeyRoot = 'inviteCodes' 13 - 14 - export type InviteCodesQueryResponse = Exclude< 15 - ReturnType<typeof useInviteCodesQuery>['data'], 16 - undefined 17 - > 18 - export function useInviteCodesQuery() { 19 - const agent = useAgent() 20 - return useQuery({ 21 - staleTime: STALE.MINUTES.FIVE, 22 - queryKey: [inviteCodesQueryKeyRoot], 23 - queryFn: async () => { 24 - const res = await agent.com.atproto.server 25 - .getAccountInviteCodes({}) 26 - .catch(e => { 27 - if (cleanError(e) === 'Bad token scope') { 28 - return null 29 - } else { 30 - throw e 31 - } 32 - }) 33 - 34 - if (res === null) { 35 - return { 36 - disabled: true, 37 - all: [], 38 - available: [], 39 - used: [], 40 - } 41 - } 42 - 43 - if (!res.data?.codes) { 44 - throw new Error(`useInviteCodesQuery: no codes returned`) 45 - } 46 - 47 - const available = res.data.codes.filter(isInviteAvailable) 48 - const used = res.data.codes 49 - .filter(code => !isInviteAvailable(code)) 50 - .sort((a, b) => { 51 - return ( 52 - new Date(b.uses[0].usedAt).getTime() - 53 - new Date(a.uses[0].usedAt).getTime() 54 - ) 55 - }) 56 - 57 - return { 58 - disabled: false, 59 - all: [...available, ...used], 60 - available, 61 - used, 62 - } 63 - }, 64 - }) 65 - }
+76 -55
src/view/com/auth/SplashScreen.tsx
··· 1 1 import {View} from 'react-native' 2 + import Animated, {FadeIn, FadeOut} from 'react-native-reanimated' 2 3 import {useSafeAreaInsets} from 'react-native-safe-area-context' 3 4 import {msg, Trans} from '@lingui/macro' 4 5 import {useLingui} from '@lingui/react' 5 6 7 + import {useHaptics} from '#/lib/haptics' 6 8 import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' 9 + import {CenteredView} from '#/view/com/util/Views' 7 10 import {Logo} from '#/view/icons/Logo' 8 11 import {Logotype} from '#/view/icons/Logotype' 9 12 import {atoms as a, useTheme} from '#/alf' 10 13 import {AppLanguageDropdown} from '#/components/AppLanguageDropdown' 11 14 import {Button, ButtonText} from '#/components/Button' 12 15 import {Text} from '#/components/Typography' 13 - import {CenteredView} from '../util/Views' 14 16 15 17 export const SplashScreen = ({ 16 18 onPressSignin, ··· 22 24 const t = useTheme() 23 25 const {_} = useLingui() 24 26 27 + const playHaptic = useHaptics() 25 28 const insets = useSafeAreaInsets() 26 29 27 30 return ( 28 31 <CenteredView style={[a.h_full, a.flex_1]}> 29 - <ErrorBoundary> 30 - <View style={[{flex: 1}, a.justify_center, a.align_center]}> 31 - <Logo width={92} fill="sky" /> 32 + <Animated.View 33 + entering={FadeIn.duration(90)} 34 + exiting={FadeOut.duration(90)} 35 + style={[a.flex_1]}> 36 + <ErrorBoundary> 37 + <View style={[a.flex_1, a.justify_center, a.align_center]}> 38 + <Logo width={92} fill="sky" /> 39 + 40 + <View style={[a.pb_sm, a.pt_5xl]}> 41 + <Logotype width={161} fill={t.atoms.text.color} /> 42 + </View> 32 43 33 - <View style={[a.pb_sm, a.pt_5xl]}> 34 - <Logotype width={161} fill={t.atoms.text.color} /> 44 + <Text 45 + style={[ 46 + a.text_md, 47 + a.font_semi_bold, 48 + t.atoms.text_contrast_medium, 49 + a.text_center, 50 + ]}> 51 + <Trans>What's up?</Trans> 52 + </Text> 35 53 </View> 36 54 37 - <Text style={[a.text_md, a.font_bold, t.atoms.text_contrast_medium]}> 38 - <Trans>What's up?</Trans> 39 - </Text> 40 - </View> 41 - <View 42 - testID="signinOrCreateAccount" 43 - style={[a.px_xl, a.gap_md, a.pb_2xl]}> 44 - <Button 45 - testID="createAccountButton" 46 - onPress={onPressCreateAccount} 47 - label={_(msg`Create new account`)} 48 - accessibilityHint={_( 49 - msg`Opens flow to create a new Bluesky account`, 50 - )} 51 - size="large" 52 - variant="solid" 53 - color="primary"> 54 - <ButtonText> 55 - <Trans>Create account</Trans> 56 - </ButtonText> 57 - </Button> 58 - <Button 59 - testID="signInButton" 60 - onPress={onPressSignin} 61 - label={_(msg`Sign in`)} 62 - accessibilityHint={_( 63 - msg`Opens flow to sign in to your existing Bluesky account`, 64 - )} 65 - size="large" 66 - variant="solid" 67 - color="secondary"> 68 - <ButtonText> 69 - <Trans>Sign in</Trans> 70 - </ButtonText> 71 - </Button> 72 - </View> 73 - <View 74 - style={[ 75 - a.px_lg, 76 - a.pt_md, 77 - a.pb_2xl, 78 - a.justify_center, 79 - a.align_center, 80 - ]}> 81 - <View> 82 - <AppLanguageDropdown /> 55 + <View 56 + testID="signinOrCreateAccount" 57 + style={[a.px_xl, a.gap_md, a.pb_2xl]}> 58 + <Button 59 + testID="createAccountButton" 60 + onPress={() => { 61 + onPressCreateAccount() 62 + playHaptic('Light') 63 + }} 64 + label={_(msg`Create new account`)} 65 + accessibilityHint={_( 66 + msg`Opens flow to create a new Bluesky account`, 67 + )} 68 + size="large" 69 + variant="solid" 70 + color="primary"> 71 + <ButtonText> 72 + <Trans>Create account</Trans> 73 + </ButtonText> 74 + </Button> 75 + <Button 76 + testID="signInButton" 77 + onPress={() => { 78 + onPressSignin() 79 + playHaptic('Light') 80 + }} 81 + label={_(msg`Sign in`)} 82 + accessibilityHint={_( 83 + msg`Opens flow to sign in to your existing Bluesky account`, 84 + )} 85 + size="large" 86 + variant="solid" 87 + color="secondary"> 88 + <ButtonText> 89 + <Trans>Sign in</Trans> 90 + </ButtonText> 91 + </Button> 92 + </View> 93 + <View 94 + style={[ 95 + a.px_lg, 96 + a.pt_md, 97 + a.pb_2xl, 98 + a.justify_center, 99 + a.align_center, 100 + ]}> 101 + <View> 102 + <AppLanguageDropdown /> 103 + </View> 83 104 </View> 84 - </View> 85 - <View style={{height: insets.bottom}} /> 86 - </ErrorBoundary> 105 + <View style={{height: insets.bottom}} /> 106 + </ErrorBoundary> 107 + </Animated.View> 87 108 </CenteredView> 88 109 ) 89 110 }
+1 -1
src/view/com/composer/photos/EditImageDialog.web.tsx
··· 19 19 20 20 export function EditImageDialog(props: EditImageDialogProps) { 21 21 return ( 22 - <Dialog.Outer control={props.control}> 22 + <Dialog.Outer control={props.control} webOptions={{alignCenter: true}}> 23 23 <Dialog.Handle /> 24 24 <DialogInner {...props} /> 25 25 </Dialog.Outer>
+1 -1
src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.ios.tsx
··· 19 19 useAnimatedProps, 20 20 useAnimatedReaction, 21 21 useAnimatedRef, 22 + useAnimatedScrollHandler, 22 23 useAnimatedStyle, 23 24 useSharedValue, 24 25 } from 'react-native-reanimated' 25 26 import {useSafeAreaFrame} from 'react-native-safe-area-context' 26 27 import {Image} from 'expo-image' 27 28 28 - import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' 29 29 import { 30 30 type Dimensions as ImageDimensions, 31 31 type ImageSource,
+1 -9
src/view/com/modals/Modal.tsx
··· 8 8 import {useColorModeTheme} from '#/alf/util/useColorModeTheme' 9 9 import {FullWindowOverlay} from '#/components/FullWindowOverlay' 10 10 import {createCustomBackdrop} from '../util/BottomSheetCustomBackdrop' 11 - import * as CreateOrEditListModal from './CreateOrEditList' 12 11 import * as DeleteAccountModal from './DeleteAccount' 13 - import * as InviteCodesModal from './InviteCodes' 14 12 import * as ContentLanguagesSettingsModal from './lang-settings/ContentLanguagesSettings' 15 13 import * as UserAddRemoveListsModal from './UserAddRemoveLists' 16 14 ··· 51 49 52 50 let snapPoints: (string | number)[] = DEFAULT_SNAPPOINTS 53 51 let element 54 - if (activeModal?.name === 'create-or-edit-list') { 55 - snapPoints = CreateOrEditListModal.snapPoints 56 - element = <CreateOrEditListModal.Component {...activeModal} /> 57 - } else if (activeModal?.name === 'user-add-remove-lists') { 52 + if (activeModal?.name === 'user-add-remove-lists') { 58 53 snapPoints = UserAddRemoveListsModal.snapPoints 59 54 element = <UserAddRemoveListsModal.Component {...activeModal} /> 60 55 } else if (activeModal?.name === 'delete-account') { 61 56 snapPoints = DeleteAccountModal.snapPoints 62 57 element = <DeleteAccountModal.Component /> 63 - } else if (activeModal?.name === 'invite-codes') { 64 - snapPoints = InviteCodesModal.snapPoints 65 - element = <InviteCodesModal.Component /> 66 58 } else if (activeModal?.name === 'content-languages-settings') { 67 59 snapPoints = ContentLanguagesSettingsModal.snapPoints 68 60 element = <ContentLanguagesSettingsModal.Component />
+1 -7
src/view/com/modals/Modal.web.tsx
··· 7 7 import {useModalControls, useModals} from '#/state/modals' 8 8 import {useTheme} from '#/alf' 9 9 import {useColorModeTheme} from '#/alf/util/useColorModeTheme' 10 - import * as CreateOrEditListModal from './CreateOrEditList' 11 10 import * as DeleteAccountModal from './DeleteAccount' 12 - import * as InviteCodesModal from './InviteCodes' 13 11 import * as ContentLanguagesSettingsModal from './lang-settings/ContentLanguagesSettings' 14 12 import * as UserAddRemoveLists from './UserAddRemoveLists' 15 13 ··· 50 48 } 51 49 52 50 let element 53 - if (modal.name === 'create-or-edit-list') { 54 - element = <CreateOrEditListModal.Component {...modal} /> 55 - } else if (modal.name === 'user-add-remove-lists') { 51 + if (modal.name === 'user-add-remove-lists') { 56 52 element = <UserAddRemoveLists.Component {...modal} /> 57 53 } else if (modal.name === 'delete-account') { 58 54 element = <DeleteAccountModal.Component /> 59 - } else if (modal.name === 'invite-codes') { 60 - element = <InviteCodesModal.Component /> 61 55 } else if (modal.name === 'content-languages-settings') { 62 56 element = <ContentLanguagesSettingsModal.Component /> 63 57 } else {
-8
src/view/com/testing/TestCtrls.e2e.tsx
··· 3 3 import {useQueryClient} from '@tanstack/react-query' 4 4 5 5 import {BLUESKY_PROXY_HEADER} from '#/lib/constants' 6 - import {useModalControls} from '#/state/modals' 7 6 import {useSessionApi, useAgent} from '#/state/session' 8 7 import {useLoggedOutViewControls} from '#/state/shell/logged-out' 9 8 import {useOnboardingDispatch} from '#/state/shell/onboarding' ··· 23 22 const agent = useAgent() 24 23 const queryClient = useQueryClient() 25 24 const {logoutEveryAccount, login} = useSessionApi() 26 - const {openModal} = useModalControls() 27 25 const onboardingDispatch = useOnboardingDispatch() 28 26 const {setShowLoggedOut} = useLoggedOutViewControls() 29 27 const onPressSignInAlice = async () => { ··· 118 116 <Pressable 119 117 testID="e2eRefreshHome" 120 118 onPress={() => queryClient.invalidateQueries({queryKey: ['post-feed']})} 121 - accessibilityRole="button" 122 - style={BTN} 123 - /> 124 - <Pressable 125 - testID="e2eOpenInviteCodesModal" 126 - onPress={() => openModal({name: 'invite-codes'})} 127 119 accessibilityRole="button" 128 120 style={BTN} 129 121 />
+1 -1
src/view/com/util/List.tsx
··· 3 3 import { 4 4 type FlatListPropsWithLayout, 5 5 runOnJS, 6 + useAnimatedScrollHandler, 6 7 useSharedValue, 7 8 } from 'react-native-reanimated' 8 9 import {updateActiveVideoViewAsync} from '@haileyok/bluesky-video' 9 10 10 - import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' 11 11 import {useDedupe} from '#/lib/hooks/useDedupe' 12 12 import {useScrollHandlers} from '#/lib/ScrollContext' 13 13 import {addStyle} from '#/lib/styles'
+5 -4
src/view/com/util/images/AutoSizedImage.tsx
··· 21 21 aspectRatio, 22 22 fullBleed, 23 23 children, 24 + minMobileAspectRatio, 24 25 }: { 25 26 aspectRatio: number 26 27 fullBleed?: boolean 28 + minMobileAspectRatio?: number 27 29 children: React.ReactNode 28 30 }) { 29 31 const t = useTheme() ··· 35 37 const outerAspectRatio = React.useMemo<DimensionValue>(() => { 36 38 const ratio = 37 39 isNative || !gtMobile 38 - ? Math.min(1 / aspectRatio, 16 / 9) // 9:16 bounding box 40 + ? Math.min(1 / aspectRatio, minMobileAspectRatio ?? 16 / 9) // 9:16 bounding box 39 41 : Math.min(1 / aspectRatio, 1) // 1:1 bounding box 40 42 return `${ratio * 100}%` 41 - }, [aspectRatio, gtMobile]) 43 + }, [aspectRatio, gtMobile, minMobileAspectRatio]) 42 44 43 45 return ( 44 46 <View style={[a.w_full]}> ··· 183 185 }, 184 186 ], 185 187 ]}> 186 - <Text 187 - style={[a.font_heavy, largeAlt ? a.text_xs : {fontSize: 8}]}> 188 + <Text style={[a.font_bold, largeAlt ? a.text_xs : {fontSize: 8}]}> 188 189 ALT 189 190 </Text> 190 191 </View>
+28 -19
src/view/screens/Lists.tsx
··· 1 - import React from 'react' 1 + import {useCallback} from 'react' 2 2 import {AtUri} from '@atproto/api' 3 3 import {msg, Trans} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' ··· 10 10 type NativeStackScreenProps, 11 11 } from '#/lib/routes/types' 12 12 import {type NavigationProp} from '#/lib/routes/types' 13 - import {useModalControls} from '#/state/modals' 14 13 import {useSetMinimalShellMode} from '#/state/shell' 15 14 import {MyLists} from '#/view/com/lists/MyLists' 16 15 import {atoms as a} from '#/alf' 17 16 import {Button, ButtonIcon, ButtonText} from '#/components/Button' 17 + import {useDialogControl} from '#/components/Dialog' 18 + import {CreateOrEditListDialog} from '#/components/dialogs/lists/CreateOrEditListDialog' 18 19 import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus' 19 20 import * as Layout from '#/components/Layout' 20 21 ··· 23 24 const {_} = useLingui() 24 25 const setMinimalShellMode = useSetMinimalShellMode() 25 26 const navigation = useNavigation<NavigationProp>() 26 - const {openModal} = useModalControls() 27 27 const requireEmailVerification = useRequireEmailVerification() 28 + const createListDialogControl = useDialogControl() 28 29 29 30 useFocusEffect( 30 - React.useCallback(() => { 31 + useCallback(() => { 31 32 setMinimalShellMode(false) 32 33 }, [setMinimalShellMode]), 33 34 ) 34 35 35 - const onPressNewList = React.useCallback(() => { 36 - openModal({ 37 - name: 'create-or-edit-list', 38 - purpose: 'app.bsky.graph.defs#curatelist', 39 - onSave: (uri: string) => { 40 - try { 41 - const urip = new AtUri(uri) 42 - navigation.navigate('ProfileList', { 43 - name: urip.hostname, 44 - rkey: urip.rkey, 45 - }) 46 - } catch {} 47 - }, 48 - }) 49 - }, [openModal, navigation]) 36 + const onPressNewList = useCallback(() => { 37 + createListDialogControl.open() 38 + }, [createListDialogControl]) 50 39 51 40 const wrappedOnPressNewList = requireEmailVerification(onPressNewList, { 52 41 instructions: [ ··· 56 45 ], 57 46 }) 58 47 48 + const onCreateList = useCallback( 49 + (uri: string) => { 50 + try { 51 + const urip = new AtUri(uri) 52 + navigation.navigate('ProfileList', { 53 + name: urip.hostname, 54 + rkey: urip.rkey, 55 + }) 56 + } catch {} 57 + }, 58 + [navigation], 59 + ) 60 + 59 61 return ( 60 62 <Layout.Screen testID="listsScreen"> 61 63 <Layout.Header.Outer> ··· 78 80 </ButtonText> 79 81 </Button> 80 82 </Layout.Header.Outer> 83 + 81 84 <MyLists filter="curate" style={a.flex_grow} /> 85 + 86 + <CreateOrEditListDialog 87 + purpose="app.bsky.graph.defs#curatelist" 88 + control={createListDialogControl} 89 + onSave={onCreateList} 90 + /> 82 91 </Layout.Screen> 83 92 ) 84 93 }
+28 -19
src/view/screens/ModerationModlists.tsx
··· 1 - import React from 'react' 1 + import {useCallback} from 'react' 2 2 import {AtUri} from '@atproto/api' 3 3 import {msg, Trans} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' ··· 10 10 type NativeStackScreenProps, 11 11 } from '#/lib/routes/types' 12 12 import {type NavigationProp} from '#/lib/routes/types' 13 - import {useModalControls} from '#/state/modals' 14 13 import {useSetMinimalShellMode} from '#/state/shell' 15 14 import {MyLists} from '#/view/com/lists/MyLists' 16 15 import {atoms as a} from '#/alf' 17 16 import {Button, ButtonIcon, ButtonText} from '#/components/Button' 17 + import {useDialogControl} from '#/components/Dialog' 18 + import {CreateOrEditListDialog} from '#/components/dialogs/lists/CreateOrEditListDialog' 18 19 import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus' 19 20 import * as Layout from '#/components/Layout' 20 21 ··· 23 24 const {_} = useLingui() 24 25 const setMinimalShellMode = useSetMinimalShellMode() 25 26 const navigation = useNavigation<NavigationProp>() 26 - const {openModal} = useModalControls() 27 27 const requireEmailVerification = useRequireEmailVerification() 28 + const createListDialogControl = useDialogControl() 28 29 29 30 useFocusEffect( 30 - React.useCallback(() => { 31 + useCallback(() => { 31 32 setMinimalShellMode(false) 32 33 }, [setMinimalShellMode]), 33 34 ) 34 35 35 - const onPressNewList = React.useCallback(() => { 36 - openModal({ 37 - name: 'create-or-edit-list', 38 - purpose: 'app.bsky.graph.defs#modlist', 39 - onSave: (uri: string) => { 40 - try { 41 - const urip = new AtUri(uri) 42 - navigation.navigate('ProfileList', { 43 - name: urip.hostname, 44 - rkey: urip.rkey, 45 - }) 46 - } catch {} 47 - }, 48 - }) 49 - }, [openModal, navigation]) 36 + const onPressNewList = useCallback(() => { 37 + createListDialogControl.open() 38 + }, [createListDialogControl]) 50 39 51 40 const wrappedOnPressNewList = requireEmailVerification(onPressNewList, { 52 41 instructions: [ ··· 56 45 ], 57 46 }) 58 47 48 + const onCreateList = useCallback( 49 + (uri: string) => { 50 + try { 51 + const urip = new AtUri(uri) 52 + navigation.navigate('ProfileList', { 53 + name: urip.hostname, 54 + rkey: urip.rkey, 55 + }) 56 + } catch {} 57 + }, 58 + [navigation], 59 + ) 60 + 59 61 return ( 60 62 <Layout.Screen testID="moderationModlistsScreen"> 61 63 <Layout.Header.Outer> ··· 78 80 </ButtonText> 79 81 </Button> 80 82 </Layout.Header.Outer> 83 + 81 84 <MyLists filter="mod" style={a.flex_grow} /> 85 + 86 + <CreateOrEditListDialog 87 + purpose="app.bsky.graph.defs#modlist" 88 + control={createListDialogControl} 89 + onSave={onCreateList} 90 + /> 82 91 </Layout.Screen> 83 92 ) 84 93 }
+13 -9
src/view/screens/ProfileFeedLikedBy.tsx
··· 1 - import React from 'react' 2 - import {msg} from '@lingui/macro' 1 + import {useCallback} from 'react' 2 + import {Trans} from '@lingui/macro' 3 3 import {useLingui} from '@lingui/react' 4 4 import {useFocusEffect} from '@react-navigation/native' 5 5 ··· 10 10 import {makeRecordUri} from '#/lib/strings/url-helpers' 11 11 import {useSetMinimalShellMode} from '#/state/shell' 12 12 import {PostLikedBy as PostLikedByComponent} from '#/view/com/post-thread/PostLikedBy' 13 - import {ViewHeader} from '#/view/com/util/ViewHeader' 14 - import {CenteredView} from '#/view/com/util/Views' 15 13 import * as Layout from '#/components/Layout' 16 14 17 15 type Props = NativeStackScreenProps<CommonNavigatorParams, 'ProfileFeedLikedBy'> ··· 22 20 const {_} = useLingui() 23 21 24 22 useFocusEffect( 25 - React.useCallback(() => { 23 + useCallback(() => { 26 24 setMinimalShellMode(false) 27 25 }, [setMinimalShellMode]), 28 26 ) 29 27 30 28 return ( 31 29 <Layout.Screen testID="postLikedByScreen"> 32 - <CenteredView sideBorders={true}> 33 - <ViewHeader title={_(msg`Liked By`)} /> 34 - <PostLikedByComponent uri={uri} /> 35 - </CenteredView> 30 + <Layout.Header.Outer> 31 + <Layout.Header.BackButton /> 32 + <Layout.Header.Content> 33 + <Layout.Header.TitleText> 34 + <Trans>Liked By</Trans> 35 + </Layout.Header.TitleText> 36 + </Layout.Header.Content> 37 + <Layout.Header.Slot /> 38 + </Layout.Header.Outer> 39 + <PostLikedByComponent uri={uri} /> 36 40 </Layout.Screen> 37 41 ) 38 42 }
+1725 -1617
yarn.lock
··· 1215 1215 "@babel/highlight" "^7.22.10" 1216 1216 chalk "^2.4.2" 1217 1217 1218 + "@babel/code-frame@^7.20.0", "@babel/code-frame@^7.27.1": 1219 + version "7.27.1" 1220 + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" 1221 + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== 1222 + dependencies: 1223 + "@babel/helper-validator-identifier" "^7.27.1" 1224 + js-tokens "^4.0.0" 1225 + picocolors "^1.1.1" 1226 + 1218 1227 "@babel/code-frame@^7.22.13": 1219 1228 version "7.22.13" 1220 1229 resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" ··· 1436 1445 "@jridgewell/trace-mapping" "^0.3.25" 1437 1446 jsesc "^3.0.2" 1438 1447 1448 + "@babel/generator@^7.28.3": 1449 + version "7.28.3" 1450 + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.3.tgz#9626c1741c650cbac39121694a0f2d7451b8ef3e" 1451 + integrity sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw== 1452 + dependencies: 1453 + "@babel/parser" "^7.28.3" 1454 + "@babel/types" "^7.28.2" 1455 + "@jridgewell/gen-mapping" "^0.3.12" 1456 + "@jridgewell/trace-mapping" "^0.3.28" 1457 + jsesc "^3.0.2" 1458 + 1439 1459 "@babel/helper-annotate-as-pure@^7.22.5": 1440 1460 version "7.22.5" 1441 1461 resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" ··· 1449 1469 integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== 1450 1470 dependencies: 1451 1471 "@babel/types" "^7.25.9" 1472 + 1473 + "@babel/helper-annotate-as-pure@^7.27.3": 1474 + version "7.27.3" 1475 + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" 1476 + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== 1477 + dependencies: 1478 + "@babel/types" "^7.27.3" 1452 1479 1453 1480 "@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9": 1454 1481 version "7.25.9" ··· 1556 1583 "@babel/traverse" "^7.25.9" 1557 1584 semver "^6.3.1" 1558 1585 1586 + "@babel/helper-create-class-features-plugin@^7.28.3": 1587 + version "7.28.3" 1588 + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz#3e747434ea007910c320c4d39a6b46f20f371d46" 1589 + integrity sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg== 1590 + dependencies: 1591 + "@babel/helper-annotate-as-pure" "^7.27.3" 1592 + "@babel/helper-member-expression-to-functions" "^7.27.1" 1593 + "@babel/helper-optimise-call-expression" "^7.27.1" 1594 + "@babel/helper-replace-supers" "^7.27.1" 1595 + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" 1596 + "@babel/traverse" "^7.28.3" 1597 + semver "^6.3.1" 1598 + 1559 1599 "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": 1560 1600 version "7.22.9" 1561 1601 resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" ··· 1627 1667 "@babel/template" "^7.22.15" 1628 1668 "@babel/types" "^7.23.0" 1629 1669 1670 + "@babel/helper-globals@^7.28.0": 1671 + version "7.28.0" 1672 + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" 1673 + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== 1674 + 1630 1675 "@babel/helper-hoist-variables@^7.22.5": 1631 1676 version "7.22.5" 1632 1677 resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" ··· 1662 1707 dependencies: 1663 1708 "@babel/traverse" "^7.25.9" 1664 1709 "@babel/types" "^7.25.9" 1710 + 1711 + "@babel/helper-member-expression-to-functions@^7.27.1": 1712 + version "7.27.1" 1713 + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" 1714 + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== 1715 + dependencies: 1716 + "@babel/traverse" "^7.27.1" 1717 + "@babel/types" "^7.27.1" 1665 1718 1666 1719 "@babel/helper-module-imports@^7.22.15": 1667 1720 version "7.22.15" ··· 1766 1819 dependencies: 1767 1820 "@babel/types" "^7.25.9" 1768 1821 1822 + "@babel/helper-optimise-call-expression@^7.27.1": 1823 + version "7.27.1" 1824 + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" 1825 + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== 1826 + dependencies: 1827 + "@babel/types" "^7.27.1" 1828 + 1769 1829 "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": 1770 1830 version "7.22.5" 1771 1831 resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" ··· 1780 1840 version "7.25.9" 1781 1841 resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" 1782 1842 integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== 1843 + 1844 + "@babel/helper-plugin-utils@^7.27.1": 1845 + version "7.27.1" 1846 + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" 1847 + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== 1783 1848 1784 1849 "@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.5": 1785 1850 version "7.22.9" ··· 1826 1891 "@babel/helper-optimise-call-expression" "^7.25.9" 1827 1892 "@babel/traverse" "^7.25.9" 1828 1893 1894 + "@babel/helper-replace-supers@^7.27.1": 1895 + version "7.27.1" 1896 + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" 1897 + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== 1898 + dependencies: 1899 + "@babel/helper-member-expression-to-functions" "^7.27.1" 1900 + "@babel/helper-optimise-call-expression" "^7.27.1" 1901 + "@babel/traverse" "^7.27.1" 1902 + 1829 1903 "@babel/helper-simple-access@^7.22.5": 1830 1904 version "7.22.5" 1831 1905 resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" ··· 1870 1944 "@babel/traverse" "^7.25.9" 1871 1945 "@babel/types" "^7.25.9" 1872 1946 1947 + "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": 1948 + version "7.27.1" 1949 + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" 1950 + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== 1951 + dependencies: 1952 + "@babel/traverse" "^7.27.1" 1953 + "@babel/types" "^7.27.1" 1954 + 1873 1955 "@babel/helper-split-export-declaration@^7.22.6": 1874 1956 version "7.22.6" 1875 1957 resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" ··· 1916 1998 resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" 1917 1999 integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== 1918 2000 2001 + "@babel/helper-string-parser@^7.27.1": 2002 + version "7.27.1" 2003 + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" 2004 + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== 2005 + 1919 2006 "@babel/helper-validator-identifier@^7.22.20": 1920 2007 version "7.22.20" 1921 2008 resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" ··· 1941 2028 resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" 1942 2029 integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== 1943 2030 2031 + "@babel/helper-validator-identifier@^7.27.1": 2032 + version "7.27.1" 2033 + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" 2034 + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== 2035 + 1944 2036 "@babel/helper-validator-option@^7.22.15": 1945 2037 version "7.22.15" 1946 2038 resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" ··· 2050 2142 js-tokens "^4.0.0" 2051 2143 picocolors "^1.0.0" 2052 2144 2053 - "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.10", "@babel/parser@^7.22.5": 2145 + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.10", "@babel/parser@^7.22.5": 2054 2146 version "7.22.10" 2055 2147 resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" 2056 2148 integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== ··· 2078 2170 integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA== 2079 2171 dependencies: 2080 2172 "@babel/types" "^7.26.10" 2173 + 2174 + "@babel/parser@^7.27.2", "@babel/parser@^7.28.3", "@babel/parser@^7.28.4": 2175 + version "7.28.4" 2176 + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8" 2177 + integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg== 2178 + dependencies: 2179 + "@babel/types" "^7.28.4" 2081 2180 2082 2181 "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": 2083 2182 version "7.25.9" ··· 2501 2600 "@babel/helper-create-class-features-plugin" "^7.25.9" 2502 2601 "@babel/helper-plugin-utils" "^7.25.9" 2503 2602 2603 + "@babel/plugin-transform-class-static-block@^7.27.1": 2604 + version "7.28.3" 2605 + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz#d1b8e69b54c9993bc558203e1f49bfc979bfd852" 2606 + integrity sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg== 2607 + dependencies: 2608 + "@babel/helper-create-class-features-plugin" "^7.28.3" 2609 + "@babel/helper-plugin-utils" "^7.27.1" 2610 + 2504 2611 "@babel/plugin-transform-classes@^7.0.0": 2505 2612 version "7.22.6" 2506 2613 resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" ··· 3332 3439 "@babel/parser" "^7.26.9" 3333 3440 "@babel/types" "^7.26.9" 3334 3441 3442 + "@babel/template@^7.27.2": 3443 + version "7.27.2" 3444 + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" 3445 + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== 3446 + dependencies: 3447 + "@babel/code-frame" "^7.27.1" 3448 + "@babel/parser" "^7.27.2" 3449 + "@babel/types" "^7.27.1" 3450 + 3335 3451 "@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3": 3336 3452 version "7.25.9" 3337 3453 resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" ··· 3419 3535 debug "^4.3.1" 3420 3536 globals "^11.1.0" 3421 3537 3422 - "@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.10", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": 3538 + "@babel/traverse@^7.27.1", "@babel/traverse@^7.28.3": 3539 + version "7.28.4" 3540 + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.4.tgz#8d456101b96ab175d487249f60680221692b958b" 3541 + integrity sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ== 3542 + dependencies: 3543 + "@babel/code-frame" "^7.27.1" 3544 + "@babel/generator" "^7.28.3" 3545 + "@babel/helper-globals" "^7.28.0" 3546 + "@babel/parser" "^7.28.4" 3547 + "@babel/template" "^7.27.2" 3548 + "@babel/types" "^7.28.4" 3549 + debug "^4.3.1" 3550 + 3551 + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.10", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": 3423 3552 version "7.22.10" 3424 3553 resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" 3425 3554 integrity sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg== ··· 3480 3609 "@babel/helper-string-parser" "^7.25.9" 3481 3610 "@babel/helper-validator-identifier" "^7.25.9" 3482 3611 3612 + "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.2", "@babel/types@^7.28.4": 3613 + version "7.28.4" 3614 + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a" 3615 + integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q== 3616 + dependencies: 3617 + "@babel/helper-string-parser" "^7.27.1" 3618 + "@babel/helper-validator-identifier" "^7.27.1" 3619 + 3483 3620 "@bcoe/v8-coverage@^0.2.3": 3484 3621 version "0.2.3" 3485 3622 resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" ··· 3497 3634 version "6.0.4" 3498 3635 resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" 3499 3636 integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== 3637 + 3638 + "@bsky.app/alf@^0.1.2": 3639 + version "0.1.2" 3640 + resolved "https://registry.yarnpkg.com/@bsky.app/alf/-/alf-0.1.2.tgz#8e3b3cd0b27f1dfe359d99edd2afd7d123b7ab69" 3641 + integrity sha512-lIidmkoHsqXwj07BY4fYIu/JyWGXRAGLfh65qhGzWpXLTK1DGyoQUjz5CwsqTDSQWpCfBC7eEaOtYjjv9cAjSQ== 3642 + dependencies: 3643 + react-responsive "^10.0.1" 3500 3644 3501 3645 "@bufbuild/protobuf@^1.5.0": 3502 3646 version "1.7.0" ··· 3615 3759 version "0.5.7" 3616 3760 resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" 3617 3761 integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== 3618 - 3619 - "@dominicstop/ts-event-emitter@^1.1.0": 3620 - version "1.1.0" 3621 - resolved "https://registry.yarnpkg.com/@dominicstop/ts-event-emitter/-/ts-event-emitter-1.1.0.tgz#1f3d3fa878a1ccab686931280757954719cf88e4" 3622 - integrity sha512-CcxmJIvUb1vsFheuGGVSQf4KdPZC44XolpUT34+vlal+LyQoBUOn31pjFET5M9ctOxEpt8xa0M3/2M7uUiAoJw== 3623 3762 3624 3763 "@egjs/hammerjs@^2.0.17": 3625 3764 version "2.0.17" ··· 3794 3933 resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.47.0.tgz#5478fdf443ff8158f9de171c704ae45308696c7d" 3795 3934 integrity sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og== 3796 3935 3797 - "@expo/cli@0.24.14": 3798 - version "0.24.14" 3799 - resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.24.14.tgz#af2e7ea5a08e3574e868cb0ec2110e68d32672e0" 3800 - integrity sha512-o+QYyfIBhSRTgaywKTLJhm2Fg5PrSeUVCXS+uQySamgoMjLNhHa8QwE64mW/FmJr5hZLiqUEQxb60FK4JcyqXg== 3936 + "@expo/cli@54.0.7": 3937 + version "54.0.7" 3938 + resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-54.0.7.tgz#f6e7a75e922792ef58f4cc2a982300fb75b57885" 3939 + integrity sha512-vpZDbIhN2eyb5u2o2iIL2Glu9+9eIY8U30wqeIxh0BUHLoMxFejvEBfS+90A0PtEHoQ1Zi9QxusK5UuyoEvweg== 3801 3940 dependencies: 3802 3941 "@0no-co/graphql.web" "^1.0.8" 3803 - "@babel/runtime" "^7.20.0" 3804 3942 "@expo/code-signing-certificates" "^0.0.5" 3805 - "@expo/config" "~11.0.10" 3806 - "@expo/config-plugins" "~10.0.2" 3943 + "@expo/config" "~12.0.9" 3944 + "@expo/config-plugins" "~54.0.1" 3807 3945 "@expo/devcert" "^1.1.2" 3808 - "@expo/env" "~1.0.5" 3809 - "@expo/image-utils" "^0.7.4" 3810 - "@expo/json-file" "^9.1.4" 3811 - "@expo/metro-config" "~0.20.14" 3812 - "@expo/osascript" "^2.2.4" 3813 - "@expo/package-manager" "^1.8.4" 3814 - "@expo/plist" "^0.3.4" 3815 - "@expo/prebuild-config" "^9.0.6" 3946 + "@expo/env" "~2.0.7" 3947 + "@expo/image-utils" "^0.8.7" 3948 + "@expo/json-file" "^10.0.7" 3949 + "@expo/mcp-tunnel" "~0.0.7" 3950 + "@expo/metro" "~54.0.0" 3951 + "@expo/metro-config" "~54.0.4" 3952 + "@expo/osascript" "^2.3.7" 3953 + "@expo/package-manager" "^1.9.8" 3954 + "@expo/plist" "^0.4.7" 3955 + "@expo/prebuild-config" "^54.0.3" 3956 + "@expo/schema-utils" "^0.1.7" 3957 + "@expo/server" "^0.7.4" 3816 3958 "@expo/spawn-async" "^1.7.2" 3817 3959 "@expo/ws-tunnel" "^1.0.1" 3818 3960 "@expo/xcpretty" "^4.3.0" 3819 - "@react-native/dev-middleware" "0.79.3" 3961 + "@react-native/dev-middleware" "0.81.4" 3820 3962 "@urql/core" "^5.0.6" 3821 3963 "@urql/exchange-retry" "^1.3.0" 3822 3964 accepts "^1.3.8" ··· 3889 4031 xcode "^3.0.1" 3890 4032 xml2js "0.6.0" 3891 4033 3892 - "@expo/config-plugins@~10.0.2": 3893 - version "10.0.2" 3894 - resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-10.0.2.tgz#040867991e9c8c527b4f5c13a47bcf040a7479fe" 3895 - integrity sha512-TzUn3pPdpwCS0yYaSlZOClgDmCX8N4I2lfgitX5oStqmvpPtB+vqtdyqsVM02fQ2tlJIAqwBW+NHaHqqy8Jv7g== 3896 - dependencies: 3897 - "@expo/config-types" "^53.0.3" 3898 - "@expo/json-file" "~9.1.4" 3899 - "@expo/plist" "^0.3.4" 3900 - "@expo/sdk-runtime-versions" "^1.0.0" 3901 - chalk "^4.1.2" 3902 - debug "^4.3.5" 3903 - getenv "^1.0.0" 3904 - glob "^10.4.2" 3905 - resolve-from "^5.0.0" 3906 - semver "^7.5.4" 3907 - slash "^3.0.0" 3908 - slugify "^1.6.6" 3909 - xcode "^3.0.1" 3910 - xml2js "0.6.0" 3911 - 3912 - "@expo/config-plugins@~9.0.10": 3913 - version "9.0.10" 3914 - resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-9.0.10.tgz#a25fd6061ea7f707213ff8344f562025f850fdc8" 3915 - integrity sha512-4piPSylJ8z3to+YZpl/6M2mLxASOdIFANA8FYihsTf9kWlyimV9L/+MGgPXJcieaHXYZZqOryf8hQFVeg/68+A== 4034 + "@expo/config-plugins@~54.0.1": 4035 + version "54.0.1" 4036 + resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-54.0.1.tgz#cf811b38c7cf6ee32c611265605683032bf13b48" 4037 + integrity sha512-NyBChhiWFL6VqSgU+LzK4R1vC397tEG2XFewVt4oMr4Pnalq/mJxBANQrR+dyV1RHhSyhy06RNiJIkQyngVWeg== 3916 4038 dependencies: 3917 - "@expo/config-types" "^52.0.0" 3918 - "@expo/json-file" "~9.0.0" 3919 - "@expo/plist" "^0.2.0" 4039 + "@expo/config-types" "^54.0.8" 4040 + "@expo/json-file" "~10.0.7" 4041 + "@expo/plist" "^0.4.7" 3920 4042 "@expo/sdk-runtime-versions" "^1.0.0" 3921 4043 chalk "^4.1.2" 3922 4044 debug "^4.3.5" 3923 - getenv "^1.0.0" 4045 + getenv "^2.0.0" 3924 4046 glob "^10.4.2" 3925 4047 resolve-from "^5.0.0" 3926 4048 semver "^7.5.4" ··· 3929 4051 xcode "^3.0.1" 3930 4052 xml2js "0.6.0" 3931 4053 3932 - "@expo/config-types@^52.0.0": 3933 - version "52.0.1" 3934 - resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-52.0.1.tgz#327af1b72a3a9d4556f41e083e0e284dd8198b96" 3935 - integrity sha512-vD8ZetyKV7U29lR6+NJohYeoLYTH+eNYXJeNiSOrWCz0witJYY11meMmEnpEaVbN89EfC6uauSUOa6wihtbyPQ== 3936 - 3937 4054 "@expo/config-types@^52.0.3": 3938 4055 version "52.0.3" 3939 4056 resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-52.0.3.tgz#511f2f868172c93abeac7183beeb921dc72d6e1e" 3940 4057 integrity sha512-muxvuARmbysH5OGaiBRlh1Y6vfdmL56JtpXxB+y2Hfhu0ezG1U4FjZYBIacthckZPvnDCcP3xIu1R+eTo7/QFA== 3941 4058 3942 - "@expo/config-types@^53.0.3": 3943 - version "53.0.3" 3944 - resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-53.0.3.tgz#d083d9b095972e89eee96c41d085feb5b92d2749" 3945 - integrity sha512-V1e6CiM4TXtGxG/W2Msjp/QOx/vikLo5IUGMvEMjgAglBfGYx3PXfqsUb5aZDt6kqA3bDDwFuZoS5vNm/SYwSg== 4059 + "@expo/config-types@^54.0.8": 4060 + version "54.0.8" 4061 + resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-54.0.8.tgz#2aa1f96e0abad6a125d0ff1092b303280f7962e9" 4062 + integrity sha512-lyIn/x/Yz0SgHL7IGWtgTLg6TJWC9vL7489++0hzCHZ4iGjVcfZmPTUfiragZ3HycFFj899qN0jlhl49IHa94A== 3946 4063 3947 - "@expo/config-types@^53.0.4": 3948 - version "53.0.4" 3949 - resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-53.0.4.tgz#fe64fac734531ae883d18529b32586c23ffb1ceb" 3950 - integrity sha512-0s+9vFx83WIToEr0Iwy4CcmiUXa5BgwBmEjylBB2eojX5XAMm9mJvw9KpjAb8m7zq2G0Q6bRbeufkzgbipuNQg== 3951 - 3952 - "@expo/config@~10.0.4": 3953 - version "10.0.5" 3954 - resolved "https://registry.yarnpkg.com/@expo/config/-/config-10.0.5.tgz#2de75e3f5d46a55f9f5140b73e0913265e6a41c6" 3955 - integrity sha512-wq48h3HlAPq5v/gMprarAiVY1aEXNBVJ+Em0vrHcYFO8UyxzR6oIao2E4Ed3VWHqhTzPXkMPH4hKCKlzFVBFwQ== 4064 + "@expo/config@~12.0.8", "@expo/config@~12.0.9": 4065 + version "12.0.9" 4066 + resolved "https://registry.yarnpkg.com/@expo/config/-/config-12.0.9.tgz#07e1ddb3c9227031e9e9322e41797ad36197a1c3" 4067 + integrity sha512-HiDVVaXYKY57+L1MxSF3TaYjX6zZlGBnuWnOKZG+7mtsLD+aNTtW4bZM0pZqZfoRumyOU0SfTCwT10BWtUUiJQ== 3956 4068 dependencies: 3957 4069 "@babel/code-frame" "~7.10.4" 3958 - "@expo/config-plugins" "~9.0.10" 3959 - "@expo/config-types" "^52.0.0" 3960 - "@expo/json-file" "^9.0.0" 4070 + "@expo/config-plugins" "~54.0.1" 4071 + "@expo/config-types" "^54.0.8" 4072 + "@expo/json-file" "^10.0.7" 3961 4073 deepmerge "^4.3.1" 3962 - getenv "^1.0.0" 3963 - glob "^10.4.2" 3964 - require-from-string "^2.0.2" 3965 - resolve-from "^5.0.0" 3966 - resolve-workspace-root "^2.0.0" 3967 - semver "^7.6.0" 3968 - slugify "^1.3.4" 3969 - sucrase "3.35.0" 3970 - 3971 - "@expo/config@~11.0.10", "@expo/config@~11.0.9": 3972 - version "11.0.10" 3973 - resolved "https://registry.yarnpkg.com/@expo/config/-/config-11.0.10.tgz#559d9425a4e0de4fab96ccac01ff40f5cebbc04b" 3974 - integrity sha512-8S8Krr/c5lnl0eF03tA2UGY9rGBhZcbWKz2UWw5dpL/+zstwUmog8oyuuC8aRcn7GiTQLlbBkxcMeT8sOGlhbA== 3975 - dependencies: 3976 - "@babel/code-frame" "~7.10.4" 3977 - "@expo/config-plugins" "~10.0.2" 3978 - "@expo/config-types" "^53.0.4" 3979 - "@expo/json-file" "^9.1.4" 3980 - deepmerge "^4.3.1" 3981 - getenv "^1.0.0" 4074 + getenv "^2.0.0" 3982 4075 glob "^10.4.2" 3983 4076 require-from-string "^2.0.2" 3984 4077 resolve-from "^5.0.0" ··· 4006 4099 tmp "^0.0.33" 4007 4100 tslib "^2.4.0" 4008 4101 4009 - "@expo/env@~0.4.0": 4010 - version "0.4.0" 4011 - resolved "https://registry.yarnpkg.com/@expo/env/-/env-0.4.0.tgz#1ff3a15084566d12ca92cb67e5b0a9796a9f0aa7" 4012 - integrity sha512-g2JYFqck3xKIwJyK+8LxZ2ENZPWtRgjFWpeht9abnKgzXVXBeSNECFBkg+WQjQocSIdxXhEWM6hz4ZAe7Tc4ng== 4102 + "@expo/devtools@0.1.7": 4103 + version "0.1.7" 4104 + resolved "https://registry.yarnpkg.com/@expo/devtools/-/devtools-0.1.7.tgz#bf4f552168ebd44c9fe63941bc4806fe2d222899" 4105 + integrity sha512-dfIa9qMyXN+0RfU6SN4rKeXZyzKWsnz6xBSDccjL4IRiE+fQ0t84zg0yxgN4t/WK2JU5v6v4fby7W7Crv9gJvA== 4013 4106 dependencies: 4014 - chalk "^4.0.0" 4015 - debug "^4.3.4" 4016 - dotenv "~16.4.5" 4017 - dotenv-expand "~11.0.6" 4018 - getenv "^1.0.0" 4107 + chalk "^4.1.2" 4019 4108 4020 - "@expo/env@~1.0.5": 4021 - version "1.0.5" 4022 - resolved "https://registry.yarnpkg.com/@expo/env/-/env-1.0.5.tgz#b3b1aa18ab9838d8f40468e0321affc4c54377a2" 4023 - integrity sha512-dtEZ4CAMaVrFu2+tezhU3FoGWtbzQl50xV+rNJE5lYVRjUflWiZkVHlHkWUlPAwDPifLy4TuissVfScGGPWR5g== 4109 + "@expo/env@~2.0.7": 4110 + version "2.0.7" 4111 + resolved "https://registry.yarnpkg.com/@expo/env/-/env-2.0.7.tgz#7b30d3ef9f262c131ac01d8e539e37dd04b8f4bd" 4112 + integrity sha512-BNETbLEohk3HQ2LxwwezpG8pq+h7Fs7/vAMP3eAtFT1BCpprLYoBBFZH7gW4aqGfqOcVP4Lc91j014verrYNGg== 4024 4113 dependencies: 4025 4114 chalk "^4.0.0" 4026 4115 debug "^4.3.4" 4027 4116 dotenv "~16.4.5" 4028 4117 dotenv-expand "~11.0.6" 4029 - getenv "^1.0.0" 4118 + getenv "^2.0.0" 4030 4119 4031 - "@expo/fingerprint@0.13.0": 4032 - version "0.13.0" 4033 - resolved "https://registry.yarnpkg.com/@expo/fingerprint/-/fingerprint-0.13.0.tgz#5f5600122940ac381ed697743c10bdbddf6c55c1" 4034 - integrity sha512-3IwpH0p3uO8jrJSLOUNDzJVh7VEBod0emnCBq0hD72sy6ICmzauM6Xf4he+2Tip7fzImCJRd63GaehV+CCtpvA== 4120 + "@expo/fingerprint@0.15.1": 4121 + version "0.15.1" 4122 + resolved "https://registry.yarnpkg.com/@expo/fingerprint/-/fingerprint-0.15.1.tgz#1feb1c761b6787d56c6d70a834c495157fbe050a" 4123 + integrity sha512-U1S9DwiapCHQjHdHDDyO/oXsl/1oEHSHZRRkWDDrHgXRUDiAVIySw9Unvvcr118Ee6/x4NmKSZY1X0VagrqmFg== 4035 4124 dependencies: 4036 4125 "@expo/spawn-async" "^1.7.2" 4037 4126 arg "^5.0.2" 4038 4127 chalk "^4.1.2" 4039 4128 debug "^4.3.4" 4040 - find-up "^5.0.0" 4041 4129 getenv "^2.0.0" 4130 + glob "^10.4.2" 4042 4131 ignore "^5.3.1" 4043 4132 minimatch "^9.0.0" 4044 4133 p-limit "^3.1.0" ··· 4050 4139 resolved "https://registry.yarnpkg.com/@expo/html-elements/-/html-elements-0.12.5.tgz#be7e7af9f2be6d3f1aa3ec2e7ae1c121c91a9aa1" 4051 4140 integrity sha512-28KWO88YKykKU7ke5sEQs5TivFRMs1Aktz13xxgqAf5rTgb+lka0VKVt3W2fG7ksbUQ407rtUqz7SEAq298NvQ== 4052 4141 4053 - "@expo/image-utils@0.3.23", "@expo/image-utils@0.6.3", "@expo/image-utils@^0.6.3", "@expo/image-utils@^0.7.4": 4054 - version "0.6.3" 4055 - resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.6.3.tgz#89c744460beefc686989b969121357bbd5520c8a" 4056 - integrity sha512-v/JbCKBrHeudxn1gN1TgfPE/pWJSlLPrl29uXJBgrJFQVkViQvUHQNDhaS+UEa9wYI5HHh7XYmtzAehyG4L+GA== 4142 + "@expo/image-utils@0.3.23", "@expo/image-utils@0.8.7", "@expo/image-utils@^0.8.7": 4143 + version "0.8.7" 4144 + resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.8.7.tgz#3e765005def8a4e5533155b0042e053ebfafc9d2" 4145 + integrity sha512-SXOww4Wq3RVXLyOaXiCCuQFguCDh8mmaHBv54h/R29wGl4jRY8GEyQEx8SypV/iHt1FbzsU/X3Qbcd9afm2W2w== 4057 4146 dependencies: 4058 4147 "@expo/spawn-async" "^1.7.2" 4059 4148 chalk "^4.0.0" 4060 - fs-extra "9.0.0" 4061 - getenv "^1.0.0" 4149 + getenv "^2.0.0" 4062 4150 jimp-compact "0.16.1" 4063 4151 parse-png "^2.1.0" 4064 4152 resolve-from "^5.0.0" 4153 + resolve-global "^1.0.0" 4065 4154 semver "^7.6.0" 4066 4155 temp-dir "~2.0.0" 4067 4156 unique-string "~2.0.0" 4068 4157 4069 - "@expo/json-file@^9.0.0", "@expo/json-file@~9.0.0": 4070 - version "9.0.0" 4071 - resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-9.0.0.tgz#e3688c9b108cfd7e819f1354a9458ba6e93fc943" 4072 - integrity sha512-M+55xFVrFzDcgMDf+52lPDLjKB5xwRfStWlv/b/Vu2OLgxGZLWpxoPYjlRoHqxjPbCQIi2ZCbobK+0KuNhsELg== 4073 - dependencies: 4074 - "@babel/code-frame" "~7.10.4" 4075 - json5 "^2.2.3" 4076 - write-file-atomic "^2.3.0" 4077 - 4078 - "@expo/json-file@^9.1.4", "@expo/json-file@~9.1.4": 4079 - version "9.1.4" 4080 - resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-9.1.4.tgz#e719d092c08afb3234643f9285e57c6a24989327" 4081 - integrity sha512-7Bv86X27fPERGhw8aJEZvRcH9sk+9BenDnEmrI3ZpywKodYSBgc8lX9Y32faNVQ/p0YbDK9zdJ0BfAKNAOyi0A== 4158 + "@expo/json-file@^10.0.7", "@expo/json-file@~10.0.7": 4159 + version "10.0.7" 4160 + resolved "https://registry.yarnpkg.com/@expo/json-file/-/json-file-10.0.7.tgz#e4f58fdc03fc62f13610eeafe086d84e6e44fe01" 4161 + integrity sha512-z2OTC0XNO6riZu98EjdNHC05l51ySeTto6GP7oSQrCvQgG9ARBwD1YvMQaVZ9wU7p/4LzSf1O7tckL3B45fPpw== 4082 4162 dependencies: 4083 4163 "@babel/code-frame" "~7.10.4" 4084 4164 json5 "^2.2.3" ··· 4092 4172 json5 "^2.2.3" 4093 4173 write-file-atomic "^2.3.0" 4094 4174 4095 - "@expo/metro-config@0.20.14", "@expo/metro-config@~0.20.14": 4096 - version "0.20.14" 4097 - resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.20.14.tgz#5abf8cd6454fe7f75c1f8529cf79619da32af82d" 4098 - integrity sha512-tYDDubuZycK+NX00XN7BMu73kBur/evOPcKfxc+UBeFfgN2EifOITtdwSUDdRsbtJ2OnXwMY1HfRUG3Lq3l4cw== 4175 + "@expo/mcp-tunnel@~0.0.7": 4176 + version "0.0.8" 4177 + resolved "https://registry.yarnpkg.com/@expo/mcp-tunnel/-/mcp-tunnel-0.0.8.tgz#8c4fabec4e25e119998b22bd846e9d12435da4da" 4178 + integrity sha512-6261obzt6h9TQb6clET7Fw4Ig4AY2hfTNKI3gBt0gcTNxZipwMg8wER7ssDYieA9feD/FfPTuCPYFcR280aaWA== 4099 4179 dependencies: 4180 + ws "^8.18.3" 4181 + zod "^3.25.76" 4182 + zod-to-json-schema "^3.24.6" 4183 + 4184 + "@expo/metro-config@54.0.4", "@expo/metro-config@~54.0.4": 4185 + version "54.0.4" 4186 + resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-54.0.4.tgz#b6e1087a66d6d9dedd4fb86a01f81121d345079b" 4187 + integrity sha512-syzvZGFGrOSQOWjpo+lHHwMV8XOLK5Ev/E+e0Or3fJvsAi4o7h62qbbPuAicrfFUPxlAm7XBvkWmAwPr2jIAYA== 4188 + dependencies: 4189 + "@babel/code-frame" "^7.20.0" 4100 4190 "@babel/core" "^7.20.0" 4101 4191 "@babel/generator" "^7.20.5" 4102 - "@babel/parser" "^7.20.0" 4103 - "@babel/types" "^7.20.0" 4104 - "@expo/config" "~11.0.9" 4105 - "@expo/env" "~1.0.5" 4106 - "@expo/json-file" "~9.1.4" 4192 + "@expo/config" "~12.0.9" 4193 + "@expo/env" "~2.0.7" 4194 + "@expo/json-file" "~10.0.7" 4195 + "@expo/metro" "~54.0.0" 4107 4196 "@expo/spawn-async" "^1.7.2" 4197 + browserslist "^4.25.0" 4108 4198 chalk "^4.1.0" 4109 4199 debug "^4.3.2" 4110 4200 dotenv "~16.4.5" 4111 4201 dotenv-expand "~11.0.6" 4112 - getenv "^1.0.0" 4202 + getenv "^2.0.0" 4113 4203 glob "^10.4.2" 4204 + hermes-parser "^0.29.1" 4114 4205 jsc-safe-url "^0.2.4" 4115 - lightningcss "~1.27.0" 4206 + lightningcss "^1.30.1" 4116 4207 minimatch "^9.0.0" 4117 4208 postcss "~8.4.32" 4118 4209 resolve-from "^5.0.0" 4119 4210 4120 - "@expo/osascript@^2.2.4": 4121 - version "2.2.4" 4122 - resolved "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.2.4.tgz#4414d97f91e29260a9b361529d20875430dc0af5" 4123 - integrity sha512-Q+Oyj+1pdRiHHpev9YjqfMZzByFH8UhKvSszxa0acTveijjDhQgWrq4e9T/cchBHi0GWZpGczWyiyJkk1wM1dg== 4211 + "@expo/metro@~54.0.0": 4212 + version "54.0.0" 4213 + resolved "https://registry.yarnpkg.com/@expo/metro/-/metro-54.0.0.tgz#ebb3846ee2fee688147fc08f7fed5b75fabde17f" 4214 + integrity sha512-x2HlliepLJVLSe0Fl/LuPT83Mn2EXpPlb1ngVtcawlz4IfbkYJo16/Zfsfrn1t9d8LpN5dD44Dc55Q1/fO05Nw== 4215 + dependencies: 4216 + metro "0.83.1" 4217 + metro-babel-transformer "0.83.1" 4218 + metro-cache "0.83.1" 4219 + metro-cache-key "0.83.1" 4220 + metro-config "0.83.1" 4221 + metro-core "0.83.1" 4222 + metro-file-map "0.83.1" 4223 + metro-resolver "0.83.1" 4224 + metro-runtime "0.83.1" 4225 + metro-source-map "0.83.1" 4226 + metro-transform-plugins "0.83.1" 4227 + metro-transform-worker "0.83.1" 4228 + 4229 + "@expo/osascript@^2.3.7": 4230 + version "2.3.7" 4231 + resolved "https://registry.yarnpkg.com/@expo/osascript/-/osascript-2.3.7.tgz#2d53ef06733593405c83767de7420510736e0fa9" 4232 + integrity sha512-IClSOXxR0YUFxIriUJVqyYki7lLMIHrrzOaP01yxAL1G8pj2DWV5eW1y5jSzIcIfSCNhtGsshGd1tU/AYup5iQ== 4124 4233 dependencies: 4125 4234 "@expo/spawn-async" "^1.7.2" 4126 4235 exec-async "^2.2.0" 4127 4236 4128 - "@expo/package-manager@^1.8.4": 4129 - version "1.8.4" 4130 - resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-1.8.4.tgz#6126d93b25bbfec515436833e6f6ca5677b7e8bd" 4131 - integrity sha512-8H8tLga/NS3iS7QaX/NneRPqbObnHvVCfMCo0ShudreOFmvmgqhYjRlkZTRstSyFqefai8ONaT4VmnLHneRYYg== 4237 + "@expo/package-manager@^1.9.8": 4238 + version "1.9.8" 4239 + resolved "https://registry.yarnpkg.com/@expo/package-manager/-/package-manager-1.9.8.tgz#8f6b46a2f5f4bf4f2c78507b1a7a368e0c2e2126" 4240 + integrity sha512-4/I6OWquKXYnzo38pkISHCOCOXxfeEmu4uDoERq1Ei/9Ur/s9y3kLbAamEkitUkDC7gHk1INxRWEfFNzGbmOrA== 4132 4241 dependencies: 4133 - "@expo/json-file" "^9.1.4" 4242 + "@expo/json-file" "^10.0.7" 4134 4243 "@expo/spawn-async" "^1.7.2" 4135 4244 chalk "^4.0.0" 4136 4245 npm-package-arg "^11.0.0" 4137 4246 ora "^3.4.0" 4138 4247 resolve-workspace-root "^2.0.0" 4139 - 4140 - "@expo/plist@^0.2.0": 4141 - version "0.2.0" 4142 - resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.2.0.tgz#beb014c0bfd56a993086c0972ec1ca3ef3f9d36c" 4143 - integrity sha512-F/IZJQaf8OIVnVA6XWUeMPC3OH6MV00Wxf0WC0JhTQht2QgjyHUa3U5Gs3vRtDq8tXNsZneOQRDVwpaOnd4zTQ== 4144 - dependencies: 4145 - "@xmldom/xmldom" "~0.7.7" 4146 - base64-js "^1.2.3" 4147 - xmlbuilder "^14.0.0" 4148 4248 4149 4249 "@expo/plist@^0.2.1": 4150 4250 version "0.2.1" ··· 4155 4255 base64-js "^1.2.3" 4156 4256 xmlbuilder "^14.0.0" 4157 4257 4158 - "@expo/plist@^0.3.4": 4159 - version "0.3.4" 4160 - resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.3.4.tgz#0c48eeff2158cf26c5c9ed4f681d24997ccfbeca" 4161 - integrity sha512-MhBLaUJNe9FQDDU2xhSNS4SAolr6K2wuyi4+A79vYuXLkAoICsbTwcGEQJN5jPY6D9izO/jsXh5k0h+mIWQMdw== 4258 + "@expo/plist@^0.4.7": 4259 + version "0.4.7" 4260 + resolved "https://registry.yarnpkg.com/@expo/plist/-/plist-0.4.7.tgz#40fa796e93d5be0452ce72e5110e69c8ac915403" 4261 + integrity sha512-dGxqHPvCZKeRKDU1sJZMmuyVtcASuSYh1LPFVaM1DuffqPL36n6FMEL0iUqq2Tx3xhWk8wCnWl34IKplUjJDdA== 4162 4262 dependencies: 4163 4263 "@xmldom/xmldom" "^0.8.8" 4164 4264 base64-js "^1.2.3" 4165 4265 xmlbuilder "^15.1.1" 4166 4266 4167 - "@expo/prebuild-config@^9.0.6": 4168 - version "9.0.6" 4169 - resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-9.0.6.tgz#f634e7b8f9ebebeaf2e7d2f2be46926c23834d2b" 4170 - integrity sha512-HDTdlMkTQZ95rd6EpvuLM+xkZV03yGLc38FqI37qKFLJtUN1WnYVaWsuXKoljd1OrVEVsHe6CfqKwaPZ52D56Q== 4267 + "@expo/prebuild-config@^54.0.3": 4268 + version "54.0.3" 4269 + resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-54.0.3.tgz#e3ac24bb1ec2ec348dfa98dc2ec5605b1fa49bf3" 4270 + integrity sha512-okf6Umaz1VniKmm+pA37QHBzB9XlRHvO1Qh3VbUezy07LTkz87kXUW7uLMmrA319WLavWSVORTXeR0jBRihObA== 4171 4271 dependencies: 4172 - "@expo/config" "~11.0.9" 4173 - "@expo/config-plugins" "~10.0.2" 4174 - "@expo/config-types" "^53.0.4" 4175 - "@expo/image-utils" "^0.7.4" 4176 - "@expo/json-file" "^9.1.4" 4177 - "@react-native/normalize-colors" "0.79.2" 4272 + "@expo/config" "~12.0.9" 4273 + "@expo/config-plugins" "~54.0.1" 4274 + "@expo/config-types" "^54.0.8" 4275 + "@expo/image-utils" "^0.8.7" 4276 + "@expo/json-file" "^10.0.7" 4277 + "@react-native/normalize-colors" "0.81.4" 4178 4278 debug "^4.3.1" 4179 4279 resolve-from "^5.0.0" 4180 4280 semver "^7.6.0" 4181 4281 xml2js "0.6.0" 4182 4282 4283 + "@expo/schema-utils@^0.1.7": 4284 + version "0.1.7" 4285 + resolved "https://registry.yarnpkg.com/@expo/schema-utils/-/schema-utils-0.1.7.tgz#38baa0effa0823cd4eca3f05e5eee3bde311da12" 4286 + integrity sha512-jWHoSuwRb5ZczjahrychMJ3GWZu54jK9ulNdh1d4OzAEq672K9E5yOlnlBsfIHWHGzUAT+0CL7Yt1INiXTz68g== 4287 + 4183 4288 "@expo/sdk-runtime-versions@^1.0.0": 4184 4289 version "1.0.0" 4185 4290 resolved "https://registry.yarnpkg.com/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz#d7ebd21b19f1c6b0395e50d78da4416941c57f7c" 4186 4291 integrity sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ== 4187 4292 4293 + "@expo/server@^0.7.4": 4294 + version "0.7.4" 4295 + resolved "https://registry.yarnpkg.com/@expo/server/-/server-0.7.4.tgz#37966ad39cb649a646d35778794c7e8cb1da1fb9" 4296 + integrity sha512-8bfRzL7h1Qgrmf3auR71sPAcAuxnmNkRJs+8enL8vZi2+hihevLhrayDu7P0A/XGEq7wySAGvBBFfIB00Et/AA== 4297 + dependencies: 4298 + abort-controller "^3.0.0" 4299 + debug "^4.3.4" 4300 + 4188 4301 "@expo/spawn-async@^1.7.2": 4189 4302 version "1.7.2" 4190 4303 resolved "https://registry.yarnpkg.com/@expo/spawn-async/-/spawn-async-1.7.2.tgz#fcfe66c3e387245e72154b1a7eae8cada6a47f58" ··· 4192 4305 dependencies: 4193 4306 cross-spawn "^7.0.3" 4194 4307 4195 - "@expo/vector-icons@^14.0.0": 4196 - version "14.0.0" 4197 - resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-14.0.0.tgz#48ce0aa5c05873b07c0c78bfe16c870388f4de9a" 4198 - integrity sha512-5orm59pdnBQlovhU9k4DbjMUZBHNlku7IRgFY56f7pcaaCnXq9yaLJoOQl9sMwNdFzf4gnkTyHmR5uN10mI9rA== 4308 + "@expo/vector-icons@^15.0.2": 4309 + version "15.0.2" 4310 + resolved "https://registry.yarnpkg.com/@expo/vector-icons/-/vector-icons-15.0.2.tgz#64d380f04cf2bdeb1dac502c3a0d880b6c2a9e37" 4311 + integrity sha512-IiBjg7ZikueuHNf40wSGCf0zS73a3guJLdZzKnDUxsauB8VWPLMeWnRIupc+7cFhLUkqyvyo0jLNlcxG5xPOuQ== 4199 4312 4200 4313 "@expo/webpack-config@^19.0.1": 4201 4314 version "19.0.1" ··· 4969 5082 "@jridgewell/sourcemap-codec" "^1.4.10" 4970 5083 "@jridgewell/trace-mapping" "^0.3.9" 4971 5084 5085 + "@jridgewell/gen-mapping@^0.3.12": 5086 + version "0.3.13" 5087 + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" 5088 + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== 5089 + dependencies: 5090 + "@jridgewell/sourcemap-codec" "^1.5.0" 5091 + "@jridgewell/trace-mapping" "^0.3.24" 5092 + 4972 5093 "@jridgewell/gen-mapping@^0.3.5": 4973 5094 version "0.3.5" 4974 5095 resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" ··· 5011 5132 resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" 5012 5133 integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 5013 5134 5135 + "@jridgewell/sourcemap-codec@^1.5.0": 5136 + version "1.5.5" 5137 + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" 5138 + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== 5139 + 5014 5140 "@jridgewell/trace-mapping@0.3.9": 5015 5141 version "0.3.9" 5016 5142 resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" ··· 5031 5157 version "0.3.25" 5032 5158 resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" 5033 5159 integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 5160 + dependencies: 5161 + "@jridgewell/resolve-uri" "^3.1.0" 5162 + "@jridgewell/sourcemap-codec" "^1.4.14" 5163 + 5164 + "@jridgewell/trace-mapping@^0.3.28": 5165 + version "0.3.31" 5166 + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" 5167 + integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw== 5034 5168 dependencies: 5035 5169 "@jridgewell/resolve-uri" "^3.1.0" 5036 5170 "@jridgewell/sourcemap-codec" "^1.4.14" ··· 5161 5295 resolved "https://registry.yarnpkg.com/@miblanchard/react-native-slider/-/react-native-slider-2.6.0.tgz#9f78c805d637ffaff0e3e7429932d2995a67edc9" 5162 5296 integrity sha512-o7hk/f/8vkqh6QNR5L52m+ws846fQeD/qNCC9CCSRdBqjq66KiCgbxzlhRzKM/gbtxcvMYMIEEJ1yes5cr6I3A== 5163 5297 5164 - "@mozzius/expo-dynamic-app-icon@^1.7.1": 5165 - version "1.7.1" 5166 - resolved "https://registry.yarnpkg.com/@mozzius/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.7.1.tgz#20a6475af256ab93112bbaac1c2f3dd052562d16" 5167 - integrity sha512-zDcY11B3tsQ9WsPTcszUCa6SpygfYz1e4p8PGn/4XhwYbOHJ53sEnGVQ1YlwzQ87SeWPlqrfzY6SUr9GpNq2Kg== 5298 + "@mozzius/expo-dynamic-app-icon@^1.8.0": 5299 + version "1.8.0" 5300 + resolved "https://registry.yarnpkg.com/@mozzius/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.8.0.tgz#3e98b6dc6d2a90a4274f8d975231f71e1f765142" 5301 + integrity sha512-b8/OGbTWrEhNKi8fro9MEpS2aqfP/3uIjgMTlSmEPggwKSVho61sf86t8k1g2BsVt6T+pMbS3FTMsPAVeROiJQ== 5168 5302 dependencies: 5169 - "@expo/image-utils" "^0.6.3" 5303 + "@expo/image-utils" "^0.8.7" 5170 5304 xcode "^3.0.1" 5171 5305 5172 5306 "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": ··· 5300 5434 resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.1.tgz#7b2c9225fbf1b126539551f5985769d0048d9090" 5301 5435 integrity sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g== 5302 5436 5303 - "@radix-ui/primitive@1.1.0": 5304 - version "1.1.0" 5305 - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" 5306 - integrity sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA== 5437 + "@radix-ui/primitive@1.1.3": 5438 + version "1.1.3" 5439 + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.3.tgz#e2dbc13bdc5e4168f4334f75832d7bdd3e2de5ba" 5440 + integrity sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg== 5307 5441 5308 - "@radix-ui/primitive@1.1.2": 5309 - version "1.1.2" 5310 - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.2.tgz#83f415c4425f21e3d27914c12b3272a32e3dae65" 5311 - integrity sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA== 5312 - 5313 - "@radix-ui/react-accessible-icon@1.1.3": 5314 - version "1.1.3" 5315 - resolved "https://registry.yarnpkg.com/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.3.tgz#d31766a08fa506770fe2b11ef16c276398bc5a55" 5316 - integrity sha512-givBUIlhucV212j05wJCzXtcUtQnAwoUF9eAyUyOB2YwKHnWyme817trCtAzLjo0OndPr09kbkFe2onKRxLWdg== 5442 + "@radix-ui/react-accessible-icon@1.1.7": 5443 + version "1.1.7" 5444 + resolved "https://registry.yarnpkg.com/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.7.tgz#3b1629ce0c5ce0f791a21e28cfa6a1ffb82e2029" 5445 + integrity sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A== 5317 5446 dependencies: 5318 - "@radix-ui/react-visually-hidden" "1.1.3" 5447 + "@radix-ui/react-visually-hidden" "1.2.3" 5319 5448 5320 - "@radix-ui/react-accordion@1.2.4": 5321 - version "1.2.4" 5322 - resolved "https://registry.yarnpkg.com/@radix-ui/react-accordion/-/react-accordion-1.2.4.tgz#7ccfceb959bbb3bac2f92e5e75b2654a488a2ff0" 5323 - integrity sha512-SGCxlSBaMvEzDROzyZjsVNzu9XY5E28B3k8jOENyrz6csOv/pG1eHyYfLJai1n9tRjwG61coXDhfpgtxKxUv5g== 5449 + "@radix-ui/react-accordion@1.2.12": 5450 + version "1.2.12" 5451 + resolved "https://registry.yarnpkg.com/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz#1fd70d4ef36018012b9e03324ff186de7a29c13f" 5452 + integrity sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA== 5324 5453 dependencies: 5325 - "@radix-ui/primitive" "1.1.2" 5326 - "@radix-ui/react-collapsible" "1.1.4" 5327 - "@radix-ui/react-collection" "1.1.3" 5454 + "@radix-ui/primitive" "1.1.3" 5455 + "@radix-ui/react-collapsible" "1.1.12" 5456 + "@radix-ui/react-collection" "1.1.7" 5328 5457 "@radix-ui/react-compose-refs" "1.1.2" 5329 5458 "@radix-ui/react-context" "1.1.2" 5330 5459 "@radix-ui/react-direction" "1.1.1" 5331 5460 "@radix-ui/react-id" "1.1.1" 5332 - "@radix-ui/react-primitive" "2.0.3" 5333 - "@radix-ui/react-use-controllable-state" "1.1.1" 5461 + "@radix-ui/react-primitive" "2.1.3" 5462 + "@radix-ui/react-use-controllable-state" "1.2.2" 5334 5463 5335 - "@radix-ui/react-alert-dialog@1.1.7": 5336 - version "1.1.7" 5337 - resolved "https://registry.yarnpkg.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.7.tgz#d4e07dcf9a3c67c45225c20c2800577773469454" 5338 - integrity sha512-7Gx1gcoltd0VxKoR8mc+TAVbzvChJyZryZsTam0UhoL92z0L+W8ovxvcgvd+nkz24y7Qc51JQKBAGe4+825tYw== 5464 + "@radix-ui/react-alert-dialog@1.1.15": 5465 + version "1.1.15" 5466 + resolved "https://registry.yarnpkg.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz#fa751d0fdd9aa2a90961c9901dba18e638dd4b41" 5467 + integrity sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw== 5339 5468 dependencies: 5340 - "@radix-ui/primitive" "1.1.2" 5469 + "@radix-ui/primitive" "1.1.3" 5341 5470 "@radix-ui/react-compose-refs" "1.1.2" 5342 5471 "@radix-ui/react-context" "1.1.2" 5343 - "@radix-ui/react-dialog" "1.1.7" 5344 - "@radix-ui/react-primitive" "2.0.3" 5345 - "@radix-ui/react-slot" "1.2.0" 5472 + "@radix-ui/react-dialog" "1.1.15" 5473 + "@radix-ui/react-primitive" "2.1.3" 5474 + "@radix-ui/react-slot" "1.2.3" 5346 5475 5347 - "@radix-ui/react-arrow@1.1.0": 5348 - version "1.1.0" 5349 - resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz#744f388182d360b86285217e43b6c63633f39e7a" 5350 - integrity sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw== 5476 + "@radix-ui/react-arrow@1.1.7": 5477 + version "1.1.7" 5478 + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz#e14a2657c81d961598c5e72b73dd6098acc04f09" 5479 + integrity sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w== 5351 5480 dependencies: 5352 - "@radix-ui/react-primitive" "2.0.0" 5481 + "@radix-ui/react-primitive" "2.1.3" 5353 5482 5354 - "@radix-ui/react-arrow@1.1.3": 5355 - version "1.1.3" 5356 - resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.3.tgz#8926eb1d87f73c2e047eac96703949f168c85861" 5357 - integrity sha512-2dvVU4jva0qkNZH6HHWuSz5FN5GeU5tymvCgutF8WaXz9WnD1NgUhy73cqzkjkN4Zkn8lfTPv5JIfrC221W+Nw== 5483 + "@radix-ui/react-aspect-ratio@1.1.7": 5484 + version "1.1.7" 5485 + resolved "https://registry.yarnpkg.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz#95d0adcdddd0d40c5dd2ae07c8608b4f0b983f53" 5486 + integrity sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g== 5358 5487 dependencies: 5359 - "@radix-ui/react-primitive" "2.0.3" 5488 + "@radix-ui/react-primitive" "2.1.3" 5360 5489 5361 - "@radix-ui/react-aspect-ratio@1.1.3": 5362 - version "1.1.3" 5363 - resolved "https://registry.yarnpkg.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.3.tgz#8a1fa699e2eb3dfea614383b0f4b2cef2fa2bb43" 5364 - integrity sha512-yIrYZUc2e/JtRkDpuJCmaR6kj/jzekDfQLcPFdEWzSOygCPy8poR4YcszaHP5A7mh25ncofHEpeTwfhxEuBv8Q== 5365 - dependencies: 5366 - "@radix-ui/react-primitive" "2.0.3" 5367 - 5368 - "@radix-ui/react-avatar@1.1.4": 5369 - version "1.1.4" 5370 - resolved "https://registry.yarnpkg.com/@radix-ui/react-avatar/-/react-avatar-1.1.4.tgz#55dd879cd57b08265cf313b92ba1021f7f4d5abe" 5371 - integrity sha512-+kBesLBzwqyDiYCtYFK+6Ktf+N7+Y6QOTUueLGLIbLZ/YeyFW6bsBGDsN+5HxHpM55C90u5fxsg0ErxzXTcwKA== 5490 + "@radix-ui/react-avatar@1.1.10": 5491 + version "1.1.10" 5492 + resolved "https://registry.yarnpkg.com/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz#c58a8800ef3d3ee783b3168fee7c76f6534bfd93" 5493 + integrity sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog== 5372 5494 dependencies: 5373 5495 "@radix-ui/react-context" "1.1.2" 5374 - "@radix-ui/react-primitive" "2.0.3" 5496 + "@radix-ui/react-primitive" "2.1.3" 5375 5497 "@radix-ui/react-use-callback-ref" "1.1.1" 5498 + "@radix-ui/react-use-is-hydrated" "0.1.0" 5376 5499 "@radix-ui/react-use-layout-effect" "1.1.1" 5377 5500 5378 - "@radix-ui/react-checkbox@1.1.5": 5379 - version "1.1.5" 5380 - resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.1.5.tgz#b27080678d751e33ac66066269453be9bdaa429b" 5381 - integrity sha512-B0gYIVxl77KYDR25AY9EGe/G//ef85RVBIxQvK+m5pxAC7XihAc/8leMHhDvjvhDu02SBSb6BuytlWr/G7F3+g== 5501 + "@radix-ui/react-checkbox@1.3.3": 5502 + version "1.3.3" 5503 + resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz#db45ca8a6d5c056a92f74edbb564acee05318b79" 5504 + integrity sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw== 5382 5505 dependencies: 5383 - "@radix-ui/primitive" "1.1.2" 5506 + "@radix-ui/primitive" "1.1.3" 5384 5507 "@radix-ui/react-compose-refs" "1.1.2" 5385 5508 "@radix-ui/react-context" "1.1.2" 5386 - "@radix-ui/react-presence" "1.1.3" 5387 - "@radix-ui/react-primitive" "2.0.3" 5388 - "@radix-ui/react-use-controllable-state" "1.1.1" 5509 + "@radix-ui/react-presence" "1.1.5" 5510 + "@radix-ui/react-primitive" "2.1.3" 5511 + "@radix-ui/react-use-controllable-state" "1.2.2" 5389 5512 "@radix-ui/react-use-previous" "1.1.1" 5390 5513 "@radix-ui/react-use-size" "1.1.1" 5391 5514 5392 - "@radix-ui/react-collapsible@1.1.4": 5393 - version "1.1.4" 5394 - resolved "https://registry.yarnpkg.com/@radix-ui/react-collapsible/-/react-collapsible-1.1.4.tgz#59729939c0c5db978934c688aa5f8229876d8f3f" 5395 - integrity sha512-u7LCw1EYInQtBNLGjm9nZ89S/4GcvX1UR5XbekEgnQae2Hkpq39ycJ1OhdeN1/JDfVNG91kWaWoest127TaEKQ== 5515 + "@radix-ui/react-collapsible@1.1.12": 5516 + version "1.1.12" 5517 + resolved "https://registry.yarnpkg.com/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz#e2cc69a4490a2920f97c3c3150b0bf21281e3c49" 5518 + integrity sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA== 5396 5519 dependencies: 5397 - "@radix-ui/primitive" "1.1.2" 5520 + "@radix-ui/primitive" "1.1.3" 5398 5521 "@radix-ui/react-compose-refs" "1.1.2" 5399 5522 "@radix-ui/react-context" "1.1.2" 5400 5523 "@radix-ui/react-id" "1.1.1" 5401 - "@radix-ui/react-presence" "1.1.3" 5402 - "@radix-ui/react-primitive" "2.0.3" 5403 - "@radix-ui/react-use-controllable-state" "1.1.1" 5524 + "@radix-ui/react-presence" "1.1.5" 5525 + "@radix-ui/react-primitive" "2.1.3" 5526 + "@radix-ui/react-use-controllable-state" "1.2.2" 5404 5527 "@radix-ui/react-use-layout-effect" "1.1.1" 5405 5528 5406 - "@radix-ui/react-collection@1.1.0": 5407 - version "1.1.0" 5408 - resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.0.tgz#f18af78e46454a2360d103c2251773028b7724ed" 5409 - integrity sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw== 5410 - dependencies: 5411 - "@radix-ui/react-compose-refs" "1.1.0" 5412 - "@radix-ui/react-context" "1.1.0" 5413 - "@radix-ui/react-primitive" "2.0.0" 5414 - "@radix-ui/react-slot" "1.1.0" 5415 - 5416 - "@radix-ui/react-collection@1.1.3": 5417 - version "1.1.3" 5418 - resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.3.tgz#cfd46dcea5a8ab064d91798feeb46faba4032930" 5419 - integrity sha512-mM2pxoQw5HJ49rkzwOs7Y6J4oYH22wS8BfK2/bBxROlI4xuR0c4jEenQP63LlTlDkO6Buj2Vt+QYAYcOgqtrXA== 5529 + "@radix-ui/react-collection@1.1.7": 5530 + version "1.1.7" 5531 + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.7.tgz#d05c25ca9ac4695cc19ba91f42f686e3ea2d9aec" 5532 + integrity sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw== 5420 5533 dependencies: 5421 5534 "@radix-ui/react-compose-refs" "1.1.2" 5422 5535 "@radix-ui/react-context" "1.1.2" 5423 - "@radix-ui/react-primitive" "2.0.3" 5424 - "@radix-ui/react-slot" "1.2.0" 5425 - 5426 - "@radix-ui/react-compose-refs@1.1.0": 5427 - version "1.1.0" 5428 - resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz#656432461fc8283d7b591dcf0d79152fae9ecc74" 5429 - integrity sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw== 5536 + "@radix-ui/react-primitive" "2.1.3" 5537 + "@radix-ui/react-slot" "1.2.3" 5430 5538 5431 5539 "@radix-ui/react-compose-refs@1.1.2": 5432 5540 version "1.1.2" 5433 5541 resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz#a2c4c47af6337048ee78ff6dc0d090b390d2bb30" 5434 5542 integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg== 5435 5543 5436 - "@radix-ui/react-context-menu@2.2.7": 5437 - version "2.2.7" 5438 - resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.7.tgz#6d05eb191f3b45a040b1892fb91eaed1504b25f8" 5439 - integrity sha512-EwO3tyyqwGaLPg0P64jmIKJnBywD0yjiL1eRuMPyhUXPkWWpa5JPDS+oyeIWHy2JbhF+NUlfUPVq6vE7OqgZww== 5544 + "@radix-ui/react-context-menu@2.2.16": 5545 + version "2.2.16" 5546 + resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz#e7bf94a457b68af08f24ad696949144530faab50" 5547 + integrity sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww== 5440 5548 dependencies: 5441 - "@radix-ui/primitive" "1.1.2" 5549 + "@radix-ui/primitive" "1.1.3" 5442 5550 "@radix-ui/react-context" "1.1.2" 5443 - "@radix-ui/react-menu" "2.1.7" 5444 - "@radix-ui/react-primitive" "2.0.3" 5551 + "@radix-ui/react-menu" "2.1.16" 5552 + "@radix-ui/react-primitive" "2.1.3" 5445 5553 "@radix-ui/react-use-callback-ref" "1.1.1" 5446 - "@radix-ui/react-use-controllable-state" "1.1.1" 5447 - 5448 - "@radix-ui/react-context-menu@^2.0.1": 5449 - version "2.2.2" 5450 - resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.2.tgz#efcddc559fc3011721b65148f062d04027f76c7a" 5451 - integrity sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q== 5452 - dependencies: 5453 - "@radix-ui/primitive" "1.1.0" 5454 - "@radix-ui/react-context" "1.1.1" 5455 - "@radix-ui/react-menu" "2.1.2" 5456 - "@radix-ui/react-primitive" "2.0.0" 5457 - "@radix-ui/react-use-callback-ref" "1.1.0" 5458 - "@radix-ui/react-use-controllable-state" "1.1.0" 5459 - 5460 - "@radix-ui/react-context@1.1.0": 5461 - version "1.1.0" 5462 - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" 5463 - integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== 5464 - 5465 - "@radix-ui/react-context@1.1.1": 5466 - version "1.1.1" 5467 - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a" 5468 - integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q== 5554 + "@radix-ui/react-use-controllable-state" "1.2.2" 5469 5555 5470 5556 "@radix-ui/react-context@1.1.2": 5471 5557 version "1.1.2" 5472 5558 resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.2.tgz#61628ef269a433382c364f6f1e3788a6dc213a36" 5473 5559 integrity sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA== 5474 5560 5475 - "@radix-ui/react-dialog@1.1.7": 5476 - version "1.1.7" 5477 - resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.7.tgz#c826d997d9e512bd2a2adb3245bb9dffe56e02aa" 5478 - integrity sha512-EIdma8C0C/I6kL6sO02avaCRqi3fmWJpxH6mqbVScorW6nNktzKJT/le7VPho3o/7wCsyRg3z0+Q+Obr0Gy/VQ== 5561 + "@radix-ui/react-dialog@1.1.15": 5562 + version "1.1.15" 5563 + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz#1de3d7a7e9a17a9874d29c07f5940a18a119b632" 5564 + integrity sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw== 5479 5565 dependencies: 5480 - "@radix-ui/primitive" "1.1.2" 5566 + "@radix-ui/primitive" "1.1.3" 5481 5567 "@radix-ui/react-compose-refs" "1.1.2" 5482 5568 "@radix-ui/react-context" "1.1.2" 5483 - "@radix-ui/react-dismissable-layer" "1.1.6" 5484 - "@radix-ui/react-focus-guards" "1.1.2" 5485 - "@radix-ui/react-focus-scope" "1.1.3" 5569 + "@radix-ui/react-dismissable-layer" "1.1.11" 5570 + "@radix-ui/react-focus-guards" "1.1.3" 5571 + "@radix-ui/react-focus-scope" "1.1.7" 5486 5572 "@radix-ui/react-id" "1.1.1" 5487 - "@radix-ui/react-portal" "1.1.5" 5488 - "@radix-ui/react-presence" "1.1.3" 5489 - "@radix-ui/react-primitive" "2.0.3" 5490 - "@radix-ui/react-slot" "1.2.0" 5491 - "@radix-ui/react-use-controllable-state" "1.1.1" 5573 + "@radix-ui/react-portal" "1.1.9" 5574 + "@radix-ui/react-presence" "1.1.5" 5575 + "@radix-ui/react-primitive" "2.1.3" 5576 + "@radix-ui/react-slot" "1.2.3" 5577 + "@radix-ui/react-use-controllable-state" "1.2.2" 5492 5578 aria-hidden "^1.2.4" 5493 5579 react-remove-scroll "^2.6.3" 5494 - 5495 - "@radix-ui/react-direction@1.1.0": 5496 - version "1.1.0" 5497 - resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz#a7d39855f4d077adc2a1922f9c353c5977a09cdc" 5498 - integrity sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg== 5499 5580 5500 5581 "@radix-ui/react-direction@1.1.1": 5501 5582 version "1.1.1" 5502 5583 resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.1.tgz#39e5a5769e676c753204b792fbe6cf508e550a14" 5503 5584 integrity sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw== 5504 5585 5505 - "@radix-ui/react-dismissable-layer@1.1.1": 5506 - version "1.1.1" 5507 - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz#cbdcb739c5403382bdde5f9243042ba643883396" 5508 - integrity sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ== 5586 + "@radix-ui/react-dismissable-layer@1.1.11": 5587 + version "1.1.11" 5588 + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz#e33ab6f6bdaa00f8f7327c408d9f631376b88b37" 5589 + integrity sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg== 5509 5590 dependencies: 5510 - "@radix-ui/primitive" "1.1.0" 5511 - "@radix-ui/react-compose-refs" "1.1.0" 5512 - "@radix-ui/react-primitive" "2.0.0" 5513 - "@radix-ui/react-use-callback-ref" "1.1.0" 5514 - "@radix-ui/react-use-escape-keydown" "1.1.0" 5515 - 5516 - "@radix-ui/react-dismissable-layer@1.1.6": 5517 - version "1.1.6" 5518 - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.6.tgz#e72c156cac7b07614fe8e3a039ab7081ce413686" 5519 - integrity sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q== 5520 - dependencies: 5521 - "@radix-ui/primitive" "1.1.2" 5591 + "@radix-ui/primitive" "1.1.3" 5522 5592 "@radix-ui/react-compose-refs" "1.1.2" 5523 - "@radix-ui/react-primitive" "2.0.3" 5593 + "@radix-ui/react-primitive" "2.1.3" 5524 5594 "@radix-ui/react-use-callback-ref" "1.1.1" 5525 5595 "@radix-ui/react-use-escape-keydown" "1.1.1" 5526 5596 5527 - "@radix-ui/react-dropdown-menu@2.1.7": 5528 - version "2.1.7" 5529 - resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.7.tgz#a18860ff69bdf061b7f8ace51db01db2eb225161" 5530 - integrity sha512-7/1LiuNZuCQE3IzdicGoHdQOHkS2Q08+7p8w6TXZ6ZjgAULaCI85ZY15yPl4o4FVgoKLRT43/rsfNVN8osClQQ== 5597 + "@radix-ui/react-dropdown-menu@2.1.16": 5598 + version "2.1.16" 5599 + resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz#5ee045c62bad8122347981c479d92b1ff24c7254" 5600 + integrity sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw== 5531 5601 dependencies: 5532 - "@radix-ui/primitive" "1.1.2" 5602 + "@radix-ui/primitive" "1.1.3" 5533 5603 "@radix-ui/react-compose-refs" "1.1.2" 5534 5604 "@radix-ui/react-context" "1.1.2" 5535 5605 "@radix-ui/react-id" "1.1.1" 5536 - "@radix-ui/react-menu" "2.1.7" 5537 - "@radix-ui/react-primitive" "2.0.3" 5538 - "@radix-ui/react-use-controllable-state" "1.1.1" 5539 - 5540 - "@radix-ui/react-dropdown-menu@^2.0.1": 5541 - version "2.1.2" 5542 - resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz#acc49577130e3c875ef0133bd1e271ea3392d924" 5543 - integrity sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA== 5544 - dependencies: 5545 - "@radix-ui/primitive" "1.1.0" 5546 - "@radix-ui/react-compose-refs" "1.1.0" 5547 - "@radix-ui/react-context" "1.1.1" 5548 - "@radix-ui/react-id" "1.1.0" 5549 - "@radix-ui/react-menu" "2.1.2" 5550 - "@radix-ui/react-primitive" "2.0.0" 5551 - "@radix-ui/react-use-controllable-state" "1.1.0" 5552 - 5553 - "@radix-ui/react-focus-guards@1.1.1": 5554 - version "1.1.1" 5555 - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" 5556 - integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg== 5557 - 5558 - "@radix-ui/react-focus-guards@1.1.2": 5559 - version "1.1.2" 5560 - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz#4ec9a7e50925f7fb661394460045b46212a33bed" 5561 - integrity sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA== 5562 - 5563 - "@radix-ui/react-focus-scope@1.1.0": 5564 - version "1.1.0" 5565 - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" 5566 - integrity sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA== 5567 - dependencies: 5568 - "@radix-ui/react-compose-refs" "1.1.0" 5569 - "@radix-ui/react-primitive" "2.0.0" 5570 - "@radix-ui/react-use-callback-ref" "1.1.0" 5606 + "@radix-ui/react-menu" "2.1.16" 5607 + "@radix-ui/react-primitive" "2.1.3" 5608 + "@radix-ui/react-use-controllable-state" "1.2.2" 5571 5609 5572 - "@radix-ui/react-focus-scope@1.1.3": 5610 + "@radix-ui/react-focus-guards@1.1.3": 5573 5611 version "1.1.3" 5574 - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.3.tgz#eac83a3aac700db17650b41b30724deffac5b28a" 5575 - integrity sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg== 5612 + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz#2a5669e464ad5fde9f86d22f7fdc17781a4dfa7f" 5613 + integrity sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw== 5614 + 5615 + "@radix-ui/react-focus-scope@1.1.7": 5616 + version "1.1.7" 5617 + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz#dfe76fc103537d80bf42723a183773fd07bfb58d" 5618 + integrity sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw== 5576 5619 dependencies: 5577 5620 "@radix-ui/react-compose-refs" "1.1.2" 5578 - "@radix-ui/react-primitive" "2.0.3" 5621 + "@radix-ui/react-primitive" "2.1.3" 5579 5622 "@radix-ui/react-use-callback-ref" "1.1.1" 5580 5623 5581 - "@radix-ui/react-form@0.1.3": 5582 - version "0.1.3" 5583 - resolved "https://registry.yarnpkg.com/@radix-ui/react-form/-/react-form-0.1.3.tgz#f3dd9a985eade574d043dabb50960946ee8dee5b" 5584 - integrity sha512-fVxaewKm9+oKL5q+E1+tIKNEkAeh8waJ+MsFNhLFAmpF8VG6nrNXYd2FFU8J7P3gIGNr023Sp+dD0xflqI84mA== 5624 + "@radix-ui/react-form@0.1.8": 5625 + version "0.1.8" 5626 + resolved "https://registry.yarnpkg.com/@radix-ui/react-form/-/react-form-0.1.8.tgz#daec0fde305a70edf1a97b932b5e02a4cbf5b68e" 5627 + integrity sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ== 5585 5628 dependencies: 5586 - "@radix-ui/primitive" "1.1.2" 5629 + "@radix-ui/primitive" "1.1.3" 5587 5630 "@radix-ui/react-compose-refs" "1.1.2" 5588 5631 "@radix-ui/react-context" "1.1.2" 5589 5632 "@radix-ui/react-id" "1.1.1" 5590 - "@radix-ui/react-label" "2.1.3" 5591 - "@radix-ui/react-primitive" "2.0.3" 5633 + "@radix-ui/react-label" "2.1.7" 5634 + "@radix-ui/react-primitive" "2.1.3" 5592 5635 5593 - "@radix-ui/react-hover-card@1.1.7": 5594 - version "1.1.7" 5595 - resolved "https://registry.yarnpkg.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.7.tgz#01b2f956daeb8a1193ccdb36c9c00943120bf2d4" 5596 - integrity sha512-HwM03kP8psrv21J1+9T/hhxi0f5rARVbqIZl9+IAq13l4j4fX+oGIuxisukZZmebO7J35w9gpoILvtG8bbph0w== 5636 + "@radix-ui/react-hover-card@1.1.15": 5637 + version "1.1.15" 5638 + resolved "https://registry.yarnpkg.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz#9bc7ed55c37a9032acdfcc7cfa5c73b117cffe5e" 5639 + integrity sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg== 5597 5640 dependencies: 5598 - "@radix-ui/primitive" "1.1.2" 5641 + "@radix-ui/primitive" "1.1.3" 5599 5642 "@radix-ui/react-compose-refs" "1.1.2" 5600 5643 "@radix-ui/react-context" "1.1.2" 5601 - "@radix-ui/react-dismissable-layer" "1.1.6" 5602 - "@radix-ui/react-popper" "1.2.3" 5603 - "@radix-ui/react-portal" "1.1.5" 5604 - "@radix-ui/react-presence" "1.1.3" 5605 - "@radix-ui/react-primitive" "2.0.3" 5606 - "@radix-ui/react-use-controllable-state" "1.1.1" 5607 - 5608 - "@radix-ui/react-id@1.1.0": 5609 - version "1.1.0" 5610 - resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed" 5611 - integrity sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA== 5612 - dependencies: 5613 - "@radix-ui/react-use-layout-effect" "1.1.0" 5644 + "@radix-ui/react-dismissable-layer" "1.1.11" 5645 + "@radix-ui/react-popper" "1.2.8" 5646 + "@radix-ui/react-portal" "1.1.9" 5647 + "@radix-ui/react-presence" "1.1.5" 5648 + "@radix-ui/react-primitive" "2.1.3" 5649 + "@radix-ui/react-use-controllable-state" "1.2.2" 5614 5650 5615 5651 "@radix-ui/react-id@1.1.1": 5616 5652 version "1.1.1" ··· 5619 5655 dependencies: 5620 5656 "@radix-ui/react-use-layout-effect" "1.1.1" 5621 5657 5622 - "@radix-ui/react-label@2.1.3": 5623 - version "2.1.3" 5624 - resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-2.1.3.tgz#de83641c90c57e58f0d1e1943d450dbc3936a23f" 5625 - integrity sha512-zwSQ1NzSKG95yA0tvBMgv6XPHoqapJCcg9nsUBaQQ66iRBhZNhlpaQG2ERYYX4O4stkYFK5rxj5NsWfO9CS+Hg== 5658 + "@radix-ui/react-label@2.1.7": 5659 + version "2.1.7" 5660 + resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-2.1.7.tgz#ad959ff9c6e4968d533329eb95696e1ba8ad72ab" 5661 + integrity sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ== 5626 5662 dependencies: 5627 - "@radix-ui/react-primitive" "2.0.3" 5663 + "@radix-ui/react-primitive" "2.1.3" 5628 5664 5629 - "@radix-ui/react-menu@2.1.2": 5630 - version "2.1.2" 5631 - resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.2.tgz#91f6815845a4298dde775563ed2d80b7ad667899" 5632 - integrity sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg== 5665 + "@radix-ui/react-menu@2.1.16": 5666 + version "2.1.16" 5667 + resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.16.tgz#528a5a973c3a7413d3d49eb9ccd229aa52402911" 5668 + integrity sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg== 5633 5669 dependencies: 5634 - "@radix-ui/primitive" "1.1.0" 5635 - "@radix-ui/react-collection" "1.1.0" 5636 - "@radix-ui/react-compose-refs" "1.1.0" 5637 - "@radix-ui/react-context" "1.1.1" 5638 - "@radix-ui/react-direction" "1.1.0" 5639 - "@radix-ui/react-dismissable-layer" "1.1.1" 5640 - "@radix-ui/react-focus-guards" "1.1.1" 5641 - "@radix-ui/react-focus-scope" "1.1.0" 5642 - "@radix-ui/react-id" "1.1.0" 5643 - "@radix-ui/react-popper" "1.2.0" 5644 - "@radix-ui/react-portal" "1.1.2" 5645 - "@radix-ui/react-presence" "1.1.1" 5646 - "@radix-ui/react-primitive" "2.0.0" 5647 - "@radix-ui/react-roving-focus" "1.1.0" 5648 - "@radix-ui/react-slot" "1.1.0" 5649 - "@radix-ui/react-use-callback-ref" "1.1.0" 5650 - aria-hidden "^1.1.1" 5651 - react-remove-scroll "2.6.0" 5652 - 5653 - "@radix-ui/react-menu@2.1.7": 5654 - version "2.1.7" 5655 - resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.7.tgz#e85f47e3762245d88d7a3bad3f2268c21f835111" 5656 - integrity sha512-tBODsrk68rOi1/iQzbM54toFF+gSw/y+eQgttFflqlGekuSebNqvFNHjJgjqPhiMb4Fw9A0zNFly1QT6ZFdQ+Q== 5657 - dependencies: 5658 - "@radix-ui/primitive" "1.1.2" 5659 - "@radix-ui/react-collection" "1.1.3" 5670 + "@radix-ui/primitive" "1.1.3" 5671 + "@radix-ui/react-collection" "1.1.7" 5660 5672 "@radix-ui/react-compose-refs" "1.1.2" 5661 5673 "@radix-ui/react-context" "1.1.2" 5662 5674 "@radix-ui/react-direction" "1.1.1" 5663 - "@radix-ui/react-dismissable-layer" "1.1.6" 5664 - "@radix-ui/react-focus-guards" "1.1.2" 5665 - "@radix-ui/react-focus-scope" "1.1.3" 5675 + "@radix-ui/react-dismissable-layer" "1.1.11" 5676 + "@radix-ui/react-focus-guards" "1.1.3" 5677 + "@radix-ui/react-focus-scope" "1.1.7" 5666 5678 "@radix-ui/react-id" "1.1.1" 5667 - "@radix-ui/react-popper" "1.2.3" 5668 - "@radix-ui/react-portal" "1.1.5" 5669 - "@radix-ui/react-presence" "1.1.3" 5670 - "@radix-ui/react-primitive" "2.0.3" 5671 - "@radix-ui/react-roving-focus" "1.1.3" 5672 - "@radix-ui/react-slot" "1.2.0" 5679 + "@radix-ui/react-popper" "1.2.8" 5680 + "@radix-ui/react-portal" "1.1.9" 5681 + "@radix-ui/react-presence" "1.1.5" 5682 + "@radix-ui/react-primitive" "2.1.3" 5683 + "@radix-ui/react-roving-focus" "1.1.11" 5684 + "@radix-ui/react-slot" "1.2.3" 5673 5685 "@radix-ui/react-use-callback-ref" "1.1.1" 5674 5686 aria-hidden "^1.2.4" 5675 5687 react-remove-scroll "^2.6.3" 5676 5688 5677 - "@radix-ui/react-menubar@1.1.7": 5678 - version "1.1.7" 5679 - resolved "https://registry.yarnpkg.com/@radix-ui/react-menubar/-/react-menubar-1.1.7.tgz#d6980295858134729d22fd3b6f9ca63fbebd5574" 5680 - integrity sha512-YB2zFhGdZ5SWEgRS+PgrF7EkwpsjEHntIFB/LRbT49LJdnIeK/xQQyuwLiRcOCgTDN+ALlPXQ08f0P0+TfR41g== 5689 + "@radix-ui/react-menubar@1.1.16": 5690 + version "1.1.16" 5691 + resolved "https://registry.yarnpkg.com/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz#5edf7ea2ff7aa7e3ba896b35cf577f122160121c" 5692 + integrity sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA== 5681 5693 dependencies: 5682 - "@radix-ui/primitive" "1.1.2" 5683 - "@radix-ui/react-collection" "1.1.3" 5694 + "@radix-ui/primitive" "1.1.3" 5695 + "@radix-ui/react-collection" "1.1.7" 5684 5696 "@radix-ui/react-compose-refs" "1.1.2" 5685 5697 "@radix-ui/react-context" "1.1.2" 5686 5698 "@radix-ui/react-direction" "1.1.1" 5687 5699 "@radix-ui/react-id" "1.1.1" 5688 - "@radix-ui/react-menu" "2.1.7" 5689 - "@radix-ui/react-primitive" "2.0.3" 5690 - "@radix-ui/react-roving-focus" "1.1.3" 5691 - "@radix-ui/react-use-controllable-state" "1.1.1" 5700 + "@radix-ui/react-menu" "2.1.16" 5701 + "@radix-ui/react-primitive" "2.1.3" 5702 + "@radix-ui/react-roving-focus" "1.1.11" 5703 + "@radix-ui/react-use-controllable-state" "1.2.2" 5692 5704 5693 - "@radix-ui/react-navigation-menu@1.2.6": 5694 - version "1.2.6" 5695 - resolved "https://registry.yarnpkg.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.6.tgz#4a333d4a7800fa1111343609460c713eb68d6bb5" 5696 - integrity sha512-HJqyzqG74Lj7KV58rk73i/B1nnopVyCfUmKgeGWWrZZiCuMNcY0KKugTrmqMbIeMliUnkBUDKCy9J6Mzl6xeWw== 5705 + "@radix-ui/react-navigation-menu@1.2.14": 5706 + version "1.2.14" 5707 + resolved "https://registry.yarnpkg.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz#4e6d1172be3c89752e564f8721706f78574ad7dd" 5708 + integrity sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w== 5697 5709 dependencies: 5698 - "@radix-ui/primitive" "1.1.2" 5699 - "@radix-ui/react-collection" "1.1.3" 5710 + "@radix-ui/primitive" "1.1.3" 5711 + "@radix-ui/react-collection" "1.1.7" 5700 5712 "@radix-ui/react-compose-refs" "1.1.2" 5701 5713 "@radix-ui/react-context" "1.1.2" 5702 5714 "@radix-ui/react-direction" "1.1.1" 5703 - "@radix-ui/react-dismissable-layer" "1.1.6" 5715 + "@radix-ui/react-dismissable-layer" "1.1.11" 5704 5716 "@radix-ui/react-id" "1.1.1" 5705 - "@radix-ui/react-presence" "1.1.3" 5706 - "@radix-ui/react-primitive" "2.0.3" 5717 + "@radix-ui/react-presence" "1.1.5" 5718 + "@radix-ui/react-primitive" "2.1.3" 5707 5719 "@radix-ui/react-use-callback-ref" "1.1.1" 5708 - "@radix-ui/react-use-controllable-state" "1.1.1" 5720 + "@radix-ui/react-use-controllable-state" "1.2.2" 5709 5721 "@radix-ui/react-use-layout-effect" "1.1.1" 5710 5722 "@radix-ui/react-use-previous" "1.1.1" 5711 - "@radix-ui/react-visually-hidden" "1.1.3" 5723 + "@radix-ui/react-visually-hidden" "1.2.3" 5712 5724 5713 - "@radix-ui/react-popover@1.1.7": 5714 - version "1.1.7" 5715 - resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.1.7.tgz#4397a5c1a4b2c03efe350cf467a8ddd720115c39" 5716 - integrity sha512-I38OYWDmJF2kbO74LX8UsFydSHWOJuQ7LxPnTefjxxvdvPLempvAnmsyX9UsBlywcbSGpRH7oMLfkUf+ij4nrw== 5725 + "@radix-ui/react-one-time-password-field@0.1.8": 5726 + version "0.1.8" 5727 + resolved "https://registry.yarnpkg.com/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.8.tgz#edb7476d29478477ffc837f7deacec3a1ae08a24" 5728 + integrity sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg== 5717 5729 dependencies: 5718 - "@radix-ui/primitive" "1.1.2" 5730 + "@radix-ui/number" "1.1.1" 5731 + "@radix-ui/primitive" "1.1.3" 5732 + "@radix-ui/react-collection" "1.1.7" 5719 5733 "@radix-ui/react-compose-refs" "1.1.2" 5720 5734 "@radix-ui/react-context" "1.1.2" 5721 - "@radix-ui/react-dismissable-layer" "1.1.6" 5722 - "@radix-ui/react-focus-guards" "1.1.2" 5723 - "@radix-ui/react-focus-scope" "1.1.3" 5735 + "@radix-ui/react-direction" "1.1.1" 5736 + "@radix-ui/react-primitive" "2.1.3" 5737 + "@radix-ui/react-roving-focus" "1.1.11" 5738 + "@radix-ui/react-use-controllable-state" "1.2.2" 5739 + "@radix-ui/react-use-effect-event" "0.0.2" 5740 + "@radix-ui/react-use-is-hydrated" "0.1.0" 5741 + "@radix-ui/react-use-layout-effect" "1.1.1" 5742 + 5743 + "@radix-ui/react-password-toggle-field@0.1.3": 5744 + version "0.1.3" 5745 + resolved "https://registry.yarnpkg.com/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.3.tgz#3d47de91c0f8e79d697cefde2ef8146816712031" 5746 + integrity sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw== 5747 + dependencies: 5748 + "@radix-ui/primitive" "1.1.3" 5749 + "@radix-ui/react-compose-refs" "1.1.2" 5750 + "@radix-ui/react-context" "1.1.2" 5724 5751 "@radix-ui/react-id" "1.1.1" 5725 - "@radix-ui/react-popper" "1.2.3" 5726 - "@radix-ui/react-portal" "1.1.5" 5727 - "@radix-ui/react-presence" "1.1.3" 5728 - "@radix-ui/react-primitive" "2.0.3" 5729 - "@radix-ui/react-slot" "1.2.0" 5730 - "@radix-ui/react-use-controllable-state" "1.1.1" 5731 - aria-hidden "^1.2.4" 5732 - react-remove-scroll "^2.6.3" 5752 + "@radix-ui/react-primitive" "2.1.3" 5753 + "@radix-ui/react-use-controllable-state" "1.2.2" 5754 + "@radix-ui/react-use-effect-event" "0.0.2" 5755 + "@radix-ui/react-use-is-hydrated" "0.1.0" 5733 5756 5734 - "@radix-ui/react-popper@1.2.0": 5735 - version "1.2.0" 5736 - resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz#a3e500193d144fe2d8f5d5e60e393d64111f2a7a" 5737 - integrity sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg== 5757 + "@radix-ui/react-popover@1.1.15": 5758 + version "1.1.15" 5759 + resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.1.15.tgz#9c852f93990a687ebdc949b2c3de1f37cdc4c5d5" 5760 + integrity sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA== 5738 5761 dependencies: 5739 - "@floating-ui/react-dom" "^2.0.0" 5740 - "@radix-ui/react-arrow" "1.1.0" 5741 - "@radix-ui/react-compose-refs" "1.1.0" 5742 - "@radix-ui/react-context" "1.1.0" 5743 - "@radix-ui/react-primitive" "2.0.0" 5744 - "@radix-ui/react-use-callback-ref" "1.1.0" 5745 - "@radix-ui/react-use-layout-effect" "1.1.0" 5746 - "@radix-ui/react-use-rect" "1.1.0" 5747 - "@radix-ui/react-use-size" "1.1.0" 5748 - "@radix-ui/rect" "1.1.0" 5762 + "@radix-ui/primitive" "1.1.3" 5763 + "@radix-ui/react-compose-refs" "1.1.2" 5764 + "@radix-ui/react-context" "1.1.2" 5765 + "@radix-ui/react-dismissable-layer" "1.1.11" 5766 + "@radix-ui/react-focus-guards" "1.1.3" 5767 + "@radix-ui/react-focus-scope" "1.1.7" 5768 + "@radix-ui/react-id" "1.1.1" 5769 + "@radix-ui/react-popper" "1.2.8" 5770 + "@radix-ui/react-portal" "1.1.9" 5771 + "@radix-ui/react-presence" "1.1.5" 5772 + "@radix-ui/react-primitive" "2.1.3" 5773 + "@radix-ui/react-slot" "1.2.3" 5774 + "@radix-ui/react-use-controllable-state" "1.2.2" 5775 + aria-hidden "^1.2.4" 5776 + react-remove-scroll "^2.6.3" 5749 5777 5750 - "@radix-ui/react-popper@1.2.3": 5751 - version "1.2.3" 5752 - resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.3.tgz#3b6ef3388fd209bb46341e1e40125b75f07f1304" 5753 - integrity sha512-iNb9LYUMkne9zIahukgQmHlSBp9XWGeQQ7FvUGNk45ywzOb6kQa+Ca38OphXlWDiKvyneo9S+KSJsLfLt8812A== 5778 + "@radix-ui/react-popper@1.2.8": 5779 + version "1.2.8" 5780 + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.8.tgz#a79f39cdd2b09ab9fb50bf95250918422c4d9602" 5781 + integrity sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw== 5754 5782 dependencies: 5755 5783 "@floating-ui/react-dom" "^2.0.0" 5756 - "@radix-ui/react-arrow" "1.1.3" 5784 + "@radix-ui/react-arrow" "1.1.7" 5757 5785 "@radix-ui/react-compose-refs" "1.1.2" 5758 5786 "@radix-ui/react-context" "1.1.2" 5759 - "@radix-ui/react-primitive" "2.0.3" 5787 + "@radix-ui/react-primitive" "2.1.3" 5760 5788 "@radix-ui/react-use-callback-ref" "1.1.1" 5761 5789 "@radix-ui/react-use-layout-effect" "1.1.1" 5762 5790 "@radix-ui/react-use-rect" "1.1.1" 5763 5791 "@radix-ui/react-use-size" "1.1.1" 5764 5792 "@radix-ui/rect" "1.1.1" 5765 5793 5766 - "@radix-ui/react-portal@1.1.2": 5767 - version "1.1.2" 5768 - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz#51eb46dae7505074b306ebcb985bf65cc547d74e" 5769 - integrity sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg== 5794 + "@radix-ui/react-portal@1.1.9": 5795 + version "1.1.9" 5796 + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.9.tgz#14c3649fe48ec474ac51ed9f2b9f5da4d91c4472" 5797 + integrity sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ== 5770 5798 dependencies: 5771 - "@radix-ui/react-primitive" "2.0.0" 5772 - "@radix-ui/react-use-layout-effect" "1.1.0" 5799 + "@radix-ui/react-primitive" "2.1.3" 5800 + "@radix-ui/react-use-layout-effect" "1.1.1" 5773 5801 5774 - "@radix-ui/react-portal@1.1.5": 5802 + "@radix-ui/react-presence@1.1.5": 5775 5803 version "1.1.5" 5776 - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.5.tgz#50ed6bee2d895c9a9dfc28625f24b8483b74d431" 5777 - integrity sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA== 5778 - dependencies: 5779 - "@radix-ui/react-primitive" "2.0.3" 5780 - "@radix-ui/react-use-layout-effect" "1.1.1" 5781 - 5782 - "@radix-ui/react-presence@1.1.1": 5783 - version "1.1.1" 5784 - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz#98aba423dba5e0c687a782c0669dcd99de17f9b1" 5785 - integrity sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A== 5786 - dependencies: 5787 - "@radix-ui/react-compose-refs" "1.1.0" 5788 - "@radix-ui/react-use-layout-effect" "1.1.0" 5789 - 5790 - "@radix-ui/react-presence@1.1.3": 5791 - version "1.1.3" 5792 - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.3.tgz#ce3400caec9892ceb862f96ddaa2add080c09b90" 5793 - integrity sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA== 5804 + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.5.tgz#5d8f28ac316c32f078afce2996839250c10693db" 5805 + integrity sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ== 5794 5806 dependencies: 5795 5807 "@radix-ui/react-compose-refs" "1.1.2" 5796 5808 "@radix-ui/react-use-layout-effect" "1.1.1" 5797 5809 5798 - "@radix-ui/react-primitive@2.0.0": 5799 - version "2.0.0" 5800 - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz#fe05715faa9203a223ccc0be15dc44b9f9822884" 5801 - integrity sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw== 5810 + "@radix-ui/react-primitive@2.1.3": 5811 + version "2.1.3" 5812 + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz#db9b8bcff49e01be510ad79893fb0e4cda50f1bc" 5813 + integrity sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ== 5802 5814 dependencies: 5803 - "@radix-ui/react-slot" "1.1.0" 5815 + "@radix-ui/react-slot" "1.2.3" 5804 5816 5805 - "@radix-ui/react-primitive@2.0.3": 5806 - version "2.0.3" 5807 - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.3.tgz#13c654dc4754558870a9c769f6febe5980a1bad8" 5808 - integrity sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g== 5809 - dependencies: 5810 - "@radix-ui/react-slot" "1.2.0" 5811 - 5812 - "@radix-ui/react-progress@1.1.3": 5813 - version "1.1.3" 5814 - resolved "https://registry.yarnpkg.com/@radix-ui/react-progress/-/react-progress-1.1.3.tgz#78df084607432792368070ca4b060597ebc9190a" 5815 - integrity sha512-F56aZPGTPb4qJQ/vDjnAq63oTu/DRoIG/Asb5XKOWj8rpefNLtUllR969j5QDN2sRrTk9VXIqQDRj5VvAuquaw== 5817 + "@radix-ui/react-progress@1.1.7": 5818 + version "1.1.7" 5819 + resolved "https://registry.yarnpkg.com/@radix-ui/react-progress/-/react-progress-1.1.7.tgz#a2b76398b3f24b6bd5e37f112b1e30fbedd4f38e" 5820 + integrity sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg== 5816 5821 dependencies: 5817 5822 "@radix-ui/react-context" "1.1.2" 5818 - "@radix-ui/react-primitive" "2.0.3" 5823 + "@radix-ui/react-primitive" "2.1.3" 5819 5824 5820 - "@radix-ui/react-radio-group@1.2.4": 5821 - version "1.2.4" 5822 - resolved "https://registry.yarnpkg.com/@radix-ui/react-radio-group/-/react-radio-group-1.2.4.tgz#f170fc55bd02298e5782c96c69136a78d5bb91c2" 5823 - integrity sha512-oLz7ATfKgVTUbpr5OBu6Q7hQcnV22uPT306bmG0QwgnKqBStR98RfWfJGCfW/MmhL4ISmrmmBPBW+c77SDwV9g== 5825 + "@radix-ui/react-radio-group@1.3.8": 5826 + version "1.3.8" 5827 + resolved "https://registry.yarnpkg.com/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz#93f102b5b948d602c2f2adb1bc5c347cbaf64bd9" 5828 + integrity sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ== 5824 5829 dependencies: 5825 - "@radix-ui/primitive" "1.1.2" 5830 + "@radix-ui/primitive" "1.1.3" 5826 5831 "@radix-ui/react-compose-refs" "1.1.2" 5827 5832 "@radix-ui/react-context" "1.1.2" 5828 5833 "@radix-ui/react-direction" "1.1.1" 5829 - "@radix-ui/react-presence" "1.1.3" 5830 - "@radix-ui/react-primitive" "2.0.3" 5831 - "@radix-ui/react-roving-focus" "1.1.3" 5832 - "@radix-ui/react-use-controllable-state" "1.1.1" 5834 + "@radix-ui/react-presence" "1.1.5" 5835 + "@radix-ui/react-primitive" "2.1.3" 5836 + "@radix-ui/react-roving-focus" "1.1.11" 5837 + "@radix-ui/react-use-controllable-state" "1.2.2" 5833 5838 "@radix-ui/react-use-previous" "1.1.1" 5834 5839 "@radix-ui/react-use-size" "1.1.1" 5835 5840 5836 - "@radix-ui/react-roving-focus@1.1.0": 5837 - version "1.1.0" 5838 - resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz#b30c59daf7e714c748805bfe11c76f96caaac35e" 5839 - integrity sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA== 5840 - dependencies: 5841 - "@radix-ui/primitive" "1.1.0" 5842 - "@radix-ui/react-collection" "1.1.0" 5843 - "@radix-ui/react-compose-refs" "1.1.0" 5844 - "@radix-ui/react-context" "1.1.0" 5845 - "@radix-ui/react-direction" "1.1.0" 5846 - "@radix-ui/react-id" "1.1.0" 5847 - "@radix-ui/react-primitive" "2.0.0" 5848 - "@radix-ui/react-use-callback-ref" "1.1.0" 5849 - "@radix-ui/react-use-controllable-state" "1.1.0" 5850 - 5851 - "@radix-ui/react-roving-focus@1.1.3": 5852 - version "1.1.3" 5853 - resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.3.tgz#c992b9d30c795f5f5a668853db8f4a6e07b7284d" 5854 - integrity sha512-ufbpLUjZiOg4iYgb2hQrWXEPYX6jOLBbR27bDyAff5GYMRrCzcze8lukjuXVUQvJ6HZe8+oL+hhswDcjmcgVyg== 5841 + "@radix-ui/react-roving-focus@1.1.11": 5842 + version "1.1.11" 5843 + resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz#ef54384b7361afc6480dcf9907ef2fedb5080fd9" 5844 + integrity sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA== 5855 5845 dependencies: 5856 - "@radix-ui/primitive" "1.1.2" 5857 - "@radix-ui/react-collection" "1.1.3" 5846 + "@radix-ui/primitive" "1.1.3" 5847 + "@radix-ui/react-collection" "1.1.7" 5858 5848 "@radix-ui/react-compose-refs" "1.1.2" 5859 5849 "@radix-ui/react-context" "1.1.2" 5860 5850 "@radix-ui/react-direction" "1.1.1" 5861 5851 "@radix-ui/react-id" "1.1.1" 5862 - "@radix-ui/react-primitive" "2.0.3" 5852 + "@radix-ui/react-primitive" "2.1.3" 5863 5853 "@radix-ui/react-use-callback-ref" "1.1.1" 5864 - "@radix-ui/react-use-controllable-state" "1.1.1" 5854 + "@radix-ui/react-use-controllable-state" "1.2.2" 5865 5855 5866 - "@radix-ui/react-scroll-area@1.2.4": 5867 - version "1.2.4" 5868 - resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.4.tgz#4b6fd6fccaae26dbe73700fe8c5be5313984d8f4" 5869 - integrity sha512-G9rdWTQjOR4sk76HwSdROhPU0jZWpfozn9skU1v4N0/g9k7TmswrJn8W8WMU+aYktnLLpk5LX6fofj2bGe5NFQ== 5856 + "@radix-ui/react-scroll-area@1.2.10": 5857 + version "1.2.10" 5858 + resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz#e4fd3b4a79bb77bec1a52f0c8f26d8f3f1ca4b22" 5859 + integrity sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A== 5870 5860 dependencies: 5871 5861 "@radix-ui/number" "1.1.1" 5872 - "@radix-ui/primitive" "1.1.2" 5862 + "@radix-ui/primitive" "1.1.3" 5873 5863 "@radix-ui/react-compose-refs" "1.1.2" 5874 5864 "@radix-ui/react-context" "1.1.2" 5875 5865 "@radix-ui/react-direction" "1.1.1" 5876 - "@radix-ui/react-presence" "1.1.3" 5877 - "@radix-ui/react-primitive" "2.0.3" 5866 + "@radix-ui/react-presence" "1.1.5" 5867 + "@radix-ui/react-primitive" "2.1.3" 5878 5868 "@radix-ui/react-use-callback-ref" "1.1.1" 5879 5869 "@radix-ui/react-use-layout-effect" "1.1.1" 5880 5870 5881 - "@radix-ui/react-select@2.1.7": 5882 - version "2.1.7" 5883 - resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.7.tgz#68561488ca54cad07352b3f2c2d29e0da28bbaa0" 5884 - integrity sha512-exzGIRtc7S8EIM2KjFg+7lJZsH7O7tpaBaJbBNVDnOZNhtoQ2iV+iSNfi2Wth0m6h3trJkMVvzAehB3c6xj/3Q== 5871 + "@radix-ui/react-select@2.2.6": 5872 + version "2.2.6" 5873 + resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.2.6.tgz#022cf8dab16bf05d0d1b4df9e53e4bea1b744fd9" 5874 + integrity sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ== 5885 5875 dependencies: 5886 5876 "@radix-ui/number" "1.1.1" 5887 - "@radix-ui/primitive" "1.1.2" 5888 - "@radix-ui/react-collection" "1.1.3" 5877 + "@radix-ui/primitive" "1.1.3" 5878 + "@radix-ui/react-collection" "1.1.7" 5889 5879 "@radix-ui/react-compose-refs" "1.1.2" 5890 5880 "@radix-ui/react-context" "1.1.2" 5891 5881 "@radix-ui/react-direction" "1.1.1" 5892 - "@radix-ui/react-dismissable-layer" "1.1.6" 5893 - "@radix-ui/react-focus-guards" "1.1.2" 5894 - "@radix-ui/react-focus-scope" "1.1.3" 5882 + "@radix-ui/react-dismissable-layer" "1.1.11" 5883 + "@radix-ui/react-focus-guards" "1.1.3" 5884 + "@radix-ui/react-focus-scope" "1.1.7" 5895 5885 "@radix-ui/react-id" "1.1.1" 5896 - "@radix-ui/react-popper" "1.2.3" 5897 - "@radix-ui/react-portal" "1.1.5" 5898 - "@radix-ui/react-primitive" "2.0.3" 5899 - "@radix-ui/react-slot" "1.2.0" 5886 + "@radix-ui/react-popper" "1.2.8" 5887 + "@radix-ui/react-portal" "1.1.9" 5888 + "@radix-ui/react-primitive" "2.1.3" 5889 + "@radix-ui/react-slot" "1.2.3" 5900 5890 "@radix-ui/react-use-callback-ref" "1.1.1" 5901 - "@radix-ui/react-use-controllable-state" "1.1.1" 5891 + "@radix-ui/react-use-controllable-state" "1.2.2" 5902 5892 "@radix-ui/react-use-layout-effect" "1.1.1" 5903 5893 "@radix-ui/react-use-previous" "1.1.1" 5904 - "@radix-ui/react-visually-hidden" "1.1.3" 5894 + "@radix-ui/react-visually-hidden" "1.2.3" 5905 5895 aria-hidden "^1.2.4" 5906 5896 react-remove-scroll "^2.6.3" 5907 5897 5908 - "@radix-ui/react-separator@1.1.3": 5909 - version "1.1.3" 5910 - resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.3.tgz#767ea659592efaafda3c738833ff325e54d83de5" 5911 - integrity sha512-2omrWKJvxR0U/tkIXezcc1nFMwtLU0+b/rDK40gnzJqTLWQ/TD/D5IYVefp9sC3QWfeQbpSbEA6op9MQKyaALQ== 5898 + "@radix-ui/react-separator@1.1.7": 5899 + version "1.1.7" 5900 + resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.7.tgz#a18bd7fd07c10fda1bba14f2a3032e7b1a2b3470" 5901 + integrity sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA== 5912 5902 dependencies: 5913 - "@radix-ui/react-primitive" "2.0.3" 5903 + "@radix-ui/react-primitive" "2.1.3" 5914 5904 5915 - "@radix-ui/react-slider@1.2.4": 5916 - version "1.2.4" 5917 - resolved "https://registry.yarnpkg.com/@radix-ui/react-slider/-/react-slider-1.2.4.tgz#29cd5e53806d828f81f32af8ff88489a25c1072d" 5918 - integrity sha512-Vr/OgNejNJPAghIhjS7Mf/2F/EXGDT0qgtiHf2BHz71+KqgN+jndFLKq5xAB9JOGejGzejfJLIvT04Do+yzhcg== 5905 + "@radix-ui/react-slider@1.3.6": 5906 + version "1.3.6" 5907 + resolved "https://registry.yarnpkg.com/@radix-ui/react-slider/-/react-slider-1.3.6.tgz#409453110b8f34ca00972750b80cd792f0b23a8c" 5908 + integrity sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw== 5919 5909 dependencies: 5920 5910 "@radix-ui/number" "1.1.1" 5921 - "@radix-ui/primitive" "1.1.2" 5922 - "@radix-ui/react-collection" "1.1.3" 5911 + "@radix-ui/primitive" "1.1.3" 5912 + "@radix-ui/react-collection" "1.1.7" 5923 5913 "@radix-ui/react-compose-refs" "1.1.2" 5924 5914 "@radix-ui/react-context" "1.1.2" 5925 5915 "@radix-ui/react-direction" "1.1.1" 5926 - "@radix-ui/react-primitive" "2.0.3" 5927 - "@radix-ui/react-use-controllable-state" "1.1.1" 5916 + "@radix-ui/react-primitive" "2.1.3" 5917 + "@radix-ui/react-use-controllable-state" "1.2.2" 5928 5918 "@radix-ui/react-use-layout-effect" "1.1.1" 5929 5919 "@radix-ui/react-use-previous" "1.1.1" 5930 5920 "@radix-ui/react-use-size" "1.1.1" 5931 5921 5932 - "@radix-ui/react-slot@1.1.0": 5933 - version "1.1.0" 5934 - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" 5935 - integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== 5936 - dependencies: 5937 - "@radix-ui/react-compose-refs" "1.1.0" 5938 - 5939 - "@radix-ui/react-slot@1.2.0": 5940 - version "1.2.0" 5941 - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.0.tgz#57727fc186ddb40724ccfbe294e1a351d92462ba" 5942 - integrity sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w== 5922 + "@radix-ui/react-slot@1.2.3": 5923 + version "1.2.3" 5924 + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz#502d6e354fc847d4169c3bc5f189de777f68cfe1" 5925 + integrity sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A== 5943 5926 dependencies: 5944 5927 "@radix-ui/react-compose-refs" "1.1.2" 5945 5928 5946 - "@radix-ui/react-switch@1.1.4": 5947 - version "1.1.4" 5948 - resolved "https://registry.yarnpkg.com/@radix-ui/react-switch/-/react-switch-1.1.4.tgz#a0672f67974ad11cd8e2304b04aad8ce684eb037" 5949 - integrity sha512-zGP6W8plLeogoeGMiTHJ/uvf+TE1C2chVsEwfP8YlvpQKJHktG+iCkUtCLGPAuDV8/qDSmIRPm4NggaTxFMVBQ== 5929 + "@radix-ui/react-switch@1.2.6": 5930 + version "1.2.6" 5931 + resolved "https://registry.yarnpkg.com/@radix-ui/react-switch/-/react-switch-1.2.6.tgz#ff79acb831f0d5ea9216cfcc5b939912571358e3" 5932 + integrity sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ== 5950 5933 dependencies: 5951 - "@radix-ui/primitive" "1.1.2" 5934 + "@radix-ui/primitive" "1.1.3" 5952 5935 "@radix-ui/react-compose-refs" "1.1.2" 5953 5936 "@radix-ui/react-context" "1.1.2" 5954 - "@radix-ui/react-primitive" "2.0.3" 5955 - "@radix-ui/react-use-controllable-state" "1.1.1" 5937 + "@radix-ui/react-primitive" "2.1.3" 5938 + "@radix-ui/react-use-controllable-state" "1.2.2" 5956 5939 "@radix-ui/react-use-previous" "1.1.1" 5957 5940 "@radix-ui/react-use-size" "1.1.1" 5958 5941 5959 - "@radix-ui/react-tabs@1.1.4": 5960 - version "1.1.4" 5961 - resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.1.4.tgz#2e43f3ef3450143281e7c1491da1e5d7941b9826" 5962 - integrity sha512-fuHMHWSf5SRhXke+DbHXj2wVMo+ghVH30vhX3XVacdXqDl+J4XWafMIGOOER861QpBx1jxgwKXL2dQnfrsd8MQ== 5942 + "@radix-ui/react-tabs@1.1.13": 5943 + version "1.1.13" 5944 + resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz#3537ce379d7e7ff4eeb6b67a0973e139c2ac1f15" 5945 + integrity sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A== 5963 5946 dependencies: 5964 - "@radix-ui/primitive" "1.1.2" 5947 + "@radix-ui/primitive" "1.1.3" 5965 5948 "@radix-ui/react-context" "1.1.2" 5966 5949 "@radix-ui/react-direction" "1.1.1" 5967 5950 "@radix-ui/react-id" "1.1.1" 5968 - "@radix-ui/react-presence" "1.1.3" 5969 - "@radix-ui/react-primitive" "2.0.3" 5970 - "@radix-ui/react-roving-focus" "1.1.3" 5971 - "@radix-ui/react-use-controllable-state" "1.1.1" 5951 + "@radix-ui/react-presence" "1.1.5" 5952 + "@radix-ui/react-primitive" "2.1.3" 5953 + "@radix-ui/react-roving-focus" "1.1.11" 5954 + "@radix-ui/react-use-controllable-state" "1.2.2" 5972 5955 5973 - "@radix-ui/react-toast@1.2.7": 5974 - version "1.2.7" 5975 - resolved "https://registry.yarnpkg.com/@radix-ui/react-toast/-/react-toast-1.2.7.tgz#57954e88061c20f12a9c6ac7cbd532d2c3ca1186" 5976 - integrity sha512-0IWTbAUKvzdpOaWDMZisXZvScXzF0phaQjWspK8RUMEUxjLbli+886mB/kXTIC3F+t5vQ0n0vYn+dsX8s+WdfA== 5956 + "@radix-ui/react-toast@1.2.15": 5957 + version "1.2.15" 5958 + resolved "https://registry.yarnpkg.com/@radix-ui/react-toast/-/react-toast-1.2.15.tgz#746cf9a81297ddbfba214e5c81245ea3f706f876" 5959 + integrity sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g== 5977 5960 dependencies: 5978 - "@radix-ui/primitive" "1.1.2" 5979 - "@radix-ui/react-collection" "1.1.3" 5961 + "@radix-ui/primitive" "1.1.3" 5962 + "@radix-ui/react-collection" "1.1.7" 5980 5963 "@radix-ui/react-compose-refs" "1.1.2" 5981 5964 "@radix-ui/react-context" "1.1.2" 5982 - "@radix-ui/react-dismissable-layer" "1.1.6" 5983 - "@radix-ui/react-portal" "1.1.5" 5984 - "@radix-ui/react-presence" "1.1.3" 5985 - "@radix-ui/react-primitive" "2.0.3" 5965 + "@radix-ui/react-dismissable-layer" "1.1.11" 5966 + "@radix-ui/react-portal" "1.1.9" 5967 + "@radix-ui/react-presence" "1.1.5" 5968 + "@radix-ui/react-primitive" "2.1.3" 5986 5969 "@radix-ui/react-use-callback-ref" "1.1.1" 5987 - "@radix-ui/react-use-controllable-state" "1.1.1" 5970 + "@radix-ui/react-use-controllable-state" "1.2.2" 5988 5971 "@radix-ui/react-use-layout-effect" "1.1.1" 5989 - "@radix-ui/react-visually-hidden" "1.1.3" 5972 + "@radix-ui/react-visually-hidden" "1.2.3" 5990 5973 5991 - "@radix-ui/react-toggle-group@1.1.3": 5992 - version "1.1.3" 5993 - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.3.tgz#39ec34b5c67416bf285eac19ef6898532a0c56c6" 5994 - integrity sha512-khTzdGIxy8WurYUEUrapvj5aOev/tUA8TDEFi1D0Dn3yX+KR5AqjX0b7E5sL9ngRRpxDN2RRJdn5siasu5jtcg== 5974 + "@radix-ui/react-toggle-group@1.1.11": 5975 + version "1.1.11" 5976 + resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz#e513d6ffdb07509b400ab5b26f2523747c0d51c1" 5977 + integrity sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q== 5995 5978 dependencies: 5996 - "@radix-ui/primitive" "1.1.2" 5979 + "@radix-ui/primitive" "1.1.3" 5997 5980 "@radix-ui/react-context" "1.1.2" 5998 5981 "@radix-ui/react-direction" "1.1.1" 5999 - "@radix-ui/react-primitive" "2.0.3" 6000 - "@radix-ui/react-roving-focus" "1.1.3" 6001 - "@radix-ui/react-toggle" "1.1.3" 6002 - "@radix-ui/react-use-controllable-state" "1.1.1" 5982 + "@radix-ui/react-primitive" "2.1.3" 5983 + "@radix-ui/react-roving-focus" "1.1.11" 5984 + "@radix-ui/react-toggle" "1.1.10" 5985 + "@radix-ui/react-use-controllable-state" "1.2.2" 6003 5986 6004 - "@radix-ui/react-toggle@1.1.3": 6005 - version "1.1.3" 6006 - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.1.3.tgz#5e0275c3788a38f77521a47c1446d2efa840641d" 6007 - integrity sha512-Za5HHd9nvsiZ2t3EI/dVd4Bm/JydK+D22uHKk46fPtvuPxVCJBUo5mQybN+g5sZe35y7I6GDTTfdkVv5SnxlFg== 5987 + "@radix-ui/react-toggle@1.1.10": 5988 + version "1.1.10" 5989 + resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz#b04ba0f9609599df666fce5b2f38109a197f08cf" 5990 + integrity sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ== 6008 5991 dependencies: 6009 - "@radix-ui/primitive" "1.1.2" 6010 - "@radix-ui/react-primitive" "2.0.3" 6011 - "@radix-ui/react-use-controllable-state" "1.1.1" 5992 + "@radix-ui/primitive" "1.1.3" 5993 + "@radix-ui/react-primitive" "2.1.3" 5994 + "@radix-ui/react-use-controllable-state" "1.2.2" 6012 5995 6013 - "@radix-ui/react-toolbar@1.1.3": 6014 - version "1.1.3" 6015 - resolved "https://registry.yarnpkg.com/@radix-ui/react-toolbar/-/react-toolbar-1.1.3.tgz#7937b5a6890b35bda23cbf3b2de279779dd5162e" 6016 - integrity sha512-yTZ8ooxlBqljSiruO6y6azKXSXYBpnzd23yohjyFesun4nm8yh+D91J1yCqhtnRtSjRWuAmr9vFgGxmGwLjTfg== 5996 + "@radix-ui/react-toolbar@1.1.11": 5997 + version "1.1.11" 5998 + resolved "https://registry.yarnpkg.com/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz#2a71f1d91535788f88145d542159e2faaa561db7" 5999 + integrity sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg== 6017 6000 dependencies: 6018 - "@radix-ui/primitive" "1.1.2" 6001 + "@radix-ui/primitive" "1.1.3" 6019 6002 "@radix-ui/react-context" "1.1.2" 6020 6003 "@radix-ui/react-direction" "1.1.1" 6021 - "@radix-ui/react-primitive" "2.0.3" 6022 - "@radix-ui/react-roving-focus" "1.1.3" 6023 - "@radix-ui/react-separator" "1.1.3" 6024 - "@radix-ui/react-toggle-group" "1.1.3" 6004 + "@radix-ui/react-primitive" "2.1.3" 6005 + "@radix-ui/react-roving-focus" "1.1.11" 6006 + "@radix-ui/react-separator" "1.1.7" 6007 + "@radix-ui/react-toggle-group" "1.1.11" 6025 6008 6026 - "@radix-ui/react-tooltip@1.2.0": 6027 - version "1.2.0" 6028 - resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.2.0.tgz#aee9fed9db53e4c84f525aada3436b651464a532" 6029 - integrity sha512-b1Sdc75s7zN9B8ONQTGBSHL3XS8+IcjcOIY51fhM4R1Hx8s0YbgqgyNZiri4qcYMVZK8hfCZVBiyCm7N9rs0rw== 6009 + "@radix-ui/react-tooltip@1.2.8": 6010 + version "1.2.8" 6011 + resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz#3f50267e25bccfc9e20bb3036bfd9ab4c2c30c2c" 6012 + integrity sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg== 6030 6013 dependencies: 6031 - "@radix-ui/primitive" "1.1.2" 6014 + "@radix-ui/primitive" "1.1.3" 6032 6015 "@radix-ui/react-compose-refs" "1.1.2" 6033 6016 "@radix-ui/react-context" "1.1.2" 6034 - "@radix-ui/react-dismissable-layer" "1.1.6" 6017 + "@radix-ui/react-dismissable-layer" "1.1.11" 6035 6018 "@radix-ui/react-id" "1.1.1" 6036 - "@radix-ui/react-popper" "1.2.3" 6037 - "@radix-ui/react-portal" "1.1.5" 6038 - "@radix-ui/react-presence" "1.1.3" 6039 - "@radix-ui/react-primitive" "2.0.3" 6040 - "@radix-ui/react-slot" "1.2.0" 6041 - "@radix-ui/react-use-controllable-state" "1.1.1" 6042 - "@radix-ui/react-visually-hidden" "1.1.3" 6043 - 6044 - "@radix-ui/react-use-callback-ref@1.1.0": 6045 - version "1.1.0" 6046 - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" 6047 - integrity sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw== 6019 + "@radix-ui/react-popper" "1.2.8" 6020 + "@radix-ui/react-portal" "1.1.9" 6021 + "@radix-ui/react-presence" "1.1.5" 6022 + "@radix-ui/react-primitive" "2.1.3" 6023 + "@radix-ui/react-slot" "1.2.3" 6024 + "@radix-ui/react-use-controllable-state" "1.2.2" 6025 + "@radix-ui/react-visually-hidden" "1.2.3" 6048 6026 6049 6027 "@radix-ui/react-use-callback-ref@1.1.1": 6050 6028 version "1.1.1" 6051 6029 resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz#62a4dba8b3255fdc5cc7787faeac1c6e4cc58d40" 6052 6030 integrity sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg== 6053 6031 6054 - "@radix-ui/react-use-controllable-state@1.1.0": 6055 - version "1.1.0" 6056 - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz#1321446857bb786917df54c0d4d084877aab04b0" 6057 - integrity sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw== 6058 - dependencies: 6059 - "@radix-ui/react-use-callback-ref" "1.1.0" 6060 - 6061 - "@radix-ui/react-use-controllable-state@1.1.1": 6062 - version "1.1.1" 6063 - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.1.tgz#ec9c572072a6f269df7435c1652fbeebabe0f0c1" 6064 - integrity sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg== 6032 + "@radix-ui/react-use-controllable-state@1.2.2": 6033 + version "1.2.2" 6034 + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz#905793405de57d61a439f4afebbb17d0645f3190" 6035 + integrity sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg== 6065 6036 dependencies: 6066 - "@radix-ui/react-use-callback-ref" "1.1.1" 6037 + "@radix-ui/react-use-effect-event" "0.0.2" 6038 + "@radix-ui/react-use-layout-effect" "1.1.1" 6067 6039 6068 - "@radix-ui/react-use-escape-keydown@1.1.0": 6069 - version "1.1.0" 6070 - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" 6071 - integrity sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw== 6040 + "@radix-ui/react-use-effect-event@0.0.2": 6041 + version "0.0.2" 6042 + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz#090cf30d00a4c7632a15548512e9152217593907" 6043 + integrity sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA== 6072 6044 dependencies: 6073 - "@radix-ui/react-use-callback-ref" "1.1.0" 6045 + "@radix-ui/react-use-layout-effect" "1.1.1" 6074 6046 6075 6047 "@radix-ui/react-use-escape-keydown@1.1.1": 6076 6048 version "1.1.1" ··· 6079 6051 dependencies: 6080 6052 "@radix-ui/react-use-callback-ref" "1.1.1" 6081 6053 6082 - "@radix-ui/react-use-layout-effect@1.1.0": 6083 - version "1.1.0" 6084 - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz#3c2c8ce04827b26a39e442ff4888d9212268bd27" 6085 - integrity sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w== 6054 + "@radix-ui/react-use-is-hydrated@0.1.0": 6055 + version "0.1.0" 6056 + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz#544da73369517036c77659d7cdd019dc0f5ff9a0" 6057 + integrity sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA== 6058 + dependencies: 6059 + use-sync-external-store "^1.5.0" 6086 6060 6087 6061 "@radix-ui/react-use-layout-effect@1.1.1": 6088 6062 version "1.1.1" ··· 6094 6068 resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz#1a1ad5568973d24051ed0af687766f6c7cb9b5b5" 6095 6069 integrity sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ== 6096 6070 6097 - "@radix-ui/react-use-rect@1.1.0": 6098 - version "1.1.0" 6099 - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz#13b25b913bd3e3987cc9b073a1a164bb1cf47b88" 6100 - integrity sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ== 6101 - dependencies: 6102 - "@radix-ui/rect" "1.1.0" 6103 - 6104 6071 "@radix-ui/react-use-rect@1.1.1": 6105 6072 version "1.1.1" 6106 6073 resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz#01443ca8ed071d33023c1113e5173b5ed8769152" ··· 6108 6075 dependencies: 6109 6076 "@radix-ui/rect" "1.1.1" 6110 6077 6111 - "@radix-ui/react-use-size@1.1.0": 6112 - version "1.1.0" 6113 - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz#b4dba7fbd3882ee09e8d2a44a3eed3a7e555246b" 6114 - integrity sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw== 6115 - dependencies: 6116 - "@radix-ui/react-use-layout-effect" "1.1.0" 6117 - 6118 6078 "@radix-ui/react-use-size@1.1.1": 6119 6079 version "1.1.1" 6120 6080 resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz#6de276ffbc389a537ffe4316f5b0f24129405b37" ··· 6122 6082 dependencies: 6123 6083 "@radix-ui/react-use-layout-effect" "1.1.1" 6124 6084 6125 - "@radix-ui/react-visually-hidden@1.1.3": 6126 - version "1.1.3" 6127 - resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.3.tgz#f704c49121859941a8bb50ff1e4f156058cacd0b" 6128 - integrity sha512-oXSF3ZQRd5fvomd9hmUCb2EHSZbPp3ZSHAHJJU/DlF9XoFkJBBW8RHU/E8WEH+RbSfJd/QFA0sl8ClJXknBwHQ== 6085 + "@radix-ui/react-visually-hidden@1.2.3": 6086 + version "1.2.3" 6087 + resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz#a8c38c8607735dc9f05c32f87ab0f9c2b109efbf" 6088 + integrity sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug== 6129 6089 dependencies: 6130 - "@radix-ui/react-primitive" "2.0.3" 6131 - 6132 - "@radix-ui/rect@1.1.0": 6133 - version "1.1.0" 6134 - resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.0.tgz#f817d1d3265ac5415dadc67edab30ae196696438" 6135 - integrity sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg== 6090 + "@radix-ui/react-primitive" "2.1.3" 6136 6091 6137 6092 "@radix-ui/rect@1.1.1": 6138 6093 version "1.1.1" 6139 6094 resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.1.tgz#78244efe12930c56fd255d7923865857c41ac8cb" 6140 6095 integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw== 6141 6096 6142 - "@react-native-async-storage/async-storage@2.1.2": 6143 - version "2.1.2" 6144 - resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-2.1.2.tgz#8aae432adfc20800308e2ef3ce380864f0f9def8" 6145 - integrity sha512-dvlNq4AlGWC+ehtH12p65+17V0Dx7IecOWl6WanF2ja38O1Dcjjvn7jVzkUHJ5oWkQBlyASurTPlTHgKXyYiow== 6097 + "@react-native-async-storage/async-storage@2.2.0": 6098 + version "2.2.0" 6099 + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-2.2.0.tgz#a3aa565253e46286655560172f4e366e8969f5ad" 6100 + integrity sha512-gvRvjR5JAaUZF8tv2Kcq/Gbt3JHwbKFYfmb445rhOj6NUMx3qPLixmDx5pZAyb9at1bYvJ4/eTUipU5aki45xw== 6146 6101 dependencies: 6147 6102 merge-options "^3.0.4" 6148 6103 ··· 6153 6108 dependencies: 6154 6109 merge-options "^3.0.4" 6155 6110 6156 - "@react-native-menu/menu@^1.2.3": 6157 - version "1.2.3" 6158 - resolved "https://registry.yarnpkg.com/@react-native-menu/menu/-/menu-1.2.3.tgz#7a6a6748d610ab0d14aa65e1414520a5254aeff6" 6159 - integrity sha512-sEfiVIivsa0lSelFm9Wbm/RAi+XoEHc75GGhjwvSrj9KSCVvNNXwr9F8l42e1t/lzYvVYzmkYxLG6VKxrDYJiw== 6111 + "@react-native/assets-registry@0.81.4": 6112 + version "0.81.4" 6113 + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.81.4.tgz#bfa477c8e9d54d6ef4ab6e81b886d5be13c09fbd" 6114 + integrity sha512-AMcDadefBIjD10BRqkWw+W/VdvXEomR6aEZ0fhQRAv7igrBzb4PTn4vHKYg+sUK0e3wa74kcMy2DLc/HtnGcMA== 6160 6115 6161 - "@react-native-picker/picker@2.11.0": 6162 - version "2.11.0" 6163 - resolved "https://registry.yarnpkg.com/@react-native-picker/picker/-/picker-2.11.0.tgz#4587fbce6a382adedad74311e96ee10bb2b2d63a" 6164 - integrity sha512-QuZU6gbxmOID5zZgd/H90NgBnbJ3VV6qVzp6c7/dDrmWdX8S0X5YFYgDcQFjE3dRen9wB9FWnj2VVdPU64adSg== 6165 - 6166 - "@react-native/assets-registry@0.79.3": 6167 - version "0.79.3" 6168 - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.79.3.tgz#022218d55a5d9d221a6d176987ab0b35c10d388b" 6169 - integrity sha512-Vy8DQXCJ21YSAiHxrNBz35VqVlZPpRYm50xRTWRf660JwHuJkFQG8cUkrLzm7AUriqUXxwpkQHcY+b0ibw9ejQ== 6170 - 6171 - "@react-native/babel-plugin-codegen@0.79.3": 6172 - version "0.79.3" 6173 - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.3.tgz#acad4acaead398a8c8bcdecbe44040aa0c2dc2d7" 6174 - integrity sha512-Zb8F4bSEKKZfms5n1MQ0o5mudDcpAINkKiFuFTU0PErYGjY3kZ+JeIP+gS6KCXsckxCfMEKQwqKicP/4DWgsZQ== 6116 + "@react-native/babel-plugin-codegen@0.81.4": 6117 + version "0.81.4" 6118 + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.4.tgz#0e513ac2108ff509eab1470982db472faab9ae46" 6119 + integrity sha512-6ztXf2Tl2iWznyI/Da/N2Eqymt0Mnn69GCLnEFxFbNdk0HxHPZBNWU9shTXhsLWOL7HATSqwg/bB1+3kY1q+mA== 6175 6120 dependencies: 6176 6121 "@babel/traverse" "^7.25.3" 6177 - "@react-native/codegen" "0.79.3" 6122 + "@react-native/codegen" "0.81.4" 6178 6123 6179 - "@react-native/babel-preset@0.79.2", "@react-native/babel-preset@0.79.3": 6180 - version "0.79.3" 6181 - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.79.3.tgz#8ad6c149cd488fbc18d62983119bdcbfc15ff651" 6182 - integrity sha512-VHGNP02bDD2Ul1my0pLVwe/0dsEBHxR343ySpgnkCNEEm9C1ANQIL2wvnJrHZPcqfAkWfFQ8Ln3t+6fdm4A/Dg== 6124 + "@react-native/babel-preset@0.81.4": 6125 + version "0.81.4" 6126 + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.81.4.tgz#a9be20fb625014a65a51784b540992031bc12085" 6127 + integrity sha512-VYj0c/cTjQJn/RJ5G6P0L9wuYSbU9yGbPYDHCKstlQZQWkk+L9V8ZDbxdJBTIei9Xl3KPQ1odQ4QaeW+4v+AZg== 6183 6128 dependencies: 6184 6129 "@babel/core" "^7.25.2" 6185 6130 "@babel/plugin-proposal-export-default-from" "^7.24.7" ··· 6222 6167 "@babel/plugin-transform-typescript" "^7.25.2" 6223 6168 "@babel/plugin-transform-unicode-regex" "^7.24.7" 6224 6169 "@babel/template" "^7.25.0" 6225 - "@react-native/babel-plugin-codegen" "0.79.3" 6226 - babel-plugin-syntax-hermes-parser "0.25.1" 6170 + "@react-native/babel-plugin-codegen" "0.81.4" 6171 + babel-plugin-syntax-hermes-parser "0.29.1" 6227 6172 babel-plugin-transform-flow-enums "^0.0.2" 6228 6173 react-refresh "^0.14.0" 6229 6174 6230 - "@react-native/codegen@0.79.3": 6231 - version "0.79.3" 6232 - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.79.3.tgz#49689132718c81a3b25426769bc6fd8fd2a0469f" 6233 - integrity sha512-CZejXqKch/a5/s/MO5T8mkAgvzCXgsTkQtpCF15kWR9HN8T+16k0CsN7TXAxXycltoxiE3XRglOrZNEa/TiZUQ== 6175 + "@react-native/codegen@0.81.4": 6176 + version "0.81.4" 6177 + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.81.4.tgz#eb884e2c3c6a46ccddbdfa6198705658e4a30c6c" 6178 + integrity sha512-LWTGUTzFu+qOQnvkzBP52B90Ym3stZT8IFCzzUrppz8Iwglg83FCtDZAR4yLHI29VY/x/+pkcWAMCl3739XHdw== 6234 6179 dependencies: 6180 + "@babel/core" "^7.25.2" 6181 + "@babel/parser" "^7.25.3" 6235 6182 glob "^7.1.1" 6236 - hermes-parser "0.25.1" 6183 + hermes-parser "0.29.1" 6237 6184 invariant "^2.2.4" 6238 6185 nullthrows "^1.1.1" 6239 6186 yargs "^17.6.2" 6240 6187 6241 - "@react-native/community-cli-plugin@0.79.3": 6242 - version "0.79.3" 6243 - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.79.3.tgz#84821d3401074e036ba05b8b6ca1ee122cb43e29" 6244 - integrity sha512-N/+p4HQqN4yK6IRzn7OgMvUIcrmEWkecglk1q5nj+AzNpfIOzB+mqR20SYmnPfeXF+mZzYCzRANb3KiM+WsSDA== 6188 + "@react-native/community-cli-plugin@0.81.4": 6189 + version "0.81.4" 6190 + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.4.tgz#7bed570cec5277baa22a6eae0843abbd1345a290" 6191 + integrity sha512-8mpnvfcLcnVh+t1ok6V9eozWo8Ut+TZhz8ylJ6gF9d6q9EGDQX6s8jenan5Yv/pzN4vQEKI4ib2pTf/FELw+SA== 6245 6192 dependencies: 6246 - "@react-native/dev-middleware" "0.79.3" 6247 - chalk "^4.0.0" 6248 - debug "^2.2.0" 6193 + "@react-native/dev-middleware" "0.81.4" 6194 + debug "^4.4.0" 6249 6195 invariant "^2.2.4" 6250 - metro "^0.82.0" 6251 - metro-config "^0.82.0" 6252 - metro-core "^0.82.0" 6196 + metro "^0.83.1" 6197 + metro-config "^0.83.1" 6198 + metro-core "^0.83.1" 6253 6199 semver "^7.1.3" 6254 6200 6255 - "@react-native/debugger-frontend@0.79.3": 6256 - version "0.79.3" 6257 - resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.79.3.tgz#9cb57d8e88c22552194ab5f6f257605b151bc5b3" 6258 - integrity sha512-ImNDuEeKH6lEsLXms3ZsgIrNF94jymfuhPcVY5L0trzaYNo9ZFE9Ni2/18E1IbfXxdeIHrCSBJlWD6CTm7wu5A== 6201 + "@react-native/debugger-frontend@0.81.4": 6202 + version "0.81.4" 6203 + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.81.4.tgz#da05018377a6d24ed694057c3445907ba81413ae" 6204 + integrity sha512-SU05w1wD0nKdQFcuNC9D6De0ITnINCi8MEnx9RsTD2e4wN83ukoC7FpXaPCYyP6+VjFt5tUKDPgP1O7iaNXCqg== 6259 6205 6260 - "@react-native/dev-middleware@0.79.3": 6261 - version "0.79.3" 6262 - resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.79.3.tgz#3e315ef7516ebad60a4202b4094d84fedecb4064" 6263 - integrity sha512-x88+RGOyG71+idQefnQg7wLhzjn/Scs+re1O5vqCkTVzRAc/f7SdHMlbmECUxJPd08FqMcOJr7/X3nsJBrNuuw== 6206 + "@react-native/dev-middleware@0.81.4": 6207 + version "0.81.4" 6208 + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.81.4.tgz#61271dbbd4ff92d7f53462f19f3273bc28bb8bf0" 6209 + integrity sha512-hu1Wu5R28FT7nHXs2wWXvQ++7W7zq5GPY83llajgPlYKznyPLAY/7bArc5rAzNB7b0kwnlaoPQKlvD/VP9LZug== 6264 6210 dependencies: 6265 6211 "@isaacs/ttlcache" "^1.4.1" 6266 - "@react-native/debugger-frontend" "0.79.3" 6212 + "@react-native/debugger-frontend" "0.81.4" 6267 6213 chrome-launcher "^0.15.2" 6268 6214 chromium-edge-launcher "^0.2.0" 6269 6215 connect "^3.6.5" 6270 - debug "^2.2.0" 6216 + debug "^4.4.0" 6271 6217 invariant "^2.2.4" 6272 6218 nullthrows "^1.1.1" 6273 6219 open "^7.0.3" 6274 6220 serve-static "^1.16.2" 6275 6221 ws "^6.2.3" 6276 6222 6277 - "@react-native/eslint-config@^0.79.3": 6278 - version "0.79.3" 6279 - resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.79.3.tgz#a72352ce98a7d05b5686dc446ba933fee3b944a9" 6280 - integrity sha512-pvPXfXFoVfwqGEItIl7emv6bRTpi0NWv4jmb0ZBwSJ7+zM8bRRw7JwxLA+iwrevh0QAqrF66Nu5xl39ysWcavg== 6223 + "@react-native/eslint-config@^0.81.4": 6224 + version "0.81.4" 6225 + resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.81.4.tgz#a6b2785287c77ade73b4772f2c98fed29622b546" 6226 + integrity sha512-U3YhRctTy7oVEjP5+6viSLon2nlbvA/+nTQccFdxE01jULl8n6iLvBlVUN1OWicKGlMfJxSdX76QidbOf4Zm6A== 6281 6227 dependencies: 6282 6228 "@babel/core" "^7.25.2" 6283 6229 "@babel/eslint-parser" "^7.25.1" 6284 - "@react-native/eslint-plugin" "0.79.3" 6230 + "@react-native/eslint-plugin" "0.81.4" 6285 6231 "@typescript-eslint/eslint-plugin" "^7.1.1" 6286 6232 "@typescript-eslint/parser" "^7.1.1" 6287 6233 eslint-config-prettier "^8.5.0" ··· 6289 6235 eslint-plugin-ft-flow "^2.0.1" 6290 6236 eslint-plugin-jest "^27.9.0" 6291 6237 eslint-plugin-react "^7.30.1" 6292 - eslint-plugin-react-hooks "^4.6.0" 6238 + eslint-plugin-react-hooks "^5.2.0" 6293 6239 eslint-plugin-react-native "^4.0.0" 6294 6240 6295 - "@react-native/eslint-plugin@0.79.3": 6296 - version "0.79.3" 6297 - resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.79.3.tgz#c1ac34d45b92f963b9af66e860c45cd891235741" 6298 - integrity sha512-6QZzCsV+Wc+HdOAMMoMqDea3SSzsvBBktGc/cqaLubKGiztTb22d+vtzZGWqCqUEVkhQKdK7qhWAs0kJPEbiXw== 6241 + "@react-native/eslint-plugin@0.81.4": 6242 + version "0.81.4" 6243 + resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.81.4.tgz#2a2080c7c55ca6498a3fa5d575b1f97c5a025b2c" 6244 + integrity sha512-hL+v7ntZwWta4iaBXQ79dzA8FdkLJ4xdHso8OMSDDmUJZgiNDcviYs7inyIE5DB/DavwYIhl99teaDIFMyUb5A== 6299 6245 6300 - "@react-native/gradle-plugin@0.79.3": 6301 - version "0.79.3" 6302 - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.79.3.tgz#69ba47ac406ccdb3b3829f311bd7c27e6fad7ebc" 6303 - integrity sha512-imfpZLhNBc9UFSzb/MOy2tNcIBHqVmexh/qdzw83F75BmUtLb/Gs1L2V5gw+WI1r7RqDILbWk7gXB8zUllwd+g== 6246 + "@react-native/gradle-plugin@0.81.4": 6247 + version "0.81.4" 6248 + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.81.4.tgz#249b7876df47a3ddefddffa71b1fd0193f7da376" 6249 + integrity sha512-T7fPcQvDDCSusZFVSg6H1oVDKb/NnVYLnsqkcHsAF2C2KGXyo3J7slH/tJAwNfj/7EOA2OgcWxfC1frgn9TQvw== 6304 6250 6305 - "@react-native/js-polyfills@0.79.3": 6306 - version "0.79.3" 6307 - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.79.3.tgz#bf5614363f118c6bdf2f773c578e603c88d0425c" 6308 - integrity sha512-PEBtg6Kox6KahjCAch0UrqCAmHiNLEbp2SblUEoFAQnov4DSxBN9safh+QSVaCiMAwLjvNfXrJyygZz60Dqz3Q== 6251 + "@react-native/js-polyfills@0.81.4": 6252 + version "0.81.4" 6253 + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.81.4.tgz#cbc3924cfb994ed00ef841a796f54be21520d3b0" 6254 + integrity sha512-sr42FaypKXJHMVHhgSbu2f/ZJfrLzgaoQ+HdpRvKEiEh2mhFf6XzZwecyLBvWqf2pMPZa+CpPfNPiejXjKEy8w== 6309 6255 6310 - "@react-native/normalize-colors@0.79.2", "@react-native/normalize-colors@0.79.3", "@react-native/normalize-colors@^0.73.0", "@react-native/normalize-colors@^0.74.1": 6311 - version "0.79.3" 6312 - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.79.3.tgz#e491937436a2c287707e24263308c818a66eb447" 6313 - integrity sha512-T75NIQPRFCj6DFMxtcVMJTZR+3vHXaUMSd15t+CkJpc5LnyX91GVaPxpRSAdjFh7m3Yppl5MpdjV/fntImheYQ== 6256 + "@react-native/normalize-colors@0.81.4", "@react-native/normalize-colors@^0.74.1": 6257 + version "0.81.4" 6258 + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.81.4.tgz#a0384d5aaac825aeefa5e391947189f6cee4a641" 6259 + integrity sha512-9nRRHO1H+tcFqjb9gAM105Urtgcanbta2tuqCVY0NATHeFPDEAB7gPyiLxCHKMi1NbhP6TH0kxgSWXKZl1cyRg== 6314 6260 6315 - "@react-native/typescript-config@^0.79.3": 6316 - version "0.79.3" 6317 - resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.79.3.tgz#21101b591c67ecef6ae5189f96a448b3bcaf1e9e" 6318 - integrity sha512-dqKAU8D3NkExthnpBOPZjZ/NGU5qqBaqZ12v9IlMqP9sVTWSuY1iswfzomp0AYeJBxo4ZpBNmrdlnQZYQSVWiw== 6261 + "@react-native/typescript-config@^0.81.4": 6262 + version "0.81.4" 6263 + resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.81.4.tgz#484541e8ab6614e6bcd18d2370953bb37f418ef7" 6264 + integrity sha512-1HSrwtfAmtbKHNK2HAMCL5ArbGhxxJjOmTViDQ4nEhLJCAllZjQJyR/Hs1GmwHJokLmgXCcg3VH/13spwQBdxw== 6319 6265 6320 - "@react-native/virtualized-lists@0.79.3": 6321 - version "0.79.3" 6322 - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.79.3.tgz#4a2799017cd3795f519422f48b3c0bbc4739a245" 6323 - integrity sha512-/0rRozkn+iIHya2vnnvprDgT7QkfI54FLrACAN3BLP7MRlfOIGOrZsXpRLndnLBVnjNzkcre84i1RecjoXnwIA== 6266 + "@react-native/virtualized-lists@0.81.4": 6267 + version "0.81.4" 6268 + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.81.4.tgz#3c9c162fc96777c87ca07e8686f227343dbc8f13" 6269 + integrity sha512-hBM+rMyL6Wm1Q4f/WpqGsaCojKSNUBqAXLABNGoWm1vabZ7cSnARMxBvA/2vo3hLcoR4v7zDK8tkKm9+O0LjVA== 6324 6270 dependencies: 6325 6271 invariant "^2.2.4" 6326 6272 nullthrows "^1.1.1" ··· 6399 6345 resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" 6400 6346 integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== 6401 6347 6402 - "@sentry-internal/browser-utils@8.54.0": 6403 - version "8.54.0" 6404 - resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.54.0.tgz#2d68c7fa843db867ed98059faf1a750be3eca95a" 6405 - integrity sha512-DKWCqb4YQosKn6aD45fhKyzhkdG7N6goGFDeyTaJFREJDFVDXiNDsYZu30nJ6BxMM7uQIaARhPAC5BXfoED3pQ== 6348 + "@sentry-internal/browser-utils@8.55.0": 6349 + version "8.55.0" 6350 + resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.55.0.tgz#d89bae423edd29c39f01285c8e2d59ce9289d9a6" 6351 + integrity sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw== 6406 6352 dependencies: 6407 - "@sentry/core" "8.54.0" 6353 + "@sentry/core" "8.55.0" 6408 6354 6409 - "@sentry-internal/feedback@8.54.0": 6410 - version "8.54.0" 6411 - resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.54.0.tgz#52c3a63aa5b520eca7acfa1376621e8441984126" 6412 - integrity sha512-nQqRacOXoElpE0L0ADxUUII0I3A94niqG9Z4Fmsw6057QvyrV/LvTiMQBop6r5qLjwMqK+T33iR4/NQI5RhsXQ== 6355 + "@sentry-internal/feedback@8.55.0": 6356 + version "8.55.0" 6357 + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.55.0.tgz#170b8e96a36ce6f71f53daad680f1a0c98381314" 6358 + integrity sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw== 6413 6359 dependencies: 6414 - "@sentry/core" "8.54.0" 6360 + "@sentry/core" "8.55.0" 6415 6361 6416 - "@sentry-internal/replay-canvas@8.54.0": 6417 - version "8.54.0" 6418 - resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.54.0.tgz#e57a3893db2bb0ea7ad9dc2a804bb035142fe3ba" 6419 - integrity sha512-K/On3OAUBeq/TV2n+1EvObKC+WMV9npVXpVyJqCCyn8HYMm8FUGzuxeajzm0mlW4wDTPCQor6mK9/IgOquUzCw== 6362 + "@sentry-internal/replay-canvas@8.55.0": 6363 + version "8.55.0" 6364 + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.55.0.tgz#e65430207a2f18e4a07c25c669ec758d11282aaf" 6365 + integrity sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w== 6420 6366 dependencies: 6421 - "@sentry-internal/replay" "8.54.0" 6422 - "@sentry/core" "8.54.0" 6367 + "@sentry-internal/replay" "8.55.0" 6368 + "@sentry/core" "8.55.0" 6423 6369 6424 - "@sentry-internal/replay@8.54.0": 6425 - version "8.54.0" 6426 - resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.54.0.tgz#b92990a51ffbe8d92998ff8188db9e3a6f9d1e18" 6427 - integrity sha512-8xuBe06IaYIGJec53wUC12tY2q4z2Z0RPS2s1sLtbA00EvK1YDGuXp96IDD+HB9mnDMrQ/jW5f97g9TvPsPQUg== 6370 + "@sentry-internal/replay@8.55.0": 6371 + version "8.55.0" 6372 + resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.55.0.tgz#4c00b22cdf58cac5b3e537f8d4f675f2b021f475" 6373 + integrity sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw== 6428 6374 dependencies: 6429 - "@sentry-internal/browser-utils" "8.54.0" 6430 - "@sentry/core" "8.54.0" 6375 + "@sentry-internal/browser-utils" "8.55.0" 6376 + "@sentry/core" "8.55.0" 6431 6377 6432 6378 "@sentry/babel-plugin-component-annotate@3.2.2": 6433 6379 version "3.2.2" 6434 6380 resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.2.2.tgz#0c5f26e417b8f524924fa4531b82ad5603216e90" 6435 6381 integrity sha512-D+SKQ266ra/wo87s9+UI/rKQi3qhGPCR8eSCDe0VJudhjHsqyNU+JJ5lnIGCgmZaWFTXgdBP/gdr1Iz1zqGs4Q== 6436 6382 6437 - "@sentry/babel-plugin-component-annotate@3.4.0": 6438 - version "3.4.0" 6439 - resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.4.0.tgz#f47a7652e16f84556df82cbc38f0004bca1335d1" 6440 - integrity sha512-tSzfc3aE7m0PM0Aj7HBDet5llH9AB9oc+tBQ8AvOqUSnWodLrNCuWeQszJ7mIBovD3figgCU3h0cvI6U5cDtsg== 6383 + "@sentry/babel-plugin-component-annotate@4.1.1": 6384 + version "4.1.1" 6385 + resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.1.1.tgz#371415afc602f6b2ba0987b51123bd34d1603193" 6386 + integrity sha512-HUpqrCK7zDVojTV6KL6BO9ZZiYrEYQqvYQrscyMsq04z+WCupXaH6YEliiNRvreR8DBJgdsG3lBRpebhUGmvfA== 6441 6387 6442 - "@sentry/browser@8.54.0": 6443 - version "8.54.0" 6444 - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.54.0.tgz#5487075908aac564892e689e1b6d233fdb314f5b" 6445 - integrity sha512-BgUtvxFHin0fS0CmJVKTLXXZcke0Av729IVfi+2fJ4COX8HO7/HAP02RKaSQGmL2HmvWYTfNZ7529AnUtrM4Rg== 6388 + "@sentry/browser@8.55.0": 6389 + version "8.55.0" 6390 + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.55.0.tgz#9a489e2a54d29c65e6271b4ee594b43679cab7bd" 6391 + integrity sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw== 6446 6392 dependencies: 6447 - "@sentry-internal/browser-utils" "8.54.0" 6448 - "@sentry-internal/feedback" "8.54.0" 6449 - "@sentry-internal/replay" "8.54.0" 6450 - "@sentry-internal/replay-canvas" "8.54.0" 6451 - "@sentry/core" "8.54.0" 6393 + "@sentry-internal/browser-utils" "8.55.0" 6394 + "@sentry-internal/feedback" "8.55.0" 6395 + "@sentry-internal/replay" "8.55.0" 6396 + "@sentry-internal/replay-canvas" "8.55.0" 6397 + "@sentry/core" "8.55.0" 6452 6398 6453 6399 "@sentry/bundler-plugin-core@3.2.2": 6454 6400 version "3.2.2" ··· 6469 6415 resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.42.2.tgz#a32a4f226e717122b37d9969e8d4d0e14779f720" 6470 6416 integrity sha512-GtJSuxER7Vrp1IpxdUyRZzcckzMnb4N5KTW7sbTwUiwqARRo+wxS+gczYrS8tdgtmXs5XYhzhs+t4d52ITHMIg== 6471 6417 6472 - "@sentry/cli-darwin@2.45.0": 6473 - version "2.45.0" 6474 - resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.45.0.tgz#e3d6feae4fadcfdf91db9c7b9c4689a66d3d8d19" 6475 - integrity sha512-p4Uxfv/L2fQdP3/wYnKVVz9gzZJf/1Xp9D+6raax/3Bu5y87yHYUqcdt98y/VAXQD4ofp2QgmhGUVPofvQNZmg== 6418 + "@sentry/cli-darwin@2.51.1": 6419 + version "2.51.1" 6420 + resolved "https://registry.yarnpkg.com/@sentry/cli-darwin/-/cli-darwin-2.51.1.tgz#3a1db065651893f72dad3a502b2d7c2f5e6a7dd8" 6421 + integrity sha512-R1u8IQdn/7Rr8sf6bVVr0vJT4OqwCFdYsS44Y3OoWGVJW2aAQTWRJOTlV4ueclVLAyUQzmgBjfR8AtiUhd/M5w== 6476 6422 6477 6423 "@sentry/cli-linux-arm64@2.42.2": 6478 6424 version "2.42.2" 6479 6425 resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.42.2.tgz#1c06c83ff21f51ec23acf5be3b1f8c7553bf86b1" 6480 6426 integrity sha512-BOxzI7sgEU5Dhq3o4SblFXdE9zScpz6EXc5Zwr1UDZvzgXZGosUtKVc7d1LmkrHP8Q2o18HcDWtF3WvJRb5Zpw== 6481 6427 6482 - "@sentry/cli-linux-arm64@2.45.0": 6483 - version "2.45.0" 6484 - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.45.0.tgz#384c8e17f7e7dc007d164033d0e7c75aa83a2e9b" 6485 - integrity sha512-gUcLoEjzg7AIc4QQGEZwRHri+EHf3Gcms9zAR1VHiNF3/C/jL4WeDPJF2YiWAQt6EtH84tHiyhw1Ab/R8XFClg== 6428 + "@sentry/cli-linux-arm64@2.51.1": 6429 + version "2.51.1" 6430 + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.51.1.tgz#b4c957a06bafc13623c48971eadb0cff7d3662a3" 6431 + integrity sha512-nvA/hdhsw4bKLhslgbBqqvETjXwN1FVmwHLOrRvRcejDO6zeIKUElDiL5UOjGG0NC+62AxyNw5ri8Wzp/7rg9Q== 6486 6432 6487 6433 "@sentry/cli-linux-arm@2.42.2": 6488 6434 version "2.42.2" 6489 6435 resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.42.2.tgz#00cadc359ae3c051efb3e63873c033c61dbd1ca1" 6490 6436 integrity sha512-7udCw+YL9lwq+9eL3WLspvnuG+k5Icg92YE7zsteTzWLwgPVzaxeZD2f8hwhsu+wmL+jNqbpCRmktPteh3i2mg== 6491 6437 6492 - "@sentry/cli-linux-arm@2.45.0": 6493 - version "2.45.0" 6494 - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.45.0.tgz#b9d6f86f3934b4d9ced5b45a8158ff2ac2bdd25d" 6495 - integrity sha512-6sEskFLlFKJ+e0MOYgIclBTUX5jYMyYhHIxXahEkI/4vx6JO0uvpyRAkUJRpJkRh/lPog0FM+tbP3so+VxB2qQ== 6438 + "@sentry/cli-linux-arm@2.51.1": 6439 + version "2.51.1" 6440 + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-arm/-/cli-linux-arm-2.51.1.tgz#f761d0c58d27be503471cee4ffc41875a7d9430b" 6441 + integrity sha512-Klro17OmSSKOOSaxVKBBNPXet2+HrIDZUTSp8NRl4LQsIubdc1S/aQ79cH/g52Muwzpl3aFwPxyXw+46isfEgA== 6496 6442 6497 6443 "@sentry/cli-linux-i686@2.42.2": 6498 6444 version "2.42.2" 6499 6445 resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.42.2.tgz#3b817b715dd806c20dfbffd539725ad8089c310a" 6500 6446 integrity sha512-Sw/dQp5ZPvKnq3/y7wIJyxTUJYPGoTX/YeMbDs8BzDlu9to2LWV3K3r7hE7W1Lpbaw4tSquUHiQjP5QHCOS7aQ== 6501 6447 6502 - "@sentry/cli-linux-i686@2.45.0": 6503 - version "2.45.0" 6504 - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.45.0.tgz#39e22beb84cfa26e11bdc198364315fdfb4da4d5" 6505 - integrity sha512-VmmOaEAzSW23YdGNdy/+oQjCNAMY+HmOGA77A25/ep/9AV7PQB6FI7xO5Y1PVvlkxZFJ23e373njSsEeg4uDZw== 6448 + "@sentry/cli-linux-i686@2.51.1": 6449 + version "2.51.1" 6450 + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-i686/-/cli-linux-i686-2.51.1.tgz#62baaf83c5995e478186289a45315d0acd5bd3bf" 6451 + integrity sha512-jp4TmR8VXBdT9dLo6mHniQHN0xKnmJoPGVz9h9VDvO2Vp/8o96rBc555D4Am5wJOXmfuPlyjGcmwHlB3+kQRWw== 6506 6452 6507 6453 "@sentry/cli-linux-x64@2.42.2": 6508 6454 version "2.42.2" 6509 6455 resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.42.2.tgz#ddf906bc3071cc79ce6e633eddcb76bb9068e688" 6510 6456 integrity sha512-mU4zUspAal6TIwlNLBV5oq6yYqiENnCWSxtSQVzWs0Jyq97wtqGNG9U+QrnwjJZ+ta/hvye9fvL2X25D/RxHQw== 6511 6457 6512 - "@sentry/cli-linux-x64@2.45.0": 6513 - version "2.45.0" 6514 - resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.45.0.tgz#25cd3699297f9433835fb5edd42dad722c11f041" 6515 - integrity sha512-a0Oj68mrb25a0WjX/ShZ6AAd4PPiuLcgyzQr7bl2+DvYxIOajwkGbR+CZFEhOVZcfhTnixKy/qIXEzApEPHPQg== 6458 + "@sentry/cli-linux-x64@2.51.1": 6459 + version "2.51.1" 6460 + resolved "https://registry.yarnpkg.com/@sentry/cli-linux-x64/-/cli-linux-x64-2.51.1.tgz#0010fe24ad8ef492a917c12feb351ba768e72603" 6461 + integrity sha512-JuLt0MXM2KHNFmjqXjv23sly56mJmUQzGBWktkpY3r+jE08f5NLKPd5wQ6W/SoLXGIOKnwLz0WoUg7aBVyQdeQ== 6516 6462 6517 - "@sentry/cli-win32-arm64@2.45.0": 6518 - version "2.45.0" 6519 - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.45.0.tgz#50c7d29ea2169bdb4d98bbde81c5f7dac0dd3955" 6520 - integrity sha512-vn+CwS4p+52pQSLNPoi20ZOrQmv01ZgAmuMnjkh1oUZfTyBAwWLrAh6Cy4cztcN8DfL5dOWKQBo8DBKURE4ttg== 6463 + "@sentry/cli-win32-arm64@2.51.1": 6464 + version "2.51.1" 6465 + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-arm64/-/cli-win32-arm64-2.51.1.tgz#0894f9a91e6ecb3021ca09fe644f995ff4ff826d" 6466 + integrity sha512-PiwjTdIFDazTQCTyDCutiSkt4omggYSKnO3HE1+LDjElsFrWY9pJs4fU3D40WAyE2oKu0MarjNH/WxYGdqEAlg== 6521 6467 6522 6468 "@sentry/cli-win32-i686@2.42.2": 6523 6469 version "2.42.2" 6524 6470 resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.42.2.tgz#9036085c7c6ce455ad45fda411c55ff39c06eb95" 6525 6471 integrity sha512-iHvFHPGqgJMNqXJoQpqttfsv2GI3cGodeTq4aoVLU/BT3+hXzbV0x1VpvvEhncJkDgDicJpFLM8sEPHb3b8abw== 6526 6472 6527 - "@sentry/cli-win32-i686@2.45.0": 6528 - version "2.45.0" 6529 - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.45.0.tgz#201075c4aec37a3e797160e0b468641245437f0c" 6530 - integrity sha512-8mMoDdlwxtcdNIMtteMK7dbi7054jak8wKSHJ5yzMw8UmWxC5thc/gXBc1uPduiaI56VjoJV+phWHBKCD+6I4w== 6473 + "@sentry/cli-win32-i686@2.51.1": 6474 + version "2.51.1" 6475 + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-i686/-/cli-win32-i686-2.51.1.tgz#6a6c6402cdce4fd038716b2c1e0bfa788b54f3e9" 6476 + integrity sha512-TMvZZpeiI2HmrDFNVQ0uOiTuYKvjEGOZdmUxe3WlhZW82A/2Oka7sQ24ljcOovbmBOj5+fjCHRUMYvLMCWiysA== 6531 6477 6532 6478 "@sentry/cli-win32-x64@2.42.2": 6533 6479 version "2.42.2" 6534 6480 resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.42.2.tgz#7d6464b63f32c9f97fff428f246b1f039b402233" 6535 6481 integrity sha512-vPPGHjYoaGmfrU7xhfFxG7qlTBacroz5NdT+0FmDn6692D8IvpNXl1K+eV3Kag44ipJBBeR8g1HRJyx/F/9ACw== 6536 6482 6537 - "@sentry/cli-win32-x64@2.45.0": 6538 - version "2.45.0" 6539 - resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.45.0.tgz#2075e9e1ea3c3609e0fa1a758ca033e94e1c600f" 6540 - integrity sha512-ZvK9cIqFaq7vZ0jkHJ/xh5au6902Dr+AUxSk6L6vCL7JCe2p93KGL/4d8VFB5PD/P7Y9b+105G/e0QIFKzpeOw== 6483 + "@sentry/cli-win32-x64@2.51.1": 6484 + version "2.51.1" 6485 + resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.51.1.tgz#d361e37146c9269d40c37459271a6c2cfa1fa8a6" 6486 + integrity sha512-v2hreYUPPTNK1/N7+DeX7XBN/zb7p539k+2Osf0HFyVBaoUC3Y3+KBwSf4ASsnmgTAK7HCGR+X0NH1vP+icw4w== 6541 6487 6542 6488 "@sentry/cli@2.42.2": 6543 6489 version "2.42.2" ··· 6558 6504 "@sentry/cli-win32-i686" "2.42.2" 6559 6505 "@sentry/cli-win32-x64" "2.42.2" 6560 6506 6561 - "@sentry/cli@2.45.0": 6562 - version "2.45.0" 6563 - resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.45.0.tgz#35feed7a2fee54faf25daed73001a2a2a3143396" 6564 - integrity sha512-4sWu7zgzgHAjIxIjXUA/66qgeEf5ZOlloO+/JaGD5qXNSW0G7KMTR6iYjReNKMgdBCTH6bUUt9qiuA+Ex9Masw== 6507 + "@sentry/cli@2.51.1": 6508 + version "2.51.1" 6509 + resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.51.1.tgz#c6bdc6025e8f600e44fc76f8274c369aeb5d4df4" 6510 + integrity sha512-FU+54kNcKJABU0+ekvtnoXHM9zVrDe1zXVFbQT7mS0On0m1P0zFRGdzbnWe2XzpzuEAJXtK6aog/W+esRU9AIA== 6565 6511 dependencies: 6566 6512 https-proxy-agent "^5.0.0" 6567 6513 node-fetch "^2.6.7" ··· 6569 6515 proxy-from-env "^1.1.0" 6570 6516 which "^2.0.2" 6571 6517 optionalDependencies: 6572 - "@sentry/cli-darwin" "2.45.0" 6573 - "@sentry/cli-linux-arm" "2.45.0" 6574 - "@sentry/cli-linux-arm64" "2.45.0" 6575 - "@sentry/cli-linux-i686" "2.45.0" 6576 - "@sentry/cli-linux-x64" "2.45.0" 6577 - "@sentry/cli-win32-arm64" "2.45.0" 6578 - "@sentry/cli-win32-i686" "2.45.0" 6579 - "@sentry/cli-win32-x64" "2.45.0" 6518 + "@sentry/cli-darwin" "2.51.1" 6519 + "@sentry/cli-linux-arm" "2.51.1" 6520 + "@sentry/cli-linux-arm64" "2.51.1" 6521 + "@sentry/cli-linux-i686" "2.51.1" 6522 + "@sentry/cli-linux-x64" "2.51.1" 6523 + "@sentry/cli-win32-arm64" "2.51.1" 6524 + "@sentry/cli-win32-i686" "2.51.1" 6525 + "@sentry/cli-win32-x64" "2.51.1" 6580 6526 6581 - "@sentry/core@8.54.0": 6582 - version "8.54.0" 6583 - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.54.0.tgz#a2ebec965cadcb6de89e116689feeef79d5862a6" 6584 - integrity sha512-03bWf+D1j28unOocY/5FDB6bUHtYlm6m6ollVejhg45ZmK9iPjdtxNWbrLsjT1WRym0Tjzowu+A3p+eebYEv0Q== 6527 + "@sentry/core@8.55.0": 6528 + version "8.55.0" 6529 + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.55.0.tgz#4964920229fcf649237ef13b1533dfc4b9f6b22e" 6530 + integrity sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA== 6585 6531 6586 - "@sentry/react-native@~6.14.0": 6587 - version "6.14.0" 6588 - resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-6.14.0.tgz#bc6bdaf03860bb8946f8c30570a9abd82ed6cfc0" 6589 - integrity sha512-BBqixN6oV6tCNp1ABXfzvD531zxj1fUAH0HDPvOR/jX0h9f9pYfxCyI64B+DoQbVZKFsg8nte0QIHkZDhRAW9A== 6532 + "@sentry/react-native@~6.20.0": 6533 + version "6.20.0" 6534 + resolved "https://registry.yarnpkg.com/@sentry/react-native/-/react-native-6.20.0.tgz#6325f7393f24f1286bd9d1f3c68562cf99028864" 6535 + integrity sha512-YngSba14Hsb5t/ZNMOyxb/HInmYRL5pQ74BkoMBQ/UBBM5kWHgSILxoO2XkKYtaaJXrkSJj+kBalELHblz9h5g== 6590 6536 dependencies: 6591 - "@sentry/babel-plugin-component-annotate" "3.4.0" 6592 - "@sentry/browser" "8.54.0" 6593 - "@sentry/cli" "2.45.0" 6594 - "@sentry/core" "8.54.0" 6595 - "@sentry/react" "8.54.0" 6596 - "@sentry/types" "8.54.0" 6597 - "@sentry/utils" "8.54.0" 6537 + "@sentry/babel-plugin-component-annotate" "4.1.1" 6538 + "@sentry/browser" "8.55.0" 6539 + "@sentry/cli" "2.51.1" 6540 + "@sentry/core" "8.55.0" 6541 + "@sentry/react" "8.55.0" 6542 + "@sentry/types" "8.55.0" 6543 + "@sentry/utils" "8.55.0" 6598 6544 6599 - "@sentry/react@8.54.0": 6600 - version "8.54.0" 6601 - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-8.54.0.tgz#16cec103b5d5697bdfebacf6e2d35f19699b3ab3" 6602 - integrity sha512-42T/fp8snYN19Fy/2P0Mwotu4gcdy+1Lx+uYCNcYP1o7wNGigJ7qb27sW7W34GyCCHjoCCfQgeOqDQsyY8LC9w== 6545 + "@sentry/react@8.55.0": 6546 + version "8.55.0" 6547 + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-8.55.0.tgz#309f005837956a98e79275ef8c2c2b5952c8be93" 6548 + integrity sha512-/qNBvFLpvSa/Rmia0jpKfJdy16d4YZaAnH/TuKLAtm0BWlsPQzbXCU4h8C5Hsst0Do0zG613MEtEmWpWrVOqWA== 6603 6549 dependencies: 6604 - "@sentry/browser" "8.54.0" 6605 - "@sentry/core" "8.54.0" 6550 + "@sentry/browser" "8.55.0" 6551 + "@sentry/core" "8.55.0" 6606 6552 hoist-non-react-statics "^3.3.2" 6607 6553 6608 - "@sentry/types@8.54.0": 6609 - version "8.54.0" 6610 - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.54.0.tgz#1d57bb094443081de4e0d8b638e6ebc40f5ddd36" 6611 - integrity sha512-wztdtr7dOXQKi0iRvKc8XJhJ7HaAfOv8lGu0yqFOFwBZucO/SHnu87GOPi8mvrTiy1bentQO5l+zXWAaMvG4uw== 6554 + "@sentry/types@8.55.0": 6555 + version "8.55.0" 6556 + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.55.0.tgz#af157791277c09debaca278c02522bd5bd548c32" 6557 + integrity sha512-6LRT0+r6NWQ+RtllrUW2yQfodST0cJnkOmdpHA75vONgBUhpKwiJ4H7AmgfoTET8w29pU6AnntaGOe0LJbOmog== 6612 6558 dependencies: 6613 - "@sentry/core" "8.54.0" 6559 + "@sentry/core" "8.55.0" 6614 6560 6615 - "@sentry/utils@8.54.0": 6616 - version "8.54.0" 6617 - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.54.0.tgz#5e28e03a249451b4a55200a0787f4e2c59bab2c5" 6618 - integrity sha512-JL8UDjrsKxKclTdLXfuHfE7B3KbrAPEYP7tMyN/xiO2vsF6D84fjwYyalO0ZMtuFZE6vpSze8ZOLEh6hLnPYsw== 6561 + "@sentry/utils@8.55.0": 6562 + version "8.55.0" 6563 + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.55.0.tgz#6d575a68f4c37a7b45aa808a842693c12108c190" 6564 + integrity sha512-cYcl39+xcOivBpN9d8ZKbALl+DxZKo/8H0nueJZ0PO4JA+MJGhSm6oHakXxLPaiMoNLTX7yor8ndnQIuFg+vmQ== 6619 6565 dependencies: 6620 - "@sentry/core" "8.54.0" 6566 + "@sentry/core" "8.55.0" 6621 6567 6622 6568 "@sentry/webpack-plugin@^3.2.2": 6623 6569 version "3.2.2" ··· 7604 7550 resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" 7605 7551 integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== 7606 7552 7607 - "@types/react-dom@^19.1.8": 7553 + "@types/react-dom@^19.1.9": 7608 7554 version "19.1.9" 7609 7555 resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.1.9.tgz#5ab695fce1e804184767932365ae6569c11b4b4b" 7610 7556 integrity sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ== ··· 7819 7765 dependencies: 7820 7766 "@typescript-eslint/types" "7.18.0" 7821 7767 eslint-visitor-keys "^3.4.3" 7768 + 7769 + "@ungap/structured-clone@^1.3.0": 7770 + version "1.3.0" 7771 + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" 7772 + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== 7822 7773 7823 7774 "@urql/core@^5.0.0", "@urql/core@^5.0.6": 7824 7775 version "5.0.8" ··· 8103 8054 dependencies: 8104 8055 fast-deep-equal "^3.1.3" 8105 8056 8106 - ajv@8.11.0: 8107 - version "8.11.0" 8108 - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" 8109 - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== 8110 - dependencies: 8111 - fast-deep-equal "^3.1.1" 8112 - json-schema-traverse "^1.0.0" 8113 - require-from-string "^2.0.2" 8114 - uri-js "^4.2.2" 8115 - 8116 8057 ajv@^6.12.4, ajv@^6.12.5: 8117 8058 version "6.12.6" 8118 8059 resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" ··· 8262 8203 version "2.0.1" 8263 8204 resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 8264 8205 integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 8265 - 8266 - aria-hidden@^1.1.1: 8267 - version "1.2.3" 8268 - resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" 8269 - integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== 8270 - dependencies: 8271 - tslib "^2.0.0" 8272 8206 8273 8207 aria-hidden@^1.2.4: 8274 8208 version "1.2.4" ··· 8676 8610 dependencies: 8677 8611 "@babel/types" "^7.26.0" 8678 8612 8679 - babel-plugin-react-native-web@~0.19.13: 8680 - version "0.19.13" 8681 - resolved "https://registry.yarnpkg.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz#bf919bd6f18c4689dd1a528a82bda507363b953d" 8682 - integrity sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ== 8613 + babel-plugin-react-compiler@^19.1.0-rc.2: 8614 + version "19.1.0-rc.3" 8615 + resolved "https://registry.yarnpkg.com/babel-plugin-react-compiler/-/babel-plugin-react-compiler-19.1.0-rc.3.tgz#45e5a282a2460b3701971e5eb8310a90a7919022" 8616 + integrity sha512-mjRn69WuTz4adL0bXGx8Rsyk1086zFJeKmes6aK0xPuK3aaXmDJdLHqwKKMrpm6KAI1MCoUK72d2VeqQbu8YIA== 8617 + dependencies: 8618 + "@babel/types" "^7.26.0" 8619 + 8620 + babel-plugin-react-native-web@~0.21.0: 8621 + version "0.21.1" 8622 + resolved "https://registry.yarnpkg.com/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.21.1.tgz#0147f1c716119025047475ae3f542ffdacea7d82" 8623 + integrity sha512-7XywfJ5QIRMwjOL+pwJt2w47Jmi5fFLvK7/So4fV4jIN6PcRbylCp9/l3cJY4VJbSz3lnWTeHDTD1LKIc1C09Q== 8683 8624 8684 - babel-plugin-syntax-hermes-parser@0.25.1, babel-plugin-syntax-hermes-parser@^0.25.1: 8685 - version "0.25.1" 8686 - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz#58b539df973427fcfbb5176a3aec7e5dee793cb0" 8687 - integrity sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ== 8625 + babel-plugin-syntax-hermes-parser@0.29.1, babel-plugin-syntax-hermes-parser@^0.29.1: 8626 + version "0.29.1" 8627 + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz#09ca9ecb0330eba1ef939b6d3f1f55bb06a9dc33" 8628 + integrity sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA== 8688 8629 dependencies: 8689 - hermes-parser "0.25.1" 8630 + hermes-parser "0.29.1" 8690 8631 8691 8632 babel-plugin-transform-flow-enums@^0.0.2: 8692 8633 version "0.0.2" ··· 8718 8659 "@babel/plugin-syntax-optional-chaining" "^7.8.3" 8719 8660 "@babel/plugin-syntax-top-level-await" "^7.8.3" 8720 8661 8721 - babel-preset-expo@~13.1.11: 8722 - version "13.1.11" 8723 - resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-13.1.11.tgz#de81e6a621c9f40dcb1e0bf5f1fe111f82c10496" 8724 - integrity sha512-jigWjvhRVdm9UTPJ1wjLYJ0OJvD5vLZ8YYkEknEl6+9S1JWORO/y3xtHr/hNj5n34nOilZqdXrmNFcqKc8YTsg== 8725 - dependencies: 8726 - "@babel/helper-module-imports" "^7.25.9" 8727 - "@babel/plugin-proposal-decorators" "^7.12.9" 8728 - "@babel/plugin-proposal-export-default-from" "^7.24.7" 8729 - "@babel/plugin-syntax-export-default-from" "^7.24.7" 8730 - "@babel/plugin-transform-export-namespace-from" "^7.25.9" 8731 - "@babel/plugin-transform-flow-strip-types" "^7.25.2" 8732 - "@babel/plugin-transform-modules-commonjs" "^7.24.8" 8733 - "@babel/plugin-transform-object-rest-spread" "^7.24.7" 8734 - "@babel/plugin-transform-parameters" "^7.24.7" 8735 - "@babel/plugin-transform-private-methods" "^7.24.7" 8736 - "@babel/plugin-transform-private-property-in-object" "^7.24.7" 8737 - "@babel/plugin-transform-runtime" "^7.24.7" 8738 - "@babel/preset-react" "^7.22.15" 8739 - "@babel/preset-typescript" "^7.23.0" 8740 - "@react-native/babel-preset" "0.79.2" 8741 - babel-plugin-react-native-web "~0.19.13" 8742 - babel-plugin-syntax-hermes-parser "^0.25.1" 8743 - babel-plugin-transform-flow-enums "^0.0.2" 8744 - debug "^4.3.4" 8745 - react-refresh "^0.14.2" 8746 - resolve-from "^5.0.0" 8747 - 8748 - babel-preset-expo@~13.2.0: 8749 - version "13.2.0" 8750 - resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-13.2.0.tgz#d4540009d07242e3c3d63184b7a34efda95e8e64" 8751 - integrity sha512-oNUeUZPMNRPmx/2jaKJLSQFP/MFI1M91vP+Gp+j8/FPl9p/ps603DNwCaRdcT/Vj3FfREdlIwRio1qDCjY0oAA== 8662 + babel-preset-expo@~54.0.0, babel-preset-expo@~54.0.2: 8663 + version "54.0.2" 8664 + resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-54.0.2.tgz#b717cdd884982311825226e2e4c48c126fbb00fc" 8665 + integrity sha512-wIlweUhun2+soWQf8slGrURU8ZZYrIqPGuvsvTpm03YE8aCZF9YZe1WvsMJCAlywIhQQ+970wSKzLncfPqK2hQ== 8752 8666 dependencies: 8753 8667 "@babel/helper-module-imports" "^7.25.9" 8754 8668 "@babel/plugin-proposal-decorators" "^7.12.9" 8755 8669 "@babel/plugin-proposal-export-default-from" "^7.24.7" 8756 8670 "@babel/plugin-syntax-export-default-from" "^7.24.7" 8671 + "@babel/plugin-transform-class-static-block" "^7.27.1" 8757 8672 "@babel/plugin-transform-export-namespace-from" "^7.25.9" 8758 8673 "@babel/plugin-transform-flow-strip-types" "^7.25.2" 8759 8674 "@babel/plugin-transform-modules-commonjs" "^7.24.8" ··· 8764 8679 "@babel/plugin-transform-runtime" "^7.24.7" 8765 8680 "@babel/preset-react" "^7.22.15" 8766 8681 "@babel/preset-typescript" "^7.23.0" 8767 - "@react-native/babel-preset" "0.79.3" 8768 - babel-plugin-react-native-web "~0.19.13" 8769 - babel-plugin-syntax-hermes-parser "^0.25.1" 8682 + "@react-native/babel-preset" "0.81.4" 8683 + babel-plugin-react-compiler "^19.1.0-rc.2" 8684 + babel-plugin-react-native-web "~0.21.0" 8685 + babel-plugin-syntax-hermes-parser "^0.29.1" 8770 8686 babel-plugin-transform-flow-enums "^0.0.2" 8771 8687 debug "^4.3.4" 8772 - react-refresh "^0.14.2" 8773 8688 resolve-from "^5.0.0" 8774 8689 8775 8690 babel-preset-jest@^29.6.3: ··· 8799 8714 version "1.5.1" 8800 8715 resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 8801 8716 integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 8717 + 8718 + baseline-browser-mapping@^2.8.3: 8719 + version "2.8.6" 8720 + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.6.tgz#c37dea4291ed8d01682f85661dbe87967028642e" 8721 + integrity sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw== 8802 8722 8803 8723 batch@0.6.1: 8804 8724 version "0.6.1" ··· 8996 8916 node-releases "^2.0.18" 8997 8917 update-browserslist-db "^1.1.1" 8998 8918 8919 + browserslist@^4.25.0: 8920 + version "4.26.2" 8921 + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.26.2.tgz#7db3b3577ec97f1140a52db4936654911078cef3" 8922 + integrity sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A== 8923 + dependencies: 8924 + baseline-browser-mapping "^2.8.3" 8925 + caniuse-lite "^1.0.30001741" 8926 + electron-to-chromium "^1.5.218" 8927 + node-releases "^2.0.21" 8928 + update-browserslist-db "^1.1.3" 8929 + 8999 8930 bser@2.1.1: 9000 8931 version "2.1.1" 9001 8932 resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" ··· 9138 9069 resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001697.tgz" 9139 9070 integrity sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ== 9140 9071 9072 + caniuse-lite@^1.0.30001741: 9073 + version "1.0.30001743" 9074 + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz#50ff91a991220a1ee2df5af00650dd5c308ea7cd" 9075 + integrity sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw== 9076 + 9141 9077 cbor-extract@^2.1.1: 9142 9078 version "2.1.1" 9143 9079 resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.1.1.tgz#f154b31529fdb6b7c70fb3ca448f44eda96a1b42" ··· 9972 9908 resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" 9973 9909 integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== 9974 9910 9975 - debug@2.6.9, debug@^2.2.0, debug@^2.6.9: 9911 + debug@2.6.9, debug@^2.6.9: 9976 9912 version "2.6.9" 9977 9913 resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 9978 9914 integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== ··· 10141 10077 resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" 10142 10078 integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== 10143 10079 10144 - deprecated-react-native-prop-types@^5.0.0: 10145 - version "5.0.0" 10146 - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz#02a12f090da7bd9e8c3ac53c31cf786a1315d302" 10147 - integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== 10148 - dependencies: 10149 - "@react-native/normalize-colors" "^0.73.0" 10150 - invariant "^2.2.4" 10151 - prop-types "^15.8.1" 10152 - 10153 10080 dequal@^2.0.3: 10154 10081 version "2.0.3" 10155 10082 resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" ··· 10160 10087 resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 10161 10088 integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 10162 10089 10163 - detect-libc@^1.0.3: 10164 - version "1.0.3" 10165 - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" 10166 - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== 10167 - 10168 10090 detect-libc@^2.0.0: 10169 10091 version "2.0.2" 10170 10092 resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" ··· 10375 10297 version "1.4.777" 10376 10298 resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.777.tgz#f846fbba23fd11b3c6f97848cdda94896fdb8baf" 10377 10299 integrity sha512-n02NCwLJ3wexLfK/yQeqfywCblZqLcXphzmid5e8yVPdtEcida7li0A5WQKghHNG0FeOMCzeFOzEbtAh5riXFw== 10300 + 10301 + electron-to-chromium@^1.5.218: 10302 + version "1.5.222" 10303 + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.222.tgz#965c93783ad989116b74593ae3068b9466fdb237" 10304 + integrity sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w== 10378 10305 10379 10306 electron-to-chromium@^1.5.41: 10380 10307 version "1.5.51" ··· 10909 10836 zod "^3.22.4" 10910 10837 zod-validation-error "^3.0.3" 10911 10838 10912 - eslint-plugin-react-hooks@^4.6.0: 10913 - version "4.6.0" 10914 - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" 10915 - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== 10839 + eslint-plugin-react-hooks@^5.2.0: 10840 + version "5.2.0" 10841 + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3" 10842 + integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== 10916 10843 10917 10844 eslint-plugin-react-native-a11y@^3.3.0: 10918 10845 version "3.3.0" ··· 11090 11017 bignumber.js "^9.1.1" 11091 11018 cockatiel "^3.1.1" 11092 11019 11093 - event-target-shim@^5.0.0, event-target-shim@^5.0.1: 11020 + event-target-shim@^5.0.0: 11094 11021 version "5.0.1" 11095 11022 resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 11096 11023 integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== ··· 11177 11104 jest-message-util "^29.7.0" 11178 11105 jest-util "^29.7.0" 11179 11106 11180 - expo-application@~6.1.4: 11181 - version "6.1.4" 11182 - resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-6.1.4.tgz#34ee2f7a86e3689f15961b296e82934e0f85afd6" 11183 - integrity sha512-jXVZb3llTQ5j4C/I03GxKjujmhKex9Xo5JDZo/pRjScHSr4NoeMjPKWThyWVlWDM1v5YSEcsRJebVfTvq9SR5Q== 11107 + expo-application@~7.0.7: 11108 + version "7.0.7" 11109 + resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-7.0.7.tgz#8b2802650381042baa3b74297cdeb5f9628b7c6c" 11110 + integrity sha512-Jt1/qqnoDUbZ+bK91+dHaZ1vrPDtRBOltRa681EeedkisqguuEeUx4UHqwVyDK2oHWsK6lO3ojetoA4h8OmNcg== 11184 11111 11185 - expo-asset@~11.1.5: 11186 - version "11.1.5" 11187 - resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-11.1.5.tgz#5cad3d781c9d0edec31b9b3adbba574eb4d5dd3e" 11188 - integrity sha512-GEQDCqC25uDBoXHEnXeBuwpeXvI+3fRGvtzwwt0ZKKzWaN+TgeF8H7c76p3Zi4DfBMFDcduM0CmOvJX+yCCLUQ== 11112 + expo-asset@~12.0.9: 11113 + version "12.0.9" 11114 + resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-12.0.9.tgz#e5b06b793bfc45a76b70a2253862351effa42e73" 11115 + integrity sha512-vrdRoyhGhBmd0nJcssTSk1Ypx3Mbn/eXaaBCQVkL0MJ8IOZpAObAjfD5CTy8+8RofcHEQdh3wwZVCs7crvfOeg== 11189 11116 dependencies: 11190 - "@expo/image-utils" "^0.7.4" 11191 - expo-constants "~17.1.5" 11117 + "@expo/image-utils" "^0.8.7" 11118 + expo-constants "~18.0.9" 11192 11119 11193 - expo-blur@~14.1.5: 11194 - version "14.1.5" 11195 - resolved "https://registry.yarnpkg.com/expo-blur/-/expo-blur-14.1.5.tgz#910712389e19286ccdc136275bf569f427aa05ef" 11196 - integrity sha512-CCLJHxN4eoAl06ESKT3CbMasJ98WsjF9ZQEJnuxtDb9ffrYbZ+g9ru84fukjNUOTtc8A8yXE5z8NgY1l0OMrmQ== 11120 + expo-blur@~15.0.7: 11121 + version "15.0.7" 11122 + resolved "https://registry.yarnpkg.com/expo-blur/-/expo-blur-15.0.7.tgz#a11466e697fbf2b272444a38722065e60d0ecbe5" 11123 + integrity sha512-SugQQbQd+zRPy8z2G5qDD4NqhcD7srBF7fN7O7yq6q7ZFK59VWvpDxtMoUkmSfdxgqONsrBN/rLdk00USADrMg== 11197 11124 11198 - expo-build-properties@~0.14.6: 11199 - version "0.14.6" 11200 - resolved "https://registry.yarnpkg.com/expo-build-properties/-/expo-build-properties-0.14.6.tgz#bb1db4b53683c6064bea4e8625c5abaf934f6941" 11201 - integrity sha512-46+gcnFxb2Dz2TFEhFlEJ11qT85THlPtFgkRKQ3a11S3+stgDzDBC2WwbXS5/GMINLIDdBFbbZlajgVND0tMnQ== 11125 + expo-build-properties@~1.0.9: 11126 + version "1.0.9" 11127 + resolved "https://registry.yarnpkg.com/expo-build-properties/-/expo-build-properties-1.0.9.tgz#71f0ce813a8431937a3db25a91f1bb4b1a6214ae" 11128 + integrity sha512-2icttCy3OPTk/GWIFt+vwA+0hup53jnmYb7JKRbvNvrrOrz+WblzpeoiaOleI2dYG/vjwpNO8to8qVyKhYJtrQ== 11202 11129 dependencies: 11203 11130 ajv "^8.11.0" 11204 11131 semver "^7.6.0" 11205 11132 11206 - expo-camera@~16.1.8: 11207 - version "16.1.8" 11208 - resolved "https://registry.yarnpkg.com/expo-camera/-/expo-camera-16.1.8.tgz#6c30dfb5c982795351f1053c36f048a11869e21b" 11209 - integrity sha512-NpBbkUhHG6cs2TNUQBFSEtXb5j1/kTPIhiuqBcHosZG2yb/8MuM/ii4McJaqfe/6pn0YPqkH4k0Uod11DOSLmw== 11133 + expo-camera@~17.0.8: 11134 + version "17.0.8" 11135 + resolved "https://registry.yarnpkg.com/expo-camera/-/expo-camera-17.0.8.tgz#f00cd97b59fce4db33d121cc0d6bccdc377283ed" 11136 + integrity sha512-BIGvS+3myaYqMtk2VXWgdcOMrewH+55BttmaYqq9tv9+o5w+RAbH9wlJSt0gdaswikiyzoWT7mOnLDleYClXmw== 11210 11137 dependencies: 11211 11138 invariant "^2.2.4" 11212 11139 11213 - expo-clipboard@~7.1.4: 11214 - version "7.1.4" 11215 - resolved "https://registry.yarnpkg.com/expo-clipboard/-/expo-clipboard-7.1.4.tgz#f2cda0d3cbfd2d307aa85dd7ba6843d6bbaf4227" 11216 - integrity sha512-NHhfKnrzb4o0PacUKD93ByadU0JmPBoFTFYbbFJZ9OAX6SImpSqG5gfrMUR3vVj4Qx9f1LpMcdAv5lBzv868ow== 11140 + expo-clipboard@~8.0.7: 11141 + version "8.0.7" 11142 + resolved "https://registry.yarnpkg.com/expo-clipboard/-/expo-clipboard-8.0.7.tgz#f81d279036408bbe074ef748623e1ae6f170d391" 11143 + integrity sha512-zvlfFV+wB2QQrQnHWlo0EKHAkdi2tycLtE+EXFUWTPZYkgu1XcH+aiKfd4ul7Z0SDF+1IuwoiW9AA9eO35aj3Q== 11217 11144 11218 - expo-constants@17.0.3, expo-constants@^13.0.2, expo-constants@~17.1.5, expo-constants@~17.1.6: 11219 - version "17.0.3" 11220 - resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-17.0.3.tgz#a05b38e0417d59759ece1642b4d483889e04dbda" 11221 - integrity sha512-lnbcX2sAu8SucHXEXxSkhiEpqH+jGrf+TF+MO6sHWIESjwOUVVYlT8qYdjR9xbxWmqFtrI4KV44FkeJf2DaFjQ== 11145 + expo-constants@18.0.8, expo-constants@^13.0.2, expo-constants@~18.0.8, expo-constants@~18.0.9: 11146 + version "18.0.8" 11147 + resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-18.0.8.tgz#14f8388136de6e83d651bd68b326a675dfb7051c" 11148 + integrity sha512-Tetphsx6RVImCTZeBAclRQMy0WOODY3y6qrUoc88YGUBVm8fAKkErCSWxLTCc6nFcJxdoOMYi62LgNIUFjZCLA== 11222 11149 dependencies: 11223 - "@expo/config" "~10.0.4" 11224 - "@expo/env" "~0.4.0" 11150 + "@expo/config" "~12.0.8" 11151 + "@expo/env" "~2.0.7" 11225 11152 11226 - expo-dev-client@~5.2.0: 11227 - version "5.2.0" 11228 - resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-5.2.0.tgz#a3d4f8c79fafe747ea8d0bfc6e3918b02011025c" 11229 - integrity sha512-7GgO3BGlFM016Zkp3c9bUbi35pubqKh8Z/iHC1arIvckEjDrLER+92zfUTFr49XLk2o64arItRPJyQL49pA/hg== 11153 + expo-dev-client@~6.0.12: 11154 + version "6.0.12" 11155 + resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-6.0.12.tgz#ac801a488dfde5fa2a782fc0c430d8996b128f63" 11156 + integrity sha512-Knr2abq0r6ALASsZtrX9QD4V0vP4ZL18iDVF5lgr6iFYawbuqQHuJRktIUETimu6qLusJK8Z3kZRabAdNqT+qw== 11230 11157 dependencies: 11231 - expo-dev-launcher "5.1.12" 11232 - expo-dev-menu "6.1.11" 11233 - expo-dev-menu-interface "1.10.0" 11234 - expo-manifests "~0.16.5" 11235 - expo-updates-interface "~1.1.0" 11158 + expo-dev-launcher "6.0.11" 11159 + expo-dev-menu "7.0.11" 11160 + expo-dev-menu-interface "2.0.0" 11161 + expo-manifests "~1.0.8" 11162 + expo-updates-interface "~2.0.0" 11236 11163 11237 - expo-dev-launcher@5.1.12: 11238 - version "5.1.12" 11239 - resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-5.1.12.tgz#cad239327e258d84c4221a212ecd30a051f9097d" 11240 - integrity sha512-ALedYerjJtSiPa95l41zMAO/m1m1kgS39i2H0io+6Ix4OksYNhILNzMNB1qDht/oWt2yjLBvXfWULfs5+3vnaA== 11164 + expo-dev-launcher@6.0.11: 11165 + version "6.0.11" 11166 + resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-6.0.11.tgz#223f439f70319e42fcf98a9ccd6af7390588613d" 11167 + integrity sha512-5wcuevQ8l57uWVqHWpARwZb57doUbzPxorhJXpYLza1tJbkuQBb1lpjeJ1Di47bGMDq0jRw6yMFkF6N9nKX/OQ== 11241 11168 dependencies: 11242 - ajv "8.11.0" 11243 - expo-dev-menu "6.1.11" 11244 - expo-manifests "~0.16.5" 11245 - resolve-from "^5.0.0" 11169 + expo-dev-menu "7.0.11" 11170 + expo-manifests "~1.0.8" 11246 11171 11247 - expo-dev-menu-interface@1.10.0: 11248 - version "1.10.0" 11249 - resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.10.0.tgz#04671bda3c163d1d7b9438ce7095c3913a3f53f9" 11250 - integrity sha512-NxtM/qot5Rh2cY333iOE87dDg1S8CibW+Wu4WdLua3UMjy81pXYzAGCZGNOeY7k9GpNFqDPNDXWyBSlk9r2pBg== 11172 + expo-dev-menu-interface@2.0.0: 11173 + version "2.0.0" 11174 + resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-2.0.0.tgz#c0d6db65eb4abc44a2701bc2303744619ad05ca6" 11175 + integrity sha512-BvAMPt6x+vyXpThsyjjOYyjwfjREV4OOpQkZ0tNl+nGpsPfcY9mc6DRACoWnH9KpLzyIt3BOgh3cuy/h/OxQjw== 11251 11176 11252 - expo-dev-menu@6.1.11: 11253 - version "6.1.11" 11254 - resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-6.1.11.tgz#829118326bcd618aec3941cfbb5b32fd3dd72379" 11255 - integrity sha512-yrlDXGcqlbQX3Pgw/iPLRea7+pHFC17MdtkNaXYQ5K5u64mn9l4KZ2ZYUeQ8cKDG5l8ZdC4F9R9vfCJYFi82AA== 11177 + expo-dev-menu@7.0.11: 11178 + version "7.0.11" 11179 + resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-7.0.11.tgz#5e3bd251c0ddf8f909c3ce63ee291aa3185828a8" 11180 + integrity sha512-xJ2scPxfHKyANTMgexK9tH7xunhsPEynuwpsssiS2syCWzvo+Mtv3euOLlkUb/IRt1JTKDxTMZBgChkaq5juSQ== 11256 11181 dependencies: 11257 - expo-dev-menu-interface "1.10.0" 11182 + expo-dev-menu-interface "2.0.0" 11258 11183 11259 - expo-device@7.1.4, expo-device@~4.1.1, expo-device@~7.1.4: 11184 + expo-device@7.1.4, expo-device@~4.1.1: 11260 11185 version "7.1.4" 11261 11186 resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-7.1.4.tgz#84ae7c2520cc45f15a9cb0433ae1226c33f7a8ef" 11262 11187 integrity sha512-HS04IiE1Fy0FRjBLurr9e5A6yj3kbmQB+2jCZvbSGpsjBnCLdSk/LCii4f5VFhPIBWJLyYuN5QqJyEAw6BcS4Q== 11263 11188 dependencies: 11264 11189 ua-parser-js "^0.7.33" 11265 11190 11266 - expo-eas-client@~0.14.3: 11267 - version "0.14.3" 11268 - resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-0.14.3.tgz#3fc22378cc454953ecba88f70c16c20a74e0aa27" 11269 - integrity sha512-BW2mSNEjFRFC8/CbkMQ3mfVhBdeZIjZhNfncw7PP80xEptLWhVjGTqwG8Usi0/yPpIu/YNYgop+XGMfhXyh9uA== 11191 + expo-device@~8.0.8: 11192 + version "8.0.8" 11193 + resolved "https://registry.yarnpkg.com/expo-device/-/expo-device-8.0.8.tgz#2d6e3dbc4e910fcffa90a371112d9da0001f0396" 11194 + integrity sha512-t515WOkeVgIeO3izj+FoXodKTHiSxZ2uF5E9YvCwiR4kANAjvyjFP3vSls2Utjx5ss8y652pZTgh3tOYQmwuZA== 11195 + dependencies: 11196 + ua-parser-js "^0.7.33" 11270 11197 11271 - expo-file-system@~18.1.10: 11272 - version "18.1.10" 11273 - resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-18.1.10.tgz#22f3bcc2c9a7edcd6bba5ece3c90a8467fda47be" 11274 - integrity sha512-SyaWg+HitScLuyEeSG9gMSDT0hIxbM9jiZjSBP9l9zMnwZjmQwsusE6+7qGiddxJzdOhTP4YGUfvEzeeS0YL3Q== 11198 + expo-eas-client@~1.0.7: 11199 + version "1.0.7" 11200 + resolved "https://registry.yarnpkg.com/expo-eas-client/-/expo-eas-client-1.0.7.tgz#9c9c7909d7bb9b6ceb4bef6875f1b9119ef22a8c" 11201 + integrity sha512-Q/b1X0fM+3beqqvffok14pjxMF600NxopdSr9WJY61fF4xllcVnALS0kEudffp9ihMOfcb5xWYqzKj6jMqYDIw== 11202 + 11203 + expo-file-system@~19.0.14: 11204 + version "19.0.14" 11205 + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-19.0.14.tgz#1169fd9fcba8a5f1ef8e3c232ef8c62274ac4803" 11206 + integrity sha512-0CA7O5IYhab11TlxQlJAx0Xm9pdkk/zEHNiW+Hh/T4atWi9U/J38CIp7iNYSrBvy9dC3rJbze5D1ANcKKr4mSQ== 11275 11207 11276 - expo-font@~13.3.1: 11277 - version "13.3.1" 11278 - resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-13.3.1.tgz#ed69ae14f263a4c447efb2615b60d9e045372e68" 11279 - integrity sha512-d+xrHYvSM9WB42wj8vP9OOFWyxed5R1evphfDb6zYBmC1dA9Hf89FpT7TNFtj2Bk3clTnpmVqQTCYbbA2P3CLg== 11208 + expo-font@~14.0.8: 11209 + version "14.0.8" 11210 + resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-14.0.8.tgz#3971507cedaa8da7f0ac21f4c4c4d2b62ca754cc" 11211 + integrity sha512-bTUHaJWRZ7ywP8dg3f+wfOwv6RwMV3mWT2CDUIhsK70GjNGlCtiWOCoHsA5Od/esPaVxqc37cCBvQGQRFStRlA== 11280 11212 dependencies: 11281 11213 fontfaceobserver "^2.1.0" 11282 11214 11283 - expo-haptics@~14.1.4: 11284 - version "14.1.4" 11285 - resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-14.1.4.tgz#442f48b1bdf83484d4fcadc653445aaae6049b70" 11286 - integrity sha512-QZdE3NMX74rTuIl82I+n12XGwpDWKb8zfs5EpwsnGi/D/n7O2Jd4tO5ivH+muEG/OCJOMq5aeaVDqqaQOhTkcA== 11215 + expo-haptics@~15.0.7: 11216 + version "15.0.7" 11217 + resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-15.0.7.tgz#384bb873d7eca7b141f85e4f300b75eab68ebfe9" 11218 + integrity sha512-7flWsYPrwjJxZ8x82RiJtzsnk1Xp9ahnbd9PhCy3NnsemyMApoWIEUr4waPqFr80DtiLZfhD9VMLL1CKa8AImQ== 11287 11219 11288 11220 expo-image-crop-tool@^0.1.8: 11289 11221 version "0.1.8" 11290 11222 resolved "https://registry.yarnpkg.com/expo-image-crop-tool/-/expo-image-crop-tool-0.1.8.tgz#3e9f34825cf5d7dad1ef2786615571b078ece4e7" 11291 11223 integrity sha512-UlS1zV7JewUzuZzVT9aA0vFD1+dt+pU60ILgt3ntQl4G9SeDJ9bB/+ylz9dzn6BjZecUQkGJmbCQ3H7jGZeZMA== 11292 11224 11293 - expo-image-loader@~5.1.0: 11294 - version "5.1.0" 11295 - resolved "https://registry.yarnpkg.com/expo-image-loader/-/expo-image-loader-5.1.0.tgz#f7d65f9b9a9714eaaf5d50a406cb34cb25262153" 11296 - integrity sha512-sEBx3zDQIODWbB5JwzE7ZL5FJD+DK3LVLWBVJy6VzsqIA6nDEnSFnsnWyCfCTSvbGigMATs1lgkC2nz3Jpve1Q== 11297 - 11298 11225 expo-image-loader@~6.0.0: 11299 11226 version "6.0.0" 11300 11227 resolved "https://registry.yarnpkg.com/expo-image-loader/-/expo-image-loader-6.0.0.tgz#15230442cbb90e101c080a4c81e37d974e43e072" 11301 11228 integrity sha512-nKs/xnOGw6ACb4g26xceBD57FKLFkSwEUTDXEDF3Gtcu3MqF3ZIYd3YM+sSb1/z9AKV1dYT7rMSGVNgsveXLIQ== 11302 11229 11303 - expo-image-manipulator@~13.1.7: 11304 - version "13.1.7" 11305 - resolved "https://registry.yarnpkg.com/expo-image-manipulator/-/expo-image-manipulator-13.1.7.tgz#e891ce9b49d75962eafdf5b7d670116583379e76" 11306 - integrity sha512-DBy/Xdd0E/yFind14x36XmwfWuUxOHI/oH97/giKjjPaRc2dlyjQ3tuW3x699hX6gAs9Sixj5WEJ1qNf3c8sag== 11230 + expo-image-manipulator@~14.0.7: 11231 + version "14.0.7" 11232 + resolved "https://registry.yarnpkg.com/expo-image-manipulator/-/expo-image-manipulator-14.0.7.tgz#e0798d849bcb4e58b570cb74159fd1ffb56edb5e" 11233 + integrity sha512-NMHssudagLTAT6ZQ2upnJYT+gVLAt5vC+iD+TBIdV3ZS44yhrq+p2gCrYahDvtVywfmTI5WsbH+Sh1BXbmJUQw== 11307 11234 dependencies: 11308 - expo-image-loader "~5.1.0" 11235 + expo-image-loader "~6.0.0" 11309 11236 11310 - expo-image-picker@17.0.5: 11311 - version "17.0.5" 11312 - resolved "https://registry.yarnpkg.com/expo-image-picker/-/expo-image-picker-17.0.5.tgz#236607a90f2c8ae63d377405d2bf295cfb192b84" 11313 - integrity sha512-K/fWkhNdZOPKKxjH6/+gnmqqOavBZt5lD5LI5BhdcCeTHt91GuBcTm5PM5AvR3eR0Vi5ZZqIKBTMVss8jLIoWg== 11237 + expo-image-picker@~17.0.8: 11238 + version "17.0.8" 11239 + resolved "https://registry.yarnpkg.com/expo-image-picker/-/expo-image-picker-17.0.8.tgz#c4430994de81f3e9995c9ce77cb76403213b17d7" 11240 + integrity sha512-489ByhVs2XPoAu9zodivAKLv7hG4S/FOe8hO/C2U6jVxmRjpAKakKNjMml0IwWjf1+c/RYBqm1XxKaZ+vq/fDQ== 11314 11241 dependencies: 11315 11242 expo-image-loader "~6.0.0" 11316 11243 11317 - expo-image@^2.4.0: 11318 - version "2.4.0" 11319 - resolved "https://registry.yarnpkg.com/expo-image/-/expo-image-2.4.0.tgz#02f7fd743387206914cd431a6367f5be53509e3e" 11320 - integrity sha512-TQ/LvrtJ9JBr+Tf198CAqflxcvdhuj7P24n0LQ1jHaWIVA7Z+zYKbYHnSMPSDMul/y0U46Z5bFLbiZiSidgcNw== 11244 + expo-image@~3.0.8: 11245 + version "3.0.8" 11246 + resolved "https://registry.yarnpkg.com/expo-image/-/expo-image-3.0.8.tgz#ec76f7a300712cc659b197e5478362426e411424" 11247 + integrity sha512-L83fTHVjvE5hACxUXPk3dpABteI/IypeqxKMeOAAcT2eB/jbqT53ddsYKEvKAP86eoByQ7+TCtw9AOUizEtaTQ== 11321 11248 11322 - expo-intent-launcher@^12.1.5: 11323 - version "12.1.5" 11324 - resolved "https://registry.yarnpkg.com/expo-intent-launcher/-/expo-intent-launcher-12.1.5.tgz#ed3051292b33e131535d9b35ca20b48cf56d1364" 11325 - integrity sha512-KmCc/dJHTnVf2ZdrZhYSkvQ588K7qQW+nBGfJj5woCwhEXwYz1xOLQcShnPQgQWRf8conAvQDkI3pbjYNPcECw== 11249 + expo-intent-launcher@~13.0.7: 11250 + version "13.0.7" 11251 + resolved "https://registry.yarnpkg.com/expo-intent-launcher/-/expo-intent-launcher-13.0.7.tgz#c86488d47f8fba908a9dd0d1460a3ea06b0cefdc" 11252 + integrity sha512-4em7utK59gftgBwokpw+TQkyY27C5JH28LLrM/ZTABIsAMRUEqS+Inzd/xtN0hvxo2Z8aTsd+N1WRcCdOehYdg== 11326 11253 11327 11254 expo-json-utils@~0.15.0: 11328 11255 version "0.15.0" 11329 11256 resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.15.0.tgz#6723574814b9e6b0a90e4e23662be76123ab6ae9" 11330 11257 integrity sha512-duRT6oGl80IDzH2LD2yEFWNwGIC2WkozsB6HF3cDYNoNNdUvFk6uN3YiwsTsqVM/D0z6LEAQ01/SlYvN+Fw0JQ== 11331 11258 11332 - expo-keep-awake@~14.1.4: 11333 - version "14.1.4" 11334 - resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-14.1.4.tgz#80197728563e0e17523e5a606fbd6fbed9639503" 11335 - integrity sha512-wU9qOnosy4+U4z/o4h8W9PjPvcFMfZXrlUoKTMBW7F4pLqhkkP/5G4EviPZixv4XWFMjn1ExQ5rV6BX8GwJsWA== 11259 + expo-keep-awake@~15.0.7: 11260 + version "15.0.7" 11261 + resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-15.0.7.tgz#4eada556e1cca6c9c2e5aa39478fd01816cd0bc9" 11262 + integrity sha512-CgBNcWVPnrIVII5G54QDqoE125l+zmqR4HR8q+MQaCfHet+dYpS5vX5zii/RMayzGN4jPgA4XYIQ28ePKFjHoA== 11336 11263 11337 - expo-linear-gradient@~14.1.5: 11338 - version "14.1.5" 11339 - resolved "https://registry.yarnpkg.com/expo-linear-gradient/-/expo-linear-gradient-14.1.5.tgz#414bf0c8145089087198d4dd5a419eb324af2a02" 11340 - integrity sha512-BSN3MkSGLZoHMduEnAgfhoj3xqcDWaoICgIr4cIYEx1GcHfKMhzA/O4mpZJ/WC27BP1rnAqoKfbclk1eA70ndQ== 11264 + expo-linear-gradient@~15.0.7: 11265 + version "15.0.7" 11266 + resolved "https://registry.yarnpkg.com/expo-linear-gradient/-/expo-linear-gradient-15.0.7.tgz#d1ebbda5ecc58afb58398f5a06affd0e83894149" 11267 + integrity sha512-yF+y+9Shpr/OQFfy/wglB/0bykFMbwHBTuMRa5Of/r2P1wbkcacx8rg0JsUWkXH/rn2i2iWdubyqlxSJa3ggZA== 11341 11268 11342 - expo-linking@~7.1.5: 11343 - version "7.1.5" 11344 - resolved "https://registry.yarnpkg.com/expo-linking/-/expo-linking-7.1.5.tgz#99633892712d5442ddb1c6c3857346eb7a67119b" 11345 - integrity sha512-8g20zOpROW78bF+bLI4a3ZWj4ntLgM0rCewKycPL0jk9WGvBrBtFtwwADJgOiV1EurNp3lcquerXGlWS+SOQyA== 11269 + expo-linking@~8.0.8: 11270 + version "8.0.8" 11271 + resolved "https://registry.yarnpkg.com/expo-linking/-/expo-linking-8.0.8.tgz#ad348c133d048043990177f67dfb6a89bf628a6e" 11272 + integrity sha512-MyeMcbFDKhXh4sDD1EHwd0uxFQNAc6VCrwBkNvvvufUsTYFq3glTA9Y8a+x78CPpjNqwNAamu74yIaIz7IEJyg== 11346 11273 dependencies: 11347 - expo-constants "~17.1.6" 11274 + expo-constants "~18.0.8" 11348 11275 invariant "^2.2.4" 11349 11276 11350 - expo-localization@~16.1.5: 11351 - version "16.1.5" 11352 - resolved "https://registry.yarnpkg.com/expo-localization/-/expo-localization-16.1.5.tgz#b2877f514669924b2a99d7f85d90e2378bee9e10" 11353 - integrity sha512-dymvf0S11afyMeRbnoXd2iWWzFYwg21jHTnLBO/7ObNO1rKlYpus0ghVDnh+sJFV2u7s518e/JTcAqNR69EZkw== 11277 + expo-localization@~17.0.7: 11278 + version "17.0.7" 11279 + resolved "https://registry.yarnpkg.com/expo-localization/-/expo-localization-17.0.7.tgz#24559be23cb7d9757fd8f8c88380d7b4ee2339a2" 11280 + integrity sha512-ACg1B0tJLNa+f8mZfAaNrMyNzrrzHAARVH1sHHvh+LolKdQpgSKX69Uroz1Llv4C71furpwBklVStbNcEwVVVA== 11354 11281 dependencies: 11355 11282 rtl-detect "^1.0.2" 11356 11283 11357 - expo-location@~18.1.6: 11358 - version "18.1.6" 11359 - resolved "https://registry.yarnpkg.com/expo-location/-/expo-location-18.1.6.tgz#b855e14e8b4e29a1bde470fc4dc2a341abecf631" 11360 - integrity sha512-l5dQQ2FYkrBgNzaZN1BvSmdhhcztFOUucu2kEfDBMV4wSIuTIt/CKsho+F3RnAiWgvui1wb1WTTf80E8zq48hA== 11284 + expo-location@~19.0.7: 11285 + version "19.0.7" 11286 + resolved "https://registry.yarnpkg.com/expo-location/-/expo-location-19.0.7.tgz#58ab5b9b59db3a26d0495c19e719d5f559948b1c" 11287 + integrity sha512-YNkh4r9E6ECbPkBCAMG5A5yHDgS0pw+Rzyd0l2ZQlCtjkhlODB55nMCKr5CZnUI0mXTkaSm8CwfoCO8n2MpYfg== 11361 11288 11362 - expo-manifests@~0.16.5: 11363 - version "0.16.5" 11364 - resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.16.5.tgz#bb57ceff3db4eb74679d4a155b2ca2050375ce10" 11365 - integrity sha512-zLUeJogn2C7qOE75Zz7jcmJorMfIbSRR35ctspN0OK/Hq/+PAAptA8p9jNVC8xp/91uP9uI8f3xPhh+A11eR2A== 11289 + expo-manifests@~1.0.8: 11290 + version "1.0.8" 11291 + resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-1.0.8.tgz#2ee1b33f974481d8cc5fc76352e0c78de5ff74d6" 11292 + integrity sha512-nA5PwU2uiUd+2nkDWf9e71AuFAtbrb330g/ecvuu52bmaXtN8J8oiilc9BDvAX0gg2fbtOaZdEdjBYopt1jdlQ== 11366 11293 dependencies: 11367 - "@expo/config" "~11.0.10" 11294 + "@expo/config" "~12.0.8" 11368 11295 expo-json-utils "~0.15.0" 11369 11296 11370 - expo-media-library@~17.1.7: 11371 - version "17.1.7" 11372 - resolved "https://registry.yarnpkg.com/expo-media-library/-/expo-media-library-17.1.7.tgz#71ed3d2d246d33410d6aecc335098a23519bd890" 11373 - integrity sha512-hLCoMvlhjtt+iYxPe71P1F6t06mYGysuNOfjQzDbbf64PCkglCZJYmywPyUSV1V5Hu9DhRj//gEg+Ki+7VWXog== 11297 + expo-media-library@~18.2.0: 11298 + version "18.2.0" 11299 + resolved "https://registry.yarnpkg.com/expo-media-library/-/expo-media-library-18.2.0.tgz#b7515e25df5951e6b579b2ca1bee934ed206fa43" 11300 + integrity sha512-aIYLIqmU8LFWrQcfZdwg9f/iWm0wC8uhZ7HiUiTnrigtxf417cVvNokX9afXpIOKBHAHRjVIbcs1nN8KZDE2Fw== 11374 11301 11375 - expo-modules-autolinking@2.1.11: 11376 - version "2.1.11" 11377 - resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-2.1.11.tgz#efc2e756ccc8b9e0b927596ba074aefe31b5cbe4" 11378 - integrity sha512-KrWQo+cE4gWYNePBBhmHGVzf63gYV19ZLXe9EIH3GHTkViVzIX+Lp618H/7GxfawpN5kbhvilATH1QEKKnUUww== 11302 + expo-modules-autolinking@3.0.12: 11303 + version "3.0.12" 11304 + resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-3.0.12.tgz#3e02176287d21e3c5a13000d45dbed3cdeefa128" 11305 + integrity sha512-vZijQgdtmhAhL8H3C0gEjWC0gGBVPVQdVZM92Zqcu2vXjRNDSqIxYXRTS3UT0nZzFltdqmeZAGxvWspxQLYtOQ== 11379 11306 dependencies: 11380 11307 "@expo/spawn-async" "^1.7.2" 11381 11308 chalk "^4.1.0" 11382 11309 commander "^7.2.0" 11383 - find-up "^5.0.0" 11384 11310 glob "^10.4.2" 11385 11311 require-from-string "^2.0.2" 11386 11312 resolve-from "^5.0.0" 11387 11313 11388 - expo-modules-core@2.4.0: 11389 - version "2.4.0" 11390 - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-2.4.0.tgz#3081d62fadff913090cc5abfe46d9ec6b0e75789" 11391 - integrity sha512-Ko5eHBdvuMykjw9P9C9PF54/wBSsGOxaOjx92I5BwgKvEmUwN3UrXFV4CXzlLVbLfSYUQaLcB220xmPfgvT7Fg== 11314 + expo-modules-core@3.0.17: 11315 + version "3.0.17" 11316 + resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-3.0.17.tgz#3d7648eb256f34f9992afa251ad8d46c3ca49126" 11317 + integrity sha512-P1jZn8yjWi4jSCH+r9A1NykLR+0JtFYprJgYwnZ1EVFRtw+DoMjir0OexM9ehCuBg8sKDCbzCUAgm/JFnpjQww== 11392 11318 dependencies: 11393 11319 invariant "^2.2.4" 11394 11320 11395 - expo-notifications@~0.31.3: 11396 - version "0.31.3" 11397 - resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.31.3.tgz#eb82c9975e26dcc4fa694b79970792c897ad8d16" 11398 - integrity sha512-AATxKoav5ZvwcRel2SKYNZc+EvOAKvAjxyBezC8y3J5fMNe/uKIhMzh3FN4fKdOi9ao/UBHkvLiUO2MqVnvBNg== 11321 + expo-notifications@~0.32.11: 11322 + version "0.32.11" 11323 + resolved "https://registry.yarnpkg.com/expo-notifications/-/expo-notifications-0.32.11.tgz#0d90d08efdf4693ceaa32ab8bb7455d56424c441" 11324 + integrity sha512-4rLWC9Q4B7aQywXn9cKAlNY4p00CYKLJ23qZ0Pp/whkX0NxmI4MwJ20YhreV08gjHTTTWHpYU7jqYWpsjtPIxA== 11399 11325 dependencies: 11400 - "@expo/image-utils" "^0.7.4" 11326 + "@expo/image-utils" "^0.8.7" 11401 11327 "@ide/backoff" "^1.0.0" 11402 11328 abort-controller "^3.0.0" 11403 11329 assert "^2.0.0" 11404 11330 badgin "^1.1.5" 11405 - expo-application "~6.1.4" 11406 - expo-constants "~17.1.6" 11331 + expo-application "~7.0.7" 11332 + expo-constants "~18.0.8" 11407 11333 11408 11334 expo-pwa@0.0.127: 11409 11335 version "0.0.127" ··· 11415 11341 commander "2.20.0" 11416 11342 update-check "1.5.3" 11417 11343 11418 - expo-screen-orientation@~8.1.7: 11419 - version "8.1.7" 11420 - resolved "https://registry.yarnpkg.com/expo-screen-orientation/-/expo-screen-orientation-8.1.7.tgz#3751b441f2bfcbde798b1508c0ff9f099f4be911" 11421 - integrity sha512-nYwadYtdU6mMDk0MCHMPPPQtBoeFYJ2FspLRW+J35CMLqzE4nbpwGeiImfXzkvD94fpOCfI4KgLj5vGauC3pfA== 11344 + expo-screen-orientation@~9.0.7: 11345 + version "9.0.7" 11346 + resolved "https://registry.yarnpkg.com/expo-screen-orientation/-/expo-screen-orientation-9.0.7.tgz#27eb8c9f57af22e1917fc025d318dd9bf31e05c3" 11347 + integrity sha512-UH/XlB9eMw+I2cyHSkXhAHRAPk83WyA3k5bst7GLu14wRuWiTch9fb6I7qEJK5CN6+XelcWxlBJymys6Fr/FKA== 11422 11348 11423 - expo-sharing@~13.1.5: 11424 - version "13.1.5" 11425 - resolved "https://registry.yarnpkg.com/expo-sharing/-/expo-sharing-13.1.5.tgz#73d86cdcc037b46ddc82be224dfd3d6bceec497c" 11426 - integrity sha512-X/5sAEiWXL2kdoGE3NO5KmbfcmaCWuWVZXHu8OQef7Yig4ZgHFkGD11HKJ5KqDrDg+SRZe4ISd6MxE7vGUgm4w== 11349 + expo-sharing@~14.0.7: 11350 + version "14.0.7" 11351 + resolved "https://registry.yarnpkg.com/expo-sharing/-/expo-sharing-14.0.7.tgz#64845ea569c725a9a32705be7ef772e556134e1c" 11352 + integrity sha512-t/5tR8ZJNH6tMkHXlF7453UafNIfrpfTG+THN9EMLC4Wsi4bJuESPm3NdmWDg2D4LDALJI/LQo0iEnLAd5Sp4g== 11427 11353 11428 - expo-splash-screen@~0.30.9: 11429 - version "0.30.9" 11430 - resolved "https://registry.yarnpkg.com/expo-splash-screen/-/expo-splash-screen-0.30.9.tgz#8f2a86b3b802ea46065fc761ed60e77e81bdb84c" 11431 - integrity sha512-curHUaZxUTZ2dWvz32ao3xPv5mJr1LBqn5V8xm/IULAehB9RGCn8iKiROMN1PYebSG+56vPMuJmBm9P+ayvJpA== 11354 + expo-splash-screen@~31.0.10: 11355 + version "31.0.10" 11356 + resolved "https://registry.yarnpkg.com/expo-splash-screen/-/expo-splash-screen-31.0.10.tgz#e0edd9782715b82a8eed34d5ebde778b79f850b4" 11357 + integrity sha512-i6g9IK798mae4yvflstQ1HkgahIJ6exzTCTw4vEdxV0J2SwiW3Tj+CwRjf0te7Zsb+7dDQhBTmGZwdv00VER2A== 11432 11358 dependencies: 11433 - "@expo/prebuild-config" "^9.0.6" 11359 + "@expo/prebuild-config" "^54.0.3" 11434 11360 11435 - expo-structured-headers@~4.1.0: 11436 - version "4.1.0" 11437 - resolved "https://registry.yarnpkg.com/expo-structured-headers/-/expo-structured-headers-4.1.0.tgz#5475fc3f9559701cc755fd2d50605f8817d42ad0" 11438 - integrity sha512-2X+aUNzC/qaw7/WyUhrVHNDB0uQ5rE12XA2H/rJXaAiYQSuOeU90ladaN0IJYV9I2XlhYrjXLktLXWbO7zgbag== 11361 + expo-structured-headers@~5.0.0: 11362 + version "5.0.0" 11363 + resolved "https://registry.yarnpkg.com/expo-structured-headers/-/expo-structured-headers-5.0.0.tgz#b3cc223a7a58964652093f088a8988316db9ed9d" 11364 + integrity sha512-RmrBtnSphk5REmZGV+lcdgdpxyzio5rJw8CXviHE6qH5pKQQ83fhMEcigvrkBdsn2Efw2EODp4Yxl1/fqMvOZw== 11439 11365 11440 - expo-system-ui@~5.0.8: 11441 - version "5.0.8" 11442 - resolved "https://registry.yarnpkg.com/expo-system-ui/-/expo-system-ui-5.0.8.tgz#1eaaa95cfa8b5e20750e5fb30918635a58276199" 11443 - integrity sha512-2sI7ALq3W8sKKa3FRW7PmuNznk+48cb1VzFy96vYZLZgTDZViz+fEJNdp1RHgLui/mAl3f8md1LneygSJvZ1EQ== 11366 + expo-system-ui@~6.0.7: 11367 + version "6.0.7" 11368 + resolved "https://registry.yarnpkg.com/expo-system-ui/-/expo-system-ui-6.0.7.tgz#24bc3d36df114f1ccb7a6e3fa26f88c7a7e03788" 11369 + integrity sha512-NT+/r/BOg08lFI9SZO2WFi9X1ZmawkVStknioWzQq6Mt4KinoMS6yl3eLbyOLM3LoptN13Ywfo4W5KHA6TV9Ow== 11444 11370 dependencies: 11445 - "@react-native/normalize-colors" "0.79.3" 11371 + "@react-native/normalize-colors" "0.81.4" 11446 11372 debug "^4.3.2" 11447 11373 11448 - expo-task-manager@~13.1.5: 11449 - version "13.1.5" 11450 - resolved "https://registry.yarnpkg.com/expo-task-manager/-/expo-task-manager-13.1.5.tgz#fc09bdc9562339aa71de4ed2e7ff17491e6b6ee2" 11451 - integrity sha512-9jspZZ6y6hwo6QBwmfsUUX6sY4Mnrw8170LnOqrVfRuClkGaMrqDeBa9YUFTDt/BNYZ/3/QlZZ5QUHT9ziROfQ== 11374 + expo-task-manager@~14.0.7: 11375 + version "14.0.7" 11376 + resolved "https://registry.yarnpkg.com/expo-task-manager/-/expo-task-manager-14.0.7.tgz#87d89ec73a85d973626be0c363bfa24ba9c4998c" 11377 + integrity sha512-wZRksJg4+Me1wDYmv0wnGh5I30ZOkEpjdXECp/cTKbON1ISQgnaz+4B2eJtljvEPYC1ocBdpAGmz9N0CPtc4mg== 11452 11378 dependencies: 11453 - unimodules-app-loader "~5.1.3" 11379 + unimodules-app-loader "~6.0.7" 11454 11380 11455 - expo-updates-interface@~1.1.0: 11456 - version "1.1.0" 11457 - resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-1.1.0.tgz#62497d4647b381da9fdb68868ed180203ae737ef" 11458 - integrity sha512-DeB+fRe0hUDPZhpJ4X4bFMAItatFBUPjw/TVSbJsaf3Exeami+2qbbJhWkcTMoYHOB73nOIcaYcWXYJnCJXO0w== 11381 + expo-updates-interface@~2.0.0: 11382 + version "2.0.0" 11383 + resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-2.0.0.tgz#7721cb64c37bcb46b23827b2717ef451a9378749" 11384 + integrity sha512-pTzAIufEZdVPKql6iMi5ylVSPqV1qbEopz9G6TSECQmnNde2nwq42PxdFBaUEd8IZJ/fdJLQnOT3m6+XJ5s7jg== 11459 11385 11460 - expo-updates@~0.28.14: 11461 - version "0.28.14" 11462 - resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-0.28.14.tgz#bc75b00c0744fec33ba36f8c96e7c86ed0d3c7f6" 11463 - integrity sha512-kxI428W7LGSdDWmN/ud5cIg8+SjmQ5XSaUrYauZ0DKsHm2qq1Lh+NYSUWLvYmps+Baalafe6mILmAX8ZnNg26Q== 11386 + expo-updates@~29.0.11: 11387 + version "29.0.11" 11388 + resolved "https://registry.yarnpkg.com/expo-updates/-/expo-updates-29.0.11.tgz#d9bdc8676f563330461f7950fa504dd4bb48aafc" 11389 + integrity sha512-zD7Zxe3P61WA6fyTdKRckmTFr7h/0BaSSD+Ssr73YiOLOak7GJUb19B+ysADjJP1L0IIOUR9U/UkMLv0r8k9dA== 11464 11390 dependencies: 11465 11391 "@expo/code-signing-certificates" "0.0.5" 11466 - "@expo/config" "~11.0.10" 11467 - "@expo/config-plugins" "~10.0.2" 11392 + "@expo/plist" "^0.4.7" 11468 11393 "@expo/spawn-async" "^1.7.2" 11469 11394 arg "4.1.0" 11470 11395 chalk "^4.1.2" 11471 - expo-eas-client "~0.14.3" 11472 - expo-manifests "~0.16.5" 11473 - expo-structured-headers "~4.1.0" 11474 - expo-updates-interface "~1.1.0" 11396 + debug "^4.3.4" 11397 + expo-eas-client "~1.0.7" 11398 + expo-manifests "~1.0.8" 11399 + expo-structured-headers "~5.0.0" 11400 + expo-updates-interface "~2.0.0" 11401 + getenv "^2.0.0" 11475 11402 glob "^10.4.2" 11476 11403 ignore "^5.3.1" 11477 11404 resolve-from "^5.0.0" 11478 11405 11479 - expo-video@~2.2.1: 11480 - version "2.2.1" 11481 - resolved "https://registry.yarnpkg.com/expo-video/-/expo-video-2.2.1.tgz#d45357ee7a7da5a87c49177587183d1c7feabc57" 11482 - integrity sha512-dw3h0eMLK8WpY1Tnwsgrxx3sFqXiOujmurjGdr+RFG63ZurAze/H9uuKMVl3ps/ZNuK4q/2ifIiJudoFJfwKwA== 11406 + expo-video@~3.0.11: 11407 + version "3.0.11" 11408 + resolved "https://registry.yarnpkg.com/expo-video/-/expo-video-3.0.11.tgz#9ba2c4da694fe3d54f191f160702ddc70412e782" 11409 + integrity sha512-k/xz8Ml/LekuD2U2LomML2mUISvkHzYDz3fXY8Au1fEaYVNTfTs7Gyfo1lvF6S1X7u3XutoAfew8e8e1ZUR2fg== 11483 11410 11484 - expo-web-browser@~14.1.6: 11485 - version "14.1.6" 11486 - resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-14.1.6.tgz#26d66e641e6e96d155be6fa513e7e667a719a0b0" 11487 - integrity sha512-/4P8eWqRyfXIMZna3acg320LXNA+P2cwyEVbjDX8vHnWU+UnOtyRKWy3XaAIyMPQ9hVjBNUQTh4MPvtnPRzakw== 11411 + expo-web-browser@~15.0.7: 11412 + version "15.0.7" 11413 + resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-15.0.7.tgz#eb4bc306db75d8c46f549d8a9150945f9436bcfc" 11414 + integrity sha512-eXnfO3FQ2WthTA8uEPNJ7SDRfPaLIU/P2k082HGEYIHAFZMwh2o9Wo+SDVytO3E95TAv1qwhggUjOrczYzxteQ== 11488 11415 11489 - expo@53.0.11: 11490 - version "53.0.11" 11491 - resolved "https://registry.yarnpkg.com/expo/-/expo-53.0.11.tgz#66053862520ce2a6700d13346ebaf8210a68f24b" 11492 - integrity sha512-+QtvU+6VPd7/o4vmtwuRE/Li2rAiJtD25I6BOnoQSxphaWWaD0PdRQnIV3VQ0HESuJYRuKJ3DkAHNJ3jI6xwzA== 11416 + expo@^54.0.9: 11417 + version "54.0.9" 11418 + resolved "https://registry.yarnpkg.com/expo/-/expo-54.0.9.tgz#bc4be9b156389ea81753e2f7b4d8302f1fa5be0c" 11419 + integrity sha512-hCWkBkftiSSoKCV83CKm5oaA613arl9311mjXCDb7Fn/9FzQWh1koL4Q3nflnYiiCRhFQnecbDOa6YxN+GKVEQ== 11493 11420 dependencies: 11494 11421 "@babel/runtime" "^7.20.0" 11495 - "@expo/cli" "0.24.14" 11496 - "@expo/config" "~11.0.10" 11497 - "@expo/config-plugins" "~10.0.2" 11498 - "@expo/fingerprint" "0.13.0" 11499 - "@expo/metro-config" "0.20.14" 11500 - "@expo/vector-icons" "^14.0.0" 11501 - babel-preset-expo "~13.2.0" 11502 - expo-asset "~11.1.5" 11503 - expo-constants "~17.1.6" 11504 - expo-file-system "~18.1.10" 11505 - expo-font "~13.3.1" 11506 - expo-keep-awake "~14.1.4" 11507 - expo-modules-autolinking "2.1.11" 11508 - expo-modules-core "2.4.0" 11509 - react-native-edge-to-edge "1.6.0" 11422 + "@expo/cli" "54.0.7" 11423 + "@expo/config" "~12.0.9" 11424 + "@expo/config-plugins" "~54.0.1" 11425 + "@expo/devtools" "0.1.7" 11426 + "@expo/fingerprint" "0.15.1" 11427 + "@expo/metro" "~54.0.0" 11428 + "@expo/metro-config" "54.0.4" 11429 + "@expo/vector-icons" "^15.0.2" 11430 + "@ungap/structured-clone" "^1.3.0" 11431 + babel-preset-expo "~54.0.2" 11432 + expo-asset "~12.0.9" 11433 + expo-constants "~18.0.9" 11434 + expo-file-system "~19.0.14" 11435 + expo-font "~14.0.8" 11436 + expo-keep-awake "~15.0.7" 11437 + expo-modules-autolinking "3.0.12" 11438 + expo-modules-core "3.0.17" 11439 + pretty-format "^29.7.0" 11440 + react-refresh "^0.14.2" 11510 11441 whatwg-url-without-unicode "8.0.0-3" 11511 11442 11512 11443 exponential-backoff@^3.1.1: ··· 11908 11839 resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 11909 11840 integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 11910 11841 11911 - fs-extra@9.0.0: 11912 - version "9.0.0" 11913 - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3" 11914 - integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g== 11915 - dependencies: 11916 - at-least-node "^1.0.0" 11917 - graceful-fs "^4.2.0" 11918 - jsonfile "^6.0.1" 11919 - universalify "^1.0.0" 11920 - 11921 11842 fs-extra@^11.2.0: 11922 11843 version "11.3.0" 11923 11844 resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" ··· 12164 12085 minipass "^4.2.4" 12165 12086 path-scurry "^1.6.1" 12166 12087 12088 + global-dirs@^0.1.1: 12089 + version "0.1.1" 12090 + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" 12091 + integrity sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg== 12092 + dependencies: 12093 + ini "^1.3.4" 12094 + 12167 12095 globals@^11.1.0: 12168 12096 version "11.12.0" 12169 12097 resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" ··· 12369 12297 resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.25.1.tgz#6aeec17d1983b4eabf69721f3aa3eb705b17f480" 12370 12298 integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw== 12371 12299 12372 - hermes-estree@0.28.1: 12373 - version "0.28.1" 12374 - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.28.1.tgz#631e6db146b06e62fc1c630939acf4a3c77d1b24" 12375 - integrity sha512-w3nxl/RGM7LBae0v8LH2o36+8VqwOZGv9rX1wyoWT6YaKZLqpJZ0YQ5P0LVr3tuRpf7vCx0iIG4i/VmBJejxTQ== 12300 + hermes-estree@0.29.1: 12301 + version "0.29.1" 12302 + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.29.1.tgz#043c7db076e0e8ef8c5f6ed23828d1ba463ebcc5" 12303 + integrity sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ== 12376 12304 12377 - hermes-parser@0.25.1, hermes-parser@^0.25.1: 12305 + hermes-estree@0.32.0: 12306 + version "0.32.0" 12307 + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.32.0.tgz#bb7da6613ab8e67e334a1854ea1e209f487d307b" 12308 + integrity sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ== 12309 + 12310 + hermes-parser@0.29.1, hermes-parser@^0.29.1: 12311 + version "0.29.1" 12312 + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.29.1.tgz#436b24bcd7bb1e71f92a04c396ccc0716c288d56" 12313 + integrity sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA== 12314 + dependencies: 12315 + hermes-estree "0.29.1" 12316 + 12317 + hermes-parser@0.32.0: 12318 + version "0.32.0" 12319 + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.32.0.tgz#7916984ef6fdce62e7415d354cf35392061cd303" 12320 + integrity sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw== 12321 + dependencies: 12322 + hermes-estree "0.32.0" 12323 + 12324 + hermes-parser@^0.25.1: 12378 12325 version "0.25.1" 12379 12326 resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1" 12380 12327 integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA== 12381 12328 dependencies: 12382 12329 hermes-estree "0.25.1" 12383 - 12384 - hermes-parser@0.28.1: 12385 - version "0.28.1" 12386 - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.28.1.tgz#17b9e6377f334b6870a1f6da2e123fdcd0b605ac" 12387 - integrity sha512-nf8o+hE8g7UJWParnccljHumE9Vlq8F7MqIdeahl+4x0tvCUJYRrT0L7h0MMg/X9YJmkNwsfbaNNrzPtFXOscg== 12388 - dependencies: 12389 - hermes-estree "0.28.1" 12390 12330 12391 12331 history@^5.3.0: 12392 12332 version "5.3.0" ··· 12706 12646 resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 12707 12647 integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== 12708 12648 12709 - ini@~1.3.0: 12649 + ini@^1.3.4, ini@~1.3.0: 12710 12650 version "1.3.8" 12711 12651 resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" 12712 12652 integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== ··· 13497 13437 jest-mock "^29.7.0" 13498 13438 jest-util "^29.7.0" 13499 13439 13500 - jest-expo@~53.0.7: 13501 - version "53.0.7" 13502 - resolved "https://registry.yarnpkg.com/jest-expo/-/jest-expo-53.0.7.tgz#ab1c288940dcdf470c25b7b18e2ed99f03d26bc6" 13503 - integrity sha512-Uiu3ES0sWbsxpifQuBzXMI1/N9JygfJfwEby/Qw/OPndIQ1YeeIQqkbP52xn6UhdSM4qYQiteX3EjY8TfrZIoA== 13440 + jest-expo@~54.0.12: 13441 + version "54.0.12" 13442 + resolved "https://registry.yarnpkg.com/jest-expo/-/jest-expo-54.0.12.tgz#297e57d4744d6fb8fbc8a81cad2aa4acb23e899a" 13443 + integrity sha512-76dZ0Mk4/lBMwmGRWoSFQ08rfmMTVhnAp3Hxua5cND2TVISZcsya3LUZVKfPYxb5lB7H4OR6B7KStQJFkrnJjg== 13504 13444 dependencies: 13505 - "@expo/config" "~11.0.10" 13506 - "@expo/json-file" "^9.1.4" 13445 + "@expo/config" "~12.0.9" 13446 + "@expo/json-file" "^10.0.7" 13507 13447 "@jest/create-cache-key-function" "^29.2.1" 13508 13448 "@jest/globals" "^29.2.1" 13509 13449 babel-jest "^29.2.1" 13510 - find-up "^5.0.0" 13511 13450 jest-environment-jsdom "^29.2.1" 13512 13451 jest-snapshot "^29.2.1" 13513 13452 jest-watch-select-projects "^2.0.0" ··· 13515 13454 json5 "^2.2.3" 13516 13455 lodash "^4.17.19" 13517 13456 react-server-dom-webpack "~19.0.0" 13518 - react-test-renderer "19.0.0" 13457 + react-test-renderer "19.1.0" 13519 13458 server-only "^0.0.1" 13520 13459 stacktrace-js "^2.0.2" 13521 13460 ··· 14138 14077 debug "^2.6.9" 14139 14078 marky "^1.2.2" 14140 14079 14141 - lightningcss-darwin-arm64@1.27.0: 14142 - version "1.27.0" 14143 - resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.27.0.tgz#565bd610533941cba648a70e105987578d82f996" 14144 - integrity sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ== 14080 + lightningcss-darwin-arm64@1.30.1: 14081 + version "1.30.1" 14082 + resolved "https://registry.yarnpkg.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz#3d47ce5e221b9567c703950edf2529ca4a3700ae" 14083 + integrity sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ== 14145 14084 14146 - lightningcss-darwin-x64@1.27.0: 14147 - version "1.27.0" 14148 - resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.27.0.tgz#c906a267237b1c7fe08bff6c5ac032c099bc9482" 14149 - integrity sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg== 14085 + lightningcss-darwin-x64@1.30.1: 14086 + version "1.30.1" 14087 + resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz#e81105d3fd6330860c15fe860f64d39cff5fbd22" 14088 + integrity sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA== 14150 14089 14151 - lightningcss-freebsd-x64@1.27.0: 14152 - version "1.27.0" 14153 - resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.27.0.tgz#a7c3c4d6ee18dffeb8fa69f14f8f9267f7dc0c34" 14154 - integrity sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA== 14090 + lightningcss-freebsd-x64@1.30.1: 14091 + version "1.30.1" 14092 + resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz#a0e732031083ff9d625c5db021d09eb085af8be4" 14093 + integrity sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig== 14155 14094 14156 - lightningcss-linux-arm-gnueabihf@1.27.0: 14157 - version "1.27.0" 14158 - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.27.0.tgz#c7c16432a571ec877bf734fe500e4a43d48c2814" 14159 - integrity sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA== 14095 + lightningcss-linux-arm-gnueabihf@1.30.1: 14096 + version "1.30.1" 14097 + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz#1f5ecca6095528ddb649f9304ba2560c72474908" 14098 + integrity sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q== 14160 14099 14161 - lightningcss-linux-arm64-gnu@1.27.0: 14162 - version "1.27.0" 14163 - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.27.0.tgz#cfd9e18df1cd65131da286ddacfa3aee6862a752" 14164 - integrity sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A== 14100 + lightningcss-linux-arm64-gnu@1.30.1: 14101 + version "1.30.1" 14102 + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz#eee7799726103bffff1e88993df726f6911ec009" 14103 + integrity sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw== 14165 14104 14166 - lightningcss-linux-arm64-musl@1.27.0: 14167 - version "1.27.0" 14168 - resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.27.0.tgz#6682ff6b9165acef9a6796bd9127a8e1247bb0ed" 14169 - integrity sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg== 14105 + lightningcss-linux-arm64-musl@1.30.1: 14106 + version "1.30.1" 14107 + resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz#f2e4b53f42892feeef8f620cbb889f7c064a7dfe" 14108 + integrity sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ== 14170 14109 14171 - lightningcss-linux-x64-gnu@1.27.0: 14172 - version "1.27.0" 14173 - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.27.0.tgz#714221212ad184ddfe974bbb7dbe9300dfde4bc0" 14174 - integrity sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A== 14110 + lightningcss-linux-x64-gnu@1.30.1: 14111 + version "1.30.1" 14112 + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz#2fc7096224bc000ebb97eea94aea248c5b0eb157" 14113 + integrity sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw== 14175 14114 14176 - lightningcss-linux-x64-musl@1.27.0: 14177 - version "1.27.0" 14178 - resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.27.0.tgz#247958daf622a030a6dc2285afa16b7184bdf21e" 14179 - integrity sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA== 14115 + lightningcss-linux-x64-musl@1.30.1: 14116 + version "1.30.1" 14117 + resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz#66dca2b159fd819ea832c44895d07e5b31d75f26" 14118 + integrity sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ== 14180 14119 14181 - lightningcss-win32-arm64-msvc@1.27.0: 14182 - version "1.27.0" 14183 - resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.27.0.tgz#64cfe473c264ef5dc275a4d57a516d77fcac6bc9" 14184 - integrity sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ== 14120 + lightningcss-win32-arm64-msvc@1.30.1: 14121 + version "1.30.1" 14122 + resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz#7d8110a19d7c2d22bfdf2f2bb8be68e7d1b69039" 14123 + integrity sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA== 14185 14124 14186 - lightningcss-win32-x64-msvc@1.27.0: 14187 - version "1.27.0" 14188 - resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.27.0.tgz#237d0dc87d9cdc9cf82536bcbc07426fa9f3f422" 14189 - integrity sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw== 14125 + lightningcss-win32-x64-msvc@1.30.1: 14126 + version "1.30.1" 14127 + resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz#fd7dd008ea98494b85d24b4bea016793f2e0e352" 14128 + integrity sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg== 14190 14129 14191 - lightningcss@~1.27.0: 14192 - version "1.27.0" 14193 - resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.27.0.tgz#d4608e63044343836dd9769f6c8b5d607867649a" 14194 - integrity sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ== 14130 + lightningcss@^1.30.1: 14131 + version "1.30.1" 14132 + resolved "https://registry.yarnpkg.com/lightningcss/-/lightningcss-1.30.1.tgz#78e979c2d595bfcb90d2a8c0eb632fe6c5bfed5d" 14133 + integrity sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg== 14195 14134 dependencies: 14196 - detect-libc "^1.0.3" 14135 + detect-libc "^2.0.3" 14197 14136 optionalDependencies: 14198 - lightningcss-darwin-arm64 "1.27.0" 14199 - lightningcss-darwin-x64 "1.27.0" 14200 - lightningcss-freebsd-x64 "1.27.0" 14201 - lightningcss-linux-arm-gnueabihf "1.27.0" 14202 - lightningcss-linux-arm64-gnu "1.27.0" 14203 - lightningcss-linux-arm64-musl "1.27.0" 14204 - lightningcss-linux-x64-gnu "1.27.0" 14205 - lightningcss-linux-x64-musl "1.27.0" 14206 - lightningcss-win32-arm64-msvc "1.27.0" 14207 - lightningcss-win32-x64-msvc "1.27.0" 14137 + lightningcss-darwin-arm64 "1.30.1" 14138 + lightningcss-darwin-x64 "1.30.1" 14139 + lightningcss-freebsd-x64 "1.30.1" 14140 + lightningcss-linux-arm-gnueabihf "1.30.1" 14141 + lightningcss-linux-arm64-gnu "1.30.1" 14142 + lightningcss-linux-arm64-musl "1.30.1" 14143 + lightningcss-linux-x64-gnu "1.30.1" 14144 + lightningcss-linux-x64-musl "1.30.1" 14145 + lightningcss-win32-arm64-msvc "1.30.1" 14146 + lightningcss-win32-x64-msvc "1.30.1" 14208 14147 14209 14148 lilconfig@2.1.0, lilconfig@^2.0.3: 14210 14149 version "2.1.0" ··· 14577 14516 resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 14578 14517 integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== 14579 14518 14580 - metro-babel-transformer@0.82.2: 14581 - version "0.82.2" 14582 - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.82.2.tgz#acb89a300a070b685cadbfdc3aa3f809b52de9fc" 14583 - integrity sha512-c2gesA7/B4dovPmmYC2HziNXb4XFG3YkQ9FjEzwRnR6KH2hT7nJn6mkcri1h85r3sMttpnmoBuZ8WDz980Zhlw== 14519 + metro-babel-transformer@0.83.1: 14520 + version "0.83.1" 14521 + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.83.1.tgz#77e548b4b8f087fe30ffcd112826b371f83b597d" 14522 + integrity sha512-r3xAD3964E8dwDBaZNSO2aIIvWXjIK80uO2xo0/pi3WI8XWT9h5SCjtGWtMtE5PRWw+t20TN0q1WMRsjvhC1rQ== 14523 + dependencies: 14524 + "@babel/core" "^7.25.2" 14525 + flow-enums-runtime "^0.0.6" 14526 + hermes-parser "0.29.1" 14527 + nullthrows "^1.1.1" 14528 + 14529 + metro-babel-transformer@0.83.2: 14530 + version "0.83.2" 14531 + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.83.2.tgz#d3885f2a266f01e43f16bdcfb786b1d8f1598f56" 14532 + integrity sha512-rirY1QMFlA1uxH3ZiNauBninwTioOgwChnRdDcbB4tgRZ+bGX9DiXoh9QdpppiaVKXdJsII932OwWXGGV4+Nlw== 14584 14533 dependencies: 14585 14534 "@babel/core" "^7.25.2" 14586 14535 flow-enums-runtime "^0.0.6" 14587 - hermes-parser "0.28.1" 14536 + hermes-parser "0.32.0" 14588 14537 nullthrows "^1.1.1" 14589 14538 14590 - metro-cache-key@0.82.2: 14591 - version "0.82.2" 14592 - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.82.2.tgz#d1b73cd4849e9ed3984aeb2386e5b198f8f59fad" 14593 - integrity sha512-lfjC9zzSri+rS7lkoCh04LniFga8JQVUqSuscD9KraIm9zRzwIwvaMx8V6Oogiezs+FAJUOSnVNhHcHc9l8H2Q== 14539 + metro-cache-key@0.83.1: 14540 + version "0.83.1" 14541 + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.83.1.tgz#18c59c7c6944cfa0856d57ff5ebbdc18dec12687" 14542 + integrity sha512-ZUs+GD5CNeDLxx5UUWmfg26IL+Dnbryd+TLqTlZnDEgehkIa11kUSvgF92OFfJhONeXzV4rZDRGNXoo6JT+8Gg== 14543 + dependencies: 14544 + flow-enums-runtime "^0.0.6" 14545 + 14546 + metro-cache-key@0.83.2: 14547 + version "0.83.2" 14548 + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.83.2.tgz#b34427fdafe551d567ac312f8a3c7e334a20f796" 14549 + integrity sha512-3EMG/GkGKYoTaf5RqguGLSWRqGTwO7NQ0qXKmNBjr0y6qD9s3VBXYlwB+MszGtmOKsqE9q3FPrE5Nd9Ipv7rZw== 14550 + dependencies: 14551 + flow-enums-runtime "^0.0.6" 14552 + 14553 + metro-cache@0.83.1: 14554 + version "0.83.1" 14555 + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.83.1.tgz#bc1319d44934d0935ec4eaf10d28b90ec6ce0aac" 14556 + integrity sha512-7N/Ad1PHa1YMWDNiyynTPq34Op2qIE68NWryGEQ4TSE3Zy6a8GpsYnEEZE4Qi6aHgsE+yZHKkRczeBgxhnFIxQ== 14594 14557 dependencies: 14558 + exponential-backoff "^3.1.1" 14595 14559 flow-enums-runtime "^0.0.6" 14560 + https-proxy-agent "^7.0.5" 14561 + metro-core "0.83.1" 14596 14562 14597 - metro-cache@0.82.2: 14598 - version "0.82.2" 14599 - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.82.2.tgz#2d5427164a8bf9f15c6fb96484666cd1187eda6b" 14600 - integrity sha512-MxY4xvPKuE68NYpKJjH8YvVVugDL2QcuTracHsV5/30ZIaRr0v1QuAX5vt45OCQDQQWeh1rDv3E4JB6AbIvnZQ== 14563 + metro-cache@0.83.2: 14564 + version "0.83.2" 14565 + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.83.2.tgz#d647d9253312801b19c4930be586c60976244540" 14566 + integrity sha512-Z43IodutUZeIS7OTH+yQFjc59QlFJ6s5OvM8p2AP9alr0+F8UKr8ADzFzoGKoHefZSKGa4bJx7MZJLF6GwPDHQ== 14601 14567 dependencies: 14602 14568 exponential-backoff "^3.1.1" 14603 14569 flow-enums-runtime "^0.0.6" 14604 14570 https-proxy-agent "^7.0.5" 14605 - metro-core "0.82.2" 14571 + metro-core "0.83.2" 14606 14572 14607 - metro-config@0.82.2, metro-config@^0.82.0: 14608 - version "0.82.2" 14609 - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.82.2.tgz#0766d13f9707d60367a824f506fdd5144f7cb53b" 14610 - integrity sha512-0dG3qCFLoE3ddNexAxSLJ7FbGjEbwUjDNOgYeCLoPSkKB01k5itvvr2HFfl2HisOCfLcpjpVzF5NtB/O71lxfA== 14573 + metro-config@0.83.1: 14574 + version "0.83.1" 14575 + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.83.1.tgz#28db7ae553883802c30b1eb374817ad1e686e7b4" 14576 + integrity sha512-HJhpZx3wyOkux/jeF1o7akFJzZFdbn6Zf7UQqWrvp7gqFqNulQ8Mju09raBgPmmSxKDl4LbbNeigkX0/nKY1QA== 14611 14577 dependencies: 14612 14578 connect "^3.6.5" 14613 14579 cosmiconfig "^5.0.5" 14614 14580 flow-enums-runtime "^0.0.6" 14615 14581 jest-validate "^29.7.0" 14616 - metro "0.82.2" 14617 - metro-cache "0.82.2" 14618 - metro-core "0.82.2" 14619 - metro-runtime "0.82.2" 14582 + metro "0.83.1" 14583 + metro-cache "0.83.1" 14584 + metro-core "0.83.1" 14585 + metro-runtime "0.83.1" 14586 + 14587 + metro-config@0.83.2, metro-config@^0.83.1: 14588 + version "0.83.2" 14589 + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.83.2.tgz#5ab5eba754c7affd0f3e44be98543aea37c9fab7" 14590 + integrity sha512-1FjCcdBe3e3D08gSSiU9u3Vtxd7alGH3x/DNFqWDFf5NouX4kLgbVloDDClr1UrLz62c0fHh2Vfr9ecmrOZp+g== 14591 + dependencies: 14592 + connect "^3.6.5" 14593 + flow-enums-runtime "^0.0.6" 14594 + jest-validate "^29.7.0" 14595 + metro "0.83.2" 14596 + metro-cache "0.83.2" 14597 + metro-core "0.83.2" 14598 + metro-runtime "0.83.2" 14599 + yaml "^2.6.1" 14620 14600 14621 - metro-core@0.82.2, metro-core@^0.82.0: 14622 - version "0.82.2" 14623 - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.82.2.tgz#8c95128a247848f750835c184c29ca23905892ab" 14624 - integrity sha512-d2XMkWbRh6PdPV1OZ8OyUyDWrtEbQ1m5ASpKtemLPbujfoE4RlwFZdl4ljfBNVVZ1s0z7tgsSFwKMyTeXgjtSg== 14601 + metro-core@0.83.1: 14602 + version "0.83.1" 14603 + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.83.1.tgz#fbedf8c6cfdcc58eaec7011718f1041ac9562cff" 14604 + integrity sha512-uVL1eAJcMFd2o2Q7dsbpg8COaxjZBBGaXqO2OHnivpCdfanraVL8dPmY6It9ZeqWLOihUKZ2yHW4b6soVCzH/Q== 14625 14605 dependencies: 14626 14606 flow-enums-runtime "^0.0.6" 14627 14607 lodash.throttle "^4.1.1" 14628 - metro-resolver "0.82.2" 14608 + metro-resolver "0.83.1" 14629 14609 14630 - metro-file-map@0.82.2: 14631 - version "0.82.2" 14632 - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.82.2.tgz#acb98d73701373e12f1294f1998b983749e4c7cb" 14633 - integrity sha512-pax0WA80eRH096YO0kwox+ZD5im3V0Vswr2x1YqdMcZVWlr6uwXgQdo9q+mpcvJ1k77J+hmY5HIg71bqrUptVg== 14610 + metro-core@0.83.2, metro-core@^0.83.1: 14611 + version "0.83.2" 14612 + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.83.2.tgz#8b6292482c8cd88bae5f56c5f4903ef7ee292631" 14613 + integrity sha512-8DRb0O82Br0IW77cNgKMLYWUkx48lWxUkvNUxVISyMkcNwE/9ywf1MYQUE88HaKwSrqne6kFgCSA/UWZoUT0Iw== 14614 + dependencies: 14615 + flow-enums-runtime "^0.0.6" 14616 + lodash.throttle "^4.1.1" 14617 + metro-resolver "0.83.2" 14618 + 14619 + metro-file-map@0.83.1: 14620 + version "0.83.1" 14621 + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.83.1.tgz#9c9a295edd0eb234f23b44952786f0e95c3b2d8d" 14622 + integrity sha512-Yu429lnexKl44PttKw3nhqgmpBR+6UQ/tRaYcxPeEShtcza9DWakCn7cjqDTQZtWR2A8xSNv139izJMyQ4CG+w== 14634 14623 dependencies: 14635 14624 debug "^4.4.0" 14636 14625 fb-watchman "^2.0.0" ··· 14642 14631 nullthrows "^1.1.1" 14643 14632 walker "^1.0.7" 14644 14633 14645 - metro-minify-terser@0.82.2: 14646 - version "0.82.2" 14647 - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.82.2.tgz#9afd1d486357065edfd01b5e9a9f1e18a93018e9" 14648 - integrity sha512-+nveaEdQUvsoi0OSr4Cp+btevZsg2DKsu8kUJsvyLIcRRFPUw9CwzF3V2cA5b55DY5LcIJyAcZf4D9ARKfoilQ== 14634 + metro-file-map@0.83.2: 14635 + version "0.83.2" 14636 + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.83.2.tgz#8f943d608f27216fde8dd91787294b5a9409752e" 14637 + integrity sha512-cMSWnEqZrp/dzZIEd7DEDdk72PXz6w5NOKriJoDN9p1TDQ5nAYrY2lHi8d6mwbcGLoSlWmpPyny9HZYFfPWcGQ== 14638 + dependencies: 14639 + debug "^4.4.0" 14640 + fb-watchman "^2.0.0" 14641 + flow-enums-runtime "^0.0.6" 14642 + graceful-fs "^4.2.4" 14643 + invariant "^2.2.4" 14644 + jest-worker "^29.7.0" 14645 + micromatch "^4.0.4" 14646 + nullthrows "^1.1.1" 14647 + walker "^1.0.7" 14648 + 14649 + metro-minify-terser@0.83.1: 14650 + version "0.83.1" 14651 + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.83.1.tgz#227f534876fb8eb089b64d7bff8cf77d1817c8f4" 14652 + integrity sha512-kmooOxXLvKVxkh80IVSYO4weBdJDhCpg5NSPkjzzAnPJP43u6+usGXobkTWxxrAlq900bhzqKek4pBsUchlX6A== 14653 + dependencies: 14654 + flow-enums-runtime "^0.0.6" 14655 + terser "^5.15.0" 14656 + 14657 + metro-minify-terser@0.83.2: 14658 + version "0.83.2" 14659 + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.83.2.tgz#17ea8aef987970f8505ed8f890ab00c47c419608" 14660 + integrity sha512-zvIxnh7U0JQ7vT4quasKsijId3dOAWgq+ip2jF/8TMrPUqQabGrs04L2dd0haQJ+PA+d4VvK/bPOY8X/vL2PWw== 14649 14661 dependencies: 14650 14662 flow-enums-runtime "^0.0.6" 14651 14663 terser "^5.15.0" ··· 14695 14707 babel-plugin-transform-flow-enums "^0.0.2" 14696 14708 react-refresh "^0.4.0" 14697 14709 14698 - metro-resolver@0.82.2: 14699 - version "0.82.2" 14700 - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.82.2.tgz#994ebdbf23970fc460c50e47d39bf74db3b87e57" 14701 - integrity sha512-Who2hGzq2aCGSsBaQBU0L3SADiy/kj/gv0coujNWziRY4SKq7ECKzWqtVk1JlEF7IGXDDRDxEgFuLmPV6mZGVQ== 14710 + metro-resolver@0.83.1: 14711 + version "0.83.1" 14712 + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.83.1.tgz#2e14c8b0762883f3568f41cde08f4a48893021ce" 14713 + integrity sha512-t8j46kiILAqqFS5RNa+xpQyVjULxRxlvMidqUswPEk5nQVNdlJslqizDm/Et3v/JKwOtQGkYAQCHxP1zGStR/g== 14714 + dependencies: 14715 + flow-enums-runtime "^0.0.6" 14716 + 14717 + metro-resolver@0.83.2: 14718 + version "0.83.2" 14719 + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.83.2.tgz#d4a40a602615baacfb94d8a773e8b93eaac70d0f" 14720 + integrity sha512-Yf5mjyuiRE/Y+KvqfsZxrbHDA15NZxyfg8pIk0qg47LfAJhpMVEX+36e6ZRBq7KVBqy6VDX5Sq55iHGM4xSm7Q== 14721 + dependencies: 14722 + flow-enums-runtime "^0.0.6" 14723 + 14724 + metro-runtime@0.83.1: 14725 + version "0.83.1" 14726 + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.83.1.tgz#5835c57c20cb89db45c48abb4bdae0246529a21b" 14727 + integrity sha512-3Ag8ZS4IwafL/JUKlaeM6/CbkooY+WcVeqdNlBG0m4S0Qz0om3rdFdy1y6fYBpl6AwXJwWeMuXrvZdMuByTcRA== 14702 14728 dependencies: 14729 + "@babel/runtime" "^7.25.0" 14703 14730 flow-enums-runtime "^0.0.6" 14704 14731 14705 - metro-runtime@0.82.2, metro-runtime@^0.82.0: 14706 - version "0.82.2" 14707 - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.82.2.tgz#4a86e48cdb124dd5f53fa42befadfd0838c58fdb" 14708 - integrity sha512-gEcb2AfDs3GRs2SFjtEmG0k61B/cZEVCbh6cSmkjJpyHr+VRjw77MnDpX9AUcJYa4bCT63E7IEySOMM0Z8p87g== 14732 + metro-runtime@0.83.2, metro-runtime@^0.83.1: 14733 + version "0.83.2" 14734 + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.83.2.tgz#77c9715483fd3d449407435c1c160f7410c588d7" 14735 + integrity sha512-nnsPtgRvFbNKwemqs0FuyFDzXLl+ezuFsUXDbX8o0SXOfsOPijqiQrf3kuafO1Zx1aUWf4NOrKJMAQP5EEHg9A== 14709 14736 dependencies: 14710 14737 "@babel/runtime" "^7.25.0" 14711 14738 flow-enums-runtime "^0.0.6" 14712 14739 14713 - metro-source-map@0.82.2, metro-source-map@^0.82.0: 14714 - version "0.82.2" 14715 - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.82.2.tgz#19c1cb06e462a9f19ff76dfc3827c2561cbebf63" 14716 - integrity sha512-S26xPdz1/EeAY0HqaPXfny8CeiY0Dvl4sBLQiXGXhoES4gUDAuMhA1tioKrv5F+x68Sod8cp8Js6EGqbMXeqMA== 14740 + metro-source-map@0.83.1: 14741 + version "0.83.1" 14742 + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.83.1.tgz#afaeccad77f543eebfe22ecc1d94c0b58c721946" 14743 + integrity sha512-De7Vbeo96fFZ2cqmI0fWwVJbtHIwPZv++LYlWSwzTiCzxBDJORncN0LcT48Vi2UlQLzXJg+/CuTAcy7NBVh69A== 14744 + dependencies: 14745 + "@babel/traverse" "^7.25.3" 14746 + "@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3" 14747 + "@babel/types" "^7.25.2" 14748 + flow-enums-runtime "^0.0.6" 14749 + invariant "^2.2.4" 14750 + metro-symbolicate "0.83.1" 14751 + nullthrows "^1.1.1" 14752 + ob1 "0.83.1" 14753 + source-map "^0.5.6" 14754 + vlq "^1.0.0" 14755 + 14756 + metro-source-map@0.83.2, metro-source-map@^0.83.1: 14757 + version "0.83.2" 14758 + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.83.2.tgz#5688eeb3fc85a1ca0f5f5efede2257a872e2b9fe" 14759 + integrity sha512-5FL/6BSQvshIKjXOennt9upFngq2lFvDakZn5LfauIVq8+L4sxXewIlSTcxAtzbtjAIaXeOSVMtCJ5DdfCt9AA== 14717 14760 dependencies: 14718 14761 "@babel/traverse" "^7.25.3" 14719 14762 "@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3" 14720 14763 "@babel/types" "^7.25.2" 14721 14764 flow-enums-runtime "^0.0.6" 14722 14765 invariant "^2.2.4" 14723 - metro-symbolicate "0.82.2" 14766 + metro-symbolicate "0.83.2" 14724 14767 nullthrows "^1.1.1" 14725 - ob1 "0.82.2" 14768 + ob1 "0.83.2" 14726 14769 source-map "^0.5.6" 14727 14770 vlq "^1.0.0" 14728 14771 14729 - metro-symbolicate@0.82.2: 14730 - version "0.82.2" 14731 - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.82.2.tgz#1e16d60fb9b96e7067527cfb2257f2b46406a4f6" 14732 - integrity sha512-iheanMnOMned6gjt6sKSfU5AoNyV6pJyQAWydwuHcjhGpa/kiAM0kKmw23qHejELK89Yw8HDZ3Fd/5l1jxpFVA== 14772 + metro-symbolicate@0.83.1: 14773 + version "0.83.1" 14774 + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.83.1.tgz#c03edc8e7c0e8b44821f2a807c0a8342aaeb77eb" 14775 + integrity sha512-wPxYkONlq/Sv8Ji7vHEx5OzFouXAMQJjpcPW41ySKMLP/Ir18SsiJK2h4YkdKpYrTS1+0xf8oqF6nxCsT3uWtg== 14733 14776 dependencies: 14734 14777 flow-enums-runtime "^0.0.6" 14735 14778 invariant "^2.2.4" 14736 - metro-source-map "0.82.2" 14779 + metro-source-map "0.83.1" 14737 14780 nullthrows "^1.1.1" 14738 14781 source-map "^0.5.6" 14739 14782 vlq "^1.0.0" 14740 14783 14741 - metro-transform-plugins@0.82.2: 14742 - version "0.82.2" 14743 - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.82.2.tgz#2948a012ef40b36ad272fc986920fd7e9b552be4" 14744 - integrity sha512-kEveuEVxghTEXkDiyY0MT5QRqei092KJG46nduo0VghFgI6QFodbAjFit1ULyWsn2VOTGSUDJ3VgHBMy7MaccA== 14784 + metro-symbolicate@0.83.2: 14785 + version "0.83.2" 14786 + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.83.2.tgz#63a5f31cdb6db17371a00d259890643d84a75549" 14787 + integrity sha512-KoU9BLwxxED6n33KYuQQuc5bXkIxF3fSwlc3ouxrrdLWwhu64muYZNQrukkWzhVKRNFIXW7X2iM8JXpi2heIPw== 14788 + dependencies: 14789 + flow-enums-runtime "^0.0.6" 14790 + invariant "^2.2.4" 14791 + metro-source-map "0.83.2" 14792 + nullthrows "^1.1.1" 14793 + source-map "^0.5.6" 14794 + vlq "^1.0.0" 14795 + 14796 + metro-transform-plugins@0.83.1: 14797 + version "0.83.1" 14798 + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.83.1.tgz#879b8ff34c3720d387889da60c03923394457988" 14799 + integrity sha512-1Y+I8oozXwhuS0qwC+ezaHXBf0jXW4oeYn4X39XWbZt9X2HfjodqY9bH9r6RUTsoiK7S4j8Ni2C91bUC+sktJQ== 14745 14800 dependencies: 14746 14801 "@babel/core" "^7.25.2" 14747 14802 "@babel/generator" "^7.25.0" ··· 14750 14805 flow-enums-runtime "^0.0.6" 14751 14806 nullthrows "^1.1.1" 14752 14807 14753 - metro-transform-worker@0.82.2: 14754 - version "0.82.2" 14755 - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.82.2.tgz#4eb09c95c2d9cda1cf0e8e201bd899c0da5b0a0c" 14756 - integrity sha512-MJQNz6cGjqewCRqFmPrsHu6Oe93v2B6zgHkrNxQ6XdPMJz5VHD33m8q+8UsNJOH8wUMoRu5JmYtuUTIVIFxh2A== 14808 + metro-transform-plugins@0.83.2: 14809 + version "0.83.2" 14810 + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.83.2.tgz#c4353147212cad1c76dcea8fd93c7f0c7b09b3a4" 14811 + integrity sha512-5WlW25WKPkiJk2yA9d8bMuZrgW7vfA4f4MBb9ZeHbTB3eIAoNN8vS8NENgG/X/90vpTB06X66OBvxhT3nHwP6A== 14812 + dependencies: 14813 + "@babel/core" "^7.25.2" 14814 + "@babel/generator" "^7.25.0" 14815 + "@babel/template" "^7.25.0" 14816 + "@babel/traverse" "^7.25.3" 14817 + flow-enums-runtime "^0.0.6" 14818 + nullthrows "^1.1.1" 14819 + 14820 + metro-transform-worker@0.83.1: 14821 + version "0.83.1" 14822 + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.83.1.tgz#47aa09f085fe4f859215506de886f1cb7deb300a" 14823 + integrity sha512-owCrhPyUxdLgXEEEAL2b14GWTPZ2zYuab1VQXcfEy0sJE71iciD7fuMcrngoufh7e7UHDZ56q4ktXg8wgiYA1Q== 14824 + dependencies: 14825 + "@babel/core" "^7.25.2" 14826 + "@babel/generator" "^7.25.0" 14827 + "@babel/parser" "^7.25.3" 14828 + "@babel/types" "^7.25.2" 14829 + flow-enums-runtime "^0.0.6" 14830 + metro "0.83.1" 14831 + metro-babel-transformer "0.83.1" 14832 + metro-cache "0.83.1" 14833 + metro-cache-key "0.83.1" 14834 + metro-minify-terser "0.83.1" 14835 + metro-source-map "0.83.1" 14836 + metro-transform-plugins "0.83.1" 14837 + nullthrows "^1.1.1" 14838 + 14839 + metro-transform-worker@0.83.2: 14840 + version "0.83.2" 14841 + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.83.2.tgz#f97367b6384be87ea216a97072810705c19c3775" 14842 + integrity sha512-G5DsIg+cMZ2KNfrdLnWMvtppb3+Rp1GMyj7Bvd9GgYc/8gRmvq1XVEF9XuO87Shhb03kFhGqMTgZerz3hZ1v4Q== 14757 14843 dependencies: 14758 14844 "@babel/core" "^7.25.2" 14759 14845 "@babel/generator" "^7.25.0" 14760 14846 "@babel/parser" "^7.25.3" 14761 14847 "@babel/types" "^7.25.2" 14762 14848 flow-enums-runtime "^0.0.6" 14763 - metro "0.82.2" 14764 - metro-babel-transformer "0.82.2" 14765 - metro-cache "0.82.2" 14766 - metro-cache-key "0.82.2" 14767 - metro-minify-terser "0.82.2" 14768 - metro-source-map "0.82.2" 14769 - metro-transform-plugins "0.82.2" 14849 + metro "0.83.2" 14850 + metro-babel-transformer "0.83.2" 14851 + metro-cache "0.83.2" 14852 + metro-cache-key "0.83.2" 14853 + metro-minify-terser "0.83.2" 14854 + metro-source-map "0.83.2" 14855 + metro-transform-plugins "0.83.2" 14770 14856 nullthrows "^1.1.1" 14771 14857 14772 - metro@0.82.2, metro@^0.82.0: 14773 - version "0.82.2" 14774 - resolved "https://registry.yarnpkg.com/metro/-/metro-0.82.2.tgz#3fdf2eb2558d930ba9f156967e861dee8b026081" 14775 - integrity sha512-hOBd4O4Cn/tLf3jz7IjSgD/A66MqMzgZuyF1I/pmNwYcY3q3j2vbh7Fa09KIbvUq5Yz7BewU356XboaEtEXPgA== 14858 + metro@0.83.1: 14859 + version "0.83.1" 14860 + resolved "https://registry.yarnpkg.com/metro/-/metro-0.83.1.tgz#9f9c138793288cbf9fb26aa84e0693df85607875" 14861 + integrity sha512-UGKepmTxoGD4HkQV8YWvpvwef7fUujNtTgG4Ygf7m/M0qjvb9VuDmAsEU+UdriRX7F61pnVK/opz89hjKlYTXA== 14776 14862 dependencies: 14777 14863 "@babel/code-frame" "^7.24.7" 14778 14864 "@babel/core" "^7.25.2" ··· 14789 14875 error-stack-parser "^2.0.6" 14790 14876 flow-enums-runtime "^0.0.6" 14791 14877 graceful-fs "^4.2.4" 14792 - hermes-parser "0.28.1" 14878 + hermes-parser "0.29.1" 14793 14879 image-size "^1.0.2" 14794 14880 invariant "^2.2.4" 14795 14881 jest-worker "^29.7.0" 14796 14882 jsc-safe-url "^0.2.2" 14797 14883 lodash.throttle "^4.1.1" 14798 - metro-babel-transformer "0.82.2" 14799 - metro-cache "0.82.2" 14800 - metro-cache-key "0.82.2" 14801 - metro-config "0.82.2" 14802 - metro-core "0.82.2" 14803 - metro-file-map "0.82.2" 14804 - metro-resolver "0.82.2" 14805 - metro-runtime "0.82.2" 14806 - metro-source-map "0.82.2" 14807 - metro-symbolicate "0.82.2" 14808 - metro-transform-plugins "0.82.2" 14809 - metro-transform-worker "0.82.2" 14884 + metro-babel-transformer "0.83.1" 14885 + metro-cache "0.83.1" 14886 + metro-cache-key "0.83.1" 14887 + metro-config "0.83.1" 14888 + metro-core "0.83.1" 14889 + metro-file-map "0.83.1" 14890 + metro-resolver "0.83.1" 14891 + metro-runtime "0.83.1" 14892 + metro-source-map "0.83.1" 14893 + metro-symbolicate "0.83.1" 14894 + metro-transform-plugins "0.83.1" 14895 + metro-transform-worker "0.83.1" 14896 + mime-types "^2.1.27" 14897 + nullthrows "^1.1.1" 14898 + serialize-error "^2.1.0" 14899 + source-map "^0.5.6" 14900 + throat "^5.0.0" 14901 + ws "^7.5.10" 14902 + yargs "^17.6.2" 14903 + 14904 + metro@0.83.2, metro@^0.83.1: 14905 + version "0.83.2" 14906 + resolved "https://registry.yarnpkg.com/metro/-/metro-0.83.2.tgz#a56d31a604819951c8b9cf19d570897341e29b07" 14907 + integrity sha512-HQgs9H1FyVbRptNSMy/ImchTTE5vS2MSqLoOo7hbDoBq6hPPZokwJvBMwrYSxdjQZmLXz2JFZtdvS+ZfgTc9yw== 14908 + dependencies: 14909 + "@babel/code-frame" "^7.24.7" 14910 + "@babel/core" "^7.25.2" 14911 + "@babel/generator" "^7.25.0" 14912 + "@babel/parser" "^7.25.3" 14913 + "@babel/template" "^7.25.0" 14914 + "@babel/traverse" "^7.25.3" 14915 + "@babel/types" "^7.25.2" 14916 + accepts "^1.3.7" 14917 + chalk "^4.0.0" 14918 + ci-info "^2.0.0" 14919 + connect "^3.6.5" 14920 + debug "^4.4.0" 14921 + error-stack-parser "^2.0.6" 14922 + flow-enums-runtime "^0.0.6" 14923 + graceful-fs "^4.2.4" 14924 + hermes-parser "0.32.0" 14925 + image-size "^1.0.2" 14926 + invariant "^2.2.4" 14927 + jest-worker "^29.7.0" 14928 + jsc-safe-url "^0.2.2" 14929 + lodash.throttle "^4.1.1" 14930 + metro-babel-transformer "0.83.2" 14931 + metro-cache "0.83.2" 14932 + metro-cache-key "0.83.2" 14933 + metro-config "0.83.2" 14934 + metro-core "0.83.2" 14935 + metro-file-map "0.83.2" 14936 + metro-resolver "0.83.2" 14937 + metro-runtime "0.83.2" 14938 + metro-source-map "0.83.2" 14939 + metro-symbolicate "0.83.2" 14940 + metro-transform-plugins "0.83.2" 14941 + metro-transform-worker "0.83.2" 14810 14942 mime-types "^2.1.27" 14811 14943 nullthrows "^1.1.1" 14812 14944 serialize-error "^2.1.0" ··· 15133 15265 resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" 15134 15266 integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== 15135 15267 15268 + node-releases@^2.0.21: 15269 + version "2.0.21" 15270 + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.21.tgz#f59b018bc0048044be2d4c4c04e4c8b18160894c" 15271 + integrity sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw== 15272 + 15136 15273 nodemailer-html-to-text@^3.2.0: 15137 15274 version "3.2.0" 15138 15275 resolved "https://registry.yarnpkg.com/nodemailer-html-to-text/-/nodemailer-html-to-text-3.2.0.tgz#91b959491fef8f7d91796047abb728aa86d4a12b" ··· 15201 15338 resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" 15202 15339 integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== 15203 15340 15204 - ob1@0.82.2: 15205 - version "0.82.2" 15206 - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.82.2.tgz#ca2478f9cd904a4a91381fbfa729996c40ed567b" 15207 - integrity sha512-sfUaYpjkAdHgu8cXLAyWXO98jW1EUOStTDNslfC9eb3tBLExe67PRqh09J0xdD6AlFKHFGTvXPbuHGvlrZNJNA== 15341 + ob1@0.83.1: 15342 + version "0.83.1" 15343 + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.83.1.tgz#32f5c9e3f8cc5a6ecb1cb344e87a6e39a93f848a" 15344 + integrity sha512-ngwqewtdUzFyycomdbdIhFLjePPSOt1awKMUXQ0L7iLHgWEPF3DsCerblzjzfAUHaXuvE9ccJymWQ/4PNNqvnQ== 15345 + dependencies: 15346 + flow-enums-runtime "^0.0.6" 15347 + 15348 + ob1@0.83.2: 15349 + version "0.83.2" 15350 + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.83.2.tgz#23c2e58b7d542fb01e627049710334d14c287cf8" 15351 + integrity sha512-XlK3w4M+dwd1g1gvHzVbxiXEbUllRONEgcF2uEO0zm4nxa0eKlh41c6N65q1xbiDOeKKda1tvNOAD33fNjyvCg== 15208 15352 dependencies: 15209 15353 flow-enums-runtime "^0.0.6" 15210 15354 ··· 15791 15935 resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" 15792 15936 integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== 15793 15937 15794 - picocolors@^1.1.0: 15938 + picocolors@^1.1.0, picocolors@^1.1.1: 15795 15939 version "1.1.1" 15796 15940 resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" 15797 15941 integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== ··· 16653 16797 resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" 16654 16798 integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== 16655 16799 16656 - radix-ui@^1.2.0: 16657 - version "1.2.0" 16658 - resolved "https://registry.yarnpkg.com/radix-ui/-/radix-ui-1.2.0.tgz#076f3a01d1463e048b27c8c3b53f42625f342e3e" 16659 - integrity sha512-05auM88p3yNwAarx3JQGnRHbtzDNATbMx6/Qkr2gXg5QNLPUjdeduJvlhhVzlGxfUMBnwzYmydUIzAdrOz3J5w== 16800 + radix-ui@^1.4.3: 16801 + version "1.4.3" 16802 + resolved "https://registry.yarnpkg.com/radix-ui/-/radix-ui-1.4.3.tgz#17712d9e26ee61fdf4cd3969f4e16a794419508b" 16803 + integrity sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA== 16660 16804 dependencies: 16661 - "@radix-ui/primitive" "1.1.2" 16662 - "@radix-ui/react-accessible-icon" "1.1.3" 16663 - "@radix-ui/react-accordion" "1.2.4" 16664 - "@radix-ui/react-alert-dialog" "1.1.7" 16665 - "@radix-ui/react-aspect-ratio" "1.1.3" 16666 - "@radix-ui/react-avatar" "1.1.4" 16667 - "@radix-ui/react-checkbox" "1.1.5" 16668 - "@radix-ui/react-collapsible" "1.1.4" 16669 - "@radix-ui/react-collection" "1.1.3" 16805 + "@radix-ui/primitive" "1.1.3" 16806 + "@radix-ui/react-accessible-icon" "1.1.7" 16807 + "@radix-ui/react-accordion" "1.2.12" 16808 + "@radix-ui/react-alert-dialog" "1.1.15" 16809 + "@radix-ui/react-arrow" "1.1.7" 16810 + "@radix-ui/react-aspect-ratio" "1.1.7" 16811 + "@radix-ui/react-avatar" "1.1.10" 16812 + "@radix-ui/react-checkbox" "1.3.3" 16813 + "@radix-ui/react-collapsible" "1.1.12" 16814 + "@radix-ui/react-collection" "1.1.7" 16670 16815 "@radix-ui/react-compose-refs" "1.1.2" 16671 16816 "@radix-ui/react-context" "1.1.2" 16672 - "@radix-ui/react-context-menu" "2.2.7" 16673 - "@radix-ui/react-dialog" "1.1.7" 16817 + "@radix-ui/react-context-menu" "2.2.16" 16818 + "@radix-ui/react-dialog" "1.1.15" 16674 16819 "@radix-ui/react-direction" "1.1.1" 16675 - "@radix-ui/react-dismissable-layer" "1.1.6" 16676 - "@radix-ui/react-dropdown-menu" "2.1.7" 16677 - "@radix-ui/react-focus-guards" "1.1.2" 16678 - "@radix-ui/react-focus-scope" "1.1.3" 16679 - "@radix-ui/react-form" "0.1.3" 16680 - "@radix-ui/react-hover-card" "1.1.7" 16681 - "@radix-ui/react-label" "2.1.3" 16682 - "@radix-ui/react-menu" "2.1.7" 16683 - "@radix-ui/react-menubar" "1.1.7" 16684 - "@radix-ui/react-navigation-menu" "1.2.6" 16685 - "@radix-ui/react-popover" "1.1.7" 16686 - "@radix-ui/react-popper" "1.2.3" 16687 - "@radix-ui/react-portal" "1.1.5" 16688 - "@radix-ui/react-presence" "1.1.3" 16689 - "@radix-ui/react-primitive" "2.0.3" 16690 - "@radix-ui/react-progress" "1.1.3" 16691 - "@radix-ui/react-radio-group" "1.2.4" 16692 - "@radix-ui/react-roving-focus" "1.1.3" 16693 - "@radix-ui/react-scroll-area" "1.2.4" 16694 - "@radix-ui/react-select" "2.1.7" 16695 - "@radix-ui/react-separator" "1.1.3" 16696 - "@radix-ui/react-slider" "1.2.4" 16697 - "@radix-ui/react-slot" "1.2.0" 16698 - "@radix-ui/react-switch" "1.1.4" 16699 - "@radix-ui/react-tabs" "1.1.4" 16700 - "@radix-ui/react-toast" "1.2.7" 16701 - "@radix-ui/react-toggle" "1.1.3" 16702 - "@radix-ui/react-toggle-group" "1.1.3" 16703 - "@radix-ui/react-toolbar" "1.1.3" 16704 - "@radix-ui/react-tooltip" "1.2.0" 16820 + "@radix-ui/react-dismissable-layer" "1.1.11" 16821 + "@radix-ui/react-dropdown-menu" "2.1.16" 16822 + "@radix-ui/react-focus-guards" "1.1.3" 16823 + "@radix-ui/react-focus-scope" "1.1.7" 16824 + "@radix-ui/react-form" "0.1.8" 16825 + "@radix-ui/react-hover-card" "1.1.15" 16826 + "@radix-ui/react-label" "2.1.7" 16827 + "@radix-ui/react-menu" "2.1.16" 16828 + "@radix-ui/react-menubar" "1.1.16" 16829 + "@radix-ui/react-navigation-menu" "1.2.14" 16830 + "@radix-ui/react-one-time-password-field" "0.1.8" 16831 + "@radix-ui/react-password-toggle-field" "0.1.3" 16832 + "@radix-ui/react-popover" "1.1.15" 16833 + "@radix-ui/react-popper" "1.2.8" 16834 + "@radix-ui/react-portal" "1.1.9" 16835 + "@radix-ui/react-presence" "1.1.5" 16836 + "@radix-ui/react-primitive" "2.1.3" 16837 + "@radix-ui/react-progress" "1.1.7" 16838 + "@radix-ui/react-radio-group" "1.3.8" 16839 + "@radix-ui/react-roving-focus" "1.1.11" 16840 + "@radix-ui/react-scroll-area" "1.2.10" 16841 + "@radix-ui/react-select" "2.2.6" 16842 + "@radix-ui/react-separator" "1.1.7" 16843 + "@radix-ui/react-slider" "1.3.6" 16844 + "@radix-ui/react-slot" "1.2.3" 16845 + "@radix-ui/react-switch" "1.2.6" 16846 + "@radix-ui/react-tabs" "1.1.13" 16847 + "@radix-ui/react-toast" "1.2.15" 16848 + "@radix-ui/react-toggle" "1.1.10" 16849 + "@radix-ui/react-toggle-group" "1.1.11" 16850 + "@radix-ui/react-toolbar" "1.1.11" 16851 + "@radix-ui/react-tooltip" "1.2.8" 16705 16852 "@radix-ui/react-use-callback-ref" "1.1.1" 16706 - "@radix-ui/react-use-controllable-state" "1.1.1" 16853 + "@radix-ui/react-use-controllable-state" "1.2.2" 16854 + "@radix-ui/react-use-effect-event" "0.0.2" 16707 16855 "@radix-ui/react-use-escape-keydown" "1.1.1" 16856 + "@radix-ui/react-use-is-hydrated" "0.1.0" 16708 16857 "@radix-ui/react-use-layout-effect" "1.1.1" 16709 16858 "@radix-ui/react-use-size" "1.1.1" 16710 - "@radix-ui/react-visually-hidden" "1.1.3" 16859 + "@radix-ui/react-visually-hidden" "1.2.3" 16711 16860 16712 16861 ramda@^0.27.1: 16713 16862 version "0.27.2" ··· 16756 16905 resolved "https://registry.yarnpkg.com/react-compiler-runtime/-/react-compiler-runtime-19.1.0-rc.1.tgz#2535efd2e9fc9fc7d5ad47e970061dfbe38fb3f6" 16757 16906 integrity sha512-wCt6g+cRh8g32QT18/9blfQHywGjYu+4FlEc3CW1mx3pPxYzZZl1y+VtqxRgnKKBCFLIGUYxog4j4rs5YS86hw== 16758 16907 16759 - react-devtools-core@^6.1.1: 16760 - version "6.1.1" 16761 - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-6.1.1.tgz#7dac74773d039273134c360f8b65cf4f6c795c49" 16762 - integrity sha512-TFo1MEnkqE6hzAbaztnyR5uLTMoz6wnEWwWBsCUzNt+sVXJycuRJdDqvL078M4/h65BI/YO5XWTaxZDWVsW0fw== 16908 + react-devtools-core@^6.1.5: 16909 + version "6.1.5" 16910 + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-6.1.5.tgz#c5eca79209dab853a03b2158c034c5166975feee" 16911 + integrity sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA== 16763 16912 dependencies: 16764 16913 shell-quote "^1.6.1" 16765 16914 ws "^7" 16766 16915 16767 - react-dom@19.0.0: 16768 - version "19.0.0" 16769 - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0.tgz#43446f1f01c65a4cd7f7588083e686a6726cfb57" 16770 - integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ== 16916 + react-dom@19.1.0: 16917 + version "19.1.0" 16918 + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.1.0.tgz#133558deca37fa1d682708df8904b25186793623" 16919 + integrity sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g== 16771 16920 dependencies: 16772 - scheduler "^0.25.0" 16921 + scheduler "^0.26.0" 16773 16922 16774 16923 react-fast-compare@^3.2.2: 16775 16924 version "3.2.2" ··· 16786 16935 resolved "https://registry.yarnpkg.com/react-image-crop/-/react-image-crop-11.0.7.tgz#25f3d37ccbb65a05d19d23b4740a5912835c741e" 16787 16936 integrity sha512-ZciKWHDYzmm366JDL18CbrVyjnjH0ojufGDmScfS4ZUqLHg4nm6ATY+K62C75W4ZRNt4Ii+tX0bSjNk9LQ2xzQ== 16788 16937 16789 - react-is@19, react-is@^19.0.0, react-is@^19.1.0: 16938 + react-is@19, react-is@^19.1.0: 16790 16939 version "19.1.0" 16791 16940 resolved "https://registry.yarnpkg.com/react-is/-/react-is-19.1.0.tgz#805bce321546b7e14c084989c77022351bbdd11b" 16792 16941 integrity sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg== ··· 16806 16955 resolved "https://registry.yarnpkg.com/react-keyed-flatten-children/-/react-keyed-flatten-children-5.0.0.tgz#3024fc8819f7b60fc5039b527f133d9ac3a02a82" 16807 16956 integrity sha512-XA5ah02sZAeDrbz4Lusd4acqG5q5BtVwPHWierruVhrgX6CMCldbGcTZZM14cQZ+GWq+tzRzEpsCvnTtLODvjw== 16808 16957 16809 - react-native-compressor@^1.11.0: 16810 - version "1.11.0" 16811 - resolved "https://registry.yarnpkg.com/react-native-compressor/-/react-native-compressor-1.11.0.tgz#e297fa650b09cc754392153c38ae2ca510aee024" 16812 - integrity sha512-XaI0U2CtlW6ZYjwdQ4jdpnJa3C9CD1pc1a4jiUMtnUxWtCqgT7PNjOiEqlYLLwwGTvorXXNuby5In1yy7Vdmhg== 16958 + react-native-compressor@^1.13.0: 16959 + version "1.13.0" 16960 + resolved "https://registry.yarnpkg.com/react-native-compressor/-/react-native-compressor-1.13.0.tgz#d260621bb7625046a716d5dff56b395267c7e6b0" 16961 + integrity sha512-vJYbrcjz2S7kgE3Q7444F71CjEDq5Qg6sGn67N9fJ0I1K6EhB/ZxpULdDe3FxJ4h/ncJc0oxOzNWZhxtGTqcQw== 16813 16962 16814 - react-native-date-picker@^5.0.12: 16815 - version "5.0.12" 16816 - resolved "https://registry.yarnpkg.com/react-native-date-picker/-/react-native-date-picker-5.0.12.tgz#12540b6a58500811ee7e4fc0244e3accc7cca9c1" 16817 - integrity sha512-R/mUnCKhcuxbhKPFwYdBQCxQt9HHLqpM4ruRUqlcBjiUZ3N2wdnwOMyc888Ps8qp8e7v29PrDHtUlG8LPuFn9w== 16963 + react-native-date-picker@^5.0.13: 16964 + version "5.0.13" 16965 + resolved "https://registry.yarnpkg.com/react-native-date-picker/-/react-native-date-picker-5.0.13.tgz#fe05f58652aaeee9e67f73cf7436c32a623ff3a4" 16966 + integrity sha512-qCLUODZVsJetO5zuoXjw1D39K527XWqBG8sOfhWdHyPzf13h8RXR1/RSKd1N0fdRDi5GdyizYmB0lPAK12/hbw== 16818 16967 16819 16968 react-native-device-attest@^0.1.6: 16820 16969 version "0.1.6" ··· 16835 16984 dependencies: 16836 16985 use-latest-callback "^0.2.3" 16837 16986 16838 - react-native-edge-to-edge@1.6.0, react-native-edge-to-edge@^1.6.0: 16987 + react-native-edge-to-edge@^1.6.0: 16839 16988 version "1.6.0" 16840 16989 resolved "https://registry.yarnpkg.com/react-native-edge-to-edge/-/react-native-edge-to-edge-1.6.0.tgz#2ba63b941704a7f713e298185c26cde4d9e4b973" 16841 16990 integrity sha512-2WCNdE3Qd6Fwg9+4BpbATUxCLcouF6YRY7K+J36KJ4l3y+tWN6XCqAC4DuoGblAAbb2sLkhEDp4FOlbOIot2Og== 16842 16991 16843 - react-native-gesture-handler@2.25.0: 16844 - version "2.25.0" 16845 - resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.25.0.tgz#3a5a8912ea4f5e68ab211a9fa5a191c08ad50883" 16846 - integrity sha512-NPjJi6mislXxvjxQPU9IYwBjb1Uejp8GvAbE1Lhh+xMIMEvmgAvVIp5cz1P+xAbV6uYcRRArm278+tEInGOqWg== 16992 + react-native-gesture-handler@~2.28.0: 16993 + version "2.28.0" 16994 + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.28.0.tgz#07fb4f5eae72f810aac3019b060d26c1835bfd0c" 16995 + integrity sha512-0msfJ1vRxXKVgTgvL+1ZOoYw3/0z1R+Ked0+udoJhyplC2jbVKIJ8Z1bzWdpQRCV3QcQ87Op0zJVE5DhKK2A0A== 16847 16996 dependencies: 16848 16997 "@egjs/hammerjs" "^2.0.17" 16849 16998 hoist-non-react-statics "^3.3.0" ··· 16863 17012 dependencies: 16864 17013 fast-base64-decode "^1.0.0" 16865 17014 16866 - react-native-ios-context-menu@^1.15.3: 16867 - version "1.15.3" 16868 - resolved "https://registry.yarnpkg.com/react-native-ios-context-menu/-/react-native-ios-context-menu-1.15.3.tgz#c02e6a7af2df8c08d0b3e1c8f3395484b3c9c760" 16869 - integrity sha512-UNkVl7ocvSpNaEpvBvE1aHOfDy/DFdZ5I+ElfnTXFsRxrVZmxLtST0b1q2wSWGWDmd2Ig2AYd7GRbYtcY222Ag== 16870 - dependencies: 16871 - "@dominicstop/ts-event-emitter" "^1.1.0" 16872 - 16873 - react-native-is-edge-to-edge@1.1.7, react-native-is-edge-to-edge@^1.1.7: 17015 + react-native-is-edge-to-edge@1.1.7: 16874 17016 version "1.1.7" 16875 17017 resolved "https://registry.yarnpkg.com/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.1.7.tgz#28947688f9fafd584e73a4f935ea9603bd9b1939" 16876 17018 integrity sha512-EH6i7E8epJGIcu7KpfXYXiV2JFIYITtq+rVS8uEb+92naMRBdxhTuS8Wn2Q7j9sqyO0B+Xbaaf9VdipIAmGW4w== 16877 17019 16878 - react-native-is-edge-to-edge@^1.1.6: 16879 - version "1.1.6" 16880 - resolved "https://registry.yarnpkg.com/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.1.6.tgz#69ec13f70d76e9245e275eed4140d0873a78f902" 16881 - integrity sha512-1pHnFTlBahins6UAajXUqeCOHew9l9C2C8tErnpGC3IyLJzvxD+TpYAixnCbrVS52f7+NvMttbiSI290XfwN0w== 17020 + react-native-is-edge-to-edge@^1.2.1: 17021 + version "1.2.1" 17022 + resolved "https://registry.yarnpkg.com/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz#64e10851abd9d176cbf2b40562f751622bde3358" 17023 + integrity sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q== 16882 17024 16883 - react-native-keyboard-controller@^1.17.5: 16884 - version "1.17.5" 16885 - resolved "https://registry.yarnpkg.com/react-native-keyboard-controller/-/react-native-keyboard-controller-1.17.5.tgz#a517f0d42f73e69a03e768379934a3bb705595f5" 16886 - integrity sha512-2bZi4uH/beAcHiQ7nv6sxW03/UpNcnNAPpaSnQtg0cbU3ySThPRETMqr0ZupFLUSZovolyFhyFJLjxmQ7cavJg== 17025 + react-native-keyboard-controller@1.18.5: 17026 + version "1.18.5" 17027 + resolved "https://registry.yarnpkg.com/react-native-keyboard-controller/-/react-native-keyboard-controller-1.18.5.tgz#ae12131f2019c574178479d2c55784f55e08bb68" 17028 + integrity sha512-wbYN6Tcu3G5a05dhRYBgjgd74KqoYWuUmroLpigRg9cXy5uYo7prTMIvMgvLtARQtUF7BOtFggUnzgoBOgk0TQ== 16887 17029 dependencies: 16888 - react-native-is-edge-to-edge "^1.1.6" 17030 + react-native-is-edge-to-edge "^1.2.1" 16889 17031 16890 17032 react-native-mmkv@^2.12.2: 16891 17033 version "2.12.2" ··· 16911 17053 qrcode "^1.5.4" 16912 17054 react-fast-compare "^3.2.2" 16913 17055 16914 - react-native-reanimated@~3.17.5: 16915 - version "3.17.5" 16916 - resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.17.5.tgz#09ebe3c9e3379c5c0c588b7ab30c131ea29b60f0" 16917 - integrity sha512-SxBK7wQfJ4UoWoJqQnmIC7ZjuNgVb9rcY5Xc67upXAFKftWg0rnkknTw6vgwnjRcvYThrjzUVti66XoZdDJGtw== 17056 + react-native-reanimated@^3.19.1: 17057 + version "3.19.1" 17058 + resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.19.1.tgz#761f731bfb5dc67724ca7bf7bce90a6da975d753" 17059 + integrity sha512-ILL0FSNzSVIg6WuawrsMBvNxk2yJFiTUcahimXDAeNiE/09eagVUlHhYWXAAmH0umvAOafBaGjO7YfBhUrf5ZQ== 16918 17060 dependencies: 16919 17061 "@babel/plugin-transform-arrow-functions" "^7.0.0-0" 16920 17062 "@babel/plugin-transform-class-properties" "^7.0.0-0" ··· 16934 17076 resolved "https://registry.yarnpkg.com/react-native-root-siblings/-/react-native-root-siblings-5.0.1.tgz#97e050e5155228f65810fb1c466ff8e769c5272c" 16935 17077 integrity sha512-Ay3k/fBj6ReUkWX5WNS+oEAcgPLEGOK8n7K/L7D85mf3xvd8rm/b4spsv26E4HlFzluVx5HKbxEt9cl0wQ1u3g== 16936 17078 16937 - react-native-safe-area-context@5.4.0: 16938 - version "5.4.0" 16939 - resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-5.4.0.tgz#04b51940408c114f75628a12a93569d30c525454" 16940 - integrity sha512-JaEThVyJcLhA+vU0NU8bZ0a1ih6GiF4faZ+ArZLqpYbL6j7R3caRqj+mE3lEtKCuHgwjLg3bCxLL1GPUJZVqUA== 17079 + react-native-safe-area-context@~5.6.0: 17080 + version "5.6.1" 17081 + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-5.6.1.tgz#cb4d249ef1a6f7e8fd0cfdfa9764838dffda26b6" 17082 + integrity sha512-/wJE58HLEAkATzhhX1xSr+fostLsK8Q97EfpfMDKo8jlOc1QKESSX/FQrhk7HhQH/2uSaox4Y86sNaI02kteiA== 16941 17083 16942 - react-native-screens@^4.11.1: 16943 - version "4.11.1" 16944 - resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-4.11.1.tgz#7d0f3d313d8ddc1e55437c5e038f15f8805dc991" 16945 - integrity sha512-F0zOzRVa3ptZfLpD0J8ROdo+y1fEPw+VBFq1MTY/iyDu08al7qFUO5hLMd+EYMda5VXGaTFCa8q7bOppUszhJw== 17084 + react-native-screens@~4.16.0: 17085 + version "4.16.0" 17086 + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-4.16.0.tgz#efa42e77a092aa0b5277c9ae41391ea0240e0870" 17087 + integrity sha512-yIAyh7F/9uWkOzCi1/2FqvNvK6Wb9Y1+Kzn16SuGfN9YFJDTbwlzGRvePCNTOX0recpLQF3kc2FmvMUhyTCH1Q== 16946 17088 dependencies: 16947 17089 react-freeze "^1.0.0" 16948 - react-native-is-edge-to-edge "^1.1.7" 17090 + react-native-is-edge-to-edge "^1.2.1" 16949 17091 warn-once "^0.1.0" 16950 17092 16951 - react-native-svg@15.12.0: 16952 - version "15.12.0" 16953 - resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.12.0.tgz#0e2d476961e8b07f8c549fe4489c99b5130dc150" 16954 - integrity sha512-iE25PxIJ6V0C6krReLquVw6R0QTsRTmEQc4K2Co3P6zsimU/jltcDBKYDy1h/5j9S/fqmMeXnpM+9LEWKJKI6A== 17093 + react-native-svg@15.12.1: 17094 + version "15.12.1" 17095 + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.12.1.tgz#7ba756dd6a235f86a2c312a1e7911f9b0d18ad3a" 17096 + integrity sha512-vCuZJDf8a5aNC2dlMovEv4Z0jjEUET53lm/iILFnFewa15b4atjVxU6Wirm6O9y6dEsdjDZVD7Q3QM4T1wlI8g== 16955 17097 dependencies: 16956 17098 css-select "^5.1.0" 16957 17099 css-tree "^1.1.3" ··· 16988 17130 dependencies: 16989 17131 qs "^6.5.1" 16990 17132 16991 - react-native-web@~0.20.0: 16992 - version "0.20.0" 16993 - resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.20.0.tgz#3fb0591999ed4b54d7822a2785547415e8a5c031" 16994 - integrity sha512-OOSgrw+aON6R3hRosCau/xVxdLzbjEcsLysYedka0ZON4ZZe6n9xgeN9ZkoejhARM36oTlUgHIQqxGutEJ9Wxg== 17133 + react-native-web@^0.21.0: 17134 + version "0.21.1" 17135 + resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.21.1.tgz#ba36a42f02a19da0cfdb70f6f963acaede4a7b3c" 17136 + integrity sha512-BeNsgwwe4AXUFPAoFU+DKjJ+CVQa3h54zYX77p7GVZrXiiNo3vl03WYDYVEy5R2J2HOPInXtQZB5gmj3vuzrKg== 16995 17137 dependencies: 16996 17138 "@babel/runtime" "^7.18.6" 16997 17139 "@react-native/normalize-colors" "^0.74.1" ··· 17010 17152 escape-string-regexp "^4.0.0" 17011 17153 invariant "2.2.4" 17012 17154 17013 - react-native@^0.79.3: 17014 - version "0.79.3" 17015 - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.79.3.tgz#16580ca202016c75e3c61116fcfe3b30f6d762fc" 17016 - integrity sha512-EzH1+9gzdyEo9zdP6u7Sh3Jtf5EOMwzy+TK65JysdlgAzfEVfq4mNeXcAZ6SmD+CW6M7ARJbvXLyTD0l2S5rpg== 17155 + react-native@0.81.4: 17156 + version "0.81.4" 17157 + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.81.4.tgz#d5e9d0a71ed2e80a550a6c358f2ce3ddb6f5b119" 17158 + integrity sha512-bt5bz3A/+Cv46KcjV0VQa+fo7MKxs17RCcpzjftINlen4ZDUl0I6Ut+brQ2FToa5oD0IB0xvQHfmsg2EDqsZdQ== 17017 17159 dependencies: 17018 17160 "@jest/create-cache-key-function" "^29.7.0" 17019 - "@react-native/assets-registry" "0.79.3" 17020 - "@react-native/codegen" "0.79.3" 17021 - "@react-native/community-cli-plugin" "0.79.3" 17022 - "@react-native/gradle-plugin" "0.79.3" 17023 - "@react-native/js-polyfills" "0.79.3" 17024 - "@react-native/normalize-colors" "0.79.3" 17025 - "@react-native/virtualized-lists" "0.79.3" 17161 + "@react-native/assets-registry" "0.81.4" 17162 + "@react-native/codegen" "0.81.4" 17163 + "@react-native/community-cli-plugin" "0.81.4" 17164 + "@react-native/gradle-plugin" "0.81.4" 17165 + "@react-native/js-polyfills" "0.81.4" 17166 + "@react-native/normalize-colors" "0.81.4" 17167 + "@react-native/virtualized-lists" "0.81.4" 17026 17168 abort-controller "^3.0.0" 17027 17169 anser "^1.4.9" 17028 17170 ansi-regex "^5.0.0" 17029 17171 babel-jest "^29.7.0" 17030 - babel-plugin-syntax-hermes-parser "0.25.1" 17172 + babel-plugin-syntax-hermes-parser "0.29.1" 17031 17173 base64-js "^1.5.1" 17032 - chalk "^4.0.0" 17033 17174 commander "^12.0.0" 17034 - event-target-shim "^5.0.1" 17035 17175 flow-enums-runtime "^0.0.6" 17036 17176 glob "^7.1.1" 17037 17177 invariant "^2.2.4" 17038 17178 jest-environment-node "^29.7.0" 17039 17179 memoize-one "^5.0.0" 17040 - metro-runtime "^0.82.0" 17041 - metro-source-map "^0.82.0" 17180 + metro-runtime "^0.83.1" 17181 + metro-source-map "^0.83.1" 17042 17182 nullthrows "^1.1.1" 17043 17183 pretty-format "^29.7.0" 17044 17184 promise "^8.3.0" 17045 - react-devtools-core "^6.1.1" 17185 + react-devtools-core "^6.1.5" 17046 17186 react-refresh "^0.14.0" 17047 17187 regenerator-runtime "^0.13.2" 17048 - scheduler "0.25.0" 17188 + scheduler "0.26.0" 17049 17189 semver "^7.1.3" 17050 17190 stacktrace-parser "^0.1.10" 17051 17191 whatwg-fetch "^3.0.0" ··· 17067 17207 resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.3.tgz#966f1750c191672e76e16c2efa569150cc73ab53" 17068 17208 integrity sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA== 17069 17209 17070 - react-remove-scroll-bar@^2.3.6: 17071 - version "2.3.6" 17072 - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" 17073 - integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== 17074 - dependencies: 17075 - react-style-singleton "^2.2.1" 17076 - tslib "^2.0.0" 17077 - 17078 17210 react-remove-scroll-bar@^2.3.7, react-remove-scroll-bar@^2.3.8: 17079 17211 version "2.3.8" 17080 17212 resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz#99c20f908ee467b385b68a3469b4a3e750012223" ··· 17082 17214 dependencies: 17083 17215 react-style-singleton "^2.2.2" 17084 17216 tslib "^2.0.0" 17085 - 17086 - react-remove-scroll@2.6.0: 17087 - version "2.6.0" 17088 - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz#fb03a0845d7768a4f1519a99fdb84983b793dc07" 17089 - integrity sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ== 17090 - dependencies: 17091 - react-remove-scroll-bar "^2.3.6" 17092 - react-style-singleton "^2.2.1" 17093 - tslib "^2.1.0" 17094 - use-callback-ref "^1.3.0" 17095 - use-sidecar "^1.1.2" 17096 17217 17097 17218 react-remove-scroll@^2.6.3: 17098 17219 version "2.6.3" ··· 17124 17245 neo-async "^2.6.1" 17125 17246 webpack-sources "^3.2.0" 17126 17247 17127 - react-style-singleton@^2.2.1: 17128 - version "2.2.1" 17129 - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" 17130 - integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== 17131 - dependencies: 17132 - get-nonce "^1.0.0" 17133 - invariant "^2.2.4" 17134 - tslib "^2.0.0" 17135 - 17136 17248 react-style-singleton@^2.2.2, react-style-singleton@^2.2.3: 17137 17249 version "2.2.3" 17138 17250 resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.3.tgz#4265608be69a4d70cfe3047f2c6c88b2c3ace388" ··· 17141 17253 get-nonce "^1.0.0" 17142 17254 tslib "^2.0.0" 17143 17255 17144 - react-test-renderer@19.0.0: 17145 - version "19.0.0" 17146 - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-19.0.0.tgz#ca6fa322c58d4bfa34635788fe242a8c3daa4c7d" 17147 - integrity sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA== 17256 + react-test-renderer@19.1.0: 17257 + version "19.1.0" 17258 + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-19.1.0.tgz#89e1baa9e45a6da064b9760f92251d5b8e1f34ab" 17259 + integrity sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw== 17148 17260 dependencies: 17149 - react-is "^19.0.0" 17150 - scheduler "^0.25.0" 17261 + react-is "^19.1.0" 17262 + scheduler "^0.26.0" 17151 17263 17152 17264 react-textarea-autosize@^8.5.3: 17153 17265 version "8.5.3" ··· 17158 17270 use-composed-ref "^1.3.0" 17159 17271 use-latest "^1.2.1" 17160 17272 17161 - react@19.0.0: 17162 - version "19.0.0" 17163 - resolved "https://registry.yarnpkg.com/react/-/react-19.0.0.tgz#6e1969251b9f108870aa4bff37a0ce9ddfaaabdd" 17164 - integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ== 17273 + react@19.1.0: 17274 + version "19.1.0" 17275 + resolved "https://registry.yarnpkg.com/react/-/react-19.1.0.tgz#926864b6c48da7627f004795d6cce50e90793b75" 17276 + integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg== 17165 17277 17166 17278 readable-stream@^2.0.1: 17167 17279 version "2.3.8" ··· 17464 17576 resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 17465 17577 integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 17466 17578 17579 + resolve-global@^1.0.0: 17580 + version "1.0.0" 17581 + resolved "https://registry.yarnpkg.com/resolve-global/-/resolve-global-1.0.0.tgz#a2a79df4af2ca3f49bf77ef9ddacd322dad19255" 17582 + integrity sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw== 17583 + dependencies: 17584 + global-dirs "^0.1.1" 17585 + 17467 17586 resolve-workspace-root@^2.0.0: 17468 17587 version "2.0.0" 17469 17588 resolved "https://registry.yarnpkg.com/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz#a0098daa0067cd0efa6eb525c57c8fb4a61e78f8" ··· 17717 17836 dependencies: 17718 17837 xmlchars "^2.2.0" 17719 17838 17720 - scheduler@0.25.0, scheduler@^0.25.0: 17721 - version "0.25.0" 17722 - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015" 17723 - integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== 17839 + scheduler@0.26.0, scheduler@^0.26.0: 17840 + version "0.26.0" 17841 + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.26.0.tgz#4ce8a8c2a2095f13ea11bf9a445be50c555d6337" 17842 + integrity sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA== 17724 17843 17725 17844 schema-utils@^2.6.5: 17726 17845 version "2.7.1" ··· 17960 18079 version "1.2.0" 17961 18080 resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 17962 18081 integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 17963 - 17964 - sf-symbols-typescript@^1.0.0: 17965 - version "1.0.0" 17966 - resolved "https://registry.yarnpkg.com/sf-symbols-typescript/-/sf-symbols-typescript-1.0.0.tgz#94e9210bf27e7583f9749a0d07bd4f4937ea488f" 17967 - integrity sha512-DkS7q3nN68dEMb4E18HFPDAvyrjDZK9YAQQF2QxeFu9gp2xRDXFMF8qLJ1EmQ/qeEGQmop4lmMM1WtYJTIcCMw== 17968 18082 17969 18083 shallow-equal@^3.1.0: 17970 18084 version "3.1.0" ··· 19223 19337 optionalDependencies: 19224 19338 rxjs "^7.5.2" 19225 19339 19226 - typescript@~5.8.3: 19227 - version "5.8.3" 19228 - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" 19229 - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== 19340 + typescript@^5.9.2: 19341 + version "5.9.2" 19342 + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" 19343 + integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== 19230 19344 19231 19345 ua-parser-js@^0.7.33: 19232 19346 version "0.7.35" ··· 19335 19449 resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" 19336 19450 integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== 19337 19451 19338 - unimodules-app-loader@~5.1.3: 19339 - version "5.1.3" 19340 - resolved "https://registry.yarnpkg.com/unimodules-app-loader/-/unimodules-app-loader-5.1.3.tgz#c3be527cd36120fc77d6843253075c8a9246f622" 19341 - integrity sha512-nPUkwfkpJWvdOQrVvyQSUol93/UdmsCVd9Hkx9RgAevmKSVYdZI+S87W73NGKl6QbwK9L1BDSY5OrQuo8Oq15g== 19452 + unimodules-app-loader@~6.0.7: 19453 + version "6.0.7" 19454 + resolved "https://registry.yarnpkg.com/unimodules-app-loader/-/unimodules-app-loader-6.0.7.tgz#d88db74075815bcdc088c6c6823a2b08394a1225" 19455 + integrity sha512-23iwxmh6/y54PRGJt/xjsOpPK8vlfusBisi3yaVSK22pxg5DmiL/+IHCtbb/crHC+gqdItcy1OoRsZQHfNSBaw== 19342 19456 19343 19457 unique-string@~2.0.0: 19344 19458 version "2.0.0" ··· 19352 19466 resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" 19353 19467 integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== 19354 19468 19355 - universalify@^1.0.0: 19356 - version "1.0.0" 19357 - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" 19358 - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== 19359 - 19360 19469 universalify@^2.0.0: 19361 19470 version "2.0.0" 19362 19471 resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" ··· 19406 19515 escalade "^3.2.0" 19407 19516 picocolors "^1.1.0" 19408 19517 19518 + update-browserslist-db@^1.1.3: 19519 + version "1.1.3" 19520 + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" 19521 + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== 19522 + dependencies: 19523 + escalade "^3.2.0" 19524 + picocolors "^1.1.1" 19525 + 19409 19526 update-check@1.5.3: 19410 19527 version "1.5.3" 19411 19528 resolved "https://registry.yarnpkg.com/update-check/-/update-check-1.5.3.tgz#45240fcfb8755a7c7fa68bbdd9eda026a41639ed" ··· 19429 19546 querystringify "^2.1.1" 19430 19547 requires-port "^1.0.0" 19431 19548 19432 - use-callback-ref@^1.3.0: 19433 - version "1.3.0" 19434 - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5" 19435 - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== 19436 - dependencies: 19437 - tslib "^2.0.0" 19438 - 19439 19549 use-callback-ref@^1.3.3: 19440 19550 version "1.3.3" 19441 19551 resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.3.tgz#98d9fab067075841c5b2c6852090d5d0feabe2bf" ··· 19464 19574 integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== 19465 19575 dependencies: 19466 19576 use-isomorphic-layout-effect "^1.1.1" 19467 - 19468 - use-sidecar@^1.1.2: 19469 - version "1.1.2" 19470 - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" 19471 - integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== 19472 - dependencies: 19473 - detect-node-es "^1.1.0" 19474 - tslib "^2.0.0" 19475 19577 19476 19578 use-sidecar@^1.1.3: 19477 19579 version "1.1.3" ··· 20050 20152 resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" 20051 20153 integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== 20052 20154 20155 + ws@^8.18.3: 20156 + version "8.18.3" 20157 + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" 20158 + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== 20159 + 20053 20160 xcode@^3.0.1: 20054 20161 version "3.0.1" 20055 20162 resolved "https://registry.yarnpkg.com/xcode/-/xcode-3.0.1.tgz#3efb62aac641ab2c702458f9a0302696146aa53c" ··· 20136 20243 resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 20137 20244 integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 20138 20245 20246 + yaml@^2.6.1: 20247 + version "2.8.1" 20248 + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.1.tgz#1870aa02b631f7e8328b93f8bc574fac5d6c4d79" 20249 + integrity sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw== 20250 + 20139 20251 yargs-parser@^18.1.2: 20140 20252 version "18.1.3" 20141 20253 resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" ··· 20197 20309 css-what "^6.1.0" 20198 20310 entities "^5.0.0" 20199 20311 20200 - zeego@^1.6.2: 20201 - version "1.7.0" 20202 - resolved "https://registry.yarnpkg.com/zeego/-/zeego-1.7.0.tgz#8034adb842199c4ccf21bcb19877800bff18606b" 20203 - integrity sha512-dZP/iUMeYLfKFnWMn+gNBJkHrR5Cu1ySyCeSkBAJmG9wjCsXoBVMyO7kV6/Y7P0ZhD5c/oS+0/Z6duxeDIos0g== 20204 - dependencies: 20205 - "@radix-ui/react-context-menu" "^2.0.1" 20206 - "@radix-ui/react-dropdown-menu" "^2.0.1" 20207 - sf-symbols-typescript "^1.0.0" 20312 + zod-to-json-schema@^3.24.6: 20313 + version "3.24.6" 20314 + resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz#5920f020c4d2647edfbb954fa036082b92c9e12d" 20315 + integrity sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg== 20208 20316 20209 20317 zod-validation-error@^3.0.3: 20210 20318 version "3.3.0" 20211 20319 resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-3.3.0.tgz#2cfe81b62d044e0453d1aa3ae7c32a2f36dde9af" 20212 20320 integrity sha512-Syib9oumw1NTqEv4LT0e6U83Td9aVRk9iTXPUQr1otyV1PuXQKOvOwhMNqZIq5hluzHP2pMgnOmHEo7kPdI2mw== 20213 20321 20214 - zod@3.23.8, zod@^3.14.2, zod@^3.20.2, zod@^3.22.4, zod@^3.23.8: 20322 + zod@3.23.8, zod@^3.14.2, zod@^3.20.2, zod@^3.22.4, zod@^3.23.8, zod@^3.25.76: 20215 20323 version "3.23.8" 20216 20324 resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" 20217 20325 integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==