diff --git a/.gitignore b/.gitignore
index 38a12f24c0..c0adc37228 100644
--- a/.gitignore
+++ b/.gitignore
@@ -110,7 +110,9 @@ google-services.json
# i18n
src/locale/locales/_build/
-src/locale/locales/**/*.js
+src/locale/locales/**/messages.js
+src/locale/locales/**/messages.mjs
+src/locale/locales/**/messages.ts
# local builds
*.apk
diff --git a/CLAUDE.md b/CLAUDE.md
index 240c1a4268..4b3c6f89f7 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -271,7 +271,8 @@ import * as TextField from '#/components/forms/TextField'
All user-facing strings must be wrapped for translation using Lingui.
```tsx
-import {msg, Trans, plural} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
+import {Trans} from '@lingui/react/macro'
import {useLingui} from '@lingui/react'
function MyComponent() {
diff --git a/__tests__/lib/string.test.ts b/__tests__/lib/string.test.ts
index 7a20a49a4e..7453b8d203 100644
--- a/__tests__/lib/string.test.ts
+++ b/__tests__/lib/string.test.ts
@@ -1,4 +1,5 @@
import {RichText} from '@atproto/api'
+import {i18n} from '@lingui/core'
import {parseEmbedPlayerFromUrl} from '#/lib/strings/embed-player'
import {
@@ -6,6 +7,7 @@ import {
createStarterPackLinkFromAndroidReferrer,
parseStarterPackUri,
} from '#/lib/strings/starter-pack'
+import {messages} from '#/locale/locales/en/messages'
import {tenorUrlToBskyGifUrl} from '#/state/queries/tenor'
import {cleanError} from '../../src/lib/strings/errors'
import {createFullHandle, makeValidHandle} from '../../src/lib/strings/handles'
@@ -202,6 +204,9 @@ describe('enforceLen', () => {
})
describe('cleanError', () => {
+ // cleanError uses lingui
+ i18n.loadAndActivate({locale: 'en', messages})
+
const inputs = [
'TypeError: Network request failed',
'Error: Aborted',
@@ -327,6 +332,7 @@ describe('shortenLinks', () => {
expect(outputRT.text).toEqual(outputs[i][0])
expect(outputRT.facets?.length).toEqual(outputs[i][1].length)
for (let j = 0; j < outputs[i][1].length; j++) {
+ // @ts-expect-error whatever
expect(outputRT.facets![j].features[0].uri).toEqual(outputs[i][1][j])
}
}
diff --git a/babel.config.js b/babel.config.js
index 43e7eb54f3..63afeb3769 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -16,7 +16,7 @@ module.exports = function (api) {
],
],
plugins: [
- 'macros',
+ '@lingui/babel-plugin-lingui-macro',
['babel-plugin-react-compiler', {target: '19'}],
[
'module:react-native-dotenv',
diff --git a/docs/localization.md b/docs/localization.md
index 6cb75c1721..4242de8511 100644
--- a/docs/localization.md
+++ b/docs/localization.md
@@ -73,7 +73,7 @@ import { Text } from "react-native";
```jsx
// After
import { Text } from "react-native";
-import { Trans } from "@lingui/macro";
+import { Trans } from "@lingui/react/macro";
Hello World
```
@@ -90,18 +90,33 @@ const text = "Hello World";
```
In this case, you can use the `useLingui()` hook:
```jsx
-import { msg } from "@lingui/macro";
+import { msg } from "@lingui/core/macro";
import { useLingui } from "@lingui/react";
const { _ } = useLingui();
return {text}
```
-If you want to do this outside of a React component, you can use the `t` macro instead (note: this won't react to changes if the locale is switched dynamically within the app):
-```jsx
-import { t } from "@lingui/macro";
+NEW: the latest Lingui version introduced a new macro version of the `useLingui` hook which lets you do this:
+```jsx
+import { useLingui } from "@lingui/react/macro";
+
+const { t } = useLingui();
+return {text}
+```
+
+If you want to do this outside of a React component, you can use the global `t` macro instead (note: this won't react to changes if the locale is switched dynamically within the app):
+```jsx
+import { t } from "@lingui/core/macro";
+
+// not ideal - t only gets called once at module evaluation time
const text = t`Hello World`;
+
+// however, this is suitable for strings that are ephemeral:
+function sayHello() {
+ Toast.show(t`Hello World`); // Each time the toast shows, the current locale at that moment is used
+}
```
We can then run `yarn intl:extract` to update the catalog in `src/locale/locales/{locale}/messages.po`. This will add the new string to the catalog.
@@ -121,7 +136,7 @@ So the workflow is as follows:
These pitfalls are memoization pitfalls that will cause the components to not re-render when the locale is changed -- causing stale translations to be shown.
```jsx
-import { msg } from "@lingui/macro";
+import { msg } from "@lingui/core/macro";
import { i18n } from "@lingui/core";
const welcomeMessage = msg`Welcome!`;
diff --git a/lingui.config.js b/lingui.config.ts
similarity index 82%
rename from lingui.config.js
rename to lingui.config.ts
index 46950e8723..2d16659717 100644
--- a/lingui.config.js
+++ b/lingui.config.ts
@@ -1,5 +1,7 @@
-/** @type {import('@lingui/conf').LinguiConfig} */
-module.exports = {
+import {defineConfig} from '@lingui/cli'
+
+export default defineConfig({
+ sourceLocale: 'en',
locales: [
'en',
'an',
@@ -49,5 +51,5 @@ module.exports = {
include: ['src'],
},
],
- format: 'po',
-}
+ compileNamespace: 'ts',
+})
diff --git a/package.json b/package.json
index 7a5ef11e5e..9f32500508 100644
--- a/package.json
+++ b/package.json
@@ -59,7 +59,7 @@
"intl:extract": "lingui extract --clean --locale en",
"intl:extract:all": "lingui extract --clean",
"intl:compile": "lingui compile",
- "intl:compile-if-needed": "is-ci || [ -f src/locale/locales/en/messages.js ] || yarn intl:compile",
+ "intl:compile-if-needed": "is-ci || [ -f src/locale/locales/en/messages.ts ] || yarn intl:compile",
"intl:pull": "crowdin download translations --verbose -b main",
"intl:push": "crowdin push translations --verbose -b main",
"intl:push-sources": "crowdin push sources --verbose -b main",
@@ -97,7 +97,8 @@
"@growthbook/growthbook-react": "^1.6.5",
"@haileyok/bluesky-video": "0.3.2",
"@ipld/dag-cbor": "^9.2.0",
- "@lingui/react": "^4.14.1",
+ "@lingui/core": "^5.9.2",
+ "@lingui/react": "^5.9.2",
"@mattermost/react-native-paste-input": "mattermost/react-native-paste-input",
"@miblanchard/react-native-slider": "^2.6.0",
"@mozzius/expo-dynamic-app-icon": "^1.8.0",
@@ -236,8 +237,8 @@
"@babel/runtime": "^7.26.0",
"@eslint/js": "^9.39.2",
"@expo/config-plugins": "~54.0.1",
- "@lingui/cli": "^4.14.1",
- "@lingui/macro": "^4.14.1",
+ "@lingui/babel-plugin-lingui-macro": "^5.9.2",
+ "@lingui/cli": "^5.9.2",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.15",
"@react-native/babel-preset": "0.81.5",
"@react-native/eslint-config": "^0.81.5",
@@ -252,7 +253,6 @@
"@types/react": "^19.1.12",
"@types/react-dom": "^19.1.9",
"babel-jest": "^29.7.0",
- "babel-plugin-macros": "^3.1.0",
"babel-plugin-module-resolver": "^5.0.2",
"babel-plugin-react-compiler": "^19.1.0-rc.3",
"babel-preset-expo": "~54.0.0",
diff --git a/patches/@lingui+core+4.14.1.patch b/patches/@lingui+core+4.14.1.patch
deleted file mode 100644
index 8ace93a744..0000000000
--- a/patches/@lingui+core+4.14.1.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-diff --git a/node_modules/@lingui/core/dist/index.mjs b/node_modules/@lingui/core/dist/index.mjs
-index 9759736..881f67b 100644
---- a/node_modules/@lingui/core/dist/index.mjs
-+++ b/node_modules/@lingui/core/dist/index.mjs
-@@ -1,4 +1,4 @@
--import unraw from 'unraw';
-+import { unraw } from 'unraw';
- import { compileMessage } from '@lingui/message-utils/compileMessage';
-
- const isString = (s) => typeof s === "string";
diff --git a/src/App.native.tsx b/src/App.native.tsx
index 7dc16ec058..63a6e1752b 100644
--- a/src/App.native.tsx
+++ b/src/App.native.tsx
@@ -11,7 +11,7 @@ import {
import * as ScreenOrientation from 'expo-screen-orientation'
import * as SplashScreen from 'expo-splash-screen'
import * as SystemUI from 'expo-system-ui'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import * as Sentry from '@sentry/react-native'
diff --git a/src/App.web.tsx b/src/App.web.tsx
index 701167f392..d2adfd4f94 100644
--- a/src/App.web.tsx
+++ b/src/App.web.tsx
@@ -4,7 +4,7 @@ import './style.css'
import {Fragment, useEffect, useState} from 'react'
import {SafeAreaProvider} from 'react-native-safe-area-context'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import * as Sentry from '@sentry/react-native'
diff --git a/src/Navigation.tsx b/src/Navigation.tsx
index 6cc12b62d2..feb9066062 100644
--- a/src/Navigation.tsx
+++ b/src/Navigation.tsx
@@ -2,7 +2,7 @@ import {type JSX, useCallback, useRef} from 'react'
import * as Linking from 'expo-linking'
import * as Notifications from 'expo-notifications'
import {i18n, type MessageDescriptor} from '@lingui/core'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {
type BottomTabBarProps,
createBottomTabNavigator,
diff --git a/src/ageAssurance/components/NoAccessScreen.tsx b/src/ageAssurance/components/NoAccessScreen.tsx
index 9515b820e3..ccd14eaadb 100644
--- a/src/ageAssurance/components/NoAccessScreen.tsx
+++ b/src/ageAssurance/components/NoAccessScreen.tsx
@@ -1,8 +1,9 @@
import {useCallback, useEffect} from 'react'
import {ScrollView, View} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
SupportCode,
diff --git a/src/ageAssurance/components/RedirectOverlay.tsx b/src/ageAssurance/components/RedirectOverlay.tsx
index dbd498447a..5a6f5b2934 100644
--- a/src/ageAssurance/components/RedirectOverlay.tsx
+++ b/src/ageAssurance/components/RedirectOverlay.tsx
@@ -9,8 +9,9 @@ import {
} from 'react'
import {Dimensions, View} from 'react-native'
import * as Linking from 'expo-linking'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {retry} from '#/lib/async/retry'
import {wait} from '#/lib/async/wait'
diff --git a/src/components/AccountList.tsx b/src/components/AccountList.tsx
index 2fd56eabb8..ad0f44809d 100644
--- a/src/components/AccountList.tsx
+++ b/src/components/AccountList.tsx
@@ -1,8 +1,9 @@
import React, {useCallback} from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {isJwtExpired} from '#/lib/jwt'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
diff --git a/src/components/AppLanguageDropdown.tsx b/src/components/AppLanguageDropdown.tsx
index a57794a2ef..7e9ccbef8e 100644
--- a/src/components/AppLanguageDropdown.tsx
+++ b/src/components/AppLanguageDropdown.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/components/ContextMenu/Backdrop.ios.tsx b/src/components/ContextMenu/Backdrop.ios.tsx
index 60a8fda44a..7d3e84f9d2 100644
--- a/src/components/ContextMenu/Backdrop.ios.tsx
+++ b/src/components/ContextMenu/Backdrop.ios.tsx
@@ -7,7 +7,7 @@ import Animated, {
useAnimatedStyle,
} from 'react-native-reanimated'
import {BlurView} from 'expo-blur'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/components/ContextMenu/Backdrop.tsx b/src/components/ContextMenu/Backdrop.tsx
index 37fcebf493..a441bf513c 100644
--- a/src/components/ContextMenu/Backdrop.tsx
+++ b/src/components/ContextMenu/Backdrop.tsx
@@ -5,7 +5,7 @@ import Animated, {
type SharedValue,
useAnimatedStyle,
} from 'react-native-reanimated'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/components/ContextMenu/index.tsx b/src/components/ContextMenu/index.tsx
index 225a9cea37..40f2cb5349 100644
--- a/src/components/ContextMenu/index.tsx
+++ b/src/components/ContextMenu/index.tsx
@@ -40,7 +40,7 @@ import {
} from 'react-native-safe-area-context'
import {captureRef} from 'react-native-view-shot'
import {Image, type ImageErrorEventData} from 'expo-image'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useIsFocused} from '@react-navigation/native'
import flattenReactChildren from 'react-keyed-flatten-children'
diff --git a/src/components/Dialog/index.tsx b/src/components/Dialog/index.tsx
index 374dc94cd8..1c2cad9e63 100644
--- a/src/components/Dialog/index.tsx
+++ b/src/components/Dialog/index.tsx
@@ -21,7 +21,7 @@ import Animated, {
useAnimatedStyle,
} from 'react-native-reanimated'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {ScrollProvider} from '#/lib/ScrollContext'
diff --git a/src/components/Dialog/index.web.tsx b/src/components/Dialog/index.web.tsx
index bca8a75e96..1c7ee7828d 100644
--- a/src/components/Dialog/index.web.tsx
+++ b/src/components/Dialog/index.web.tsx
@@ -8,7 +8,7 @@ import {
View,
type ViewStyle,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {DismissableLayer, FocusGuards, FocusScope} from 'radix-ui/internal'
import {RemoveScrollBar} from 'react-remove-scroll-bar'
diff --git a/src/components/Error.tsx b/src/components/Error.tsx
index 92b8b2e7cd..04f4034c06 100644
--- a/src/components/Error.tsx
+++ b/src/components/Error.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useGoBack} from '#/lib/hooks/useGoBack'
import {CenteredView} from '#/view/com/util/Views'
diff --git a/src/components/FeedCard.tsx b/src/components/FeedCard.tsx
index 1fcedc6916..bf2245599d 100644
--- a/src/components/FeedCard.tsx
+++ b/src/components/FeedCard.tsx
@@ -6,8 +6,9 @@ import {
AtUri,
RichText as RichTextApi,
} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {sanitizeHandle} from '#/lib/strings/handles'
diff --git a/src/components/FeedInterstitials.tsx b/src/components/FeedInterstitials.tsx
index 16efabf10f..2d070843fb 100644
--- a/src/components/FeedInterstitials.tsx
+++ b/src/components/FeedInterstitials.tsx
@@ -8,8 +8,9 @@ import Animated, {
LinearTransition,
} from 'react-native-reanimated'
import {type AppBskyFeedDefs, AtUri} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {type NavigationProp} from '#/lib/routes/types'
diff --git a/src/components/FocusScope/index.tsx b/src/components/FocusScope/index.tsx
index 98daf7dd9e..48e013500e 100644
--- a/src/components/FocusScope/index.tsx
+++ b/src/components/FocusScope/index.tsx
@@ -14,7 +14,7 @@ import {
Text,
View,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useA11y} from '#/state/a11y'
diff --git a/src/components/InterestTabs.tsx b/src/components/InterestTabs.tsx
index 082593baf2..41638184f9 100644
--- a/src/components/InterestTabs.tsx
+++ b/src/components/InterestTabs.tsx
@@ -5,7 +5,7 @@ import {
View,
type ViewStyle,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
diff --git a/src/components/InternationalPhoneCodeSelect.tsx b/src/components/InternationalPhoneCodeSelect.tsx
index b7c1a67233..f4646b0645 100644
--- a/src/components/InternationalPhoneCodeSelect.tsx
+++ b/src/components/InternationalPhoneCodeSelect.tsx
@@ -1,7 +1,7 @@
import {Fragment, useMemo} from 'react'
import {Text as RNText} from 'react-native'
import {Image} from 'expo-image'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {
diff --git a/src/components/KnownFollowers.tsx b/src/components/KnownFollowers.tsx
index 28fb8f1f15..2b1fb7edc4 100644
--- a/src/components/KnownFollowers.tsx
+++ b/src/components/KnownFollowers.tsx
@@ -5,8 +5,9 @@ import {
moderateProfile,
type ModerationOpts,
} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {makeProfileLink} from '#/lib/routes/links'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
@@ -205,9 +206,8 @@ function KnownFollowersInner({
one="# other"
other="# others"
/>
-
+ // only 2
) : (
- // only 2
Followed by{' '}
diff --git a/src/components/LabelingServiceCard/index.tsx b/src/components/LabelingServiceCard/index.tsx
index a8a7609a74..71f79cc95d 100644
--- a/src/components/LabelingServiceCard/index.tsx
+++ b/src/components/LabelingServiceCard/index.tsx
@@ -1,7 +1,8 @@
import {View} from 'react-native'
import {type AppBskyLabelerDefs} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import type React from 'react'
import {getLabelingServiceTitle} from '#/lib/moderation'
diff --git a/src/components/LanguageSelect.tsx b/src/components/LanguageSelect.tsx
index 6b466609f4..b65d4af23b 100644
--- a/src/components/LanguageSelect.tsx
+++ b/src/components/LanguageSelect.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {sanitizeAppLanguageSetting} from '#/locale/helpers'
diff --git a/src/components/Layout/Header/index.tsx b/src/components/Layout/Header/index.tsx
index 33bcc92408..3a20b76b36 100644
--- a/src/components/Layout/Header/index.tsx
+++ b/src/components/Layout/Header/index.tsx
@@ -1,6 +1,6 @@
import {createContext, useCallback, useContext} from 'react'
import {type GestureResponderEvent, Keyboard, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
diff --git a/src/components/LikedByList.tsx b/src/components/LikedByList.tsx
index bd4a9f5515..8d0f40d71f 100644
--- a/src/components/LikedByList.tsx
+++ b/src/components/LikedByList.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {type AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
diff --git a/src/components/ListCard.tsx b/src/components/ListCard.tsx
index d1c4d82362..1660bff8ae 100644
--- a/src/components/ListCard.tsx
+++ b/src/components/ListCard.tsx
@@ -6,8 +6,9 @@ import {
moderateUserList,
type ModerationUI,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {sanitizeHandle} from '#/lib/strings/handles'
diff --git a/src/components/Lists.tsx b/src/components/Lists.tsx
index 2bcbf11c7a..e1008300ad 100644
--- a/src/components/Lists.tsx
+++ b/src/components/Lists.tsx
@@ -1,7 +1,8 @@
import {memo} from 'react'
import {type StyleProp, View, type ViewStyle} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {cleanError} from '#/lib/strings/errors'
import {
diff --git a/src/components/MediaPreview.tsx b/src/components/MediaPreview.tsx
index 542e546c42..a6e30c820c 100644
--- a/src/components/MediaPreview.tsx
+++ b/src/components/MediaPreview.tsx
@@ -1,7 +1,7 @@
import {type StyleProp, StyleSheet, View, type ViewStyle} from 'react-native'
import {Image} from 'expo-image'
import {type AppBskyFeedDefs} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {isTenorGifUri} from '#/lib/strings/embed-player'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/components/Menu/index.tsx b/src/components/Menu/index.tsx
index a5dda666e5..8480956715 100644
--- a/src/components/Menu/index.tsx
+++ b/src/components/Menu/index.tsx
@@ -6,8 +6,9 @@ import {
View,
type ViewStyle,
} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import flattenReactChildren from 'react-keyed-flatten-children'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/components/Menu/index.web.tsx b/src/components/Menu/index.web.tsx
index 72eaf0e12d..ecb74a19e2 100644
--- a/src/components/Menu/index.web.tsx
+++ b/src/components/Menu/index.web.tsx
@@ -6,7 +6,7 @@ import {
View,
type ViewStyle,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {DropdownMenu} from 'radix-ui'
diff --git a/src/components/NewskieDialog.tsx b/src/components/NewskieDialog.tsx
index 4ca98bd8b0..38a8ca29b7 100644
--- a/src/components/NewskieDialog.tsx
+++ b/src/components/NewskieDialog.tsx
@@ -1,8 +1,9 @@
import {useMemo, useState} from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs, moderateProfile} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {differenceInSeconds} from 'date-fns'
import {HITSLOP_10} from '#/lib/constants'
@@ -29,7 +30,7 @@ export function NewskieDialog({
const {_} = useLingui()
const control = useDialogControl()
- const createdAt = profile.createdAt as string | undefined
+ const createdAt = profile.createdAt
const [now] = useState(() => Date.now())
const daysOld = useMemo(() => {
diff --git a/src/components/Pills.tsx b/src/components/Pills.tsx
index 879c62ba4d..30eed13ab9 100644
--- a/src/components/Pills.tsx
+++ b/src/components/Pills.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import {View} from 'react-native'
import {BSKY_LABELER_DID, type ModerationCause} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
import {UserAvatar} from '#/view/com/util/UserAvatar'
diff --git a/src/components/PolicyUpdateOverlay/Badge.tsx b/src/components/PolicyUpdateOverlay/Badge.tsx
index b3bb8b77b2..dbbecd6bcc 100644
--- a/src/components/PolicyUpdateOverlay/Badge.tsx
+++ b/src/components/PolicyUpdateOverlay/Badge.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {Logo} from '#/view/icons/Logo'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/components/PolicyUpdateOverlay/updates/202508/index.tsx b/src/components/PolicyUpdateOverlay/updates/202508/index.tsx
index de741e1acc..5ade133131 100644
--- a/src/components/PolicyUpdateOverlay/updates/202508/index.tsx
+++ b/src/components/PolicyUpdateOverlay/updates/202508/index.tsx
@@ -1,7 +1,8 @@
import {useCallback} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useA11y} from '#/state/a11y'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx b/src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx
index 68136a8229..d0782f02ab 100644
--- a/src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx
+++ b/src/components/Post/Embed/ExternalEmbed/ExternalGif.tsx
@@ -6,7 +6,7 @@ import {
} from 'react-native'
import {Image} from 'expo-image'
import {type AppBskyEmbedExternal} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type EmbedPlayerParams} from '#/lib/strings/embed-player'
@@ -94,7 +94,6 @@ export function ExternalGif({
source={params.source}
onAccept={load}
/>
-
(
+ view.record,
+ AppBskyGraphStarterpack.isRecord,
+ )
? _(msg`Navigate to ${view.record.name}`)
: _(msg`Navigate to starter pack`),
precache,
@@ -150,7 +154,12 @@ export function Link({
return {rkey, handleOrDid: creator.handle || creator.did}
}, [starterPack])
- if (!AppBskyGraphStarterpack.isRecord(record)) {
+ if (
+ !bsky.dangerousIsType(
+ record,
+ AppBskyGraphStarterpack.isRecord,
+ )
+ ) {
return null
}
diff --git a/src/components/StarterPack/Wizard/WizardEditListDialog.tsx b/src/components/StarterPack/Wizard/WizardEditListDialog.tsx
index 41ee0cb595..2ca7ba0053 100644
--- a/src/components/StarterPack/Wizard/WizardEditListDialog.tsx
+++ b/src/components/StarterPack/Wizard/WizardEditListDialog.tsx
@@ -6,8 +6,9 @@ import {
type AppBskyFeedDefs,
type ModerationOpts,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
import {type ListMethods} from '#/view/com/util/List'
diff --git a/src/components/StarterPack/Wizard/WizardListCard.tsx b/src/components/StarterPack/Wizard/WizardListCard.tsx
index b5cd15a112..d326675b9f 100644
--- a/src/components/StarterPack/Wizard/WizardListCard.tsx
+++ b/src/components/StarterPack/Wizard/WizardListCard.tsx
@@ -7,8 +7,9 @@ import {
type ModerationOpts,
type ModerationUI,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {DISCOVER_FEED_URI, STARTER_PACK_MAX_SIZE} from '#/lib/constants'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
diff --git a/src/components/TrendingTopics.tsx b/src/components/TrendingTopics.tsx
index 1f18713be4..7239e00c41 100644
--- a/src/components/TrendingTopics.tsx
+++ b/src/components/TrendingTopics.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import {View} from 'react-native'
import {type AtUri} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {PressableScale} from '#/lib/custom-animations/PressableScale'
diff --git a/src/components/VideoPostCard.tsx b/src/components/VideoPostCard.tsx
index 840cef19eb..898d43eb6f 100644
--- a/src/components/VideoPostCard.tsx
+++ b/src/components/VideoPostCard.tsx
@@ -9,7 +9,7 @@ import {
AppBskyFeedPost,
type ModerationDecision,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {sanitizeHandle} from '#/lib/strings/handles'
diff --git a/src/components/WelcomeModal.tsx b/src/components/WelcomeModal.tsx
index 9b4ab08ebb..4b3bc4ca99 100644
--- a/src/components/WelcomeModal.tsx
+++ b/src/components/WelcomeModal.tsx
@@ -1,8 +1,9 @@
import {useEffect, useState} from 'react'
import {Pressable, View} from 'react-native'
import {ImageBackground} from 'expo-image'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {FocusGuards, FocusScope} from 'radix-ui/internal'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
diff --git a/src/components/WhoCanReply.tsx b/src/components/WhoCanReply.tsx
index 8e93ee4fcc..be7636ff4b 100644
--- a/src/components/WhoCanReply.tsx
+++ b/src/components/WhoCanReply.tsx
@@ -12,8 +12,9 @@ import {
type AppBskyGraphDefs,
AtUri,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {HITSLOP_10} from '#/lib/constants'
import {makeListLink, makeProfileLink} from '#/lib/routes/links'
diff --git a/src/components/activity-notifications/SubscribeProfileButton.tsx b/src/components/activity-notifications/SubscribeProfileButton.tsx
index 7995913ec7..7bbc677d47 100644
--- a/src/components/activity-notifications/SubscribeProfileButton.tsx
+++ b/src/components/activity-notifications/SubscribeProfileButton.tsx
@@ -1,7 +1,8 @@
import {useCallback, useEffect, useState} from 'react'
import {type ModerationOpts} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
diff --git a/src/components/activity-notifications/SubscribeProfileDialog.tsx b/src/components/activity-notifications/SubscribeProfileDialog.tsx
index cb0cae9fcc..6e878353ac 100644
--- a/src/components/activity-notifications/SubscribeProfileDialog.tsx
+++ b/src/components/activity-notifications/SubscribeProfileDialog.tsx
@@ -6,8 +6,9 @@ import {
type ModerationOpts,
type Un$Typed,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type InfiniteData,
useMutation,
diff --git a/src/components/ageAssurance/AgeAssuranceAccountCard.tsx b/src/components/ageAssurance/AgeAssuranceAccountCard.tsx
index 0c8d4e9ae1..09dc1e976e 100644
--- a/src/components/ageAssurance/AgeAssuranceAccountCard.tsx
+++ b/src/components/ageAssurance/AgeAssuranceAccountCard.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {dateDiff, useGetTimeAgo} from '#/lib/hooks/useTimeAgo'
import {atoms as a, useBreakpoints, useTheme, type ViewStyleProp} from '#/alf'
diff --git a/src/components/ageAssurance/AgeAssuranceAdmonition.tsx b/src/components/ageAssurance/AgeAssuranceAdmonition.tsx
index 426924b637..46610b9dea 100644
--- a/src/components/ageAssurance/AgeAssuranceAdmonition.tsx
+++ b/src/components/ageAssurance/AgeAssuranceAdmonition.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, select, useTheme, type ViewStyleProp} from '#/alf'
import {AgeAssuranceConfigUnavailableError} from '#/components/ageAssurance/AgeAssuranceErrors'
diff --git a/src/components/ageAssurance/AgeAssuranceAppealDialog.tsx b/src/components/ageAssurance/AgeAssuranceAppealDialog.tsx
index c7f4c170e1..c09688a132 100644
--- a/src/components/ageAssurance/AgeAssuranceAppealDialog.tsx
+++ b/src/components/ageAssurance/AgeAssuranceAppealDialog.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {ToolsOzoneReportDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation} from '@tanstack/react-query'
import {BLUESKY_MOD_SERVICE_HEADERS} from '#/lib/constants'
diff --git a/src/components/ageAssurance/AgeAssuranceBadge.tsx b/src/components/ageAssurance/AgeAssuranceBadge.tsx
index f8b5ee9b29..77447eb330 100644
--- a/src/components/ageAssurance/AgeAssuranceBadge.tsx
+++ b/src/components/ageAssurance/AgeAssuranceBadge.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, select, useTheme} from '#/alf'
import {ShieldCheck_Stroke2_Corner0_Rounded as Shield} from '#/components/icons/Shield'
diff --git a/src/components/ageAssurance/AgeAssuranceDismissibleFeedBanner.tsx b/src/components/ageAssurance/AgeAssuranceDismissibleFeedBanner.tsx
index b32a2457b3..841e622b1b 100644
--- a/src/components/ageAssurance/AgeAssuranceDismissibleFeedBanner.tsx
+++ b/src/components/ageAssurance/AgeAssuranceDismissibleFeedBanner.tsx
@@ -1,6 +1,6 @@
import {useMemo} from 'react'
import {View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {Nux, useNux, useSaveNux} from '#/state/queries/nuxs'
diff --git a/src/components/ageAssurance/AgeAssuranceDismissibleNotice.tsx b/src/components/ageAssurance/AgeAssuranceDismissibleNotice.tsx
index fcfdf18017..14361de678 100644
--- a/src/components/ageAssurance/AgeAssuranceDismissibleNotice.tsx
+++ b/src/components/ageAssurance/AgeAssuranceDismissibleNotice.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {Nux, useNux, useSaveNux} from '#/state/queries/nuxs'
diff --git a/src/components/ageAssurance/AgeAssuranceErrors.tsx b/src/components/ageAssurance/AgeAssuranceErrors.tsx
index 628153f084..fe8f57ab16 100644
--- a/src/components/ageAssurance/AgeAssuranceErrors.tsx
+++ b/src/components/ageAssurance/AgeAssuranceErrors.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type ViewStyleProp} from '#/alf'
import * as Admonition from '#/components/Admonition'
diff --git a/src/components/ageAssurance/AgeAssuranceInitDialog.tsx b/src/components/ageAssurance/AgeAssuranceInitDialog.tsx
index 8414b5fbd8..bf79f5dfc4 100644
--- a/src/components/ageAssurance/AgeAssuranceInitDialog.tsx
+++ b/src/components/ageAssurance/AgeAssuranceInitDialog.tsx
@@ -1,8 +1,9 @@
import {useState} from 'react'
import {View} from 'react-native'
import {XRPCError} from '@atproto/xrpc'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {validate as validateEmail} from 'email-validator'
import {useCleanError} from '#/lib/hooks/useCleanError'
diff --git a/src/components/ageAssurance/AgeAssuranceRedirectDialog.tsx b/src/components/ageAssurance/AgeAssuranceRedirectDialog.tsx
index fc8dfeef4a..ad584ca203 100644
--- a/src/components/ageAssurance/AgeAssuranceRedirectDialog.tsx
+++ b/src/components/ageAssurance/AgeAssuranceRedirectDialog.tsx
@@ -1,7 +1,8 @@
import {useEffect, useRef, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {retry} from '#/lib/async/retry'
import {wait} from '#/lib/async/wait'
diff --git a/src/components/ageAssurance/AgeRestrictedScreen.tsx b/src/components/ageAssurance/AgeRestrictedScreen.tsx
index f34efd4064..c20dd09bd2 100644
--- a/src/components/ageAssurance/AgeRestrictedScreen.tsx
+++ b/src/components/ageAssurance/AgeRestrictedScreen.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a} from '#/alf'
import {Admonition} from '#/components/Admonition'
diff --git a/src/components/ageAssurance/useAgeAssuranceCopy.ts b/src/components/ageAssurance/useAgeAssuranceCopy.ts
index c429e17fe7..fd92edd321 100644
--- a/src/components/ageAssurance/useAgeAssuranceCopy.ts
+++ b/src/components/ageAssurance/useAgeAssuranceCopy.ts
@@ -1,5 +1,5 @@
import {useMemo} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useAgeAssurance} from '#/ageAssurance'
diff --git a/src/components/contacts/FindContactsBannerNUX.tsx b/src/components/contacts/FindContactsBannerNUX.tsx
index 577474a3a4..2997e00d4e 100644
--- a/src/components/contacts/FindContactsBannerNUX.tsx
+++ b/src/components/contacts/FindContactsBannerNUX.tsx
@@ -2,8 +2,9 @@ import {useMemo} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
import {LinearGradient} from 'expo-linear-gradient'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {HITSLOP_10} from '#/lib/constants'
import {Nux, useNux, useSaveNux} from '#/state/queries/nuxs'
diff --git a/src/components/contacts/components/HeroImage.tsx b/src/components/contacts/components/HeroImage.tsx
index 5e710fd9ae..5555c2939a 100644
--- a/src/components/contacts/components/HeroImage.tsx
+++ b/src/components/contacts/components/HeroImage.tsx
@@ -1,6 +1,6 @@
import {View} from 'react-native'
import {Image} from 'expo-image'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/components/contacts/components/InviteInfo.tsx b/src/components/contacts/components/InviteInfo.tsx
index 54100a2a01..07c4d741fe 100644
--- a/src/components/contacts/components/InviteInfo.tsx
+++ b/src/components/contacts/components/InviteInfo.tsx
@@ -1,6 +1,7 @@
import {type StyleProp, type TextStyle} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {HITSLOP_20} from '#/lib/constants'
import {android, atoms as a} from '#/alf'
diff --git a/src/components/contacts/components/OTPInput.tsx b/src/components/contacts/components/OTPInput.tsx
index 2edef4a31f..9834f6af9f 100644
--- a/src/components/contacts/components/OTPInput.tsx
+++ b/src/components/contacts/components/OTPInput.tsx
@@ -5,7 +5,7 @@ import {
type TextInputSelectionChangeEvent,
View,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {mergeRefs} from '#/lib/merge-refs'
diff --git a/src/components/contacts/phone-number.ts b/src/components/contacts/phone-number.ts
index 9510a614c0..1682b8f681 100644
--- a/src/components/contacts/phone-number.ts
+++ b/src/components/contacts/phone-number.ts
@@ -1,4 +1,4 @@
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
import {
isSupportedCountry,
ParseError,
diff --git a/src/components/contacts/screens/GetContacts.tsx b/src/components/contacts/screens/GetContacts.tsx
index 909be81abc..879864b162 100644
--- a/src/components/contacts/screens/GetContacts.tsx
+++ b/src/components/contacts/screens/GetContacts.tsx
@@ -8,8 +8,9 @@ import {
AppBskyContactImportContacts,
type Un$Typed,
} from '@atproto/api'
-import {msg, t, Trans} from '@lingui/macro'
+import {msg, t} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation, useQueryClient} from '@tanstack/react-query'
import {uploadBlob} from '#/lib/api'
diff --git a/src/components/contacts/screens/PhoneInput.tsx b/src/components/contacts/screens/PhoneInput.tsx
index 8eec5742e8..6904789a6e 100644
--- a/src/components/contacts/screens/PhoneInput.tsx
+++ b/src/components/contacts/screens/PhoneInput.tsx
@@ -3,8 +3,9 @@ import {Keyboard, View} from 'react-native'
import {KeyboardAvoidingView} from 'react-native-keyboard-controller'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
import {AppBskyContactStartPhoneVerification} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation} from '@tanstack/react-query'
import {urls} from '#/lib/constants'
diff --git a/src/components/contacts/screens/VerifyNumber.tsx b/src/components/contacts/screens/VerifyNumber.tsx
index c316c66af7..f9d062f691 100644
--- a/src/components/contacts/screens/VerifyNumber.tsx
+++ b/src/components/contacts/screens/VerifyNumber.tsx
@@ -4,8 +4,9 @@ import {
AppBskyContactStartPhoneVerification,
AppBskyContactVerifyPhone,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation} from '@tanstack/react-query'
import {clamp} from '#/lib/numbers'
diff --git a/src/components/contacts/screens/ViewMatches.tsx b/src/components/contacts/screens/ViewMatches.tsx
index b9aec3ed95..3543c604f5 100644
--- a/src/components/contacts/screens/ViewMatches.tsx
+++ b/src/components/contacts/screens/ViewMatches.tsx
@@ -3,8 +3,9 @@ import {View} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
import * as SMS from 'expo-sms'
import {type ModerationOpts} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useMutation, useQueryClient} from '@tanstack/react-query'
import {wait} from '#/lib/async/wait'
diff --git a/src/components/dialogs/BirthDateSettings.tsx b/src/components/dialogs/BirthDateSettings.tsx
index 102dd12c89..57dbf01ae7 100644
--- a/src/components/dialogs/BirthDateSettings.tsx
+++ b/src/components/dialogs/BirthDateSettings.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useCleanError} from '#/lib/hooks/useCleanError'
import {isAppPassword} from '#/lib/jwt'
diff --git a/src/components/dialogs/DeviceLocationRequestDialog.tsx b/src/components/dialogs/DeviceLocationRequestDialog.tsx
index de4540909f..363864a4a3 100644
--- a/src/components/dialogs/DeviceLocationRequestDialog.tsx
+++ b/src/components/dialogs/DeviceLocationRequestDialog.tsx
@@ -1,7 +1,8 @@
import {useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {wait} from '#/lib/async/wait'
import {isNetworkError, useCleanError} from '#/lib/hooks/useCleanError'
diff --git a/src/components/dialogs/EmailDialog/components/ResendEmailText.tsx b/src/components/dialogs/EmailDialog/components/ResendEmailText.tsx
index 0fc9a5469f..85f0b8a60a 100644
--- a/src/components/dialogs/EmailDialog/components/ResendEmailText.tsx
+++ b/src/components/dialogs/EmailDialog/components/ResendEmailText.tsx
@@ -1,6 +1,7 @@
import {useState} from 'react'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {wait} from '#/lib/async/wait'
import {atoms as a, type TextStyleProp, useTheme} from '#/alf'
diff --git a/src/components/dialogs/EmailDialog/components/TokenField.tsx b/src/components/dialogs/EmailDialog/components/TokenField.tsx
index 25a7dbe395..04a55a26de 100644
--- a/src/components/dialogs/EmailDialog/components/TokenField.tsx
+++ b/src/components/dialogs/EmailDialog/components/TokenField.tsx
@@ -1,5 +1,5 @@
import {type TextInputProps, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import * as TextField from '#/components/forms/TextField'
diff --git a/src/components/dialogs/EmailDialog/index.tsx b/src/components/dialogs/EmailDialog/index.tsx
index 3cebbdfc7a..729557146c 100644
--- a/src/components/dialogs/EmailDialog/index.tsx
+++ b/src/components/dialogs/EmailDialog/index.tsx
@@ -1,5 +1,5 @@
import {useCallback, useState} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {web} from '#/alf'
diff --git a/src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx b/src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx
index d10d5cab7a..45627f5c88 100644
--- a/src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx
+++ b/src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx
@@ -1,7 +1,8 @@
import {useReducer, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {wait} from '#/lib/async/wait'
import {useCleanError} from '#/lib/hooks/useCleanError'
diff --git a/src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx b/src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx
index 4a3f438df4..f825a563fa 100644
--- a/src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx
+++ b/src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx
@@ -1,7 +1,8 @@
import {useReducer} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {wait} from '#/lib/async/wait'
import {useCleanError} from '#/lib/hooks/useCleanError'
diff --git a/src/components/dialogs/EmailDialog/screens/Manage2FA/index.tsx b/src/components/dialogs/EmailDialog/screens/Manage2FA/index.tsx
index 427a42b1fd..f85d9a39a2 100644
--- a/src/components/dialogs/EmailDialog/screens/Manage2FA/index.tsx
+++ b/src/components/dialogs/EmailDialog/screens/Manage2FA/index.tsx
@@ -1,5 +1,5 @@
import {useEffect, useState} from 'react'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useAccountEmailState} from '#/components/dialogs/EmailDialog/data/useAccountEmailState'
import {Disable} from '#/components/dialogs/EmailDialog/screens/Manage2FA/Disable'
diff --git a/src/components/dialogs/EmailDialog/screens/Update.tsx b/src/components/dialogs/EmailDialog/screens/Update.tsx
index f92e764767..c9b2b9944a 100644
--- a/src/components/dialogs/EmailDialog/screens/Update.tsx
+++ b/src/components/dialogs/EmailDialog/screens/Update.tsx
@@ -1,7 +1,8 @@
import {useReducer} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {validate as validateEmail} from 'email-validator'
import {wait} from '#/lib/async/wait'
diff --git a/src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx b/src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx
index 77ee6ae094..a6bb41bbae 100644
--- a/src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx
+++ b/src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, platform, tokens, useBreakpoints, useTheme} from '#/alf'
import {Button, ButtonText} from '#/components/Button'
diff --git a/src/components/dialogs/EmailDialog/screens/Verify.tsx b/src/components/dialogs/EmailDialog/screens/Verify.tsx
index 6116acf2f7..3c375e8508 100644
--- a/src/components/dialogs/EmailDialog/screens/Verify.tsx
+++ b/src/components/dialogs/EmailDialog/screens/Verify.tsx
@@ -1,7 +1,8 @@
import {useReducer} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {wait} from '#/lib/async/wait'
import {useCleanError} from '#/lib/hooks/useCleanError'
diff --git a/src/components/dialogs/Embed.tsx b/src/components/dialogs/Embed.tsx
index 048cf208ba..c0eabc1e88 100644
--- a/src/components/dialogs/Embed.tsx
+++ b/src/components/dialogs/Embed.tsx
@@ -1,8 +1,9 @@
import {memo, useEffect, useMemo, useState} from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs, type AppBskyFeedPost, AtUri} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {EMBED_SCRIPT} from '#/lib/constants'
import {niceDate} from '#/lib/strings/time'
diff --git a/src/components/dialogs/EmbedConsent.tsx b/src/components/dialogs/EmbedConsent.tsx
index 7ffba6f3a7..8a17f18ae7 100644
--- a/src/components/dialogs/EmbedConsent.tsx
+++ b/src/components/dialogs/EmbedConsent.tsx
@@ -1,7 +1,8 @@
import {useCallback} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type EmbedPlayerSource,
diff --git a/src/components/dialogs/GifSelect.tsx b/src/components/dialogs/GifSelect.tsx
index 23fd2f38e6..72ea87528e 100644
--- a/src/components/dialogs/GifSelect.tsx
+++ b/src/components/dialogs/GifSelect.tsx
@@ -8,8 +8,9 @@ import {
import {type TextInput, View} from 'react-native'
import {useWindowDimensions} from 'react-native'
import {Image} from 'expo-image'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {cleanError} from '#/lib/strings/errors'
import {
diff --git a/src/components/dialogs/InAppBrowserConsent.tsx b/src/components/dialogs/InAppBrowserConsent.tsx
index 9250ffc5d0..cfcddda4a4 100644
--- a/src/components/dialogs/InAppBrowserConsent.tsx
+++ b/src/components/dialogs/InAppBrowserConsent.tsx
@@ -1,7 +1,8 @@
import {useCallback} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useOpenLink} from '#/lib/hooks/useOpenLink'
import {useSetInAppBrowser} from '#/state/preferences/in-app-browser'
diff --git a/src/components/dialogs/LanguageSelectDialog.tsx b/src/components/dialogs/LanguageSelectDialog.tsx
index 567fd6608a..619ac14273 100644
--- a/src/components/dialogs/LanguageSelectDialog.tsx
+++ b/src/components/dialogs/LanguageSelectDialog.tsx
@@ -1,8 +1,9 @@
import {useCallback, useMemo, useState} from 'react'
import {useWindowDimensions, View} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {languageName} from '#/locale/helpers'
import {type Language, LANGUAGES, LANGUAGES_MAP_CODE2} from '#/locale/languages'
diff --git a/src/components/dialogs/LinkWarning.tsx b/src/components/dialogs/LinkWarning.tsx
index 181d411ce4..07fc332ec2 100644
--- a/src/components/dialogs/LinkWarning.tsx
+++ b/src/components/dialogs/LinkWarning.tsx
@@ -1,7 +1,8 @@
import {useCallback, useMemo} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useOpenLink} from '#/lib/hooks/useOpenLink'
import {shareUrl} from '#/lib/sharing'
diff --git a/src/components/dialogs/MutedWords.tsx b/src/components/dialogs/MutedWords.tsx
index e674ca212b..9c7b7580a3 100644
--- a/src/components/dialogs/MutedWords.tsx
+++ b/src/components/dialogs/MutedWords.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs, sanitizeMutedWordValue} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {logger} from '#/logger'
import {
diff --git a/src/components/dialogs/PostInteractionSettingsDialog.tsx b/src/components/dialogs/PostInteractionSettingsDialog.tsx
index bca1485f87..a49ccc7316 100644
--- a/src/components/dialogs/PostInteractionSettingsDialog.tsx
+++ b/src/components/dialogs/PostInteractionSettingsDialog.tsx
@@ -5,8 +5,9 @@ import {
type AppBskyFeedPostgate,
AtUri,
} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {useHaptics} from '#/lib/haptics'
diff --git a/src/components/dialogs/SearchablePeopleList.tsx b/src/components/dialogs/SearchablePeopleList.tsx
index b0e887aecf..9471d48c04 100644
--- a/src/components/dialogs/SearchablePeopleList.tsx
+++ b/src/components/dialogs/SearchablePeopleList.tsx
@@ -8,8 +8,9 @@ import {
} from 'react'
import {TextInput, View} from 'react-native'
import {moderateProfile, type ModerationOpts} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {sanitizeHandle} from '#/lib/strings/handles'
diff --git a/src/components/dialogs/ServerInput.tsx b/src/components/dialogs/ServerInput.tsx
index 57be836614..d9d8ed4a87 100644
--- a/src/components/dialogs/ServerInput.tsx
+++ b/src/components/dialogs/ServerInput.tsx
@@ -1,7 +1,8 @@
import {useCallback, useImperativeHandle, useRef, useState} from 'react'
import {useWindowDimensions, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {BSKY_SERVICE} from '#/lib/constants'
import * as persisted from '#/state/persisted'
diff --git a/src/components/dialogs/Signin.tsx b/src/components/dialogs/Signin.tsx
index 9d1018104f..c4bb895c1e 100644
--- a/src/components/dialogs/Signin.tsx
+++ b/src/components/dialogs/Signin.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useCloseAllActiveElements} from '#/state/util'
diff --git a/src/components/dialogs/StarterPackDialog.tsx b/src/components/dialogs/StarterPackDialog.tsx
index 06aea1bec7..57ffc02fcd 100644
--- a/src/components/dialogs/StarterPackDialog.tsx
+++ b/src/components/dialogs/StarterPackDialog.tsx
@@ -4,8 +4,9 @@ import {
type AppBskyGraphGetStarterPacksWithMembership,
AppBskyGraphStarterpack,
} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
diff --git a/src/components/dialogs/SwitchAccount.tsx b/src/components/dialogs/SwitchAccount.tsx
index 0013f92bee..2dc550a7c8 100644
--- a/src/components/dialogs/SwitchAccount.tsx
+++ b/src/components/dialogs/SwitchAccount.tsx
@@ -1,7 +1,8 @@
import {useCallback} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher'
import {type SessionAccount, useSession} from '#/state/session'
diff --git a/src/components/dialogs/lists/CreateListFromStarterPackDialog.tsx b/src/components/dialogs/lists/CreateListFromStarterPackDialog.tsx
index 6ef0099a54..3e74de5c67 100644
--- a/src/components/dialogs/lists/CreateListFromStarterPackDialog.tsx
+++ b/src/components/dialogs/lists/CreateListFromStarterPackDialog.tsx
@@ -8,8 +8,9 @@ import {
type ComAtprotoRepoApplyWrites,
} from '@atproto/api'
import {TID} from '@atproto/common-web'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
import chunk from 'lodash.chunk'
diff --git a/src/components/dialogs/lists/CreateOrEditListDialog.tsx b/src/components/dialogs/lists/CreateOrEditListDialog.tsx
index fa3b8903ef..e5c7cfce56 100644
--- a/src/components/dialogs/lists/CreateOrEditListDialog.tsx
+++ b/src/components/dialogs/lists/CreateOrEditListDialog.tsx
@@ -1,8 +1,9 @@
import {useCallback, useEffect, useMemo, useState} from 'react'
import {useWindowDimensions, View} from 'react-native'
import {type AppBskyGraphDefs, RichText as RichTextAPI} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {cleanError} from '#/lib/strings/errors'
import {isOverMaxGraphemeCount} from '#/lib/strings/helpers'
diff --git a/src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx b/src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx
index d975c89ed2..2ab7891fcd 100644
--- a/src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx
+++ b/src/components/dialogs/lists/ListAddRemoveUsersDialog.tsx
@@ -1,8 +1,9 @@
import {useCallback, useMemo} from 'react'
import {View} from 'react-native'
import {type AppBskyGraphDefs, type ModerationOpts} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {cleanError} from '#/lib/strings/errors'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
diff --git a/src/components/dialogs/nuxs/ActivitySubscriptions.tsx b/src/components/dialogs/nuxs/ActivitySubscriptions.tsx
index 227f1d5a46..ed4306459c 100644
--- a/src/components/dialogs/nuxs/ActivitySubscriptions.tsx
+++ b/src/components/dialogs/nuxs/ActivitySubscriptions.tsx
@@ -1,8 +1,9 @@
import {useCallback} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme, web} from '#/alf'
import {Button, ButtonText} from '#/components/Button'
diff --git a/src/components/dialogs/nuxs/BookmarksAnnouncement.tsx b/src/components/dialogs/nuxs/BookmarksAnnouncement.tsx
index 1673baedac..f7e4bf04c6 100644
--- a/src/components/dialogs/nuxs/BookmarksAnnouncement.tsx
+++ b/src/components/dialogs/nuxs/BookmarksAnnouncement.tsx
@@ -2,8 +2,9 @@ import {useCallback} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
import {LinearGradient} from 'expo-linear-gradient'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme, web} from '#/alf'
import {transparentifyColor} from '#/alf/util/colorGeneration'
diff --git a/src/components/dialogs/nuxs/DraftsAnnouncement.tsx b/src/components/dialogs/nuxs/DraftsAnnouncement.tsx
index 7811921d85..79488fe4d9 100644
--- a/src/components/dialogs/nuxs/DraftsAnnouncement.tsx
+++ b/src/components/dialogs/nuxs/DraftsAnnouncement.tsx
@@ -2,8 +2,9 @@ import {useCallback} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
import {LinearGradient} from 'expo-linear-gradient'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme, web} from '#/alf'
import {Button, ButtonText} from '#/components/Button'
diff --git a/src/components/dialogs/nuxs/FindContactsAnnouncement.tsx b/src/components/dialogs/nuxs/FindContactsAnnouncement.tsx
index 192f98db00..8fd7d2d2c5 100644
--- a/src/components/dialogs/nuxs/FindContactsAnnouncement.tsx
+++ b/src/components/dialogs/nuxs/FindContactsAnnouncement.tsx
@@ -2,8 +2,9 @@ import {useCallback} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
import {LinearGradient} from 'expo-linear-gradient'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme, web} from '#/alf'
import {Button, ButtonText} from '#/components/Button'
diff --git a/src/components/dialogs/nuxs/InitialVerificationAnnouncement.tsx b/src/components/dialogs/nuxs/InitialVerificationAnnouncement.tsx
index f3b659d43c..85bc29a48f 100644
--- a/src/components/dialogs/nuxs/InitialVerificationAnnouncement.tsx
+++ b/src/components/dialogs/nuxs/InitialVerificationAnnouncement.tsx
@@ -1,8 +1,9 @@
import {useCallback} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {urls} from '#/lib/constants'
import {atoms as a, useBreakpoints, useTheme} from '#/alf'
diff --git a/src/components/dialogs/nuxs/LiveNowBetaDialog.tsx b/src/components/dialogs/nuxs/LiveNowBetaDialog.tsx
index 474aad3923..49c43a1e41 100644
--- a/src/components/dialogs/nuxs/LiveNowBetaDialog.tsx
+++ b/src/components/dialogs/nuxs/LiveNowBetaDialog.tsx
@@ -2,8 +2,9 @@ import {useCallback, useMemo} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
import {LinearGradient} from 'expo-linear-gradient'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, select, useTheme, utils, web} from '#/alf'
import {Button, ButtonText} from '#/components/Button'
diff --git a/src/components/dms/ActionsWrapper.tsx b/src/components/dms/ActionsWrapper.tsx
index d2907b2423..c1f54e2394 100644
--- a/src/components/dms/ActionsWrapper.tsx
+++ b/src/components/dms/ActionsWrapper.tsx
@@ -1,6 +1,6 @@
import {View} from 'react-native'
import {type ChatBskyConvoDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {atoms as a} from '#/alf'
diff --git a/src/components/dms/ActionsWrapper.web.tsx b/src/components/dms/ActionsWrapper.web.tsx
index 64745283ea..18eb4161cf 100644
--- a/src/components/dms/ActionsWrapper.web.tsx
+++ b/src/components/dms/ActionsWrapper.web.tsx
@@ -1,7 +1,7 @@
import {useCallback, useRef, useState} from 'react'
import {Pressable, View} from 'react-native'
import {type ChatBskyConvoDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useConvoActive} from '#/state/messages/convo'
diff --git a/src/components/dms/AfterReportDialog.tsx b/src/components/dms/AfterReportDialog.tsx
index 31d091bd8e..ad375be4da 100644
--- a/src/components/dms/AfterReportDialog.tsx
+++ b/src/components/dms/AfterReportDialog.tsx
@@ -1,8 +1,9 @@
import {memo, useState} from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs, type ChatBskyConvoDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {StackActions, useNavigation} from '@react-navigation/native'
import type React from 'react'
diff --git a/src/components/dms/BlockedByListDialog.tsx b/src/components/dms/BlockedByListDialog.tsx
index c071d0bba0..a91811c756 100644
--- a/src/components/dms/BlockedByListDialog.tsx
+++ b/src/components/dms/BlockedByListDialog.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import {View} from 'react-native'
import {type ModerationCause} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {listUriToHref} from '#/lib/strings/url-helpers'
diff --git a/src/components/dms/ChatEmptyPill.tsx b/src/components/dms/ChatEmptyPill.tsx
index baf860ce5b..79f98ace06 100644
--- a/src/components/dms/ChatEmptyPill.tsx
+++ b/src/components/dms/ChatEmptyPill.tsx
@@ -6,7 +6,7 @@ import Animated, {
useSharedValue,
withTiming,
} from 'react-native-reanimated'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {ScaleAndFadeIn} from '#/lib/custom-animations/ScaleAndFade'
diff --git a/src/components/dms/ConvoMenu.tsx b/src/components/dms/ConvoMenu.tsx
index fa50ec1e99..713605a7af 100644
--- a/src/components/dms/ConvoMenu.tsx
+++ b/src/components/dms/ConvoMenu.tsx
@@ -1,8 +1,9 @@
import React, {useCallback} from 'react'
import {Keyboard, View} from 'react-native'
import {type ChatBskyConvoDefs, type ModerationCause} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {type NavigationProp} from '#/lib/routes/types'
diff --git a/src/components/dms/DateDivider.tsx b/src/components/dms/DateDivider.tsx
index ca70468340..83b07dca9c 100644
--- a/src/components/dms/DateDivider.tsx
+++ b/src/components/dms/DateDivider.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {subDays} from 'date-fns'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/components/dms/EmojiPopup.android.tsx b/src/components/dms/EmojiPopup.android.tsx
index c2222e5bf4..3e55596071 100644
--- a/src/components/dms/EmojiPopup.android.tsx
+++ b/src/components/dms/EmojiPopup.android.tsx
@@ -1,8 +1,9 @@
import {useState} from 'react'
import {Modal, Pressable, View} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme} from '#/alf'
import {Button, ButtonIcon} from '#/components/Button'
diff --git a/src/components/dms/EmojiReactionPicker.tsx b/src/components/dms/EmojiReactionPicker.tsx
index b83fd44547..99cc3a4b29 100644
--- a/src/components/dms/EmojiReactionPicker.tsx
+++ b/src/components/dms/EmojiReactionPicker.tsx
@@ -1,7 +1,7 @@
import {useMemo, useState} from 'react'
import {useWindowDimensions, View} from 'react-native'
import {type ChatBskyConvoDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useSession} from '#/state/session'
diff --git a/src/components/dms/EmojiReactionPicker.web.tsx b/src/components/dms/EmojiReactionPicker.web.tsx
index f2a7cc1193..6a96238797 100644
--- a/src/components/dms/EmojiReactionPicker.web.tsx
+++ b/src/components/dms/EmojiReactionPicker.web.tsx
@@ -2,7 +2,7 @@ import {useState} from 'react'
import {Pressable, View} from 'react-native'
import {type ChatBskyConvoDefs} from '@atproto/api'
import EmojiPicker from '@emoji-mart/react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {DropdownMenu} from 'radix-ui'
diff --git a/src/components/dms/LeaveConvoPrompt.tsx b/src/components/dms/LeaveConvoPrompt.tsx
index 1e101473a9..44fb6d6572 100644
--- a/src/components/dms/LeaveConvoPrompt.tsx
+++ b/src/components/dms/LeaveConvoPrompt.tsx
@@ -1,4 +1,4 @@
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {StackActions, useNavigation} from '@react-navigation/native'
diff --git a/src/components/dms/MessageContextMenu.tsx b/src/components/dms/MessageContextMenu.tsx
index 6090e41559..8bc7e018f1 100644
--- a/src/components/dms/MessageContextMenu.tsx
+++ b/src/components/dms/MessageContextMenu.tsx
@@ -2,7 +2,7 @@ import {memo, useCallback} from 'react'
import {LayoutAnimation} from 'react-native'
import * as Clipboard from 'expo-clipboard'
import {type ChatBskyConvoDefs, RichText} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useTranslate} from '#/lib/hooks/useTranslate'
diff --git a/src/components/dms/MessageItem.tsx b/src/components/dms/MessageItem.tsx
index 3d5791384b..abe757d26f 100644
--- a/src/components/dms/MessageItem.tsx
+++ b/src/components/dms/MessageItem.tsx
@@ -17,7 +17,7 @@ import {
RichText as RichTextAPI,
} from '@atproto/api'
import {type I18n} from '@lingui/core'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
diff --git a/src/components/dms/MessageProfileButton.tsx b/src/components/dms/MessageProfileButton.tsx
index 3cf5b3379e..3429d66854 100644
--- a/src/components/dms/MessageProfileButton.tsx
+++ b/src/components/dms/MessageProfileButton.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
diff --git a/src/components/dms/MessagesListBlockedFooter.tsx b/src/components/dms/MessagesListBlockedFooter.tsx
index 4fa23afedd..45fb52b60e 100644
--- a/src/components/dms/MessagesListBlockedFooter.tsx
+++ b/src/components/dms/MessagesListBlockedFooter.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {type ModerationDecision} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useProfileBlockMutationQueue} from '#/state/queries/profile'
diff --git a/src/components/dms/MessagesListHeader.tsx b/src/components/dms/MessagesListHeader.tsx
index aeff0f162a..afdeee545e 100644
--- a/src/components/dms/MessagesListHeader.tsx
+++ b/src/components/dms/MessagesListHeader.tsx
@@ -5,7 +5,7 @@ import {
type ModerationCause,
type ModerationDecision,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {makeProfileLink} from '#/lib/routes/links'
diff --git a/src/components/dms/NewMessagesPill.tsx b/src/components/dms/NewMessagesPill.tsx
index 3ab47f4490..cfdf4669ff 100644
--- a/src/components/dms/NewMessagesPill.tsx
+++ b/src/components/dms/NewMessagesPill.tsx
@@ -7,7 +7,7 @@ import Animated, {
withTiming,
} from 'react-native-reanimated'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
ScaleAndFadeIn,
diff --git a/src/components/dms/ReportConversationPrompt.tsx b/src/components/dms/ReportConversationPrompt.tsx
index fed5c914ca..11c9468ae1 100644
--- a/src/components/dms/ReportConversationPrompt.tsx
+++ b/src/components/dms/ReportConversationPrompt.tsx
@@ -1,4 +1,4 @@
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type DialogControlProps} from '#/components/Dialog'
diff --git a/src/components/dms/dialogs/NewChatDialog.tsx b/src/components/dms/dialogs/NewChatDialog.tsx
index 80e1e17496..fe033cbf1a 100644
--- a/src/components/dms/dialogs/NewChatDialog.tsx
+++ b/src/components/dms/dialogs/NewChatDialog.tsx
@@ -1,6 +1,7 @@
import {useCallback} from 'react'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
import {logger} from '#/logger'
diff --git a/src/components/dms/dialogs/ShareViaChatDialog.tsx b/src/components/dms/dialogs/ShareViaChatDialog.tsx
index ca8c892d82..405eac0e1c 100644
--- a/src/components/dms/dialogs/ShareViaChatDialog.tsx
+++ b/src/components/dms/dialogs/ShareViaChatDialog.tsx
@@ -1,5 +1,5 @@
import {useCallback} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {logger} from '#/logger'
diff --git a/src/components/forms/DateField/index.tsx b/src/components/forms/DateField/index.tsx
index 3683ee9e60..4236650e5e 100644
--- a/src/components/forms/DateField/index.tsx
+++ b/src/components/forms/DateField/index.tsx
@@ -1,8 +1,9 @@
import {useCallback, useImperativeHandle} from 'react'
import {Keyboard, View} from 'react-native'
import DatePicker from 'react-native-date-picker'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme} from '#/alf'
import {Button, ButtonText} from '#/components/Button'
diff --git a/src/components/forms/HostingProvider.tsx b/src/components/forms/HostingProvider.tsx
index b7d23ba3ab..356f8e5efc 100644
--- a/src/components/forms/HostingProvider.tsx
+++ b/src/components/forms/HostingProvider.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {Keyboard, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {toNiceDomain} from '#/lib/strings/url-helpers'
import {atoms as a, tokens, useTheme} from '#/alf'
diff --git a/src/components/forms/SearchInput.tsx b/src/components/forms/SearchInput.tsx
index 9a8c31549b..412bcc36fe 100644
--- a/src/components/forms/SearchInput.tsx
+++ b/src/components/forms/SearchInput.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {type TextInput, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {HITSLOP_10} from '#/lib/constants'
diff --git a/src/components/hooks/useFollowMethods.ts b/src/components/hooks/useFollowMethods.ts
index 4929b1ccff..5e2b18ee13 100644
--- a/src/components/hooks/useFollowMethods.ts
+++ b/src/components/hooks/useFollowMethods.ts
@@ -1,5 +1,5 @@
import React from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {logger} from '#/logger'
diff --git a/src/components/images/AutoSizedImage.tsx b/src/components/images/AutoSizedImage.tsx
index 7b61a7e77c..74b923d3cb 100644
--- a/src/components/images/AutoSizedImage.tsx
+++ b/src/components/images/AutoSizedImage.tsx
@@ -7,7 +7,7 @@ import Animated, {
import {Image} from 'expo-image'
import {type AppBskyEmbedImages} from '@atproto/api'
import {utils} from '@bsky.app/alf'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type Dimensions} from '#/lib/media/types'
diff --git a/src/components/images/Gallery.tsx b/src/components/images/Gallery.tsx
index 3a377d3d20..deefc6970f 100644
--- a/src/components/images/Gallery.tsx
+++ b/src/components/images/Gallery.tsx
@@ -3,7 +3,7 @@ import {type AnimatedRef} from 'react-native-reanimated'
import {Image, type ImageStyle} from 'expo-image'
import {type AppBskyEmbedImages} from '@atproto/api'
import {utils} from '@bsky.app/alf'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type Dimensions} from '#/lib/media/types'
diff --git a/src/components/intents/VerifyEmailIntentDialog.tsx b/src/components/intents/VerifyEmailIntentDialog.tsx
index 26ba2d5b6c..b3504766f8 100644
--- a/src/components/intents/VerifyEmailIntentDialog.tsx
+++ b/src/components/intents/VerifyEmailIntentDialog.tsx
@@ -1,7 +1,8 @@
import {useEffect, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useAgent, useSession} from '#/state/session'
import {atoms as a, useBreakpoints, useTheme} from '#/alf'
diff --git a/src/components/interstitials/Trending.tsx b/src/components/interstitials/Trending.tsx
index f66b78e32d..74a4a9fa14 100644
--- a/src/components/interstitials/Trending.tsx
+++ b/src/components/interstitials/Trending.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {ScrollView, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {
diff --git a/src/components/interstitials/TrendingVideos.tsx b/src/components/interstitials/TrendingVideos.tsx
index 99a2bd1303..7f3a891436 100644
--- a/src/components/interstitials/TrendingVideos.tsx
+++ b/src/components/interstitials/TrendingVideos.tsx
@@ -1,8 +1,9 @@
import {useCallback, useEffect, useMemo} from 'react'
import {ScrollView, View} from 'react-native'
import {AppBskyEmbedVideo, AtUri} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {VIDEO_FEED_URI} from '#/lib/constants'
diff --git a/src/components/moderation/ContentHider.tsx b/src/components/moderation/ContentHider.tsx
index 67f6205b14..b05be66290 100644
--- a/src/components/moderation/ContentHider.tsx
+++ b/src/components/moderation/ContentHider.tsx
@@ -6,8 +6,9 @@ import {
type ViewStyle,
} from 'react-native'
import {type ModerationUI} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
ADULT_CONTENT_LABELS,
diff --git a/src/components/moderation/LabelPreference.tsx b/src/components/moderation/LabelPreference.tsx
index dae92d5059..a654b46e24 100644
--- a/src/components/moderation/LabelPreference.tsx
+++ b/src/components/moderation/LabelPreference.tsx
@@ -3,8 +3,9 @@ import {
type InterpretedLabelValueDefinition,
type LabelPreference,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useGlobalLabelStrings} from '#/lib/moderation/useGlobalLabelStrings'
import {useLabelBehaviorDescription} from '#/lib/moderation/useLabelBehaviorDescription'
diff --git a/src/components/moderation/LabelsOnMe.tsx b/src/components/moderation/LabelsOnMe.tsx
index a55ef470f9..9aeb34368d 100644
--- a/src/components/moderation/LabelsOnMe.tsx
+++ b/src/components/moderation/LabelsOnMe.tsx
@@ -1,7 +1,8 @@
import {type StyleProp, View, type ViewStyle} from 'react-native'
import {type AppBskyFeedDefs, type ComAtprotoLabelDefs} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useSession} from '#/state/session'
import {atoms as a} from '#/alf'
diff --git a/src/components/moderation/LabelsOnMeDialog.tsx b/src/components/moderation/LabelsOnMeDialog.tsx
index 401955d9ef..10e5159c9d 100644
--- a/src/components/moderation/LabelsOnMeDialog.tsx
+++ b/src/components/moderation/LabelsOnMeDialog.tsx
@@ -2,8 +2,9 @@ import React, {useState} from 'react'
import {View} from 'react-native'
import {type ComAtprotoLabelDefs, ToolsOzoneReportDefs} from '@atproto/api'
import {XRPCError} from '@atproto/xrpc'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation} from '@tanstack/react-query'
import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo'
diff --git a/src/components/moderation/ModerationDetailsDialog.tsx b/src/components/moderation/ModerationDetailsDialog.tsx
index 1858f4bcff..9fbce2f51e 100644
--- a/src/components/moderation/ModerationDetailsDialog.tsx
+++ b/src/components/moderation/ModerationDetailsDialog.tsx
@@ -1,7 +1,8 @@
import {View} from 'react-native'
import {type ModerationCause} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo'
import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
diff --git a/src/components/moderation/PostHider.tsx b/src/components/moderation/PostHider.tsx
index 299b802597..5019b7c3e3 100644
--- a/src/components/moderation/PostHider.tsx
+++ b/src/components/moderation/PostHider.tsx
@@ -12,8 +12,9 @@ import {
type ModerationCause,
type ModerationUI,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
diff --git a/src/components/moderation/ReportDialog/action.ts b/src/components/moderation/ReportDialog/action.ts
index e7e88ac265..7f29cd33f8 100644
--- a/src/components/moderation/ReportDialog/action.ts
+++ b/src/components/moderation/ReportDialog/action.ts
@@ -3,7 +3,7 @@ import {
type ChatBskyConvoDefs,
type ComAtprotoModerationCreateReport,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useMutation} from '@tanstack/react-query'
diff --git a/src/components/moderation/ReportDialog/copy.ts b/src/components/moderation/ReportDialog/copy.ts
index 5fb2ad326d..cce0cb5665 100644
--- a/src/components/moderation/ReportDialog/copy.ts
+++ b/src/components/moderation/ReportDialog/copy.ts
@@ -1,5 +1,5 @@
import {useMemo} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type ParsedReportSubject} from './types'
diff --git a/src/components/moderation/ReportDialog/index.tsx b/src/components/moderation/ReportDialog/index.tsx
index 008b1e612e..528a172289 100644
--- a/src/components/moderation/ReportDialog/index.tsx
+++ b/src/components/moderation/ReportDialog/index.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {Pressable, type ScrollView, View} from 'react-native'
import {type AppBskyLabelerDefs, BSKY_LABELER_DID} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {wait} from '#/lib/async/wait'
import {getLabelingServiceTitle} from '#/lib/moderation'
@@ -168,8 +169,7 @@ function Inner(props: ReportDialogProps) {
if (supportedReasonTypes === undefined) return true
return (
// supports new reason type
- supportedReasonTypes.includes(state.selectedOption.reason) ||
- // supports old reason type (backwards compat)
+ supportedReasonTypes.includes(state.selectedOption.reason) || // supports old reason type (backwards compat)
supportedReasonTypes.includes(
NEW_TO_OLD_REASONS_MAP[state.selectedOption.reason],
)
@@ -575,7 +575,6 @@ function Inner(props: ReportDialogProps) {
)}
-
)
diff --git a/src/components/moderation/ReportDialog/utils/useReportOptions.ts b/src/components/moderation/ReportDialog/utils/useReportOptions.ts
index 75dae73f4b..87553ce6ed 100644
--- a/src/components/moderation/ReportDialog/utils/useReportOptions.ts
+++ b/src/components/moderation/ReportDialog/utils/useReportOptions.ts
@@ -1,6 +1,6 @@
import {useMemo} from 'react'
import {ToolsOzoneReportDefs as OzoneReportDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
export type ReportCategory =
@@ -247,7 +247,7 @@ export function useReportOptions() {
}
return {
- categories: Object.values(categories) as ReportCategoryConfig[],
+ categories: Object.values(categories),
getCategory(reasonName: ReportCategory) {
return categories[reasonName]
},
diff --git a/src/components/moderation/ScreenHider.tsx b/src/components/moderation/ScreenHider.tsx
index 79579198be..89e2f4ed04 100644
--- a/src/components/moderation/ScreenHider.tsx
+++ b/src/components/moderation/ScreenHider.tsx
@@ -6,8 +6,9 @@ import {
type ViewStyle,
} from 'react-native'
import {type ModerationUI} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
diff --git a/src/components/verification/VerificationCheckButton.tsx b/src/components/verification/VerificationCheckButton.tsx
index bf3ad66ef3..40b12c2064 100644
--- a/src/components/verification/VerificationCheckButton.tsx
+++ b/src/components/verification/VerificationCheckButton.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type Shadow} from '#/state/cache/types'
diff --git a/src/components/verification/VerificationCreatePrompt.tsx b/src/components/verification/VerificationCreatePrompt.tsx
index eb57d7c36e..11dcf0c530 100644
--- a/src/components/verification/VerificationCreatePrompt.tsx
+++ b/src/components/verification/VerificationCreatePrompt.tsx
@@ -1,7 +1,8 @@
import {useCallback, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {logger} from '#/logger'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
diff --git a/src/components/verification/VerificationRemovePrompt.tsx b/src/components/verification/VerificationRemovePrompt.tsx
index 470b61c19c..becee16ebf 100644
--- a/src/components/verification/VerificationRemovePrompt.tsx
+++ b/src/components/verification/VerificationRemovePrompt.tsx
@@ -1,6 +1,6 @@
import {useCallback} from 'react'
import {type AppBskyActorDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {logger} from '#/logger'
diff --git a/src/components/verification/VerificationsDialog.tsx b/src/components/verification/VerificationsDialog.tsx
index c51d5fe7bb..cb24b182a5 100644
--- a/src/components/verification/VerificationsDialog.tsx
+++ b/src/components/verification/VerificationsDialog.tsx
@@ -1,7 +1,8 @@
import {View} from 'react-native'
import {type AppBskyActorDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {urls} from '#/lib/constants'
import {getUserDisplayName} from '#/lib/getUserDisplayName'
diff --git a/src/components/verification/VerifierDialog.tsx b/src/components/verification/VerifierDialog.tsx
index 39fb456453..570441ecd0 100644
--- a/src/components/verification/VerifierDialog.tsx
+++ b/src/components/verification/VerifierDialog.tsx
@@ -1,7 +1,8 @@
import {Text as RNText, View} from 'react-native'
import {Image} from 'expo-image'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {urls} from '#/lib/constants'
import {getUserDisplayName} from '#/lib/getUserDisplayName'
diff --git a/src/features/liveEvents/components/DiscoverFeedLiveEventFeedsAndTrendingBanner.tsx b/src/features/liveEvents/components/DiscoverFeedLiveEventFeedsAndTrendingBanner.tsx
index daf59440f4..96a9bf3650 100644
--- a/src/features/liveEvents/components/DiscoverFeedLiveEventFeedsAndTrendingBanner.tsx
+++ b/src/features/liveEvents/components/DiscoverFeedLiveEventFeedsAndTrendingBanner.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useTrendingSettings} from '#/state/preferences/trending'
import {atoms as a, useLayoutBreakpoints} from '#/alf'
diff --git a/src/features/liveEvents/components/LiveEventFeedCardCompact.tsx b/src/features/liveEvents/components/LiveEventFeedCardCompact.tsx
index a4090b8570..df2bb17f83 100644
--- a/src/features/liveEvents/components/LiveEventFeedCardCompact.tsx
+++ b/src/features/liveEvents/components/LiveEventFeedCardCompact.tsx
@@ -2,7 +2,7 @@ import {useMemo} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
import {LinearGradient} from 'expo-linear-gradient'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useCallOnce} from '#/lib/once'
diff --git a/src/features/liveEvents/components/LiveEventFeedCardWide.tsx b/src/features/liveEvents/components/LiveEventFeedCardWide.tsx
index 9eecf475ee..547e38ecc6 100644
--- a/src/features/liveEvents/components/LiveEventFeedCardWide.tsx
+++ b/src/features/liveEvents/components/LiveEventFeedCardWide.tsx
@@ -2,8 +2,9 @@ import {useMemo} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
import {LinearGradient} from 'expo-linear-gradient'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useCallOnce} from '#/lib/once'
import {isBskyCustomFeedUrl} from '#/lib/strings/url-helpers'
diff --git a/src/features/liveEvents/components/LiveEventFeedOptionsMenu.tsx b/src/features/liveEvents/components/LiveEventFeedOptionsMenu.tsx
index 06ab070621..c01a7febc4 100644
--- a/src/features/liveEvents/components/LiveEventFeedOptionsMenu.tsx
+++ b/src/features/liveEvents/components/LiveEventFeedOptionsMenu.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useCleanError} from '#/lib/hooks/useCleanError'
import {atoms as a, web} from '#/alf'
diff --git a/src/features/liveEvents/components/LiveEventFeedsSettingsToggle.tsx b/src/features/liveEvents/components/LiveEventFeedsSettingsToggle.tsx
index 35d4039ce1..f22655063a 100644
--- a/src/features/liveEvents/components/LiveEventFeedsSettingsToggle.tsx
+++ b/src/features/liveEvents/components/LiveEventFeedsSettingsToggle.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import * as SettingsList from '#/screens/Settings/components/SettingsList'
import * as Toggle from '#/components/forms/Toggle'
diff --git a/src/features/liveEvents/components/SidebarLiveEventFeedsBanner.tsx b/src/features/liveEvents/components/SidebarLiveEventFeedsBanner.tsx
index d68a3c762d..c5b6cc5e75 100644
--- a/src/features/liveEvents/components/SidebarLiveEventFeedsBanner.tsx
+++ b/src/features/liveEvents/components/SidebarLiveEventFeedsBanner.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a} from '#/alf'
import {Button} from '#/components/Button'
diff --git a/src/features/liveNow/components/EditLiveDialog.tsx b/src/features/liveNow/components/EditLiveDialog.tsx
index edecc13fce..6d95d43859 100644
--- a/src/features/liveNow/components/EditLiveDialog.tsx
+++ b/src/features/liveNow/components/EditLiveDialog.tsx
@@ -5,8 +5,9 @@ import {
AppBskyActorStatus,
type AppBskyEmbedExternal,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {differenceInMinutes} from 'date-fns'
import {useDebouncedValue} from '#/lib/hooks/useDebouncedValue'
diff --git a/src/features/liveNow/components/GoLiveDialog.tsx b/src/features/liveNow/components/GoLiveDialog.tsx
index 3b373c7e00..b22585ab1e 100644
--- a/src/features/liveNow/components/GoLiveDialog.tsx
+++ b/src/features/liveNow/components/GoLiveDialog.tsx
@@ -1,7 +1,8 @@
import {useCallback, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useDebouncedValue} from '#/lib/hooks/useDebouncedValue'
import {cleanError} from '#/lib/strings/errors'
diff --git a/src/features/liveNow/components/GoLiveDisabledDialog.tsx b/src/features/liveNow/components/GoLiveDisabledDialog.tsx
index 3d548bbb8f..7eeccdc22b 100644
--- a/src/features/liveNow/components/GoLiveDisabledDialog.tsx
+++ b/src/features/liveNow/components/GoLiveDisabledDialog.tsx
@@ -1,8 +1,9 @@
import {useCallback, useState} from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs, ToolsOzoneReportDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation} from '@tanstack/react-query'
import {BLUESKY_MOD_SERVICE_HEADERS} from '#/lib/constants'
diff --git a/src/features/liveNow/components/LinkPreview.tsx b/src/features/liveNow/components/LinkPreview.tsx
index b0bab6e53a..69473fa097 100644
--- a/src/features/liveNow/components/LinkPreview.tsx
+++ b/src/features/liveNow/components/LinkPreview.tsx
@@ -1,7 +1,7 @@
import {useState} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {type LinkMeta} from '#/lib/link-meta/link-meta'
import {toNiceDomain} from '#/lib/strings/url-helpers'
diff --git a/src/features/liveNow/components/LiveIndicator.tsx b/src/features/liveNow/components/LiveIndicator.tsx
index bbde299ed1..510c8141d8 100644
--- a/src/features/liveNow/components/LiveIndicator.tsx
+++ b/src/features/liveNow/components/LiveIndicator.tsx
@@ -1,5 +1,5 @@
import {type StyleProp, View, type ViewStyle} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, tokens, useTheme} from '#/alf'
import {Text} from '#/components/Typography'
diff --git a/src/features/liveNow/components/LiveStatusDialog.tsx b/src/features/liveNow/components/LiveStatusDialog.tsx
index a003673a4f..7ffc7ab51a 100644
--- a/src/features/liveNow/components/LiveStatusDialog.tsx
+++ b/src/features/liveNow/components/LiveStatusDialog.tsx
@@ -2,8 +2,9 @@ import {useCallback} from 'react'
import {View} from 'react-native'
import {Image} from 'expo-image'
import {type AppBskyActorDefs, type AppBskyEmbedExternal} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/features/liveNow/index.tsx b/src/features/liveNow/index.tsx
index 8372a357d7..2c8f27eb61 100644
--- a/src/features/liveNow/index.tsx
+++ b/src/features/liveNow/index.tsx
@@ -8,7 +8,7 @@ import {
ComAtprotoRepoPutRecord,
} from '@atproto/api'
import {retry} from '@atproto/common-web'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
import {isAfter, parseISO} from 'date-fns'
diff --git a/src/features/liveNow/utils.ts b/src/features/liveNow/utils.ts
index 6b2b645eac..a7548adfc6 100644
--- a/src/features/liveNow/utils.ts
+++ b/src/features/liveNow/utils.ts
@@ -1,5 +1,5 @@
import {type I18n} from '@lingui/core'
-import {plural} from '@lingui/macro'
+import {plural} from '@lingui/core/macro'
import psl from 'psl'
export function displayDuration(i18n: I18n, durationInMinutes: number) {
diff --git a/src/lib/api/index.ts b/src/lib/api/index.ts
index 083c587b3b..9eac9d6d4a 100644
--- a/src/lib/api/index.ts
+++ b/src/lib/api/index.ts
@@ -16,7 +16,7 @@ import {
} from '@atproto/api'
import {TID} from '@atproto/common-web'
import * as dcbor from '@ipld/dag-cbor'
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
import {type QueryClient} from '@tanstack/react-query'
import {sha256} from 'js-sha256'
import {CID} from 'multiformats/cid'
diff --git a/src/lib/generate-starterpack.ts b/src/lib/generate-starterpack.ts
index 76bef3fbe9..1f4265a17e 100644
--- a/src/lib/generate-starterpack.ts
+++ b/src/lib/generate-starterpack.ts
@@ -6,7 +6,7 @@ import {
type ComAtprotoRepoApplyWrites,
type Facet,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useMutation} from '@tanstack/react-query'
diff --git a/src/lib/hooks/useAccountSwitcher.ts b/src/lib/hooks/useAccountSwitcher.ts
index fabf7c8131..4793eeb4e8 100644
--- a/src/lib/hooks/useAccountSwitcher.ts
+++ b/src/lib/hooks/useAccountSwitcher.ts
@@ -1,5 +1,5 @@
import {useCallback, useState} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {logger} from '#/logger'
diff --git a/src/lib/hooks/useCleanError.ts b/src/lib/hooks/useCleanError.ts
index 41f7da97a6..c7e085e68f 100644
--- a/src/lib/hooks/useCleanError.ts
+++ b/src/lib/hooks/useCleanError.ts
@@ -1,5 +1,5 @@
import {useCallback} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
type CleanedError = {
diff --git a/src/lib/hooks/useCreateSupportLink.ts b/src/lib/hooks/useCreateSupportLink.ts
index c6e1e90212..5f5bfd5720 100644
--- a/src/lib/hooks/useCreateSupportLink.ts
+++ b/src/lib/hooks/useCreateSupportLink.ts
@@ -1,5 +1,5 @@
import {useCallback} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useSession} from '#/state/session'
diff --git a/src/lib/hooks/useNotificationHandler.ts b/src/lib/hooks/useNotificationHandler.ts
index e06b46211c..10651f62b8 100644
--- a/src/lib/hooks/useNotificationHandler.ts
+++ b/src/lib/hooks/useNotificationHandler.ts
@@ -1,7 +1,7 @@
import {useEffect} from 'react'
import * as Notifications from 'expo-notifications'
import {AtUri} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {CommonActions, useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/lib/hooks/useOpenComposer.tsx b/src/lib/hooks/useOpenComposer.tsx
index 789fa1f879..f35b8722db 100644
--- a/src/lib/hooks/useOpenComposer.tsx
+++ b/src/lib/hooks/useOpenComposer.tsx
@@ -1,5 +1,5 @@
import {useMemo} from 'react'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
import {useOpenComposer as useRootOpenComposer} from '#/state/shell/composer'
diff --git a/src/lib/hooks/useTimeAgo.ts b/src/lib/hooks/useTimeAgo.ts
index b41bf690c4..67398ec547 100644
--- a/src/lib/hooks/useTimeAgo.ts
+++ b/src/lib/hooks/useTimeAgo.ts
@@ -1,6 +1,6 @@
import {useCallback} from 'react'
import {type I18n} from '@lingui/core'
-import {defineMessage, msg, plural} from '@lingui/macro'
+import {defineMessage, msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {differenceInSeconds} from 'date-fns'
diff --git a/src/lib/interests.ts b/src/lib/interests.ts
index 0d1618fffb..45f9183d1e 100644
--- a/src/lib/interests.ts
+++ b/src/lib/interests.ts
@@ -1,5 +1,5 @@
import {useMemo} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
export const interests = [
diff --git a/src/lib/media/picker.shared.ts b/src/lib/media/picker.shared.ts
index 329b91246d..079626ed28 100644
--- a/src/lib/media/picker.shared.ts
+++ b/src/lib/media/picker.shared.ts
@@ -3,7 +3,7 @@ import {
launchImageLibraryAsync,
UIImagePickerPreferredAssetRepresentationMode,
} from 'expo-image-picker'
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
import {type ImageMeta} from '#/state/gallery'
import * as Toast from '#/view/com/util/Toast'
diff --git a/src/lib/media/picker.tsx b/src/lib/media/picker.tsx
index 8284d73fb3..c9a52b8bad 100644
--- a/src/lib/media/picker.tsx
+++ b/src/lib/media/picker.tsx
@@ -2,7 +2,7 @@ import {type ImagePickerOptions, launchCameraAsync} from 'expo-image-picker'
import ExpoImageCropTool, {
type OpenCropperOptions,
} from '@bsky.app/expo-image-crop-tool'
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
export {
openPicker,
diff --git a/src/lib/media/save-image.ios.ts b/src/lib/media/save-image.ios.ts
index 7c3764736b..7bd270de8a 100644
--- a/src/lib/media/save-image.ios.ts
+++ b/src/lib/media/save-image.ios.ts
@@ -1,5 +1,5 @@
import {useCallback} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import * as Toast from '#/components/Toast'
diff --git a/src/lib/media/save-image.ts b/src/lib/media/save-image.ts
index 1694143a89..bf48d8e685 100644
--- a/src/lib/media/save-image.ts
+++ b/src/lib/media/save-image.ts
@@ -1,6 +1,6 @@
import {useCallback} from 'react'
import * as MediaLibrary from 'expo-media-library'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import * as Toast from '#/components/Toast'
diff --git a/src/lib/media/video/upload.shared.ts b/src/lib/media/video/upload.shared.ts
index f74efa03a6..1ab8439e6f 100644
--- a/src/lib/media/video/upload.shared.ts
+++ b/src/lib/media/video/upload.shared.ts
@@ -1,6 +1,6 @@
import {type BskyAgent} from '@atproto/api'
import {type I18n} from '@lingui/core'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {VIDEO_SERVICE_DID} from '#/lib/constants'
import {UploadLimitError} from '#/lib/media/video/errors'
diff --git a/src/lib/media/video/upload.ts b/src/lib/media/video/upload.ts
index 736de39fe1..b7df3be52f 100644
--- a/src/lib/media/video/upload.ts
+++ b/src/lib/media/video/upload.ts
@@ -1,7 +1,7 @@
import {createUploadTask, FileSystemUploadType} from 'expo-file-system/legacy'
import {type AppBskyVideoDefs, type BskyAgent} from '@atproto/api'
import {type I18n} from '@lingui/core'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {nanoid} from 'nanoid/non-secure'
import {AbortError} from '#/lib/async/cancelable'
diff --git a/src/lib/media/video/upload.web.ts b/src/lib/media/video/upload.web.ts
index 84483dae87..2e78ec6d38 100644
--- a/src/lib/media/video/upload.web.ts
+++ b/src/lib/media/video/upload.web.ts
@@ -1,7 +1,6 @@
-import {type AppBskyVideoDefs} from '@atproto/api'
-import {type BskyAgent} from '@atproto/api'
+import {type AppBskyVideoDefs, type BskyAgent} from '@atproto/api'
import {type I18n} from '@lingui/core'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {nanoid} from 'nanoid/non-secure'
import {AbortError} from '#/lib/async/cancelable'
diff --git a/src/lib/moderation/useGlobalLabelStrings.ts b/src/lib/moderation/useGlobalLabelStrings.ts
index 86ad8e76d6..f308e04d1d 100644
--- a/src/lib/moderation/useGlobalLabelStrings.ts
+++ b/src/lib/moderation/useGlobalLabelStrings.ts
@@ -1,5 +1,5 @@
import {useMemo} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
export type GlobalLabelStrings = Record<
diff --git a/src/lib/moderation/useLabelBehaviorDescription.ts b/src/lib/moderation/useLabelBehaviorDescription.ts
index 90db665f4e..cdded25924 100644
--- a/src/lib/moderation/useLabelBehaviorDescription.ts
+++ b/src/lib/moderation/useLabelBehaviorDescription.ts
@@ -2,7 +2,7 @@ import {
type InterpretedLabelValueDefinition,
type LabelPreference,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
export function useLabelBehaviorDescription(
diff --git a/src/lib/moderation/useModerationCauseDescription.ts b/src/lib/moderation/useModerationCauseDescription.ts
index 6a58bca0ee..ca505f8f1a 100644
--- a/src/lib/moderation/useModerationCauseDescription.ts
+++ b/src/lib/moderation/useModerationCauseDescription.ts
@@ -4,7 +4,7 @@ import {
type ModerationCause,
type ModerationCauseSource,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {sanitizeHandle} from '#/lib/strings/handles'
diff --git a/src/lib/sharing.ts b/src/lib/sharing.ts
index 0b10fa76e5..fe086c7d2a 100644
--- a/src/lib/sharing.ts
+++ b/src/lib/sharing.ts
@@ -1,8 +1,7 @@
import {Share} from 'react-native'
// import * as Sharing from 'expo-sharing'
import {setStringAsync} from 'expo-clipboard'
-// TODO: replace global i18n instance with one returned from useLingui -sfn
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
import * as Toast from '#/view/com/util/Toast'
import {IS_ANDROID, IS_IOS} from '#/env'
diff --git a/src/lib/strings/errors.ts b/src/lib/strings/errors.ts
index 4a5c9f09a9..f3a91e58dd 100644
--- a/src/lib/strings/errors.ts
+++ b/src/lib/strings/errors.ts
@@ -1,5 +1,5 @@
import {XRPCError} from '@atproto/xrpc'
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
export function cleanError(str: any): string {
if (!str) {
diff --git a/src/lib/strings/time.ts b/src/lib/strings/time.ts
index 7a3ce5c0a6..44b3f3ee8a 100644
--- a/src/lib/strings/time.ts
+++ b/src/lib/strings/time.ts
@@ -1,5 +1,5 @@
import {type I18n} from '@lingui/core'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
export function niceDate(
i18n: I18n,
diff --git a/src/screens/Bookmarks/components/EmptyState.tsx b/src/screens/Bookmarks/components/EmptyState.tsx
index bfd80903d1..cf70e7385c 100644
--- a/src/screens/Bookmarks/components/EmptyState.tsx
+++ b/src/screens/Bookmarks/components/EmptyState.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme} from '#/alf'
import {ButtonText} from '#/components/Button'
diff --git a/src/screens/Bookmarks/index.tsx b/src/screens/Bookmarks/index.tsx
index 95c1291e77..8ebdf3889a 100644
--- a/src/screens/Bookmarks/index.tsx
+++ b/src/screens/Bookmarks/index.tsx
@@ -5,8 +5,9 @@ import {
type AppBskyBookmarkDefs,
AppBskyFeedDefs,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type NavigationProp,
useFocusEffect,
diff --git a/src/screens/Deactivated.tsx b/src/screens/Deactivated.tsx
index 2e16695fe3..9500f27a2b 100644
--- a/src/screens/Deactivated.tsx
+++ b/src/screens/Deactivated.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher'
diff --git a/src/screens/Feeds/NoFollowingFeed.tsx b/src/screens/Feeds/NoFollowingFeed.tsx
index 60205b8565..5a0efb7814 100644
--- a/src/screens/Feeds/NoFollowingFeed.tsx
+++ b/src/screens/Feeds/NoFollowingFeed.tsx
@@ -1,6 +1,7 @@
import {type GestureResponderEvent, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {TIMELINE_SAVED_FEED} from '#/lib/constants'
import {useAddSavedFeedsMutation} from '#/state/queries/preferences'
diff --git a/src/screens/Feeds/NoSavedFeedsOfAnyType.tsx b/src/screens/Feeds/NoSavedFeedsOfAnyType.tsx
index db0ed1a7d2..aba1ddf55c 100644
--- a/src/screens/Feeds/NoSavedFeedsOfAnyType.tsx
+++ b/src/screens/Feeds/NoSavedFeedsOfAnyType.tsx
@@ -1,7 +1,8 @@
import {View} from 'react-native'
import {TID} from '@atproto/common-web'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {RECOMMENDED_SAVED_FEEDS} from '#/lib/constants'
import {useOverwriteSavedFeedsMutation} from '#/state/queries/preferences'
diff --git a/src/screens/FindContactsFlowScreen.tsx b/src/screens/FindContactsFlowScreen.tsx
index 9b9e5b6c74..866885a06f 100644
--- a/src/screens/FindContactsFlowScreen.tsx
+++ b/src/screens/FindContactsFlowScreen.tsx
@@ -1,6 +1,6 @@
import {useCallback, useLayoutEffect, useState} from 'react'
import {LayoutAnimationConfig} from 'react-native-reanimated'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {usePreventRemove} from '@react-navigation/native'
diff --git a/src/screens/Hashtag.tsx b/src/screens/Hashtag.tsx
index 226067ec6b..9b0d238a0c 100644
--- a/src/screens/Hashtag.tsx
+++ b/src/screens/Hashtag.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {type ListRenderItemInfo, View} from 'react-native'
import {type AppBskyFeedDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
@@ -64,7 +65,7 @@ export default function HashtagScreen({
}, [fullTag, isCashtag])
const sanitizedAuthor = React.useMemo(() => {
- if (!author) return
+ if (!author) return ''
return sanitizeHandle(author)
}, [author])
diff --git a/src/screens/Home/NoFeedsPinned.tsx b/src/screens/Home/NoFeedsPinned.tsx
index e524113f56..044c248d5a 100644
--- a/src/screens/Home/NoFeedsPinned.tsx
+++ b/src/screens/Home/NoFeedsPinned.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {TID} from '@atproto/common-web'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {DISCOVER_SAVED_FEED, TIMELINE_SAVED_FEED} from '#/lib/constants'
import {useOverwriteSavedFeedsMutation} from '#/state/queries/preferences'
diff --git a/src/screens/List/ListHiddenScreen.tsx b/src/screens/List/ListHiddenScreen.tsx
index 963cb2e0ba..f70d1e2b30 100644
--- a/src/screens/List/ListHiddenScreen.tsx
+++ b/src/screens/List/ListHiddenScreen.tsx
@@ -1,15 +1,19 @@
import React from 'react'
import {View} from 'react-native'
import {AppBskyGraphDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {useGoBack} from '#/lib/hooks/useGoBack'
import {sanitizeHandle} from '#/lib/strings/handles'
import {logger} from '#/logger'
-import {RQKEY_ROOT as listQueryRoot} from '#/state/queries/list'
-import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list'
+import {
+ RQKEY_ROOT as listQueryRoot,
+ useListBlockMutation,
+ useListMuteMutation,
+} from '#/state/queries/list'
import {
type UsePreferencesQueryResponse,
useRemoveFeedMutation,
diff --git a/src/screens/Log.tsx b/src/screens/Log.tsx
index aa31e2cea4..03bc4ad765 100644
--- a/src/screens/Log.tsx
+++ b/src/screens/Log.tsx
@@ -1,8 +1,8 @@
import {useCallback, useState} from 'react'
-import {LayoutAnimation, View} from 'react-native'
-import {Pressable} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {LayoutAnimation, Pressable, View} from 'react-native'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo'
@@ -11,8 +11,7 @@ import {
type NativeStackScreenProps,
} from '#/lib/routes/types'
import {getEntries} from '#/logger/logDump'
-import {useTickEveryMinute} from '#/state/shell'
-import {useSetMinimalShellMode} from '#/state/shell'
+import {useSetMinimalShellMode, useTickEveryMinute} from '#/state/shell'
import {atoms as a, useTheme} from '#/alf'
import {
ChevronBottom_Stroke2_Corner0_Rounded as ChevronBottomIcon,
diff --git a/src/screens/Login/ChooseAccountForm.tsx b/src/screens/Login/ChooseAccountForm.tsx
index 5eded55c71..86485d814c 100644
--- a/src/screens/Login/ChooseAccountForm.tsx
+++ b/src/screens/Login/ChooseAccountForm.tsx
@@ -1,7 +1,8 @@
import {useCallback, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {logger} from '#/logger'
import {type SessionAccount, useSession, useSessionApi} from '#/state/session'
diff --git a/src/screens/Login/ForgotPasswordForm.tsx b/src/screens/Login/ForgotPasswordForm.tsx
index 8a7ddc628c..4d3074aa17 100644
--- a/src/screens/Login/ForgotPasswordForm.tsx
+++ b/src/screens/Login/ForgotPasswordForm.tsx
@@ -1,8 +1,9 @@
import React, {useState} from 'react'
import {Keyboard, View} from 'react-native'
import {type ComAtprotoServerDescribeServer} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import * as EmailValidator from 'email-validator'
import {cleanError, isNetworkError} from '#/lib/strings/errors'
diff --git a/src/screens/Login/LoginForm.tsx b/src/screens/Login/LoginForm.tsx
index 351aaa21b4..2689400426 100644
--- a/src/screens/Login/LoginForm.tsx
+++ b/src/screens/Login/LoginForm.tsx
@@ -4,8 +4,9 @@ import {
ComAtprotoServerCreateSession,
type ComAtprotoServerDescribeServer,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useRequestNotificationsPermission} from '#/lib/notifications/notifications'
import {cleanError, isNetworkError} from '#/lib/strings/errors'
diff --git a/src/screens/Login/PasswordUpdatedForm.tsx b/src/screens/Login/PasswordUpdatedForm.tsx
index 63c80eec52..754d201d91 100644
--- a/src/screens/Login/PasswordUpdatedForm.tsx
+++ b/src/screens/Login/PasswordUpdatedForm.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useBreakpoints, web} from '#/alf'
import {Button, ButtonText} from '#/components/Button'
diff --git a/src/screens/Login/SetNewPasswordForm.tsx b/src/screens/Login/SetNewPasswordForm.tsx
index 6ba479bcb7..9103da5d31 100644
--- a/src/screens/Login/SetNewPasswordForm.tsx
+++ b/src/screens/Login/SetNewPasswordForm.tsx
@@ -1,7 +1,8 @@
import {useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {cleanError, isNetworkError} from '#/lib/strings/errors'
import {checkAndFormatResetCode} from '#/lib/strings/password'
diff --git a/src/screens/Login/components/AuthLayout/Header/index.tsx b/src/screens/Login/components/AuthLayout/Header/index.tsx
index ac7716508a..60f8f29a5f 100644
--- a/src/screens/Login/components/AuthLayout/Header/index.tsx
+++ b/src/screens/Login/components/AuthLayout/Header/index.tsx
@@ -1,6 +1,6 @@
import {useContext} from 'react'
import {type GestureResponderEvent, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {HITSLOP_30} from '#/lib/constants'
diff --git a/src/screens/Login/index.tsx b/src/screens/Login/index.tsx
index 2004317734..c1640b9598 100644
--- a/src/screens/Login/index.tsx
+++ b/src/screens/Login/index.tsx
@@ -1,7 +1,7 @@
import {useEffect, useRef, useState} from 'react'
import {KeyboardAvoidingView} from 'react-native'
import Animated, {FadeIn, LayoutAnimationConfig} from 'react-native-reanimated'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {DEFAULT_SERVICE} from '#/lib/constants'
diff --git a/src/screens/Messages/ChatList.tsx b/src/screens/Messages/ChatList.tsx
index caa8aa552b..9a59352953 100644
--- a/src/screens/Messages/ChatList.tsx
+++ b/src/screens/Messages/ChatList.tsx
@@ -2,8 +2,9 @@ import {useCallback, useEffect, useMemo, useState} from 'react'
import {View} from 'react-native'
import {useAnimatedRef} from 'react-native-reanimated'
import {type ChatBskyActorDefs, type ChatBskyConvoDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect, useIsFocused} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
@@ -188,7 +189,11 @@ export function MessagesScreenInner({navigation, route}: Props) {
]
: []),
...conversations.map(
- convo => ({type: 'CONVERSATION', conversation: convo}) as const,
+ convo =>
+ ({
+ type: 'CONVERSATION',
+ conversation: convo,
+ }) as const,
),
] satisfies ListItem[]
}
diff --git a/src/screens/Messages/Conversation.tsx b/src/screens/Messages/Conversation.tsx
index 4a762f6eee..be90ee8c1a 100644
--- a/src/screens/Messages/Conversation.tsx
+++ b/src/screens/Messages/Conversation.tsx
@@ -5,8 +5,9 @@ import {
moderateProfile,
type ModerationDecision,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type RouteProp,
useFocusEffect,
diff --git a/src/screens/Messages/Inbox.tsx b/src/screens/Messages/Inbox.tsx
index ce4f32686a..9dc9754376 100644
--- a/src/screens/Messages/Inbox.tsx
+++ b/src/screens/Messages/Inbox.tsx
@@ -4,8 +4,9 @@ import {
type ChatBskyConvoDefs,
type ChatBskyConvoListConvos,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect, useNavigation} from '@react-navigation/native'
import {
type InfiniteData,
diff --git a/src/screens/Messages/Settings.tsx b/src/screens/Messages/Settings.tsx
index 04e110ad5d..83c68ab10e 100644
--- a/src/screens/Messages/Settings.tsx
+++ b/src/screens/Messages/Settings.tsx
@@ -1,7 +1,8 @@
import {useCallback} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {type CommonNavigatorParams} from '#/lib/routes/types'
diff --git a/src/screens/Messages/components/ChatDisabled.tsx b/src/screens/Messages/components/ChatDisabled.tsx
index 97fd35d708..f8773c9ac8 100644
--- a/src/screens/Messages/components/ChatDisabled.tsx
+++ b/src/screens/Messages/components/ChatDisabled.tsx
@@ -1,8 +1,9 @@
import {useCallback, useState} from 'react'
import {View} from 'react-native'
import {ToolsOzoneReportDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation} from '@tanstack/react-query'
import {BLUESKY_MOD_SERVICE_HEADERS} from '#/lib/constants'
diff --git a/src/screens/Messages/components/ChatListItem.tsx b/src/screens/Messages/components/ChatListItem.tsx
index 3f17805863..f09cf23007 100644
--- a/src/screens/Messages/components/ChatListItem.tsx
+++ b/src/screens/Messages/components/ChatListItem.tsx
@@ -6,7 +6,7 @@ import {
moderateProfile,
type ModerationOpts,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/screens/Messages/components/ChatStatusInfo.tsx b/src/screens/Messages/components/ChatStatusInfo.tsx
index 0cebabfd11..ca2b1f3685 100644
--- a/src/screens/Messages/components/ChatStatusInfo.tsx
+++ b/src/screens/Messages/components/ChatStatusInfo.tsx
@@ -1,6 +1,6 @@
import {useCallback} from 'react'
import {View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type ActiveConvoStates} from '#/state/messages/convo'
diff --git a/src/screens/Messages/components/InboxPreview.tsx b/src/screens/Messages/components/InboxPreview.tsx
index 85d6252ab1..e34fd815e9 100644
--- a/src/screens/Messages/components/InboxPreview.tsx
+++ b/src/screens/Messages/components/InboxPreview.tsx
@@ -1,7 +1,8 @@
import {View} from 'react-native'
import {type ChatBskyActorDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme} from '#/alf'
import {AvatarStack} from '#/components/AvatarStack'
diff --git a/src/screens/Messages/components/MessageInput.tsx b/src/screens/Messages/components/MessageInput.tsx
index 020af6a423..c82e7e6d50 100644
--- a/src/screens/Messages/components/MessageInput.tsx
+++ b/src/screens/Messages/components/MessageInput.tsx
@@ -12,7 +12,7 @@ import Animated, {
useSharedValue,
} from 'react-native-reanimated'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {countGraphemes} from 'unicode-segmenter/grapheme'
diff --git a/src/screens/Messages/components/MessageInput.web.tsx b/src/screens/Messages/components/MessageInput.web.tsx
index 9506f16650..d1e53f3957 100644
--- a/src/screens/Messages/components/MessageInput.web.tsx
+++ b/src/screens/Messages/components/MessageInput.web.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {Pressable, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {flushSync} from 'react-dom'
import TextareaAutosize from 'react-textarea-autosize'
diff --git a/src/screens/Messages/components/MessageInputEmbed.tsx b/src/screens/Messages/components/MessageInputEmbed.tsx
index c4d61b000e..291489489a 100644
--- a/src/screens/Messages/components/MessageInputEmbed.tsx
+++ b/src/screens/Messages/components/MessageInputEmbed.tsx
@@ -7,7 +7,7 @@ import {
moderatePost,
RichText as RichTextAPI,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type RouteProp, useNavigation, useRoute} from '@react-navigation/native'
diff --git a/src/screens/Messages/components/MessageListError.tsx b/src/screens/Messages/components/MessageListError.tsx
index 56fe9eb0a5..3243156682 100644
--- a/src/screens/Messages/components/MessageListError.tsx
+++ b/src/screens/Messages/components/MessageListError.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type ConvoItem, ConvoItemError} from '#/state/messages/convo/types'
diff --git a/src/screens/Messages/components/RequestButtons.tsx b/src/screens/Messages/components/RequestButtons.tsx
index 4b53b40420..9f9d7236b1 100644
--- a/src/screens/Messages/components/RequestButtons.tsx
+++ b/src/screens/Messages/components/RequestButtons.tsx
@@ -1,7 +1,8 @@
import {useCallback} from 'react'
import {type ChatBskyActorDefs, ChatBskyConvoDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {StackActions, useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/screens/Messages/components/RequestListItem.tsx b/src/screens/Messages/components/RequestListItem.tsx
index 1f23b88823..fc68686571 100644
--- a/src/screens/Messages/components/RequestListItem.tsx
+++ b/src/screens/Messages/components/RequestListItem.tsx
@@ -1,6 +1,6 @@
import {View} from 'react-native'
import {type ChatBskyConvoDefs} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useSession} from '#/state/session'
diff --git a/src/screens/Moderation/VerificationSettings.tsx b/src/screens/Moderation/VerificationSettings.tsx
index 85d0a0590c..052d10cd6a 100644
--- a/src/screens/Moderation/VerificationSettings.tsx
+++ b/src/screens/Moderation/VerificationSettings.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {urls} from '#/lib/constants'
import {
diff --git a/src/screens/Moderation/index.tsx b/src/screens/Moderation/index.tsx
index 6f75370511..77877071a6 100644
--- a/src/screens/Moderation/index.tsx
+++ b/src/screens/Moderation/index.tsx
@@ -1,8 +1,9 @@
import {Fragment, useCallback} from 'react'
import {Linking, View} from 'react-native'
import {LABELS} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {getLabelingServiceTitle, isAppLabeler} from '#/lib/moderation'
diff --git a/src/screens/ModerationInteractionSettings/index.tsx b/src/screens/ModerationInteractionSettings/index.tsx
index 376639649b..041566fc86 100644
--- a/src/screens/ModerationInteractionSettings/index.tsx
+++ b/src/screens/ModerationInteractionSettings/index.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import deepEqual from 'fast-deep-equal'
import {logger} from '#/logger'
diff --git a/src/screens/Notifications/ActivityList.tsx b/src/screens/Notifications/ActivityList.tsx
index 0b57ccde75..9ff5db505c 100644
--- a/src/screens/Notifications/ActivityList.tsx
+++ b/src/screens/Notifications/ActivityList.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {type AllNavigatorParams} from '#/lib/routes/types'
diff --git a/src/screens/Onboarding/Layout.tsx b/src/screens/Onboarding/Layout.tsx
index 1417221ea0..240346b660 100644
--- a/src/screens/Onboarding/Layout.tsx
+++ b/src/screens/Onboarding/Layout.tsx
@@ -1,8 +1,9 @@
import {useEffect, useRef, useState} from 'react'
import {ScrollView, View} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useOnboardingDispatch} from '#/state/shell'
import {useOnboardingInternalState} from '#/screens/Onboarding/state'
@@ -20,8 +21,7 @@ import {ArrowLeft_Stroke2_Corner0_Rounded as ArrowLeft} from '#/components/icons
import {HEADER_SLOT_SIZE} from '#/components/Layout'
import {createPortalGroup} from '#/components/Portal'
import {P, Text} from '#/components/Typography'
-import {IS_ANDROID, IS_WEB} from '#/env'
-import {IS_INTERNAL} from '#/env'
+import {IS_ANDROID, IS_INTERNAL, IS_WEB} from '#/env'
const ONBOARDING_COL_WIDTH = 420
diff --git a/src/screens/Onboarding/StepFindContactsIntro/index.tsx b/src/screens/Onboarding/StepFindContactsIntro/index.tsx
index c5a47bd9ca..bc6f309b7b 100644
--- a/src/screens/Onboarding/StepFindContactsIntro/index.tsx
+++ b/src/screens/Onboarding/StepFindContactsIntro/index.tsx
@@ -1,7 +1,8 @@
import {View} from 'react-native'
import * as Contacts from 'expo-contacts'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQuery} from '@tanstack/react-query'
import {urls} from '#/lib/constants'
diff --git a/src/screens/Onboarding/StepFinished/ValuePropositionPager.shared.tsx b/src/screens/Onboarding/StepFinished/ValuePropositionPager.shared.tsx
index d3773880b0..479657bb3a 100644
--- a/src/screens/Onboarding/StepFinished/ValuePropositionPager.shared.tsx
+++ b/src/screens/Onboarding/StepFinished/ValuePropositionPager.shared.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/screens/Onboarding/StepFinished/ValuePropositionPager.tsx b/src/screens/Onboarding/StepFinished/ValuePropositionPager.tsx
index fb4d71aa70..69246fe7c3 100644
--- a/src/screens/Onboarding/StepFinished/ValuePropositionPager.tsx
+++ b/src/screens/Onboarding/StepFinished/ValuePropositionPager.tsx
@@ -2,7 +2,7 @@ import {useRef, useState} from 'react'
import {View} from 'react-native'
import PagerView from 'react-native-pager-view'
import {Image} from 'expo-image'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {atoms as a, tokens, useTheme} from '#/alf'
diff --git a/src/screens/Onboarding/StepFinished/ValuePropositionPager.web.tsx b/src/screens/Onboarding/StepFinished/ValuePropositionPager.web.tsx
index f90cec0fa3..a7c685506b 100644
--- a/src/screens/Onboarding/StepFinished/ValuePropositionPager.web.tsx
+++ b/src/screens/Onboarding/StepFinished/ValuePropositionPager.web.tsx
@@ -1,6 +1,6 @@
import {View} from 'react-native'
import {Image} from 'expo-image'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/screens/Onboarding/StepFinished/index.tsx b/src/screens/Onboarding/StepFinished/index.tsx
index 58b84512b4..e477528f1b 100644
--- a/src/screens/Onboarding/StepFinished/index.tsx
+++ b/src/screens/Onboarding/StepFinished/index.tsx
@@ -8,8 +8,9 @@ import {
type Un$Typed,
} from '@atproto/api'
import {TID} from '@atproto/common-web'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {uploadBlob} from '#/lib/api'
diff --git a/src/screens/Onboarding/StepInterests/index.tsx b/src/screens/Onboarding/StepInterests/index.tsx
index 8facdada8e..e21507547d 100644
--- a/src/screens/Onboarding/StepInterests/index.tsx
+++ b/src/screens/Onboarding/StepInterests/index.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {interests, useInterestsDisplayNames} from '#/lib/interests'
import {capitalize} from '#/lib/strings/capitalize'
diff --git a/src/screens/Onboarding/StepProfile/AvatarCircle.tsx b/src/screens/Onboarding/StepProfile/AvatarCircle.tsx
index 1be38b0d5f..fb1b096dd6 100644
--- a/src/screens/Onboarding/StepProfile/AvatarCircle.tsx
+++ b/src/screens/Onboarding/StepProfile/AvatarCircle.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import {View} from 'react-native'
import {Image as ExpoImage} from 'expo-image'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {AvatarCreatorCircle} from '#/screens/Onboarding/StepProfile/AvatarCreatorCircle'
diff --git a/src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx b/src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx
index 93a6469a8a..4f856e29d5 100644
--- a/src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx
+++ b/src/screens/Onboarding/StepProfile/AvatarCreatorItems.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type Avatar} from '#/screens/Onboarding/StepProfile/index'
import {
diff --git a/src/screens/Onboarding/StepProfile/index.tsx b/src/screens/Onboarding/StepProfile/index.tsx
index c1a72b7d60..a342979ea1 100644
--- a/src/screens/Onboarding/StepProfile/index.tsx
+++ b/src/screens/Onboarding/StepProfile/index.tsx
@@ -6,8 +6,9 @@ import {
launchImageLibraryAsync,
UIImagePickerPreferredAssetRepresentationMode,
} from 'expo-image-picker'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {usePhotoLibraryPermission} from '#/lib/hooks/usePermissions'
import {compressIfNeeded} from '#/lib/media/manip'
diff --git a/src/screens/Onboarding/StepSuggestedAccounts/index.tsx b/src/screens/Onboarding/StepSuggestedAccounts/index.tsx
index 1c82a0cf01..c3368f897e 100644
--- a/src/screens/Onboarding/StepSuggestedAccounts/index.tsx
+++ b/src/screens/Onboarding/StepSuggestedAccounts/index.tsx
@@ -1,8 +1,9 @@
import {useCallback, useEffect, useMemo, useRef, useState} from 'react'
import {View} from 'react-native'
import {type ModerationOpts} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation, useQueryClient} from '@tanstack/react-query'
import * as bcp47Match from 'bcp-47-match'
diff --git a/src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx b/src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx
index f4c3b09e43..b016af65db 100644
--- a/src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx
+++ b/src/screens/Onboarding/StepSuggestedStarterpacks/StarterPackCard.tsx
@@ -1,8 +1,9 @@
import {useState} from 'react'
import {View} from 'react-native'
import {type AppBskyGraphDefs, AppBskyGraphStarterpack} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {batchedUpdates} from '#/lib/batchedUpdates'
diff --git a/src/screens/Onboarding/StepSuggestedStarterpacks/index.tsx b/src/screens/Onboarding/StepSuggestedStarterpacks/index.tsx
index e9174e76cd..baf6fb942d 100644
--- a/src/screens/Onboarding/StepSuggestedStarterpacks/index.tsx
+++ b/src/screens/Onboarding/StepSuggestedStarterpacks/index.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useOnboardingSuggestedStarterPacksQuery} from '#/state/queries/useOnboardingSuggestedStarterPacksQuery'
diff --git a/src/screens/Post/PostLikedBy.tsx b/src/screens/Post/PostLikedBy.tsx
index b8a2302468..a612f1bc0c 100644
--- a/src/screens/Post/PostLikedBy.tsx
+++ b/src/screens/Post/PostLikedBy.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {Plural, Trans} from '@lingui/macro'
+import {Plural, Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {
diff --git a/src/screens/Post/PostQuotes.tsx b/src/screens/Post/PostQuotes.tsx
index 33ebe94f33..29aa6c5116 100644
--- a/src/screens/Post/PostQuotes.tsx
+++ b/src/screens/Post/PostQuotes.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {Plural, Trans} from '@lingui/macro'
+import {Plural, Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {
diff --git a/src/screens/Post/PostRepostedBy.tsx b/src/screens/Post/PostRepostedBy.tsx
index 37f31ce22b..f9168b4c0a 100644
--- a/src/screens/Post/PostRepostedBy.tsx
+++ b/src/screens/Post/PostRepostedBy.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {Plural, Trans} from '@lingui/macro'
+import {Plural, Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {
diff --git a/src/screens/PostThread/components/HeaderDropdown.tsx b/src/screens/PostThread/components/HeaderDropdown.tsx
index 06bfdad879..4e856d52a4 100644
--- a/src/screens/PostThread/components/HeaderDropdown.tsx
+++ b/src/screens/PostThread/components/HeaderDropdown.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {HITSLOP_10} from '#/lib/constants'
import {type ThreadPreferences} from '#/state/queries/preferences/useThreadPreferences'
diff --git a/src/screens/PostThread/components/ThreadComposePrompt.tsx b/src/screens/PostThread/components/ThreadComposePrompt.tsx
index e12c7e766f..11e76e4e42 100644
--- a/src/screens/PostThread/components/ThreadComposePrompt.tsx
+++ b/src/screens/PostThread/components/ThreadComposePrompt.tsx
@@ -1,7 +1,8 @@
import {type StyleProp, View, type ViewStyle} from 'react-native'
import {LinearGradient} from 'expo-linear-gradient'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {PressableScale} from '#/lib/custom-animations/PressableScale'
import {useHaptics} from '#/lib/haptics'
diff --git a/src/screens/PostThread/components/ThreadError.tsx b/src/screens/PostThread/components/ThreadError.tsx
index d121e602da..6a68c65ad9 100644
--- a/src/screens/PostThread/components/ThreadError.tsx
+++ b/src/screens/PostThread/components/ThreadError.tsx
@@ -1,7 +1,8 @@
import {useMemo} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useCleanError} from '#/lib/hooks/useCleanError'
import {OUTER_SPACE} from '#/screens/PostThread/const'
diff --git a/src/screens/PostThread/components/ThreadItemAnchor.tsx b/src/screens/PostThread/components/ThreadItemAnchor.tsx
index b7d0e65d38..36968bcd87 100644
--- a/src/screens/PostThread/components/ThreadItemAnchor.tsx
+++ b/src/screens/PostThread/components/ThreadItemAnchor.tsx
@@ -7,8 +7,9 @@ import {
AtUri,
RichText as RichTextAPI,
} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useOpenComposer} from '#/lib/hooks/useOpenComposer'
import {useTranslate} from '#/lib/hooks/useTranslate'
@@ -318,7 +319,6 @@ const ThreadItemAnchorInner = memo(function ThreadItemAnchorInner({
return (
<>
-
) : null}
-
>
)
diff --git a/src/screens/Profile/Header/ProfileHeaderStandard.tsx b/src/screens/Profile/Header/ProfileHeaderStandard.tsx
index f2f24edaab..1cdf5b1689 100644
--- a/src/screens/Profile/Header/ProfileHeaderStandard.tsx
+++ b/src/screens/Profile/Header/ProfileHeaderStandard.tsx
@@ -7,8 +7,9 @@ import {
type ModerationOpts,
type RichText as RichTextAPI,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useHaptics} from '#/lib/haptics'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
diff --git a/src/screens/Profile/Header/Shell.tsx b/src/screens/Profile/Header/Shell.tsx
index ae7c146b8c..bb4965f602 100644
--- a/src/screens/Profile/Header/Shell.tsx
+++ b/src/screens/Profile/Header/Shell.tsx
@@ -10,7 +10,7 @@ import Animated, {
import {useSafeAreaInsets} from 'react-native-safe-area-context'
import {type AppBskyActorDefs, type ModerationDecision} from '@atproto/api'
import {utils} from '@bsky.app/alf'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
diff --git a/src/screens/Profile/KnownFollowers.tsx b/src/screens/Profile/KnownFollowers.tsx
index 6c94ebeede..cafe504bcc 100644
--- a/src/screens/Profile/KnownFollowers.tsx
+++ b/src/screens/Profile/KnownFollowers.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {type AppBskyActorDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useFocusEffect} from '@react-navigation/native'
diff --git a/src/screens/Profile/ProfileFeed/index.tsx b/src/screens/Profile/ProfileFeed/index.tsx
index 8c0147d081..03fae0207a 100644
--- a/src/screens/Profile/ProfileFeed/index.tsx
+++ b/src/screens/Profile/ProfileFeed/index.tsx
@@ -1,7 +1,7 @@
import {useCallback, useEffect, useMemo, useState} from 'react'
import {useAnimatedRef} from 'react-native-reanimated'
import {AppBskyFeedDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useIsFocused} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
diff --git a/src/screens/Profile/ProfileFollowers.tsx b/src/screens/Profile/ProfileFollowers.tsx
index 1bd784738c..8481881e64 100644
--- a/src/screens/Profile/ProfileFollowers.tsx
+++ b/src/screens/Profile/ProfileFollowers.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {Plural} from '@lingui/macro'
+import {Plural} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {
diff --git a/src/screens/Profile/ProfileFollows.tsx b/src/screens/Profile/ProfileFollows.tsx
index 3faf5a3324..66733aa11e 100644
--- a/src/screens/Profile/ProfileFollows.tsx
+++ b/src/screens/Profile/ProfileFollows.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {Plural} from '@lingui/macro'
+import {Plural} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {
diff --git a/src/screens/Profile/ProfileLabelerLikedBy.tsx b/src/screens/Profile/ProfileLabelerLikedBy.tsx
index f194f23984..b629ae3a70 100644
--- a/src/screens/Profile/ProfileLabelerLikedBy.tsx
+++ b/src/screens/Profile/ProfileLabelerLikedBy.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useFocusEffect} from '@react-navigation/native'
diff --git a/src/screens/Profile/ProfileSearch.tsx b/src/screens/Profile/ProfileSearch.tsx
index 6247e39792..73bdee92e3 100644
--- a/src/screens/Profile/ProfileSearch.tsx
+++ b/src/screens/Profile/ProfileSearch.tsx
@@ -1,5 +1,5 @@
import {useMemo} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {
diff --git a/src/screens/Profile/Sections/Feed.tsx b/src/screens/Profile/Sections/Feed.tsx
index caecb1537a..dc9b46356b 100644
--- a/src/screens/Profile/Sections/Feed.tsx
+++ b/src/screens/Profile/Sections/Feed.tsx
@@ -1,7 +1,8 @@
import {useCallback, useEffect, useImperativeHandle, useState} from 'react'
import {findNodeHandle, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
diff --git a/src/screens/Profile/Sections/Labels.tsx b/src/screens/Profile/Sections/Labels.tsx
index 9349b6dc38..e4af8c4a86 100644
--- a/src/screens/Profile/Sections/Labels.tsx
+++ b/src/screens/Profile/Sections/Labels.tsx
@@ -6,8 +6,9 @@ import {
interpretLabelValueDefinitions,
type ModerationOpts,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {isLabelerSubscribed, lookupLabelValueDefinition} from '#/lib/moderation'
import {List, type ListRef} from '#/view/com/util/List'
diff --git a/src/screens/Profile/components/GermButton.tsx b/src/screens/Profile/components/GermButton.tsx
index c5af7d536e..0bef3a22c3 100644
--- a/src/screens/Profile/components/GermButton.tsx
+++ b/src/screens/Profile/components/GermButton.tsx
@@ -5,8 +5,9 @@ import {
type AppBskyActorGetProfile,
type AtpAgent,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation, useQueryClient} from '@tanstack/react-query'
import {until} from '#/lib/async/until'
diff --git a/src/screens/Profile/components/ProfileFeedHeader.tsx b/src/screens/Profile/components/ProfileFeedHeader.tsx
index 8735100638..2201fee749 100644
--- a/src/screens/Profile/components/ProfileFeedHeader.tsx
+++ b/src/screens/Profile/components/ProfileFeedHeader.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {AtUri} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useHaptics} from '#/lib/haptics'
import {makeCustomFeedLink, makeProfileLink} from '#/lib/routes/links'
diff --git a/src/screens/ProfileList/AboutSection.tsx b/src/screens/ProfileList/AboutSection.tsx
index 4bb4c15226..d7f6be5c33 100644
--- a/src/screens/ProfileList/AboutSection.tsx
+++ b/src/screens/ProfileList/AboutSection.tsx
@@ -1,8 +1,9 @@
import {useCallback, useImperativeHandle, useState} from 'react'
import {View} from 'react-native'
import {type AppBskyGraphDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useSession} from '#/state/session'
import {ListMembers} from '#/view/com/lists/ListMembers'
diff --git a/src/screens/ProfileList/FeedSection.tsx b/src/screens/ProfileList/FeedSection.tsx
index 566c5035d5..beb68e1bea 100644
--- a/src/screens/ProfileList/FeedSection.tsx
+++ b/src/screens/ProfileList/FeedSection.tsx
@@ -1,7 +1,8 @@
import {useCallback, useEffect, useImperativeHandle, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useIsFocused} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/screens/ProfileList/components/ErrorScreen.tsx b/src/screens/ProfileList/components/ErrorScreen.tsx
index ffffeead14..0ccecc4895 100644
--- a/src/screens/ProfileList/components/ErrorScreen.tsx
+++ b/src/screens/ProfileList/components/ErrorScreen.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {type NavigationProp} from '#/lib/routes/types'
diff --git a/src/screens/ProfileList/components/Header.tsx b/src/screens/ProfileList/components/Header.tsx
index f3a0ded217..9d6c4f3ff7 100644
--- a/src/screens/ProfileList/components/Header.tsx
+++ b/src/screens/ProfileList/components/Header.tsx
@@ -1,8 +1,9 @@
import {useMemo} from 'react'
import {View} from 'react-native'
import {AppBskyGraphDefs, RichText as RichTextAPI} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useHaptics} from '#/lib/haptics'
import {makeListLink} from '#/lib/routes/links'
diff --git a/src/screens/ProfileList/components/MoreOptionsMenu.tsx b/src/screens/ProfileList/components/MoreOptionsMenu.tsx
index 80185418e3..d414c53514 100644
--- a/src/screens/ProfileList/components/MoreOptionsMenu.tsx
+++ b/src/screens/ProfileList/components/MoreOptionsMenu.tsx
@@ -1,6 +1,7 @@
import {type AppBskyActorDefs, AppBskyGraphDefs, AtUri} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {type NavigationProp} from '#/lib/routes/types'
diff --git a/src/screens/ProfileList/components/SubscribeMenu.tsx b/src/screens/ProfileList/components/SubscribeMenu.tsx
index 568f8ecffe..af16e0de0b 100644
--- a/src/screens/ProfileList/components/SubscribeMenu.tsx
+++ b/src/screens/ProfileList/components/SubscribeMenu.tsx
@@ -1,6 +1,7 @@
import {type AppBskyGraphDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list'
import {atoms as a} from '#/alf'
diff --git a/src/screens/ProfileList/index.tsx b/src/screens/ProfileList/index.tsx
index bc802335be..f368645d6f 100644
--- a/src/screens/ProfileList/index.tsx
+++ b/src/screens/ProfileList/index.tsx
@@ -7,8 +7,9 @@ import {
moderateUserList,
type ModerationOpts,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect, useIsFocused} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/screens/SavedFeeds.tsx b/src/screens/SavedFeeds.tsx
index 1e8eab5953..df57297241 100644
--- a/src/screens/SavedFeeds.tsx
+++ b/src/screens/SavedFeeds.tsx
@@ -3,10 +3,10 @@ import {View} from 'react-native'
import Animated, {LinearTransition} from 'react-native-reanimated'
import {type AppBskyActorDefs} from '@atproto/api'
import {TID} from '@atproto/common-web'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
-import {useFocusEffect} from '@react-navigation/native'
-import {useNavigation} from '@react-navigation/native'
+import {Trans} from '@lingui/react/macro'
+import {useFocusEffect, useNavigation} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {RECOMMENDED_SAVED_FEEDS, TIMELINE_SAVED_FEED} from '#/lib/constants'
diff --git a/src/screens/Search/Explore.tsx b/src/screens/Search/Explore.tsx
index df8281e9dd..1129dca35b 100644
--- a/src/screens/Search/Explore.tsx
+++ b/src/screens/Search/Explore.tsx
@@ -5,8 +5,9 @@ import {
type AppBskyFeedDefs,
type AppBskyGraphDefs,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import * as bcp47Match from 'bcp-47-match'
@@ -350,11 +351,19 @@ export function Explore({
])
const topBorder = useMemo(
- () => ({type: 'topBorder', key: 'top-border'}) as const,
+ () =>
+ ({
+ type: 'topBorder',
+ key: 'top-border',
+ }) as const,
[],
)
const trendingTopicsModule = useMemo(
- () => ({type: 'trendingTopics', key: 'trending-topics'}) as const,
+ () =>
+ ({
+ type: 'trendingTopics',
+ key: 'trending-topics',
+ }) as const,
[],
)
const suggestedFollowsModule = useMemo(() => {
diff --git a/src/screens/Search/SearchResults.tsx b/src/screens/Search/SearchResults.tsx
index 6d4dd64784..bbf08cfd26 100644
--- a/src/screens/Search/SearchResults.tsx
+++ b/src/screens/Search/SearchResults.tsx
@@ -1,8 +1,9 @@
import {memo, useCallback, useMemo, useState} from 'react'
import {ActivityIndicator, View} from 'react-native'
import {type AppBskyFeedDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {urls} from '#/lib/constants'
import {usePostViewTracking} from '#/lib/hooks/usePostViewTracking'
diff --git a/src/screens/Search/Shell.tsx b/src/screens/Search/Shell.tsx
index 8f8f183089..9baffb11a4 100644
--- a/src/screens/Search/Shell.tsx
+++ b/src/screens/Search/Shell.tsx
@@ -12,13 +12,13 @@ import {
View,
type ViewStyle,
} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect, useNavigation, useRoute} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
-import {HITSLOP_20} from '#/lib/constants'
-import {HITSLOP_10} from '#/lib/constants'
+import {HITSLOP_10, HITSLOP_20} from '#/lib/constants'
import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback'
import {MagnifyingGlassIcon} from '#/lib/icons'
import {type NavigationProp} from '#/lib/routes/types'
diff --git a/src/screens/Search/components/AutocompleteResults.tsx b/src/screens/Search/components/AutocompleteResults.tsx
index c84f654838..6a91e0bb12 100644
--- a/src/screens/Search/components/AutocompleteResults.tsx
+++ b/src/screens/Search/components/AutocompleteResults.tsx
@@ -1,7 +1,7 @@
import {memo} from 'react'
import {ActivityIndicator, View} from 'react-native'
import {type AppBskyActorDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
diff --git a/src/screens/Search/components/SearchHistory.tsx b/src/screens/Search/components/SearchHistory.tsx
index f99a405df5..b9d4d43bb9 100644
--- a/src/screens/Search/components/SearchHistory.tsx
+++ b/src/screens/Search/components/SearchHistory.tsx
@@ -1,7 +1,8 @@
import {Pressable, ScrollView, View} from 'react-native'
import {moderateProfile, type ModerationOpts} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {createHitslop, HITSLOP_10} from '#/lib/constants'
import {makeProfileLink} from '#/lib/routes/links'
diff --git a/src/screens/Search/components/SearchLanguageDropdown.tsx b/src/screens/Search/components/SearchLanguageDropdown.tsx
index 5c5a4b74fe..e878e0a4fa 100644
--- a/src/screens/Search/components/SearchLanguageDropdown.tsx
+++ b/src/screens/Search/components/SearchLanguageDropdown.tsx
@@ -1,6 +1,7 @@
import {useMemo} from 'react'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {languageName} from '#/locale/helpers'
import {APP_LANGUAGES, LANGUAGES} from '#/locale/languages'
diff --git a/src/screens/Search/components/SearchProfileCard.tsx b/src/screens/Search/components/SearchProfileCard.tsx
index 69a12cc0ae..fdec03c118 100644
--- a/src/screens/Search/components/SearchProfileCard.tsx
+++ b/src/screens/Search/components/SearchProfileCard.tsx
@@ -1,7 +1,7 @@
import {useCallback} from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs, type ModerationOpts} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/screens/Search/components/StarterPackCard.tsx b/src/screens/Search/components/StarterPackCard.tsx
index 0f804d0e35..9e725abcdc 100644
--- a/src/screens/Search/components/StarterPackCard.tsx
+++ b/src/screens/Search/components/StarterPackCard.tsx
@@ -5,8 +5,9 @@ import {
AppBskyGraphStarterpack,
moderateProfile,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {sanitizeHandle} from '#/lib/strings/handles'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
diff --git a/src/screens/Search/modules/ExploreInterestsCard.tsx b/src/screens/Search/modules/ExploreInterestsCard.tsx
index 012f1d6e1f..4843075b90 100644
--- a/src/screens/Search/modules/ExploreInterestsCard.tsx
+++ b/src/screens/Search/modules/ExploreInterestsCard.tsx
@@ -1,7 +1,8 @@
import {useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useInterestsDisplayNames} from '#/lib/interests'
import {Nux, useSaveNux} from '#/state/queries/nuxs'
diff --git a/src/screens/Search/modules/ExploreRecommendations.tsx b/src/screens/Search/modules/ExploreRecommendations.tsx
index 49440134d2..592f8b5dc6 100644
--- a/src/screens/Search/modules/ExploreRecommendations.tsx
+++ b/src/screens/Search/modules/ExploreRecommendations.tsx
@@ -1,6 +1,6 @@
import {View} from 'react-native'
import {type AppBskyUnspeccedDefs} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
DEFAULT_LIMIT as RECOMMENDATIONS_COUNT,
diff --git a/src/screens/Search/modules/ExploreSuggestedAccounts.tsx b/src/screens/Search/modules/ExploreSuggestedAccounts.tsx
index 6e065e55e8..438d7c2a37 100644
--- a/src/screens/Search/modules/ExploreSuggestedAccounts.tsx
+++ b/src/screens/Search/modules/ExploreSuggestedAccounts.tsx
@@ -1,7 +1,7 @@
import {memo, useEffect} from 'react'
import {View} from 'react-native'
import {type AppBskyActorSearchActors, type ModerationOpts} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type InfiniteData} from '@tanstack/react-query'
diff --git a/src/screens/Search/modules/ExploreTrendingTopics.tsx b/src/screens/Search/modules/ExploreTrendingTopics.tsx
index 9eaa493b00..6ae7132f18 100644
--- a/src/screens/Search/modules/ExploreTrendingTopics.tsx
+++ b/src/screens/Search/modules/ExploreTrendingTopics.tsx
@@ -1,8 +1,9 @@
import {useMemo} from 'react'
import {Pressable, View} from 'react-native'
import {type AppBskyUnspeccedDefs, moderateProfile} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useTrendingSettings} from '#/state/preferences/trending'
diff --git a/src/screens/Search/modules/ExploreTrendingVideos.tsx b/src/screens/Search/modules/ExploreTrendingVideos.tsx
index 9c3c06e1bc..6f173a7825 100644
--- a/src/screens/Search/modules/ExploreTrendingVideos.tsx
+++ b/src/screens/Search/modules/ExploreTrendingVideos.tsx
@@ -1,8 +1,9 @@
import {useMemo} from 'react'
import {ScrollView, View} from 'react-native'
import {AppBskyEmbedVideo, AtUri} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/screens/Settings/AboutSettings.tsx b/src/screens/Settings/AboutSettings.tsx
index 9ba067a2f5..9e287ade71 100644
--- a/src/screens/Settings/AboutSettings.tsx
+++ b/src/screens/Settings/AboutSettings.tsx
@@ -2,8 +2,9 @@ import {Platform} from 'react-native'
import {setStringAsync} from 'expo-clipboard'
import * as FileSystem from 'expo-file-system/legacy'
import {Image} from 'expo-image'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {useMutation} from '@tanstack/react-query'
diff --git a/src/screens/Settings/AccessibilitySettings.tsx b/src/screens/Settings/AccessibilitySettings.tsx
index 0e7373c5aa..d5819fa4d7 100644
--- a/src/screens/Settings/AccessibilitySettings.tsx
+++ b/src/screens/Settings/AccessibilitySettings.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {type CommonNavigatorParams} from '#/lib/routes/types'
diff --git a/src/screens/Settings/AccountSettings.tsx b/src/screens/Settings/AccountSettings.tsx
index 6b2f5534f0..7ae70f0e33 100644
--- a/src/screens/Settings/AccountSettings.tsx
+++ b/src/screens/Settings/AccountSettings.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {type CommonNavigatorParams} from '#/lib/routes/types'
diff --git a/src/screens/Settings/ActivityPrivacySettings.tsx b/src/screens/Settings/ActivityPrivacySettings.tsx
index c90881d0b4..b1d90cf9c1 100644
--- a/src/screens/Settings/ActivityPrivacySettings.tsx
+++ b/src/screens/Settings/ActivityPrivacySettings.tsx
@@ -1,7 +1,8 @@
import {View} from 'react-native'
import {type AppBskyNotificationDeclaration} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/AppIconSettings/SettingsListItem.tsx b/src/screens/Settings/AppIconSettings/SettingsListItem.tsx
index add87b1d7a..9809537a88 100644
--- a/src/screens/Settings/AppIconSettings/SettingsListItem.tsx
+++ b/src/screens/Settings/AppIconSettings/SettingsListItem.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {AppIconImage} from '#/screens/Settings/AppIconSettings/AppIconImage'
import {useCurrentAppIcon} from '#/screens/Settings/AppIconSettings/useCurrentAppIcon'
diff --git a/src/screens/Settings/AppIconSettings/index.tsx b/src/screens/Settings/AppIconSettings/index.tsx
index 306f707eb2..2e716a219f 100644
--- a/src/screens/Settings/AppIconSettings/index.tsx
+++ b/src/screens/Settings/AppIconSettings/index.tsx
@@ -1,7 +1,8 @@
import {useState} from 'react'
import {Alert, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import * as DynamicAppIcon from '@mozzius/expo-dynamic-app-icon'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
@@ -128,7 +129,7 @@ function getAppIconName(icon: string | false): DynamicAppIcon.IconName {
if (!icon || icon === 'DEFAULT') {
return 'default_light'
} else {
- return icon as DynamicAppIcon.IconName
+ return icon
}
}
@@ -150,7 +151,7 @@ function Group({
values={[value]}
maxSelections={1}
onChange={vals => {
- if (vals[0]) onChange(vals[0] as DynamicAppIcon.IconName)
+ if (vals[0]) onChange(vals[0])
}}>
{children}
diff --git a/src/screens/Settings/AppIconSettings/useAppIconSets.ts b/src/screens/Settings/AppIconSettings/useAppIconSets.ts
index 6b7334ac57..584426fb83 100644
--- a/src/screens/Settings/AppIconSettings/useAppIconSets.ts
+++ b/src/screens/Settings/AppIconSettings/useAppIconSets.ts
@@ -1,5 +1,5 @@
import {useMemo} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type AppIconSet} from '#/screens/Settings/AppIconSettings/types'
diff --git a/src/screens/Settings/AppPasswords.tsx b/src/screens/Settings/AppPasswords.tsx
index 0ad67b250e..0cc3792bf8 100644
--- a/src/screens/Settings/AppPasswords.tsx
+++ b/src/screens/Settings/AppPasswords.tsx
@@ -7,8 +7,9 @@ import Animated, {
LinearTransition,
} from 'react-native-reanimated'
import {type ComAtprotoServerListAppPasswords} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {type CommonNavigatorParams} from '#/lib/routes/types'
diff --git a/src/screens/Settings/AppearanceSettings.tsx b/src/screens/Settings/AppearanceSettings.tsx
index ba130cd421..6d4c03de0b 100644
--- a/src/screens/Settings/AppearanceSettings.tsx
+++ b/src/screens/Settings/AppearanceSettings.tsx
@@ -5,8 +5,9 @@ import Animated, {
LayoutAnimationConfig,
LinearTransition,
} from 'react-native-reanimated'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type CommonNavigatorParams,
@@ -23,8 +24,7 @@ import {TextSize_Stroke2_Corner0_Rounded as TextSize} from '#/components/icons/T
import {TitleCase_Stroke2_Corner0_Rounded as Aa} from '#/components/icons/TitleCase'
import * as Layout from '#/components/Layout'
import {Text} from '#/components/Typography'
-import {IS_NATIVE} from '#/env'
-import {IS_INTERNAL} from '#/env'
+import {IS_INTERNAL, IS_NATIVE} from '#/env'
import * as SettingsList from './components/SettingsList'
type Props = NativeStackScreenProps
diff --git a/src/screens/Settings/ContentAndMediaSettings.tsx b/src/screens/Settings/ContentAndMediaSettings.tsx
index ba1e3b4506..3aae0b4917 100644
--- a/src/screens/Settings/ContentAndMediaSettings.tsx
+++ b/src/screens/Settings/ContentAndMediaSettings.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {type CommonNavigatorParams} from '#/lib/routes/types'
diff --git a/src/screens/Settings/ExternalMediaPreferences.tsx b/src/screens/Settings/ExternalMediaPreferences.tsx
index 1f0040fb38..1cf74125eb 100644
--- a/src/screens/Settings/ExternalMediaPreferences.tsx
+++ b/src/screens/Settings/ExternalMediaPreferences.tsx
@@ -1,6 +1,6 @@
import {Fragment} from 'react'
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type CommonNavigatorParams,
diff --git a/src/screens/Settings/FindContactsSettings.tsx b/src/screens/Settings/FindContactsSettings.tsx
index 461a28ffbc..e1973c74f9 100644
--- a/src/screens/Settings/FindContactsSettings.tsx
+++ b/src/screens/Settings/FindContactsSettings.tsx
@@ -6,8 +6,9 @@ import {
type AppBskyContactGetSyncStatus,
type ModerationOpts,
} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useIsFocused} from '@react-navigation/native'
import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
diff --git a/src/screens/Settings/FollowingFeedPreferences.tsx b/src/screens/Settings/FollowingFeedPreferences.tsx
index 7f1ae1d326..6fa0e2fc37 100644
--- a/src/screens/Settings/FollowingFeedPreferences.tsx
+++ b/src/screens/Settings/FollowingFeedPreferences.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type CommonNavigatorParams,
diff --git a/src/screens/Settings/InterestsSettings.tsx b/src/screens/Settings/InterestsSettings.tsx
index 074a423ec4..53684722aa 100644
--- a/src/screens/Settings/InterestsSettings.tsx
+++ b/src/screens/Settings/InterestsSettings.tsx
@@ -1,7 +1,8 @@
import {useMemo, useState} from 'react'
import {type TextStyle, View, type ViewStyle} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {useQueryClient} from '@tanstack/react-query'
import debounce from 'lodash.debounce'
diff --git a/src/screens/Settings/LanguageSettings.tsx b/src/screens/Settings/LanguageSettings.tsx
index 25ac93efa9..cd4bbe42a2 100644
--- a/src/screens/Settings/LanguageSettings.tsx
+++ b/src/screens/Settings/LanguageSettings.tsx
@@ -1,7 +1,8 @@
import {useCallback, useMemo, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type CommonNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx
index 73613c4c33..c8b944d03b 100644
--- a/src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx
@@ -1,8 +1,9 @@
import {useCallback, useMemo} from 'react'
import {type ListRenderItemInfo, Text as RNText, View} from 'react-native'
import {type ModerationOpts} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {
@@ -21,8 +22,10 @@ import {SubscribeProfileDialog} from '#/components/activity-notifications/Subscr
import * as Admonition from '#/components/Admonition'
import {Button, ButtonText} from '#/components/Button'
import {useDialogControl} from '#/components/Dialog'
-import {BellRinging_Filled_Corner0_Rounded as BellRingingFilledIcon} from '#/components/icons/BellRinging'
-import {BellRinging_Stroke2_Corner0_Rounded as BellRingingIcon} from '#/components/icons/BellRinging'
+import {
+ BellRinging_Filled_Corner0_Rounded as BellRingingFilledIcon,
+ BellRinging_Stroke2_Corner0_Rounded as BellRingingIcon,
+} from '#/components/icons/BellRinging'
import * as Layout from '#/components/Layout'
import {InlineLinkText} from '#/components/Link'
import {ListFooter} from '#/components/Lists'
diff --git a/src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx
index f726ab558a..5c03d040a1 100644
--- a/src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx
index c72e8c7578..738b4c6af4 100644
--- a/src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/MentionNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/MentionNotificationSettings.tsx
index 0a770157e9..7aafedaef4 100644
--- a/src/screens/Settings/NotificationSettings/MentionNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/MentionNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings.tsx
index a0fe65ecf6..c5d678f300 100644
--- a/src/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/NewFollowerNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/NewFollowerNotificationSettings.tsx
index dd603a52f5..3526895529 100644
--- a/src/screens/Settings/NotificationSettings/NewFollowerNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/NewFollowerNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx
index afb3df90f5..023ccc29b9 100644
--- a/src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx
index dddf838c60..552dbd4c85 100644
--- a/src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx
index aa9e4e32fa..a2e59e58d9 100644
--- a/src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx
index 13fec61682..53a5610522 100644
--- a/src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx
+++ b/src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {
type AllNavigatorParams,
diff --git a/src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx b/src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx
index fbde03c279..76a3f77d1f 100644
--- a/src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx
+++ b/src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx
@@ -1,8 +1,9 @@
import {useMemo} from 'react'
import {View} from 'react-native'
import {type AppBskyNotificationDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNotificationSettingsUpdateMutation} from '#/state/queries/notifications/settings'
import {atoms as a, platform, useTheme} from '#/alf'
diff --git a/src/screens/Settings/NotificationSettings/index.tsx b/src/screens/Settings/NotificationSettings/index.tsx
index f6d1c708ba..96fee77218 100644
--- a/src/screens/Settings/NotificationSettings/index.tsx
+++ b/src/screens/Settings/NotificationSettings/index.tsx
@@ -2,8 +2,9 @@ import {useEffect} from 'react'
import {Linking, View} from 'react-native'
import * as Notification from 'expo-notifications'
import {type AppBskyNotificationDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQuery, useQueryClient} from '@tanstack/react-query'
import {useAppState} from '#/lib/appState'
diff --git a/src/screens/Settings/PrivacyAndSecuritySettings.tsx b/src/screens/Settings/PrivacyAndSecuritySettings.tsx
index 19d84e2c01..2979ace213 100644
--- a/src/screens/Settings/PrivacyAndSecuritySettings.tsx
+++ b/src/screens/Settings/PrivacyAndSecuritySettings.tsx
@@ -1,6 +1,7 @@
import {type AppBskyNotificationDeclaration} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {type CommonNavigatorParams} from '#/lib/routes/types'
diff --git a/src/screens/Settings/Settings.tsx b/src/screens/Settings/Settings.tsx
index c79386d05b..245a70f470 100644
--- a/src/screens/Settings/Settings.tsx
+++ b/src/screens/Settings/Settings.tsx
@@ -2,8 +2,9 @@ import {useState} from 'react'
import {Alert, LayoutAnimation, Linking, Pressable, View} from 'react-native'
import {useReducedMotion} from 'react-native-reanimated'
import {type AppBskyActorDefs, moderateProfile} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
diff --git a/src/screens/Settings/ThreadPreferences.tsx b/src/screens/Settings/ThreadPreferences.tsx
index c44e3e01ab..06f3b4382d 100644
--- a/src/screens/Settings/ThreadPreferences.tsx
+++ b/src/screens/Settings/ThreadPreferences.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type CommonNavigatorParams,
diff --git a/src/screens/Settings/components/AddAppPasswordDialog.tsx b/src/screens/Settings/components/AddAppPasswordDialog.tsx
index 64aa8bafc1..4d379797e0 100644
--- a/src/screens/Settings/components/AddAppPasswordDialog.tsx
+++ b/src/screens/Settings/components/AddAppPasswordDialog.tsx
@@ -9,8 +9,9 @@ import Animated, {
SlideOutLeft,
} from 'react-native-reanimated'
import {type ComAtprotoServerCreateAppPassword} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation} from '@tanstack/react-query'
import {useAppPasswordCreateMutation} from '#/state/queries/app-passwords'
diff --git a/src/screens/Settings/components/ChangeHandleDialog.tsx b/src/screens/Settings/components/ChangeHandleDialog.tsx
index accbf41c86..3e9c77199b 100644
--- a/src/screens/Settings/components/ChangeHandleDialog.tsx
+++ b/src/screens/Settings/components/ChangeHandleDialog.tsx
@@ -11,14 +11,18 @@ import Animated, {
SlideOutRight,
} from 'react-native-reanimated'
import {type ComAtprotoServerDescribeServer} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation, useQueryClient} from '@tanstack/react-query'
import {HITSLOP_10, urls} from '#/lib/constants'
import {cleanError} from '#/lib/strings/errors'
-import {createFullHandle, validateServiceHandle} from '#/lib/strings/handles'
-import {sanitizeHandle} from '#/lib/strings/handles'
+import {
+ createFullHandle,
+ sanitizeHandle,
+ validateServiceHandle,
+} from '#/lib/strings/handles'
import {useFetchDid, useUpdateHandleMutation} from '#/state/queries/handle'
import {RQKEY as RQKEY_PROFILE} from '#/state/queries/profile'
import {useServiceQuery} from '#/state/queries/service'
diff --git a/src/screens/Settings/components/ChangePasswordDialog.tsx b/src/screens/Settings/components/ChangePasswordDialog.tsx
index 1a4f36beed..91cb671792 100644
--- a/src/screens/Settings/components/ChangePasswordDialog.tsx
+++ b/src/screens/Settings/components/ChangePasswordDialog.tsx
@@ -1,7 +1,8 @@
import {useState} from 'react'
import {useWindowDimensions, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import * as EmailValidator from 'email-validator'
import {cleanError, isNetworkError} from '#/lib/strings/errors'
diff --git a/src/screens/Settings/components/CopyButton.tsx b/src/screens/Settings/components/CopyButton.tsx
index 23c4fa8dd0..27aa9b5f66 100644
--- a/src/screens/Settings/components/CopyButton.tsx
+++ b/src/screens/Settings/components/CopyButton.tsx
@@ -6,7 +6,7 @@ import Animated, {
ZoomIn,
} from 'react-native-reanimated'
import * as Clipboard from 'expo-clipboard'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme} from '#/alf'
import {Button, type ButtonProps} from '#/components/Button'
diff --git a/src/screens/Settings/components/DeactivateAccountDialog.tsx b/src/screens/Settings/components/DeactivateAccountDialog.tsx
index 3a4e173ab7..19161da816 100644
--- a/src/screens/Settings/components/DeactivateAccountDialog.tsx
+++ b/src/screens/Settings/components/DeactivateAccountDialog.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {logger} from '#/logger'
import {useAgent, useSessionApi} from '#/state/session'
diff --git a/src/screens/Settings/components/DeleteAccountDialog.tsx b/src/screens/Settings/components/DeleteAccountDialog.tsx
index d52629c38b..f7f33f75eb 100644
--- a/src/screens/Settings/components/DeleteAccountDialog.tsx
+++ b/src/screens/Settings/components/DeleteAccountDialog.tsx
@@ -1,7 +1,8 @@
import {useCallback, useRef, useState} from 'react'
import {type TextInput, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {DM_SERVICE_HEADERS} from '#/lib/constants'
import {useCleanError} from '#/lib/hooks/useCleanError'
diff --git a/src/screens/Settings/components/DisableEmail2FADialog.tsx b/src/screens/Settings/components/DisableEmail2FADialog.tsx
index 6f188e780a..45b414116b 100644
--- a/src/screens/Settings/components/DisableEmail2FADialog.tsx
+++ b/src/screens/Settings/components/DisableEmail2FADialog.tsx
@@ -1,7 +1,8 @@
import {useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {cleanError} from '#/lib/strings/errors'
import {useAgent, useSession} from '#/state/session'
@@ -56,7 +57,7 @@ export function DisableEmail2FADialog({
try {
if (currentAccount?.email) {
await agent.com.atproto.server.updateEmail({
- email: currentAccount!.email,
+ email: currentAccount.email,
token: confirmationCode.trim(),
emailAuthFactor: false,
})
diff --git a/src/screens/Settings/components/Email2FAToggle.tsx b/src/screens/Settings/components/Email2FAToggle.tsx
index 584026298c..8d27544c2a 100644
--- a/src/screens/Settings/components/Email2FAToggle.tsx
+++ b/src/screens/Settings/components/Email2FAToggle.tsx
@@ -1,5 +1,5 @@
import React from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useSession} from '#/state/session'
diff --git a/src/screens/Settings/components/ExportCarDialog.tsx b/src/screens/Settings/components/ExportCarDialog.tsx
index 9369943929..df064e3a0f 100644
--- a/src/screens/Settings/components/ExportCarDialog.tsx
+++ b/src/screens/Settings/components/ExportCarDialog.tsx
@@ -1,7 +1,8 @@
import {useCallback, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {DM_SERVICE_HEADERS} from '#/lib/constants'
import {saveBytesToDisk} from '#/lib/media/manip'
diff --git a/src/screens/Settings/components/OTAInfo.tsx b/src/screens/Settings/components/OTAInfo.tsx
index 8b7ca9c239..b64fbc1b20 100644
--- a/src/screens/Settings/components/OTAInfo.tsx
+++ b/src/screens/Settings/components/OTAInfo.tsx
@@ -1,6 +1,7 @@
import * as Updates from 'expo-updates'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation, useQuery} from '@tanstack/react-query'
import * as Toast from '#/view/com/util/Toast'
diff --git a/src/screens/Settings/components/PwiOptOut.tsx b/src/screens/Settings/components/PwiOptOut.tsx
index 5cdcb33c46..88025b0d16 100644
--- a/src/screens/Settings/components/PwiOptOut.tsx
+++ b/src/screens/Settings/components/PwiOptOut.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import {type $Typed, ComAtprotoLabelDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
useProfileQuery,
diff --git a/src/screens/Signup/BackNextButtons.tsx b/src/screens/Signup/BackNextButtons.tsx
index 5a85a85d1f..4466e836f7 100644
--- a/src/screens/Signup/BackNextButtons.tsx
+++ b/src/screens/Signup/BackNextButtons.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a} from '#/alf'
import {Button, ButtonIcon, ButtonText} from '#/components/Button'
diff --git a/src/screens/Signup/StepCaptcha/index.tsx b/src/screens/Signup/StepCaptcha/index.tsx
index 3674677027..73eab7edc4 100644
--- a/src/screens/Signup/StepCaptcha/index.tsx
+++ b/src/screens/Signup/StepCaptcha/index.tsx
@@ -1,7 +1,7 @@
import React, {useEffect, useState} from 'react'
import {ActivityIndicator, Platform, View} from 'react-native'
import ReactNativeDeviceAttest from 'react-native-device-attest'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {nanoid} from 'nanoid/non-secure'
diff --git a/src/screens/Signup/StepHandle/HandleSuggestions.tsx b/src/screens/Signup/StepHandle/HandleSuggestions.tsx
index 3d219d8864..0b7c0fb93e 100644
--- a/src/screens/Signup/StepHandle/HandleSuggestions.tsx
+++ b/src/screens/Signup/StepHandle/HandleSuggestions.tsx
@@ -1,7 +1,8 @@
import Animated, {Easing, FadeInDown, FadeOut} from 'react-native-reanimated'
import {type ComAtprotoTempCheckHandleAvailability} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, native, useTheme} from '#/alf'
import {borderRadius} from '#/alf/tokens'
diff --git a/src/screens/Signup/StepHandle/index.tsx b/src/screens/Signup/StepHandle/index.tsx
index c980cb3085..9c95eb2b36 100644
--- a/src/screens/Signup/StepHandle/index.tsx
+++ b/src/screens/Signup/StepHandle/index.tsx
@@ -6,8 +6,9 @@ import Animated, {
LayoutAnimationConfig,
LinearTransition,
} from 'react-native-reanimated'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {
createFullHandle,
diff --git a/src/screens/Signup/StepInfo/Policies.tsx b/src/screens/Signup/StepInfo/Policies.tsx
index 565c2d4cd1..9d7b7e9ff1 100644
--- a/src/screens/Signup/StepInfo/Policies.tsx
+++ b/src/screens/Signup/StepInfo/Policies.tsx
@@ -1,8 +1,9 @@
import {type ReactElement} from 'react'
import {View} from 'react-native'
import {type ComAtprotoServerDescribeServer} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme} from '#/alf'
import {Admonition} from '#/components/Admonition'
diff --git a/src/screens/Signup/StepInfo/index.tsx b/src/screens/Signup/StepInfo/index.tsx
index e1d20ca73f..60239b0056 100644
--- a/src/screens/Signup/StepInfo/index.tsx
+++ b/src/screens/Signup/StepInfo/index.tsx
@@ -1,7 +1,8 @@
import React, {useRef} from 'react'
import {type TextInput, View} from 'react-native'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import * as EmailValidator from 'email-validator'
import type tldts from 'tldts'
diff --git a/src/screens/Signup/index.tsx b/src/screens/Signup/index.tsx
index a796d6dd40..256b243fc0 100644
--- a/src/screens/Signup/index.tsx
+++ b/src/screens/Signup/index.tsx
@@ -3,8 +3,9 @@ import {AppState, type AppStateStatus, View} from 'react-native'
import ReactNativeDeviceAttest from 'react-native-device-attest'
import Animated, {FadeIn, LayoutAnimationConfig} from 'react-native-reanimated'
import {AppBskyGraphStarterpack} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {FEEDBACK_FORM_URL} from '#/lib/constants'
import {logger} from '#/logger'
diff --git a/src/screens/Signup/state.ts b/src/screens/Signup/state.ts
index 7add770548..cb35fb3368 100644
--- a/src/screens/Signup/state.ts
+++ b/src/screens/Signup/state.ts
@@ -4,7 +4,7 @@ import {
ComAtprotoServerCreateAccount,
type ComAtprotoServerDescribeServer,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import * as EmailValidator from 'email-validator'
diff --git a/src/screens/SignupQueued.tsx b/src/screens/SignupQueued.tsx
index ad5da2a376..2daa701b00 100644
--- a/src/screens/SignupQueued.tsx
+++ b/src/screens/SignupQueued.tsx
@@ -2,8 +2,9 @@ import React from 'react'
import {Modal, ScrollView, View} from 'react-native'
import {SystemBars} from 'react-native-edge-to-edge'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg, plural, Trans} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {logger} from '#/logger'
import {isSignupQueued, useAgent, useSessionApi} from '#/state/session'
diff --git a/src/screens/StarterPack/StarterPackLandingScreen.tsx b/src/screens/StarterPack/StarterPackLandingScreen.tsx
index a16eaf3515..5f926cb6e6 100644
--- a/src/screens/StarterPack/StarterPackLandingScreen.tsx
+++ b/src/screens/StarterPack/StarterPackLandingScreen.tsx
@@ -8,8 +8,9 @@ import {
type ModerationOpts,
} from '@atproto/api'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {JOINED_THIS_WEEK} from '#/lib/constants'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
diff --git a/src/screens/StarterPack/StarterPackScreen.tsx b/src/screens/StarterPack/StarterPackScreen.tsx
index 46fb2006d5..e08cbd01b6 100644
--- a/src/screens/StarterPack/StarterPackScreen.tsx
+++ b/src/screens/StarterPack/StarterPackScreen.tsx
@@ -9,8 +9,9 @@ import {
RichText as RichTextAPI,
} from '@atproto/api'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/screens/StarterPack/Wizard/State.tsx b/src/screens/StarterPack/Wizard/State.tsx
index f34218219b..9a6623349c 100644
--- a/src/screens/StarterPack/Wizard/State.tsx
+++ b/src/screens/StarterPack/Wizard/State.tsx
@@ -4,7 +4,7 @@ import {
type AppBskyGraphDefs,
AppBskyGraphStarterpack,
} from '@atproto/api'
-import {msg, plural} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {STARTER_PACK_MAX_SIZE} from '#/lib/constants'
import * as Toast from '#/view/com/util/Toast'
diff --git a/src/screens/StarterPack/Wizard/StepDetails.tsx b/src/screens/StarterPack/Wizard/StepDetails.tsx
index b10b2789fa..5a7770f2f0 100644
--- a/src/screens/StarterPack/Wizard/StepDetails.tsx
+++ b/src/screens/StarterPack/Wizard/StepDetails.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useProfileQuery} from '#/state/queries/profile'
import {useSession} from '#/state/session'
@@ -19,9 +20,11 @@ export function StepDetails() {
const {currentAccount} = useSession()
const {data: currentProfile} = useProfileQuery({
did: currentAccount?.did,
- staleTime: 300,
+ staleTime: Infinity,
})
+ const name = currentProfile?.displayName || currentProfile?.handle
+
return (
@@ -42,11 +45,9 @@ export function StepDetails() {
dispatch({type: 'SetName', name: text})}
/>
@@ -70,11 +71,11 @@ export function StepDetails() {
dispatch({type: 'SetDescription', description: text})
diff --git a/src/screens/StarterPack/Wizard/StepFeeds.tsx b/src/screens/StarterPack/Wizard/StepFeeds.tsx
index 96e21eb397..470d5a55ee 100644
--- a/src/screens/StarterPack/Wizard/StepFeeds.tsx
+++ b/src/screens/StarterPack/Wizard/StepFeeds.tsx
@@ -2,7 +2,7 @@ import {useState} from 'react'
import {type ListRenderItemInfo, View} from 'react-native'
import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
import {type AppBskyFeedDefs, type ModerationOpts} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {DISCOVER_FEED_URI} from '#/lib/constants'
import {useA11y} from '#/state/a11y'
diff --git a/src/screens/StarterPack/Wizard/StepProfiles.tsx b/src/screens/StarterPack/Wizard/StepProfiles.tsx
index 2943f08925..61a4f45ef4 100644
--- a/src/screens/StarterPack/Wizard/StepProfiles.tsx
+++ b/src/screens/StarterPack/Wizard/StepProfiles.tsx
@@ -2,7 +2,7 @@ import {useState} from 'react'
import {type ListRenderItemInfo, View} from 'react-native'
import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
import {type AppBskyActorDefs, type ModerationOpts} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useA11y} from '#/state/a11y'
import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete'
diff --git a/src/screens/StarterPack/Wizard/index.tsx b/src/screens/StarterPack/Wizard/index.tsx
index 3382a5d540..25b4a5f8ee 100644
--- a/src/screens/StarterPack/Wizard/index.tsx
+++ b/src/screens/StarterPack/Wizard/index.tsx
@@ -10,8 +10,9 @@ import {
AtUri,
type ModerationOpts,
} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useFocusEffect, useNavigation} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
diff --git a/src/screens/Takendown.tsx b/src/screens/Takendown.tsx
index 4e5e2d2ff4..551f3ba27b 100644
--- a/src/screens/Takendown.tsx
+++ b/src/screens/Takendown.tsx
@@ -3,8 +3,9 @@ import {View} from 'react-native'
import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
import {type ComAtprotoAdminDefs, ToolsOzoneReportDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useMutation} from '@tanstack/react-query'
import {countGraphemes} from 'unicode-segmenter/grapheme'
diff --git a/src/screens/Topic.tsx b/src/screens/Topic.tsx
index 7fbfe9b1a7..88e674f943 100644
--- a/src/screens/Topic.tsx
+++ b/src/screens/Topic.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import {type ListRenderItemInfo, View} from 'react-native'
import {type AppBskyFeedDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useFocusEffect} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
diff --git a/src/screens/VideoFeed/components/Header.tsx b/src/screens/VideoFeed/components/Header.tsx
index 34f2cb03f5..3d3ff6ede5 100644
--- a/src/screens/VideoFeed/components/Header.tsx
+++ b/src/screens/VideoFeed/components/Header.tsx
@@ -1,6 +1,6 @@
import {useCallback} from 'react'
import {type GestureResponderEvent, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
diff --git a/src/screens/VideoFeed/index.tsx b/src/screens/VideoFeed/index.tsx
index b24513fb3b..f4010f2caf 100644
--- a/src/screens/VideoFeed/index.tsx
+++ b/src/screens/VideoFeed/index.tsx
@@ -33,8 +33,9 @@ import {
type ModerationDecision,
RichText as RichTextAPI,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
type RouteProp,
useFocusEffect,
diff --git a/src/state/queries/activity-subscriptions.ts b/src/state/queries/activity-subscriptions.ts
index a81a672265..5ad218fe94 100644
--- a/src/state/queries/activity-subscriptions.ts
+++ b/src/state/queries/activity-subscriptions.ts
@@ -3,7 +3,7 @@ import {
type AppBskyNotificationDeclaration,
type AppBskyNotificationListActivitySubscriptions,
} from '@atproto/api'
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
import {
type InfiniteData,
type QueryClient,
diff --git a/src/state/queries/explore-feed-previews.tsx b/src/state/queries/explore-feed-previews.tsx
index 53d6b841b4..acbc4ee7e1 100644
--- a/src/state/queries/explore-feed-previews.tsx
+++ b/src/state/queries/explore-feed-previews.tsx
@@ -5,7 +5,7 @@ import {
AtUri,
moderatePost,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {
type InfiniteData,
diff --git a/src/state/queries/feed.ts b/src/state/queries/feed.ts
index 8a08dc8f0b..c2b173b5ce 100644
--- a/src/state/queries/feed.ts
+++ b/src/state/queries/feed.ts
@@ -8,7 +8,7 @@ import {
moderateFeedGenerator,
RichText,
} from '@atproto/api'
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
import {
type InfiniteData,
keepPreviousData,
diff --git a/src/state/queries/notifications/settings.ts b/src/state/queries/notifications/settings.ts
index 02c0fe23b0..274b17f5ae 100644
--- a/src/state/queries/notifications/settings.ts
+++ b/src/state/queries/notifications/settings.ts
@@ -1,5 +1,5 @@
import {type AppBskyNotificationDefs} from '@atproto/api'
-import {t} from '@lingui/macro'
+import {t} from '@lingui/core/macro'
import {
type QueryClient,
useMutation,
diff --git a/src/state/queries/pinned-post.ts b/src/state/queries/pinned-post.ts
index c3d9fd6875..440a3e51fd 100644
--- a/src/state/queries/pinned-post.ts
+++ b/src/state/queries/pinned-post.ts
@@ -1,4 +1,4 @@
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useMutation, useQueryClient} from '@tanstack/react-query'
diff --git a/src/state/queries/starter-packs.ts b/src/state/queries/starter-packs.ts
index 74d75814e8..53d668d89a 100644
--- a/src/state/queries/starter-packs.ts
+++ b/src/state/queries/starter-packs.ts
@@ -352,7 +352,7 @@ async function whenAppViewReady(
)
}
-export async function precacheStarterPack(
+export function precacheStarterPack(
queryClient: QueryClient,
starterPack:
| AppBskyGraphDefs.StarterPackViewBasic
diff --git a/src/state/shell/composer/index.tsx b/src/state/shell/composer/index.tsx
index d56b1014bc..ee7886f5eb 100644
--- a/src/state/shell/composer/index.tsx
+++ b/src/state/shell/composer/index.tsx
@@ -5,7 +5,7 @@ import {
type AppBskyUnspeccedGetPostThreadV2,
type ModerationDecision,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/state/shell/progress-guide.tsx b/src/state/shell/progress-guide.tsx
index 17c6b73f50..85e50f3186 100644
--- a/src/state/shell/progress-guide.tsx
+++ b/src/state/shell/progress-guide.tsx
@@ -1,5 +1,5 @@
import React, {useMemo} from 'react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {
diff --git a/src/view/com/auth/LoggedOut.tsx b/src/view/com/auth/LoggedOut.tsx
index b3cf382db2..54bc108d97 100644
--- a/src/view/com/auth/LoggedOut.tsx
+++ b/src/view/com/auth/LoggedOut.tsx
@@ -1,7 +1,7 @@
import {useCallback, useEffect, useState} from 'react'
import {View} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/com/auth/SplashScreen.tsx b/src/view/com/auth/SplashScreen.tsx
index cc44776969..8f83155360 100644
--- a/src/view/com/auth/SplashScreen.tsx
+++ b/src/view/com/auth/SplashScreen.tsx
@@ -2,8 +2,9 @@ import {useMemo} from 'react'
import {Image as RNImage, View} from 'react-native'
import Animated, {FadeIn, FadeOut} from 'react-native-reanimated'
import {Image} from 'expo-image'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useHaptics} from '#/lib/haptics'
import {Logo} from '#/view/icons/Logo'
diff --git a/src/view/com/auth/SplashScreen.web.tsx b/src/view/com/auth/SplashScreen.web.tsx
index d9185d7789..6c03451f11 100644
--- a/src/view/com/auth/SplashScreen.web.tsx
+++ b/src/view/com/auth/SplashScreen.web.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {Pressable, View} from 'react-native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {useKawaiiMode} from '#/state/preferences/kawaii'
diff --git a/src/view/com/composer/Composer.tsx b/src/view/com/composer/Composer.tsx
index ef54c4908f..da49081378 100644
--- a/src/view/com/composer/Composer.tsx
+++ b/src/view/com/composer/Composer.tsx
@@ -52,8 +52,9 @@ import {
type BskyAgent,
type RichText,
} from '@atproto/api'
-import {msg, plural, Trans} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/com/composer/ComposerReplyTo.tsx b/src/view/com/composer/ComposerReplyTo.tsx
index e534816626..3757ed7c92 100644
--- a/src/view/com/composer/ComposerReplyTo.tsx
+++ b/src/view/com/composer/ComposerReplyTo.tsx
@@ -7,7 +7,7 @@ import {
AppBskyEmbedRecordWithMedia,
AppBskyFeedPost,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
diff --git a/src/view/com/composer/ExternalEmbedRemoveBtn.tsx b/src/view/com/composer/ExternalEmbedRemoveBtn.tsx
index 1e363d0184..ef5ccf468f 100644
--- a/src/view/com/composer/ExternalEmbedRemoveBtn.tsx
+++ b/src/view/com/composer/ExternalEmbedRemoveBtn.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {atoms as a, useTheme, type ViewStyleProp} from '#/alf'
diff --git a/src/view/com/composer/GifAltText.tsx b/src/view/com/composer/GifAltText.tsx
index a0bbc28073..06c514f954 100644
--- a/src/view/com/composer/GifAltText.tsx
+++ b/src/view/com/composer/GifAltText.tsx
@@ -1,7 +1,8 @@
import {useState} from 'react'
import {TouchableOpacity, View} from 'react-native'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {HITSLOP_10, MAX_ALT_TEXT} from '#/lib/constants'
import {parseAltFromGIFDescription} from '#/lib/gif-alt-text'
diff --git a/src/view/com/composer/SelectMediaButton.tsx b/src/view/com/composer/SelectMediaButton.tsx
index 91d8d11952..259d1304fd 100644
--- a/src/view/com/composer/SelectMediaButton.tsx
+++ b/src/view/com/composer/SelectMediaButton.tsx
@@ -2,7 +2,7 @@ import {useCallback, useEffect, useRef} from 'react'
import {Keyboard} from 'react-native'
import {File} from 'expo-file-system'
import {type ImagePickerAsset} from 'expo-image-picker'
-import {msg, plural} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {VIDEO_MAX_DURATION_MS, VIDEO_MAX_SIZE} from '#/lib/constants'
diff --git a/src/view/com/composer/drafts/DraftItem.tsx b/src/view/com/composer/drafts/DraftItem.tsx
index 16274acbf4..84d9e1a907 100644
--- a/src/view/com/composer/drafts/DraftItem.tsx
+++ b/src/view/com/composer/drafts/DraftItem.tsx
@@ -1,7 +1,7 @@
import {useCallback, useEffect, useMemo, useState} from 'react'
import {Pressable, View} from 'react-native'
import * as VideoThumbnails from 'expo-video-thumbnails'
-import {msg, plural} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import * as device from '#/lib/deviceName'
diff --git a/src/view/com/composer/drafts/DraftsButton.tsx b/src/view/com/composer/drafts/DraftsButton.tsx
index c1675ef2cb..ac075223df 100644
--- a/src/view/com/composer/drafts/DraftsButton.tsx
+++ b/src/view/com/composer/drafts/DraftsButton.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a} from '#/alf'
import {Button, ButtonText} from '#/components/Button'
diff --git a/src/view/com/composer/drafts/DraftsListDialog.tsx b/src/view/com/composer/drafts/DraftsListDialog.tsx
index 138337c8c0..85ac4fd2c7 100644
--- a/src/view/com/composer/drafts/DraftsListDialog.tsx
+++ b/src/view/com/composer/drafts/DraftsListDialog.tsx
@@ -1,7 +1,8 @@
import {useCallback, useEffect, useMemo} from 'react'
import {Keyboard, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useCallOnce} from '#/lib/once'
import {EmptyState} from '#/view/com/util/EmptyState'
diff --git a/src/view/com/composer/labels/LabelsBtn.tsx b/src/view/com/composer/labels/LabelsBtn.tsx
index 82a902c80c..0387315c9c 100644
--- a/src/view/com/composer/labels/LabelsBtn.tsx
+++ b/src/view/com/composer/labels/LabelsBtn.tsx
@@ -1,6 +1,7 @@
import {Keyboard, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
ADULT_CONTENT_LABELS,
@@ -36,9 +37,7 @@ export function LabelsBtn({
const filtered = labels.filter(
l => !ADULT_CONTENT_LABELS.includes(l as AdultSelfLabel),
)
- onChange([
- ...new Set([...filtered, newLabel].filter(Boolean) as SelfLabel[]),
- ])
+ onChange([...new Set([...filtered, newLabel].filter(Boolean))])
}
const updateOtherLabels = (newLabels: OtherSelfLabel[]) => {
@@ -46,9 +45,7 @@ export function LabelsBtn({
const filtered = labels.filter(
l => !OTHER_SELF_LABELS.includes(l as OtherSelfLabel),
)
- onChange([
- ...new Set([...filtered, newLabel].filter(Boolean) as SelfLabel[]),
- ])
+ onChange([...new Set([...filtered, newLabel].filter(Boolean))])
}
return (
diff --git a/src/view/com/composer/photos/EditImageDialog.web.tsx b/src/view/com/composer/photos/EditImageDialog.web.tsx
index 6131e30466..60f4fc1fa2 100644
--- a/src/view/com/composer/photos/EditImageDialog.web.tsx
+++ b/src/view/com/composer/photos/EditImageDialog.web.tsx
@@ -2,8 +2,9 @@ import 'react-image-crop/dist/ReactCrop.css'
import {useCallback, useImperativeHandle, useRef, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import ReactCrop, {type PercentCrop} from 'react-image-crop'
import {
diff --git a/src/view/com/composer/photos/Gallery.tsx b/src/view/com/composer/photos/Gallery.tsx
index 4b165d92d7..044264fa03 100644
--- a/src/view/com/composer/photos/Gallery.tsx
+++ b/src/view/com/composer/photos/Gallery.tsx
@@ -10,8 +10,9 @@ import {
} from 'react-native'
import {Image} from 'expo-image'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {type Dimensions} from '#/lib/media/types'
diff --git a/src/view/com/composer/photos/ImageAltTextDialog.tsx b/src/view/com/composer/photos/ImageAltTextDialog.tsx
index 1e0b8fa364..c0d7fd3c08 100644
--- a/src/view/com/composer/photos/ImageAltTextDialog.tsx
+++ b/src/view/com/composer/photos/ImageAltTextDialog.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {type ImageStyle, useWindowDimensions, View} from 'react-native'
import {Image} from 'expo-image'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {MAX_ALT_TEXT} from '#/lib/constants'
import {useIsKeyboardVisible} from '#/lib/hooks/useIsKeyboardVisible'
diff --git a/src/view/com/composer/photos/OpenCameraBtn.tsx b/src/view/com/composer/photos/OpenCameraBtn.tsx
index f917e4ee2e..2df285f7ae 100644
--- a/src/view/com/composer/photos/OpenCameraBtn.tsx
+++ b/src/view/com/composer/photos/OpenCameraBtn.tsx
@@ -1,6 +1,6 @@
import {useCallback} from 'react'
import * as MediaLibrary from 'expo-media-library'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {POST_IMG_MAX} from '#/lib/constants'
diff --git a/src/view/com/composer/photos/SelectGifBtn.tsx b/src/view/com/composer/photos/SelectGifBtn.tsx
index 1ee3840d3c..d7dfe0c079 100644
--- a/src/view/com/composer/photos/SelectGifBtn.tsx
+++ b/src/view/com/composer/photos/SelectGifBtn.tsx
@@ -1,6 +1,6 @@
import {useCallback, useRef} from 'react'
import {Keyboard} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type Gif} from '#/state/queries/tenor'
diff --git a/src/view/com/composer/select-language/PostLanguageSelect.tsx b/src/view/com/composer/select-language/PostLanguageSelect.tsx
index f1ed386852..66e8c6ea0d 100644
--- a/src/view/com/composer/select-language/PostLanguageSelect.tsx
+++ b/src/view/com/composer/select-language/PostLanguageSelect.tsx
@@ -1,5 +1,6 @@
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {LANG_DROPDOWN_HITSLOP} from '#/lib/constants'
import {codeToLanguageName} from '#/locale/helpers'
diff --git a/src/view/com/composer/select-language/SuggestedLanguage.tsx b/src/view/com/composer/select-language/SuggestedLanguage.tsx
index 6d45e4ef78..acb35d6d8f 100644
--- a/src/view/com/composer/select-language/SuggestedLanguage.tsx
+++ b/src/view/com/composer/select-language/SuggestedLanguage.tsx
@@ -1,8 +1,9 @@
import {useEffect, useState} from 'react'
import {Text as RNText, View} from 'react-native'
import {parseLanguage} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import lande from 'lande'
import {code3ToCode2Strict, codeToLanguageName} from '#/locale/helpers'
@@ -13,7 +14,8 @@ import {Earth_Stroke2_Corner2_Rounded as EarthIcon} from '#/components/icons/Glo
import {Text} from '#/components/Typography'
// fallbacks for safari
-const onIdle = globalThis.requestIdleCallback || (cb => setTimeout(cb, 1))
+const onIdle =
+ globalThis.requestIdleCallback || ((cb: () => void) => setTimeout(cb, 1))
const cancelIdle = globalThis.cancelIdleCallback || clearTimeout
export function SuggestedLanguage({
diff --git a/src/view/com/composer/state/video.ts b/src/view/com/composer/state/video.ts
index 05f57beefd..1c053187e1 100644
--- a/src/view/com/composer/state/video.ts
+++ b/src/view/com/composer/state/video.ts
@@ -1,7 +1,7 @@
import {type ImagePickerAsset} from 'expo-image-picker'
import {type AppBskyVideoDefs, type BlobRef, type BskyAgent} from '@atproto/api'
import {type I18n} from '@lingui/core'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {AbortError} from '#/lib/async/cancelable'
import {compressVideo} from '#/lib/media/video/compress'
diff --git a/src/view/com/composer/text-input/TextInput.web.tsx b/src/view/com/composer/text-input/TextInput.web.tsx
index 3068c8f9df..fe6fee2b3f 100644
--- a/src/view/com/composer/text-input/TextInput.web.tsx
+++ b/src/view/com/composer/text-input/TextInput.web.tsx
@@ -9,7 +9,7 @@ import {
import {StyleSheet, View} from 'react-native'
import Animated, {FadeIn, FadeOut} from 'react-native-reanimated'
import {AppBskyRichtextFacet, RichText} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {Document} from '@tiptap/extension-document'
import Hardbreak from '@tiptap/extension-hard-break'
import History from '@tiptap/extension-history'
diff --git a/src/view/com/composer/text-input/mobile/Autocomplete.tsx b/src/view/com/composer/text-input/mobile/Autocomplete.tsx
index 46761bdc47..1272e98909 100644
--- a/src/view/com/composer/text-input/mobile/Autocomplete.tsx
+++ b/src/view/com/composer/text-input/mobile/Autocomplete.tsx
@@ -1,7 +1,7 @@
import {View} from 'react-native'
import Animated, {FadeInDown, FadeOut} from 'react-native-reanimated'
import {type AppBskyActorDefs} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {PressableScale} from '#/lib/custom-animations/PressableScale'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
diff --git a/src/view/com/composer/text-input/web/Autocomplete.tsx b/src/view/com/composer/text-input/web/Autocomplete.tsx
index 1a95736c3d..8371ad993a 100644
--- a/src/view/com/composer/text-input/web/Autocomplete.tsx
+++ b/src/view/com/composer/text-input/web/Autocomplete.tsx
@@ -1,7 +1,7 @@
import {forwardRef, useEffect, useImperativeHandle, useState} from 'react'
import {Pressable, View} from 'react-native'
import {type AppBskyActorDefs, type ModerationOpts} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {ReactRenderer} from '@tiptap/react'
import {
type SuggestionKeyDownProps,
diff --git a/src/view/com/composer/text-input/web/EmojiPicker.web.tsx b/src/view/com/composer/text-input/web/EmojiPicker.web.tsx
index c0cae620f4..01b4bb9dbd 100644
--- a/src/view/com/composer/text-input/web/EmojiPicker.web.tsx
+++ b/src/view/com/composer/text-input/web/EmojiPicker.web.tsx
@@ -1,7 +1,7 @@
import React from 'react'
import {Pressable, useWindowDimensions, View} from 'react-native'
import Picker from '@emoji-mart/react'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {DismissableLayer, FocusScope} from 'radix-ui/internal'
diff --git a/src/view/com/composer/threadgate/ThreadgateBtn.tsx b/src/view/com/composer/threadgate/ThreadgateBtn.tsx
index cae6303638..ed22befcd9 100644
--- a/src/view/com/composer/threadgate/ThreadgateBtn.tsx
+++ b/src/view/com/composer/threadgate/ThreadgateBtn.tsx
@@ -2,8 +2,9 @@ import {useEffect, useMemo, useState} from 'react'
import {Keyboard, type StyleProp, type ViewStyle} from 'react-native'
import {type AnimatedStyle} from 'react-native-reanimated'
import {type AppBskyFeedPostgate} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import deepEqual from 'fast-deep-equal'
import {isNetworkError} from '#/lib/strings/errors'
diff --git a/src/view/com/composer/videos/SubtitleDialog.tsx b/src/view/com/composer/videos/SubtitleDialog.tsx
index f0f01bdce2..021ec27199 100644
--- a/src/view/com/composer/videos/SubtitleDialog.tsx
+++ b/src/view/com/composer/videos/SubtitleDialog.tsx
@@ -1,7 +1,8 @@
import {useCallback, useState} from 'react'
import {Keyboard, type StyleProp, View, type ViewStyle} from 'react-native'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {MAX_ALT_TEXT} from '#/lib/constants'
import {isOverMaxGraphemeCount} from '#/lib/strings/helpers'
diff --git a/src/view/com/composer/videos/SubtitleFilePicker.tsx b/src/view/com/composer/videos/SubtitleFilePicker.tsx
index 256bc16007..1a9c75d19c 100644
--- a/src/view/com/composer/videos/SubtitleFilePicker.tsx
+++ b/src/view/com/composer/videos/SubtitleFilePicker.tsx
@@ -1,7 +1,8 @@
import {useRef} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import type React from 'react'
import {logger} from '#/logger'
diff --git a/src/view/com/composer/videos/VideoPreview.web.tsx b/src/view/com/composer/videos/VideoPreview.web.tsx
index 979fbf52f8..574cc1cf4d 100644
--- a/src/view/com/composer/videos/VideoPreview.web.tsx
+++ b/src/view/com/composer/videos/VideoPreview.web.tsx
@@ -1,6 +1,6 @@
import {View} from 'react-native'
import {type ImagePickerAsset} from 'expo-image-picker'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type CompressedVideo} from '#/lib/media/video/types'
diff --git a/src/view/com/feeds/ComposerPrompt.tsx b/src/view/com/feeds/ComposerPrompt.tsx
index f5c36a48f4..b35c1c1adf 100644
--- a/src/view/com/feeds/ComposerPrompt.tsx
+++ b/src/view/com/feeds/ComposerPrompt.tsx
@@ -1,7 +1,8 @@
import {useCallback, useState} from 'react'
import {Keyboard, Pressable, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useOpenComposer} from '#/lib/hooks/useOpenComposer'
import {
diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx
index 81e758cefd..c86cd245b6 100644
--- a/src/view/com/feeds/FeedPage.tsx
+++ b/src/view/com/feeds/FeedPage.tsx
@@ -8,7 +8,7 @@ import {
} from 'react'
import {View} from 'react-native'
import {type AppBskyActorDefs, AppBskyFeedDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {type NavigationProp, useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/com/feeds/FeedSourceCard.tsx b/src/view/com/feeds/FeedSourceCard.tsx
index e7c74167c5..c307d03221 100644
--- a/src/view/com/feeds/FeedSourceCard.tsx
+++ b/src/view/com/feeds/FeedSourceCard.tsx
@@ -5,8 +5,9 @@ import {
type AppBskyGraphDefs,
AtUri,
} from '@atproto/api'
-import {msg, Plural, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {sanitizeHandle} from '#/lib/strings/handles'
import {
diff --git a/src/view/com/feeds/MissingFeed.tsx b/src/view/com/feeds/MissingFeed.tsx
index e9892c9563..214ed514a9 100644
--- a/src/view/com/feeds/MissingFeed.tsx
+++ b/src/view/com/feeds/MissingFeed.tsx
@@ -1,7 +1,8 @@
import {type StyleProp, View, type ViewStyle} from 'react-native'
import {AtUri} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {cleanError} from '#/lib/strings/errors'
import {useModerationOpts} from '#/state/preferences/moderation-opts'
diff --git a/src/view/com/feeds/ProfileFeedgens.tsx b/src/view/com/feeds/ProfileFeedgens.tsx
index afee9317b6..6eedcd8622 100644
--- a/src/view/com/feeds/ProfileFeedgens.tsx
+++ b/src/view/com/feeds/ProfileFeedgens.tsx
@@ -13,7 +13,7 @@ import {
View,
type ViewStyle,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/com/home/HomeHeaderLayout.web.tsx b/src/view/com/home/HomeHeaderLayout.web.tsx
index b12ab69b77..a14acd6cbf 100644
--- a/src/view/com/home/HomeHeaderLayout.web.tsx
+++ b/src/view/com/home/HomeHeaderLayout.web.tsx
@@ -1,6 +1,6 @@
import {type JSX} from 'react'
import {View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import type React from 'react'
diff --git a/src/view/com/home/HomeHeaderLayoutMobile.tsx b/src/view/com/home/HomeHeaderLayoutMobile.tsx
index ef1e938379..2f3a9b73c9 100644
--- a/src/view/com/home/HomeHeaderLayoutMobile.tsx
+++ b/src/view/com/home/HomeHeaderLayoutMobile.tsx
@@ -1,7 +1,7 @@
import {type JSX} from 'react'
import {View} from 'react-native'
import Animated from 'react-native-reanimated'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {HITSLOP_10} from '#/lib/constants'
diff --git a/src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx b/src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx
index cdee8a8263..feaef3bac4 100644
--- a/src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx
+++ b/src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx
@@ -8,7 +8,7 @@
import {StyleSheet, TouchableOpacity, type ViewStyle} from 'react-native'
import {SafeAreaView} from 'react-native-safe-area-context'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {createHitslop} from '#/lib/constants'
diff --git a/src/view/com/lightbox/ImageViewing/index.tsx b/src/view/com/lightbox/ImageViewing/index.tsx
index 9ed5587536..0098fb131a 100644
--- a/src/view/com/lightbox/ImageViewing/index.tsx
+++ b/src/view/com/lightbox/ImageViewing/index.tsx
@@ -7,7 +7,6 @@
*/
// Original code copied and simplified from the link below as the codebase is currently not maintained:
// https://github.com/jobtoday/react-native-image-viewing
-
import React, {useCallback, useEffect, useMemo, useState} from 'react'
import {
LayoutAnimation,
@@ -39,7 +38,7 @@ import Animated, {
import {SafeAreaView} from 'react-native-safe-area-context'
import * as ScreenOrientation from 'expo-screen-orientation'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {type Dimensions} from '#/lib/media/types'
import {colors, s} from '#/lib/styles'
diff --git a/src/view/com/lightbox/Lightbox.web.tsx b/src/view/com/lightbox/Lightbox.web.tsx
index 400258e0ee..c017f2423d 100644
--- a/src/view/com/lightbox/Lightbox.web.tsx
+++ b/src/view/com/lightbox/Lightbox.web.tsx
@@ -1,7 +1,7 @@
import {useCallback, useEffect, useRef, useState} from 'react'
import {Pressable, StyleSheet, View} from 'react-native'
import {Image} from 'expo-image'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {FocusGuards, FocusScope} from 'radix-ui/internal'
import {RemoveScrollBar} from 'react-remove-scroll-bar'
diff --git a/src/view/com/lists/ListMembers.tsx b/src/view/com/lists/ListMembers.tsx
index 0771dcd4ba..5247a4c9d3 100644
--- a/src/view/com/lists/ListMembers.tsx
+++ b/src/view/com/lists/ListMembers.tsx
@@ -7,8 +7,9 @@ import {
type ViewStyle,
} from 'react-native'
import {type AppBskyGraphDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger'
diff --git a/src/view/com/lists/MyLists.tsx b/src/view/com/lists/MyLists.tsx
index cd9e41488b..0019d9e141 100644
--- a/src/view/com/lists/MyLists.tsx
+++ b/src/view/com/lists/MyLists.tsx
@@ -8,7 +8,7 @@ import {
type ViewStyle,
} from 'react-native'
import {type AppBskyGraphDefs as GraphDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/com/lists/ProfileLists.tsx b/src/view/com/lists/ProfileLists.tsx
index 7eeffb1845..c175793624 100644
--- a/src/view/com/lists/ProfileLists.tsx
+++ b/src/view/com/lists/ProfileLists.tsx
@@ -13,7 +13,7 @@ import {
View,
type ViewStyle,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/com/modals/UserAddRemoveLists.tsx b/src/view/com/modals/UserAddRemoveLists.tsx
index 5bf868f4ca..d849bbf576 100644
--- a/src/view/com/modals/UserAddRemoveLists.tsx
+++ b/src/view/com/modals/UserAddRemoveLists.tsx
@@ -6,8 +6,9 @@ import {
View,
} from 'react-native'
import {type AppBskyGraphDefs as GraphDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {usePalette} from '#/lib/hooks/usePalette'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
diff --git a/src/view/com/notifications/NotificationFeed.tsx b/src/view/com/notifications/NotificationFeed.tsx
index 04c470e1c7..fb7d982eaa 100644
--- a/src/view/com/notifications/NotificationFeed.tsx
+++ b/src/view/com/notifications/NotificationFeed.tsx
@@ -5,7 +5,7 @@ import {
StyleSheet,
View,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
diff --git a/src/view/com/notifications/NotificationFeedItem.tsx b/src/view/com/notifications/NotificationFeedItem.tsx
index 8d622f3bf0..c798aa9e45 100644
--- a/src/view/com/notifications/NotificationFeedItem.tsx
+++ b/src/view/com/notifications/NotificationFeedItem.tsx
@@ -18,13 +18,13 @@ import {
} from '@atproto/api'
import {AtUri} from '@atproto/api'
import {TID} from '@atproto/common-web'
-import {msg, Plural, plural, Trans} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
-import {MAX_POST_LINES} from '#/lib/constants'
-import {DM_SERVICE_HEADERS} from '#/lib/constants'
+import {DM_SERVICE_HEADERS, MAX_POST_LINES} from '#/lib/constants'
import {useAnimatedValue} from '#/lib/hooks/useAnimatedValue'
import {usePalette} from '#/lib/hooks/usePalette'
import {makeProfileLink} from '#/lib/routes/links'
@@ -880,7 +880,7 @@ function SayHelloBtn({profile}: {profile: AppBskyActorDefs.ProfileView}) {
setIsLoading(true)
const res = await agent.api.chat.bsky.convo.getConvoForMembers(
{
- members: [profile.did, agent.session!.did!],
+ members: [profile.did, agent.session!.did],
},
{headers: DM_SERVICE_HEADERS},
)
diff --git a/src/view/com/post-thread/PostLikedBy.tsx b/src/view/com/post-thread/PostLikedBy.tsx
index d6c41ced10..48669d99ce 100644
--- a/src/view/com/post-thread/PostLikedBy.tsx
+++ b/src/view/com/post-thread/PostLikedBy.tsx
@@ -1,6 +1,6 @@
import {useCallback, useMemo, useState} from 'react'
import {type AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
diff --git a/src/view/com/post-thread/PostQuotes.tsx b/src/view/com/post-thread/PostQuotes.tsx
index 1f48f50d37..671334ad3c 100644
--- a/src/view/com/post-thread/PostQuotes.tsx
+++ b/src/view/com/post-thread/PostQuotes.tsx
@@ -5,7 +5,7 @@ import {
moderatePost,
type ModerationDecision,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
diff --git a/src/view/com/post-thread/PostRepostedBy.tsx b/src/view/com/post-thread/PostRepostedBy.tsx
index e15d9a0f13..611eb7c43a 100644
--- a/src/view/com/post-thread/PostRepostedBy.tsx
+++ b/src/view/com/post-thread/PostRepostedBy.tsx
@@ -1,6 +1,6 @@
import {useCallback, useMemo, useState} from 'react'
import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
diff --git a/src/view/com/posts/CustomFeedEmptyState.tsx b/src/view/com/posts/CustomFeedEmptyState.tsx
index f405d6ce35..70fede7b09 100644
--- a/src/view/com/posts/CustomFeedEmptyState.tsx
+++ b/src/view/com/posts/CustomFeedEmptyState.tsx
@@ -4,7 +4,7 @@ import {
FontAwesomeIcon,
type FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {DISCOVER_FEED_URI} from '#/lib/constants'
diff --git a/src/view/com/posts/DiscoverFallbackHeader.tsx b/src/view/com/posts/DiscoverFallbackHeader.tsx
index e35a33aaf7..b134de5d3d 100644
--- a/src/view/com/posts/DiscoverFallbackHeader.tsx
+++ b/src/view/com/posts/DiscoverFallbackHeader.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {usePalette} from '#/lib/hooks/usePalette'
import {InfoCircleIcon} from '#/lib/icons'
diff --git a/src/view/com/posts/FeedShutdownMsg.tsx b/src/view/com/posts/FeedShutdownMsg.tsx
index 6203821750..079719e2f0 100644
--- a/src/view/com/posts/FeedShutdownMsg.tsx
+++ b/src/view/com/posts/FeedShutdownMsg.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {PROD_DEFAULT_FEED} from '#/lib/constants'
import {logger} from '#/logger'
diff --git a/src/view/com/posts/FollowingEmptyState.tsx b/src/view/com/posts/FollowingEmptyState.tsx
index 64df5e3f1e..65253545a6 100644
--- a/src/view/com/posts/FollowingEmptyState.tsx
+++ b/src/view/com/posts/FollowingEmptyState.tsx
@@ -4,7 +4,7 @@ import {
FontAwesomeIcon,
type FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/com/posts/FollowingEndOfFeed.tsx b/src/view/com/posts/FollowingEndOfFeed.tsx
index 3eb9e90592..a994202624 100644
--- a/src/view/com/posts/FollowingEndOfFeed.tsx
+++ b/src/view/com/posts/FollowingEndOfFeed.tsx
@@ -4,7 +4,7 @@ import {
FontAwesomeIcon,
type FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/com/posts/PostFeed.tsx b/src/view/com/posts/PostFeed.tsx
index 899907cdef..9ae241f9ba 100644
--- a/src/view/com/posts/PostFeed.tsx
+++ b/src/view/com/posts/PostFeed.tsx
@@ -15,7 +15,7 @@ import {
AppBskyEmbedVideo,
type AppBskyFeedDefs,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/com/posts/PostFeedErrorMessage.tsx b/src/view/com/posts/PostFeedErrorMessage.tsx
index 99413de571..f1fc8bd8ad 100644
--- a/src/view/com/posts/PostFeedErrorMessage.tsx
+++ b/src/view/com/posts/PostFeedErrorMessage.tsx
@@ -5,8 +5,9 @@ import {
AppBskyFeedGetAuthorFeed,
AtUri,
} from '@atproto/api'
-import {msg as msgLingui, Trans} from '@lingui/macro'
+import {msg as msgLingui} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/com/posts/PostFeedReason.tsx b/src/view/com/posts/PostFeedReason.tsx
index 575a59f83e..fd3ec73470 100644
--- a/src/view/com/posts/PostFeedReason.tsx
+++ b/src/view/com/posts/PostFeedReason.tsx
@@ -1,7 +1,8 @@
import {StyleSheet, View} from 'react-native'
import {AppBskyFeedDefs, type ModerationDecision} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {isReasonFeedSource, type ReasonFeedSource} from '#/lib/api/feed/types'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
diff --git a/src/view/com/posts/ShowLessFollowup.tsx b/src/view/com/posts/ShowLessFollowup.tsx
index 01412b9a13..cab0e91dd0 100644
--- a/src/view/com/posts/ShowLessFollowup.tsx
+++ b/src/view/com/posts/ShowLessFollowup.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme} from '#/alf'
import {CircleCheck_Stroke2_Corner0_Rounded} from '#/components/icons/CircleCheck'
diff --git a/src/view/com/posts/ViewFullThread.tsx b/src/view/com/posts/ViewFullThread.tsx
index dc2edd20de..97a5af6cf6 100644
--- a/src/view/com/posts/ViewFullThread.tsx
+++ b/src/view/com/posts/ViewFullThread.tsx
@@ -2,7 +2,7 @@ import React from 'react'
import {StyleSheet, View} from 'react-native'
import Svg, {Circle, Line} from 'react-native-svg'
import {AtUri} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/com/profile/ProfileFollowers.tsx b/src/view/com/profile/ProfileFollowers.tsx
index 362c7220e8..bbb8e15695 100644
--- a/src/view/com/profile/ProfileFollowers.tsx
+++ b/src/view/com/profile/ProfileFollowers.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
diff --git a/src/view/com/profile/ProfileFollows.tsx b/src/view/com/profile/ProfileFollows.tsx
index f9390fad50..137f9dc766 100644
--- a/src/view/com/profile/ProfileFollows.tsx
+++ b/src/view/com/profile/ProfileFollows.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
diff --git a/src/view/com/profile/ProfileMenu.tsx b/src/view/com/profile/ProfileMenu.tsx
index 76b58fb718..209f42ba9d 100644
--- a/src/view/com/profile/ProfileMenu.tsx
+++ b/src/view/com/profile/ProfileMenu.tsx
@@ -1,7 +1,8 @@
import React, {memo} from 'react'
import {type AppBskyActorDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/com/profile/ProfileSubpageHeader.tsx b/src/view/com/profile/ProfileSubpageHeader.tsx
index 02a6704bf9..3109a2ec2d 100644
--- a/src/view/com/profile/ProfileSubpageHeader.tsx
+++ b/src/view/com/profile/ProfileSubpageHeader.tsx
@@ -8,8 +8,9 @@ import Animated, {
useAnimatedRef,
} from 'react-native-reanimated'
import {type AppBskyGraphDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/com/util/BottomSheetCustomBackdrop.tsx b/src/view/com/util/BottomSheetCustomBackdrop.tsx
index cacbfcc5ac..0911622f32 100644
--- a/src/view/com/util/BottomSheetCustomBackdrop.tsx
+++ b/src/view/com/util/BottomSheetCustomBackdrop.tsx
@@ -6,12 +6,12 @@ import Animated, {
useAnimatedStyle,
} from 'react-native-reanimated'
import {type BottomSheetBackdropProps} from '@discord/bottom-sheet/src'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import type React from 'react'
export function createCustomBackdrop(
- onClose?: (() => void) | undefined,
+ onClose?: () => void,
): React.FC {
const CustomBackdrop = ({animatedIndex, style}: BottomSheetBackdropProps) => {
const {_} = useLingui()
diff --git a/src/view/com/util/ErrorBoundary.tsx b/src/view/com/util/ErrorBoundary.tsx
index 87e351f5e2..712473c77f 100644
--- a/src/view/com/util/ErrorBoundary.tsx
+++ b/src/view/com/util/ErrorBoundary.tsx
@@ -1,6 +1,6 @@
import {Component, type ErrorInfo, type ReactNode} from 'react'
import {type StyleProp, type ViewStyle} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {logger} from '#/logger'
diff --git a/src/view/com/util/PostMeta.tsx b/src/view/com/util/PostMeta.tsx
index 470d28e179..e4c9461d80 100644
--- a/src/view/com/util/PostMeta.tsx
+++ b/src/view/com/util/PostMeta.tsx
@@ -1,7 +1,7 @@
import {memo, useCallback} from 'react'
import {type StyleProp, View, type ViewStyle} from 'react-native'
import {type AppBskyActorDefs, type ModerationDecision} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/com/util/UserAvatar.tsx b/src/view/com/util/UserAvatar.tsx
index 6acbc6506e..9ddf483959 100644
--- a/src/view/com/util/UserAvatar.tsx
+++ b/src/view/com/util/UserAvatar.tsx
@@ -11,8 +11,9 @@ import Svg, {Circle, Path, Rect} from 'react-native-svg'
import {Image as ExpoImage} from 'expo-image'
import {type ModerationUI} from '@atproto/api'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query'
import {useHaptics} from '#/lib/haptics'
diff --git a/src/view/com/util/UserBanner.tsx b/src/view/com/util/UserBanner.tsx
index fc75a41d3d..dc61e78272 100644
--- a/src/view/com/util/UserBanner.tsx
+++ b/src/view/com/util/UserBanner.tsx
@@ -2,8 +2,9 @@ import {useCallback, useState} from 'react'
import {Pressable, StyleSheet, View} from 'react-native'
import {Image} from 'expo-image'
import {type ModerationUI} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
useCameraPermission,
diff --git a/src/view/com/util/error/ErrorMessage.tsx b/src/view/com/util/error/ErrorMessage.tsx
index 529406996c..f11cd77038 100644
--- a/src/view/com/util/error/ErrorMessage.tsx
+++ b/src/view/com/util/error/ErrorMessage.tsx
@@ -9,7 +9,7 @@ import {
FontAwesomeIcon,
type FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/com/util/error/ErrorScreen.tsx b/src/view/com/util/error/ErrorScreen.tsx
index 177fa9fb9a..24f6c34f79 100644
--- a/src/view/com/util/error/ErrorScreen.tsx
+++ b/src/view/com/util/error/ErrorScreen.tsx
@@ -3,8 +3,9 @@ import {
FontAwesomeIcon,
type FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {usePalette} from '#/lib/hooks/usePalette'
import {atoms as a, useTheme} from '#/alf'
diff --git a/src/view/screens/CommunityGuidelines.tsx b/src/view/screens/CommunityGuidelines.tsx
index 42bf8c1a16..c80981b04a 100644
--- a/src/view/screens/CommunityGuidelines.tsx
+++ b/src/view/screens/CommunityGuidelines.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/screens/CopyrightPolicy.tsx b/src/view/screens/CopyrightPolicy.tsx
index 45311e7292..c0adc5649d 100644
--- a/src/view/screens/CopyrightPolicy.tsx
+++ b/src/view/screens/CopyrightPolicy.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/screens/Debug.tsx b/src/view/screens/Debug.tsx
index 1df7b5c1f5..f0f7e92b8e 100644
--- a/src/view/screens/Debug.tsx
+++ b/src/view/screens/Debug.tsx
@@ -1,6 +1,6 @@
import React from 'react'
import {ScrollView, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/screens/DebugMod.tsx b/src/view/screens/DebugMod.tsx
index dc1fdb9691..d351e272fd 100644
--- a/src/view/screens/DebugMod.tsx
+++ b/src/view/screens/DebugMod.tsx
@@ -16,7 +16,7 @@ import {
type ModerationOpts,
RichText,
} from '@atproto/api'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useGlobalLabelStrings} from '#/lib/moderation/useGlobalLabelStrings'
@@ -24,8 +24,10 @@ import {
type CommonNavigatorParams,
type NativeStackScreenProps,
} from '#/lib/routes/types'
-import {useModerationOpts} from '#/state/preferences/moderation-opts'
-import {moderationOptsOverrideContext} from '#/state/preferences/moderation-opts'
+import {
+ moderationOptsOverrideContext,
+ useModerationOpts,
+} from '#/state/preferences/moderation-opts'
import {type FeedNotification} from '#/state/queries/notifications/types'
import {
groupNotifications,
diff --git a/src/view/screens/Feeds.tsx b/src/view/screens/Feeds.tsx
index a46b3aa081..6d930e7e9e 100644
--- a/src/view/screens/Feeds.tsx
+++ b/src/view/screens/Feeds.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {ActivityIndicator, StyleSheet, View} from 'react-native'
import {type AppBskyFeedDefs} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import debounce from 'lodash.debounce'
diff --git a/src/view/screens/Lists.tsx b/src/view/screens/Lists.tsx
index f443b21736..845c445b6b 100644
--- a/src/view/screens/Lists.tsx
+++ b/src/view/screens/Lists.tsx
@@ -1,15 +1,16 @@
import {useCallback} from 'react'
import {AtUri} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect, useNavigation} from '@react-navigation/native'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
import {
type CommonNavigatorParams,
type NativeStackScreenProps,
+ type NavigationProp,
} from '#/lib/routes/types'
-import {type NavigationProp} from '#/lib/routes/types'
import {useSetMinimalShellMode} from '#/state/shell'
import {MyLists} from '#/view/com/lists/MyLists'
import {atoms as a} from '#/alf'
diff --git a/src/view/screens/ModerationBlockedAccounts.tsx b/src/view/screens/ModerationBlockedAccounts.tsx
index bb94f8083c..64103da875 100644
--- a/src/view/screens/ModerationBlockedAccounts.tsx
+++ b/src/view/screens/ModerationBlockedAccounts.tsx
@@ -1,7 +1,7 @@
import {useCallback, useMemo, useState} from 'react'
import {type StyleProp, View, type ViewStyle} from 'react-native'
import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
diff --git a/src/view/screens/ModerationModlists.tsx b/src/view/screens/ModerationModlists.tsx
index 1f786d88bc..d47672d39f 100644
--- a/src/view/screens/ModerationModlists.tsx
+++ b/src/view/screens/ModerationModlists.tsx
@@ -1,15 +1,16 @@
import {useCallback} from 'react'
import {AtUri} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect, useNavigation} from '@react-navigation/native'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
import {
type CommonNavigatorParams,
type NativeStackScreenProps,
+ type NavigationProp,
} from '#/lib/routes/types'
-import {type NavigationProp} from '#/lib/routes/types'
import {useSetMinimalShellMode} from '#/state/shell'
import {MyLists} from '#/view/com/lists/MyLists'
import {atoms as a} from '#/alf'
diff --git a/src/view/screens/ModerationMutedAccounts.tsx b/src/view/screens/ModerationMutedAccounts.tsx
index 891a379b61..b6b2b7422e 100644
--- a/src/view/screens/ModerationMutedAccounts.tsx
+++ b/src/view/screens/ModerationMutedAccounts.tsx
@@ -1,7 +1,7 @@
import {useCallback, useMemo, useState} from 'react'
import {type StyleProp, View, type ViewStyle} from 'react-native'
import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {type NativeStackScreenProps} from '@react-navigation/native-stack'
diff --git a/src/view/screens/NotFound.tsx b/src/view/screens/NotFound.tsx
index a9d5e045db..e07930c50e 100644
--- a/src/view/screens/NotFound.tsx
+++ b/src/view/screens/NotFound.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {StyleSheet, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
StackActions,
useFocusEffect,
diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx
index 473b7c97e2..d9888e9e4e 100644
--- a/src/view/screens/Notifications.tsx
+++ b/src/view/screens/Notifications.tsx
@@ -1,7 +1,8 @@
import {useCallback, useEffect, useMemo, useRef, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect, useIsFocused} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/screens/PrivacyPolicy.tsx b/src/view/screens/PrivacyPolicy.tsx
index a89eaadc49..672102200c 100644
--- a/src/view/screens/PrivacyPolicy.tsx
+++ b/src/view/screens/PrivacyPolicy.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx
index dd1450c1c8..d29c9a0420 100644
--- a/src/view/screens/Profile.tsx
+++ b/src/view/screens/Profile.tsx
@@ -7,8 +7,9 @@ import {
type ModerationOpts,
RichText as RichTextAPI,
} from '@atproto/api'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect, useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query'
diff --git a/src/view/screens/ProfileFeedLikedBy.tsx b/src/view/screens/ProfileFeedLikedBy.tsx
index 56f3978091..ce091c2a1d 100644
--- a/src/view/screens/ProfileFeedLikedBy.tsx
+++ b/src/view/screens/ProfileFeedLikedBy.tsx
@@ -1,5 +1,5 @@
import {useCallback} from 'react'
-import {Trans} from '@lingui/macro'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {
diff --git a/src/view/screens/Storybook/Admonitions.tsx b/src/view/screens/Storybook/Admonitions.tsx
index 1241015b6d..de356dbf89 100644
--- a/src/view/screens/Storybook/Admonitions.tsx
+++ b/src/view/screens/Storybook/Admonitions.tsx
@@ -1,6 +1,7 @@
import {Text as RNText, View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {atoms as a, useTheme} from '#/alf'
import {
diff --git a/src/view/screens/Support.tsx b/src/view/screens/Support.tsx
index a2d4a11214..43be548d2d 100644
--- a/src/view/screens/Support.tsx
+++ b/src/view/screens/Support.tsx
@@ -1,6 +1,7 @@
import React from 'react'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {HELP_DESK_URL} from '#/lib/constants'
diff --git a/src/view/screens/TermsOfService.tsx b/src/view/screens/TermsOfService.tsx
index d843c713cf..1cd6f46d60 100644
--- a/src/view/screens/TermsOfService.tsx
+++ b/src/view/screens/TermsOfService.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useFocusEffect} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
diff --git a/src/view/shell/Drawer.tsx b/src/view/shell/Drawer.tsx
index d46e1e44e5..efb892ff55 100644
--- a/src/view/shell/Drawer.tsx
+++ b/src/view/shell/Drawer.tsx
@@ -1,8 +1,9 @@
import React, {type ComponentProps, type JSX} from 'react'
import {Linking, ScrollView, TouchableOpacity, View} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg, Plural, plural, Trans} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Plural, Trans} from '@lingui/react/macro'
import {StackActions, useNavigation} from '@react-navigation/native'
import {FEEDBACK_FORM_URL, HELP_DESK_URL} from '#/lib/constants'
diff --git a/src/view/shell/NavSignupCard.tsx b/src/view/shell/NavSignupCard.tsx
index 6f3dd749d4..215fb17212 100644
--- a/src/view/shell/NavSignupCard.tsx
+++ b/src/view/shell/NavSignupCard.tsx
@@ -1,7 +1,8 @@
import React from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useCloseAllActiveElements} from '#/state/util'
diff --git a/src/view/shell/bottom-bar/BottomBar.tsx b/src/view/shell/bottom-bar/BottomBar.tsx
index ef0ceaba97..3e4aa43acf 100644
--- a/src/view/shell/bottom-bar/BottomBar.tsx
+++ b/src/view/shell/bottom-bar/BottomBar.tsx
@@ -2,8 +2,9 @@ import {type JSX, useCallback} from 'react'
import {type GestureResponderEvent, View} from 'react-native'
import Animated from 'react-native-reanimated'
import {useSafeAreaInsets} from 'react-native-safe-area-context'
-import {msg, plural, Trans} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {type BottomTabBarProps} from '@react-navigation/bottom-tabs'
import {StackActions} from '@react-navigation/native'
diff --git a/src/view/shell/bottom-bar/BottomBarWeb.tsx b/src/view/shell/bottom-bar/BottomBarWeb.tsx
index e5bd6be049..cb1bf26a4a 100644
--- a/src/view/shell/bottom-bar/BottomBarWeb.tsx
+++ b/src/view/shell/bottom-bar/BottomBarWeb.tsx
@@ -1,8 +1,9 @@
import React from 'react'
import {View} from 'react-native'
import Animated from 'react-native-reanimated'
-import {msg, plural, Trans} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigationState} from '@react-navigation/native'
import {useHideBottomBarBorder} from '#/lib/hooks/useHideBottomBarBorder'
diff --git a/src/view/shell/desktop/Feeds.tsx b/src/view/shell/desktop/Feeds.tsx
index 8b80f79f5e..8e4e98addc 100644
--- a/src/view/shell/desktop/Feeds.tsx
+++ b/src/view/shell/desktop/Feeds.tsx
@@ -1,5 +1,5 @@
import {Pressable, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation, useNavigationState} from '@react-navigation/native'
diff --git a/src/view/shell/desktop/LeftNav.tsx b/src/view/shell/desktop/LeftNav.tsx
index a9d1942051..518bd15600 100644
--- a/src/view/shell/desktop/LeftNav.tsx
+++ b/src/view/shell/desktop/LeftNav.tsx
@@ -1,8 +1,9 @@
import {type JSX, useCallback, useMemo, useState} from 'react'
import {StyleSheet, View} from 'react-native'
import {type AppBskyActorDefs} from '@atproto/api'
-import {msg, plural, Trans} from '@lingui/macro'
+import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation, useNavigationState} from '@react-navigation/native'
import {useAccountSwitcher} from '#/lib/hooks/useAccountSwitcher'
diff --git a/src/view/shell/desktop/RightNav.tsx b/src/view/shell/desktop/RightNav.tsx
index 04dddaf739..d50a4bb679 100644
--- a/src/view/shell/desktop/RightNav.tsx
+++ b/src/view/shell/desktop/RightNav.tsx
@@ -1,7 +1,8 @@
import {useEffect, useState} from 'react'
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/core'
import {FEEDBACK_FORM_URL, HELP_DESK_URL} from '#/lib/constants'
diff --git a/src/view/shell/desktop/Search.tsx b/src/view/shell/desktop/Search.tsx
index 38da4e2467..24dd4dbc60 100644
--- a/src/view/shell/desktop/Search.tsx
+++ b/src/view/shell/desktop/Search.tsx
@@ -6,7 +6,7 @@ import {
View,
type ViewStyle,
} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {StackActions, useNavigation} from '@react-navigation/native'
diff --git a/src/view/shell/desktop/SidebarTrendingTopics.tsx b/src/view/shell/desktop/SidebarTrendingTopics.tsx
index af41aa9ef5..d396441d4c 100644
--- a/src/view/shell/desktop/SidebarTrendingTopics.tsx
+++ b/src/view/shell/desktop/SidebarTrendingTopics.tsx
@@ -1,6 +1,7 @@
import {View} from 'react-native'
-import {msg, Trans} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
+import {Trans} from '@lingui/react/macro'
import {
useTrendingSettings,
diff --git a/src/view/shell/index.web.tsx b/src/view/shell/index.web.tsx
index 28fed7152d..a7f255570e 100644
--- a/src/view/shell/index.web.tsx
+++ b/src/view/shell/index.web.tsx
@@ -1,6 +1,6 @@
import {useCallback, useEffect, useLayoutEffect, useState} from 'react'
import {StyleSheet, TouchableWithoutFeedback, View} from 'react-native'
-import {msg} from '@lingui/macro'
+import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
import {RemoveScrollBar} from 'react-remove-scroll-bar'
diff --git a/tsconfig.json b/tsconfig.json
index f1b382c8a5..f24c7e6a8f 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -15,7 +15,7 @@
"plugins": [
{
"name": "ts-plugin-sort-import-suggestions",
- "moveUpPatterns": ["#/", "@lingui/macro"],
+ "moveUpPatterns": ["#/", "@lingui/react/macro"],
"moveDownPatterns": ["react-native-reanimated/lib"],
}
]
diff --git a/yarn.lock b/yarn.lock
index 2bc2692b0f..e0214c0a98 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1465,6 +1465,15 @@
js-tokens "^4.0.0"
picocolors "^1.0.0"
+"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c"
+ integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.28.5"
+ js-tokens "^4.0.0"
+ picocolors "^1.1.1"
+
"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9":
version "7.22.9"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730"
@@ -1485,6 +1494,11 @@
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367"
integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==
+"@babel/compat-data@^7.28.6":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d"
+ integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==
+
"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.20.0", "@babel/core@^7.20.2":
version "7.22.10"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35"
@@ -1527,6 +1541,27 @@
json5 "^2.2.3"
semver "^6.3.1"
+"@babel/core@^7.20.12":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322"
+ integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==
+ dependencies:
+ "@babel/code-frame" "^7.29.0"
+ "@babel/generator" "^7.29.0"
+ "@babel/helper-compilation-targets" "^7.28.6"
+ "@babel/helper-module-transforms" "^7.28.6"
+ "@babel/helpers" "^7.28.6"
+ "@babel/parser" "^7.29.0"
+ "@babel/template" "^7.28.6"
+ "@babel/traverse" "^7.29.0"
+ "@babel/types" "^7.29.0"
+ "@jridgewell/remapping" "^2.3.5"
+ convert-source-map "^2.0.0"
+ debug "^4.1.0"
+ gensync "^1.0.0-beta.2"
+ json5 "^2.2.3"
+ semver "^6.3.1"
+
"@babel/core@^7.21.0":
version "7.23.2"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94"
@@ -1672,6 +1707,17 @@
"@jridgewell/trace-mapping" "^0.3.28"
jsesc "^3.0.2"
+"@babel/generator@^7.29.0":
+ version "7.29.1"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50"
+ integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==
+ dependencies:
+ "@babel/parser" "^7.29.0"
+ "@babel/types" "^7.29.0"
+ "@jridgewell/gen-mapping" "^0.3.12"
+ "@jridgewell/trace-mapping" "^0.3.28"
+ jsesc "^3.0.2"
+
"@babel/helper-annotate-as-pure@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882"
@@ -1756,6 +1802,17 @@
lru-cache "^5.1.1"
semver "^6.3.1"
+"@babel/helper-compilation-targets@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25"
+ integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==
+ dependencies:
+ "@babel/compat-data" "^7.28.6"
+ "@babel/helper-validator-option" "^7.27.1"
+ browserslist "^4.24.0"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.22.10":
version "7.22.10"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.10.tgz#dd2612d59eac45588021ac3d6fa976d08f4e95a3"
@@ -1957,6 +2014,14 @@
"@babel/traverse" "^7.25.9"
"@babel/types" "^7.25.9"
+"@babel/helper-module-imports@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c"
+ integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==
+ dependencies:
+ "@babel/traverse" "^7.28.6"
+ "@babel/types" "^7.28.6"
+
"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9":
version "7.22.9"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129"
@@ -2010,6 +2075,15 @@
"@babel/helper-validator-identifier" "^7.25.9"
"@babel/traverse" "^7.25.9"
+"@babel/helper-module-transforms@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e"
+ integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==
+ dependencies:
+ "@babel/helper-module-imports" "^7.28.6"
+ "@babel/helper-validator-identifier" "^7.28.5"
+ "@babel/traverse" "^7.28.6"
+
"@babel/helper-optimise-call-expression@^7.22.5":
version "7.22.5"
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e"
@@ -2229,6 +2303,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
+"@babel/helper-validator-identifier@^7.28.5":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4"
+ integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
+
"@babel/helper-validator-option@^7.22.15":
version "7.22.15"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040"
@@ -2249,6 +2328,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
+"@babel/helper-validator-option@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
+ integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
+
"@babel/helper-wrap-function@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0"
@@ -2301,6 +2385,14 @@
"@babel/template" "^7.26.9"
"@babel/types" "^7.26.10"
+"@babel/helpers@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7"
+ integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==
+ dependencies:
+ "@babel/template" "^7.28.6"
+ "@babel/types" "^7.28.6"
+
"@babel/highlight@^7.10.4", "@babel/highlight@^7.22.10":
version "7.22.10"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7"
@@ -2365,6 +2457,13 @@
dependencies:
"@babel/types" "^7.28.4"
+"@babel/parser@^7.28.6", "@babel/parser@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6"
+ integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==
+ dependencies:
+ "@babel/types" "^7.29.0"
+
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe"
@@ -3328,7 +3427,7 @@
resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.15.4", "@babel/runtime@^7.18.6", "@babel/runtime@^7.20.0", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4":
version "7.22.10"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682"
integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==
@@ -3403,6 +3502,15 @@
"@babel/parser" "^7.27.2"
"@babel/types" "^7.27.1"
+"@babel/template@^7.28.6":
+ version "7.28.6"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57"
+ integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==
+ dependencies:
+ "@babel/code-frame" "^7.28.6"
+ "@babel/parser" "^7.28.6"
+ "@babel/types" "^7.28.6"
+
"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84"
@@ -3503,6 +3611,19 @@
"@babel/types" "^7.28.4"
debug "^4.3.1"
+"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a"
+ integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==
+ dependencies:
+ "@babel/code-frame" "^7.29.0"
+ "@babel/generator" "^7.29.0"
+ "@babel/helper-globals" "^7.28.0"
+ "@babel/parser" "^7.29.0"
+ "@babel/template" "^7.28.6"
+ "@babel/types" "^7.29.0"
+ debug "^4.3.1"
+
"@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":
version "7.22.10"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03"
@@ -3572,6 +3693,14 @@
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1"
+"@babel/types@^7.28.6", "@babel/types@^7.29.0":
+ version "7.29.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7"
+ integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==
+ dependencies:
+ "@babel/helper-string-parser" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.28.5"
+
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
@@ -3736,115 +3865,135 @@
resolved "https://registry.yarnpkg.com/@emoji-mart/react/-/react-1.1.1.tgz#ddad52f93a25baf31c5383c3e7e4c6e05554312a"
integrity sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==
-"@esbuild/android-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
- integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==
+"@esbuild/aix-ppc64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c"
+ integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==
-"@esbuild/android-arm@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d"
- integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==
+"@esbuild/android-arm64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752"
+ integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==
-"@esbuild/android-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1"
- integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==
+"@esbuild/android-arm@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a"
+ integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==
-"@esbuild/darwin-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276"
- integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==
+"@esbuild/android-x64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16"
+ integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==
-"@esbuild/darwin-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb"
- integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==
+"@esbuild/darwin-arm64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd"
+ integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==
-"@esbuild/freebsd-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2"
- integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==
+"@esbuild/darwin-x64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e"
+ integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==
-"@esbuild/freebsd-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4"
- integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==
+"@esbuild/freebsd-arm64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe"
+ integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==
-"@esbuild/linux-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb"
- integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==
+"@esbuild/freebsd-x64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3"
+ integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==
-"@esbuild/linux-arm@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a"
- integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==
+"@esbuild/linux-arm64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977"
+ integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==
-"@esbuild/linux-ia32@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a"
- integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==
+"@esbuild/linux-arm@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9"
+ integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==
-"@esbuild/linux-loong64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72"
- integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==
+"@esbuild/linux-ia32@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0"
+ integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==
-"@esbuild/linux-mips64el@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289"
- integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==
+"@esbuild/linux-loong64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0"
+ integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==
-"@esbuild/linux-ppc64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7"
- integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==
+"@esbuild/linux-mips64el@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd"
+ integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==
-"@esbuild/linux-riscv64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09"
- integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==
+"@esbuild/linux-ppc64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869"
+ integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==
-"@esbuild/linux-s390x@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829"
- integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==
+"@esbuild/linux-riscv64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6"
+ integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==
-"@esbuild/linux-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4"
- integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==
+"@esbuild/linux-s390x@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663"
+ integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==
-"@esbuild/netbsd-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462"
- integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==
+"@esbuild/linux-x64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306"
+ integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==
-"@esbuild/openbsd-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691"
- integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==
+"@esbuild/netbsd-arm64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4"
+ integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==
-"@esbuild/sunos-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273"
- integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==
+"@esbuild/netbsd-x64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076"
+ integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==
-"@esbuild/win32-arm64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f"
- integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==
+"@esbuild/openbsd-arm64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd"
+ integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==
-"@esbuild/win32-ia32@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03"
- integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==
+"@esbuild/openbsd-x64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679"
+ integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==
-"@esbuild/win32-x64@0.17.19":
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
- integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
+"@esbuild/openharmony-arm64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d"
+ integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==
+
+"@esbuild/sunos-x64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6"
+ integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==
+
+"@esbuild/win32-arm64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323"
+ integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==
+
+"@esbuild/win32-ia32@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267"
+ integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==
+
+"@esbuild/win32-x64@0.25.12":
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5"
+ integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==
"@eslint-community/eslint-utils@^4.2.0":
version "4.4.0"
@@ -4861,6 +5010,11 @@
wrap-ansi "^8.1.0"
wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
+"@isaacs/cliui@^9.0.0":
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-9.0.0.tgz#4d0a3f127058043bf2e7ee169eaf30ed901302f3"
+ integrity sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==
+
"@isaacs/fs-minipass@^4.0.0":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32"
@@ -5193,6 +5347,14 @@
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.24"
+"@jridgewell/remapping@^2.3.5":
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1"
+ integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
@@ -5273,103 +5435,100 @@
resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
-"@lingui/babel-plugin-extract-messages@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-4.14.1.tgz#12f5a83bad1f9fef65fc22b8136ebd1052a31add"
- integrity sha512-X/2bKavX5HGaiLyGpGvw98XqrqKuTntD4IdLmwvCOh7c/pgM8u95brONixLFEBeLujba4IF+fvHo0RdlyOFKpg==
+"@lingui/babel-plugin-extract-messages@5.9.2":
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/@lingui/babel-plugin-extract-messages/-/babel-plugin-extract-messages-5.9.2.tgz#c593eb9d9ea4f5cd575a47192298d111c71ad933"
+ integrity sha512-x9HxUUZgnzF5nTsRwCyJxL/csll/psQCeiTiUPMqE1qC9Mq3ZFPygHDUgijIwOCSDnILHM581Fjar/Njvpnnow==
-"@lingui/cli@^4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@lingui/cli/-/cli-4.14.1.tgz#062acbb088b05d4728890d9beb707a2168d8259e"
- integrity sha512-4DUtjHg5fumZ+hX8bcGYGZw9A6F5JURTMrI8Z6MSkO26OeSHEtPcheGFiPYfNhFeON6fZWZmwgyV9kkb0+psug==
+"@lingui/babel-plugin-lingui-macro@5.9.2", "@lingui/babel-plugin-lingui-macro@^5.9.2":
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/@lingui/babel-plugin-lingui-macro/-/babel-plugin-lingui-macro-5.9.2.tgz#c0fb29dcbbc26203cf71a812a08a72ee947e8a37"
+ integrity sha512-xy5MNUvtoAlZwQtfby3B9Dnjmnf3w4Xe+jeLEQvB1wOxz/pYMNGxCWgekUQyihlxvFFRKmMyA88EByqAyvGEug==
+ dependencies:
+ "@babel/core" "^7.20.12"
+ "@babel/runtime" "^7.20.13"
+ "@babel/types" "^7.20.7"
+ "@lingui/conf" "5.9.2"
+ "@lingui/core" "5.9.2"
+ "@lingui/message-utils" "5.9.2"
+
+"@lingui/cli@^5.9.2":
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/@lingui/cli/-/cli-5.9.2.tgz#bba3b20387e7110d21e59fe6327b2f3885987268"
+ integrity sha512-jGmIB/hKparFvuyspcn3UTjnQEdOrlnBwkQH3xip0LRCyQNjd1sALi27HDyYQAqVINTfk3sDmLbKixYvJhPl1Q==
dependencies:
"@babel/core" "^7.21.0"
"@babel/generator" "^7.21.1"
"@babel/parser" "^7.22.0"
"@babel/runtime" "^7.21.0"
"@babel/types" "^7.21.2"
- "@lingui/babel-plugin-extract-messages" "4.14.1"
- "@lingui/conf" "4.14.1"
- "@lingui/core" "4.14.1"
- "@lingui/format-po" "4.14.1"
- "@lingui/message-utils" "4.14.1"
- babel-plugin-macros "^3.0.1"
- chalk "^4.1.0"
+ "@lingui/babel-plugin-extract-messages" "5.9.2"
+ "@lingui/babel-plugin-lingui-macro" "5.9.2"
+ "@lingui/conf" "5.9.2"
+ "@lingui/core" "5.9.2"
+ "@lingui/format-po" "5.9.2"
+ "@lingui/message-utils" "5.9.2"
chokidar "3.5.1"
cli-table "^0.3.11"
commander "^10.0.0"
convert-source-map "^2.0.0"
date-fns "^3.6.0"
- esbuild "^0.17.10"
- glob "^7.1.4"
- inquirer "^7.3.3"
- micromatch "^4.0.2"
+ esbuild "^0.25.1"
+ glob "^11.0.0"
+ micromatch "^4.0.7"
+ ms "^2.1.3"
normalize-path "^3.0.0"
ora "^5.1.0"
- pathe "^1.1.0"
- pkg-up "^3.1.0"
+ picocolors "^1.1.1"
pofile "^1.1.4"
pseudolocale "^2.0.0"
- ramda "^0.27.1"
- source-map "^0.8.0-beta.0"
+ source-map "^0.7.6"
+ threads "^1.7.0"
-"@lingui/conf@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@lingui/conf/-/conf-4.14.1.tgz#c9a49e3fb78a4d631ae5a1ae20207b8c1ed760b4"
- integrity sha512-LE/1RrVoMebQK+u4y6VQJdSwjOsMu4go/VR8m1eH0THn8vfkuLOYlPTIAHTWcoO+Ogi15p5TqHPfJcgVBy/NpA==
+"@lingui/conf@5.9.2":
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/@lingui/conf/-/conf-5.9.2.tgz#858208121c7540d0d7629d727fc078a6c383912a"
+ integrity sha512-tkobrx4HIJDWgYO/qUOJgwOVB5QX+FdQHmk9wetzlhgf0BSc52OCGYeG//oKHteJB0dnr2XYicnTuUtoVwr3+g==
dependencies:
"@babel/runtime" "^7.20.13"
- chalk "^4.1.0"
cosmiconfig "^8.0.0"
jest-validate "^29.4.3"
- jiti "^1.17.1"
- lodash.get "^4.4.2"
+ jiti "^2.5.1"
+ picocolors "^1.1.1"
-"@lingui/core@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@lingui/core/-/core-4.14.1.tgz#ff6caceeaf8763b1ba2a8da60bbce95ff2d1b700"
- integrity sha512-3O6bnNzApWjb+jIdXa7G2VbrP6jZ5nfCeYSVloEYg6YFIfsQ3GunccK6I2nL80mWgr2qGP4VilGD+ODCeXHITA==
+"@lingui/core@5.9.2", "@lingui/core@^5.9.2":
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/@lingui/core/-/core-5.9.2.tgz#63b58a68e1f85970078a8bc3edc92e1d22221763"
+ integrity sha512-2K2lIEiUJ9VNTZU0igiRUubIUvcHu8TEuS4uRrrA5f2DGgCtHD5o7rw6OO9cM1RxZFCC5rpRwIMDeXHrc44W3g==
dependencies:
"@babel/runtime" "^7.20.13"
- "@lingui/message-utils" "4.14.1"
- unraw "^3.0.0"
+ "@lingui/message-utils" "5.9.2"
-"@lingui/format-po@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@lingui/format-po/-/format-po-4.14.1.tgz#30c9c68b8afd1ed181277b5c8c36dcb8982447c4"
- integrity sha512-SfT3/4LspwDq5KNyN+HUsDiF2IVMBk0LS6ruEG+vGOKNXzdSpnuxAT5E6wgGA/4/MG2UF9WKBzfkfOsYeXmSEg==
+"@lingui/format-po@5.9.2":
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/@lingui/format-po/-/format-po-5.9.2.tgz#0eb1a32b149a8d3d81989375178cd4a863b59069"
+ integrity sha512-PMlJERgG0/rCYqMuBDQdsAuEEUxbqe1apwwDJxIniN9vZpwl+4jDZhDQ6J9CwjlaUPe7rCfOm/B79N88ELwTQQ==
dependencies:
- "@lingui/conf" "4.14.1"
- "@lingui/message-utils" "4.14.1"
+ "@lingui/conf" "5.9.2"
+ "@lingui/message-utils" "5.9.2"
date-fns "^3.6.0"
pofile "^1.1.4"
-"@lingui/macro@^4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@lingui/macro/-/macro-4.14.1.tgz#52d37bf5ff566b985887a3c23c66482f5b8895ff"
- integrity sha512-kVAe78Sj4a74GJTOOqoAzxZgsgqPfcBFQC1akXMlAv9r4bX7zvbMov2cQVWjvix0waetwxo3oVqlSozsa8UPAw==
- dependencies:
- "@babel/runtime" "^7.20.13"
- "@babel/types" "^7.20.7"
- "@lingui/conf" "4.14.1"
- "@lingui/core" "4.14.1"
- "@lingui/message-utils" "4.14.1"
-
-"@lingui/message-utils@4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@lingui/message-utils/-/message-utils-4.14.1.tgz#dc6816464d15841ebbf71d68fcc66d624e1788cb"
- integrity sha512-J6MzyTLNCzEnyR1Da188G81cRcQMbk/lyYnLWMzQjIELDX8bBBwNea91Sf5Zm+BB+ADWmmGTdUqRPAjDqT9Y5w==
+"@lingui/message-utils@5.9.2":
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/@lingui/message-utils/-/message-utils-5.9.2.tgz#ab4c4cba9eccb29349a65335dc812cf5291778d9"
+ integrity sha512-PQA+bP4TBX7F5nmrEm9eDk+xddepjO7okI6bsOQ+6LIw1eJMvh9w/Xt3AoKTgzBCwd1ZwyqzBOelrX6sa6y+fg==
dependencies:
"@messageformat/parser" "^5.0.0"
js-sha256 "^0.10.1"
-"@lingui/react@^4.14.1":
- version "4.14.1"
- resolved "https://registry.yarnpkg.com/@lingui/react/-/react-4.14.1.tgz#4b7d3d449703363cf0351ca2792507c7ed90b51b"
- integrity sha512-oZ9Rw+vOXJuaZvI1o4ASAIbCSe7AchCxsKGc0Y3csduTEOisvhsLgh8UDA8LW1mRgVPh5yZYB+VbfDMDQSzHpg==
+"@lingui/react@^5.9.2":
+ version "5.9.2"
+ resolved "https://registry.yarnpkg.com/@lingui/react/-/react-5.9.2.tgz#0037fbfa8bad8990d850f866bc9d0fd89f55907b"
+ integrity sha512-rvDBlz9s1AftAgkJnH/5u3YKlAouRZUsUpSoIajFqkXNEcnIcljFH2Lp7i4nQ7XQ4vpOjzpSH03cggvoo4fWKg==
dependencies:
"@babel/runtime" "^7.20.13"
- "@lingui/core" "4.14.1"
+ "@lingui/core" "5.9.2"
"@mattermost/react-native-paste-input@mattermost/react-native-paste-input":
version "0.8.1"
@@ -7661,11 +7820,6 @@
dependencies:
undici-types "~6.19.2"
-"@types/parse-json@^4.0.0":
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0"
- integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
-
"@types/psl@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@types/psl/-/psl-1.1.1.tgz#3ba9e6d4bd2a32652a639fd5df7e539151d0a3b2"
@@ -8902,15 +9056,6 @@ babel-plugin-jest-hoist@^29.6.3:
"@types/babel__core" "^7.1.14"
"@types/babel__traverse" "^7.0.6"
-babel-plugin-macros@^3.0.1, babel-plugin-macros@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
- integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
- dependencies:
- "@babel/runtime" "^7.12.5"
- cosmiconfig "^7.0.0"
- resolve "^1.19.0"
-
babel-plugin-module-resolver@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-5.0.2.tgz#cdeac5d4aaa3b08dd1ac23ddbf516660ed2d293e"
@@ -9390,7 +9535,7 @@ call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4:
call-bind-apply-helpers "^1.0.2"
get-intrinsic "^1.3.0"
-callsites@^3.0.0:
+callsites@^3.0.0, callsites@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
@@ -9478,11 +9623,6 @@ char-regex@^2.0.0:
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e"
integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==
-chardet@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
- integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
-
chokidar@3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
@@ -9625,11 +9765,6 @@ cli-truncate@^3.1.0:
slice-ansi "^5.0.0"
string-width "^5.0.0"
-cli-width@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
- integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
-
cliui@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
@@ -9904,17 +10039,6 @@ cors@^2.8.5:
object-assign "^4"
vary "^1"
-cosmiconfig@^7.0.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
- integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
- dependencies:
- "@types/parse-json" "^4.0.0"
- import-fresh "^3.2.1"
- parse-json "^5.0.0"
- path-type "^4.0.0"
- yaml "^1.10.0"
-
cosmiconfig@^8.0.0:
version "8.3.6"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3"
@@ -10253,6 +10377,13 @@ debug@^3.1.0:
dependencies:
ms "^2.1.1"
+debug@^4.2.0, debug@^4.4.1, debug@^4.4.3:
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
+ integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
+ dependencies:
+ ms "^2.1.3"
+
debug@^4.3.5:
version "4.3.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
@@ -10267,13 +10398,6 @@ debug@^4.4.0:
dependencies:
ms "^2.1.3"
-debug@^4.4.1, debug@^4.4.3:
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
- integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
- dependencies:
- ms "^2.1.3"
-
decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
@@ -11081,33 +11205,37 @@ es6-object-assign@^1.1.0:
resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==
-esbuild@^0.17.10:
- version "0.17.19"
- resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955"
- integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==
+esbuild@^0.25.1:
+ version "0.25.12"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5"
+ integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==
optionalDependencies:
- "@esbuild/android-arm" "0.17.19"
- "@esbuild/android-arm64" "0.17.19"
- "@esbuild/android-x64" "0.17.19"
- "@esbuild/darwin-arm64" "0.17.19"
- "@esbuild/darwin-x64" "0.17.19"
- "@esbuild/freebsd-arm64" "0.17.19"
- "@esbuild/freebsd-x64" "0.17.19"
- "@esbuild/linux-arm" "0.17.19"
- "@esbuild/linux-arm64" "0.17.19"
- "@esbuild/linux-ia32" "0.17.19"
- "@esbuild/linux-loong64" "0.17.19"
- "@esbuild/linux-mips64el" "0.17.19"
- "@esbuild/linux-ppc64" "0.17.19"
- "@esbuild/linux-riscv64" "0.17.19"
- "@esbuild/linux-s390x" "0.17.19"
- "@esbuild/linux-x64" "0.17.19"
- "@esbuild/netbsd-x64" "0.17.19"
- "@esbuild/openbsd-x64" "0.17.19"
- "@esbuild/sunos-x64" "0.17.19"
- "@esbuild/win32-arm64" "0.17.19"
- "@esbuild/win32-ia32" "0.17.19"
- "@esbuild/win32-x64" "0.17.19"
+ "@esbuild/aix-ppc64" "0.25.12"
+ "@esbuild/android-arm" "0.25.12"
+ "@esbuild/android-arm64" "0.25.12"
+ "@esbuild/android-x64" "0.25.12"
+ "@esbuild/darwin-arm64" "0.25.12"
+ "@esbuild/darwin-x64" "0.25.12"
+ "@esbuild/freebsd-arm64" "0.25.12"
+ "@esbuild/freebsd-x64" "0.25.12"
+ "@esbuild/linux-arm" "0.25.12"
+ "@esbuild/linux-arm64" "0.25.12"
+ "@esbuild/linux-ia32" "0.25.12"
+ "@esbuild/linux-loong64" "0.25.12"
+ "@esbuild/linux-mips64el" "0.25.12"
+ "@esbuild/linux-ppc64" "0.25.12"
+ "@esbuild/linux-riscv64" "0.25.12"
+ "@esbuild/linux-s390x" "0.25.12"
+ "@esbuild/linux-x64" "0.25.12"
+ "@esbuild/netbsd-arm64" "0.25.12"
+ "@esbuild/netbsd-x64" "0.25.12"
+ "@esbuild/openbsd-arm64" "0.25.12"
+ "@esbuild/openbsd-x64" "0.25.12"
+ "@esbuild/openharmony-arm64" "0.25.12"
+ "@esbuild/sunos-x64" "0.25.12"
+ "@esbuild/win32-arm64" "0.25.12"
+ "@esbuild/win32-ia32" "0.25.12"
+ "@esbuild/win32-x64" "0.25.12"
escalade@^3.1.1:
version "3.1.1"
@@ -11415,6 +11543,11 @@ eslint@^9.39.2:
natural-compare "^1.4.0"
optionator "^0.9.3"
+esm@^3.2.25:
+ version "3.2.25"
+ resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
+ integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
+
espree@^10.0.1, espree@^10.4.0:
version "10.4.0"
resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837"
@@ -11963,15 +12096,6 @@ express@^4.17.2, express@^4.17.3, express@^4.18.2:
utils-merge "1.0.1"
vary "~1.1.2"
-external-editor@^3.0.3:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495"
- integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==
- dependencies:
- chardet "^0.7.0"
- iconv-lite "^0.4.24"
- tmp "^0.0.33"
-
fast-base64-decode@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz#b434a0dd7d92b12b43f26819300d2dafb83ee418"
@@ -12116,13 +12240,6 @@ fdir@^6.5.0:
resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350"
integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==
-figures@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
- integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
- dependencies:
- escape-string-regexp "^1.0.5"
-
file-entry-cache@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
@@ -12293,6 +12410,14 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
+foreground-child@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f"
+ integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
+ dependencies:
+ cross-spawn "^7.0.6"
+ signal-exit "^4.0.1"
+
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
@@ -12552,6 +12677,18 @@ glob@^10.4.2:
package-json-from-dist "^1.0.0"
path-scurry "^1.11.1"
+glob@^11.0.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-11.1.0.tgz#4f826576e4eb99c7dad383793d2f9f08f67e50a6"
+ integrity sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==
+ dependencies:
+ foreground-child "^3.3.1"
+ jackspeak "^4.1.1"
+ minimatch "^10.1.1"
+ minipass "^7.1.2"
+ package-json-from-dist "^1.0.0"
+ path-scurry "^2.0.0"
+
glob@^13.0.0:
version "13.0.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.0.tgz#9d9233a4a274fc28ef7adce5508b7ef6237a1be3"
@@ -13054,7 +13191,7 @@ hyphenate-style-name@^1.0.0, hyphenate-style-name@^1.0.3:
resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d"
integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==
-iconv-lite@0.4.24, iconv-lite@^0.4.24:
+iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -13161,25 +13298,6 @@ inline-style-prefixer@^7.0.1:
dependencies:
css-in-js-utils "^3.1.0"
-inquirer@^7.3.3:
- version "7.3.3"
- resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003"
- integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==
- dependencies:
- ansi-escapes "^4.2.1"
- chalk "^4.1.0"
- cli-cursor "^3.1.0"
- cli-width "^3.0.0"
- external-editor "^3.0.3"
- figures "^3.0.0"
- lodash "^4.17.19"
- mute-stream "0.0.8"
- run-async "^2.4.0"
- rxjs "^6.6.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
- through "^2.3.6"
-
internal-slot@^1.0.3, internal-slot@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
@@ -13489,6 +13607,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-observable@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-2.1.0.tgz#5c8d733a0b201c80dff7bb7c0df58c6a255c7c69"
+ integrity sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw==
+
is-path-cwd@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
@@ -13791,6 +13914,13 @@ jackspeak@^3.1.2:
optionalDependencies:
"@pkgjs/parseargs" "^0.11.0"
+jackspeak@^4.1.1:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.2.3.tgz#27ef80f33b93412037c3bea4f8eddf80e1931483"
+ integrity sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==
+ dependencies:
+ "@isaacs/cliui" "^9.0.0"
+
jest-changed-files@^29.7.0:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a"
@@ -14328,10 +14458,10 @@ jimp-compact@0.16.1:
resolved "https://registry.yarnpkg.com/jimp-compact/-/jimp-compact-0.16.1.tgz#9582aea06548a2c1e04dd148d7c3ab92075aefa3"
integrity sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==
-jiti@^1.17.1:
- version "1.21.0"
- resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
- integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
+jiti@^2.5.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.6.1.tgz#178ef2fc9a1a594248c20627cd820187a4d78d92"
+ integrity sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==
jose@^5.0.1:
version "5.1.3"
@@ -14791,11 +14921,6 @@ lodash.defaults@^4.2.0:
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==
-lodash.get@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
- integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==
-
lodash.isarguments@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
@@ -14816,11 +14941,6 @@ lodash.shuffle@^4.2.0:
resolved "https://registry.yarnpkg.com/lodash.shuffle/-/lodash.shuffle-4.2.0.tgz#145b5053cf875f6f5c2a33f48b6e9948c6ec7b4b"
integrity sha512-V/rTAABKLFjoecTZjKSv+A1ZomG8hZg8hlgeG6wwQVD9AGv+10zqqSf6mFq2tVA703Zd5R0YhSuSlXA+E/Ei+Q==
-lodash.sortby@^4.7.0:
- version "4.7.0"
- resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
- integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
-
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
@@ -15242,7 +15362,7 @@ micromatch@4.0.5, micromatch@^4.0.2, micromatch@^4.0.4:
braces "^3.0.2"
picomatch "^2.3.1"
-micromatch@^4.0.0:
+micromatch@^4.0.0, micromatch@^4.0.7:
version "4.0.8"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
@@ -15424,11 +15544,6 @@ murmurhash@^2.0.1:
resolved "https://registry.yarnpkg.com/murmurhash/-/murmurhash-2.0.1.tgz#4097720e08cf978872194ad84ea5be2dec9b610f"
integrity sha512-5vQEh3y+DG/lMPM0mCGPDnyV8chYg/g7rl6v3Gd8WMF9S429ox3Xk8qrk174kWhG767KQMqqxLD1WnGd77hiew==
-mute-stream@0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
- integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
-
mz@^2.7.0:
version "2.7.0"
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
@@ -15743,6 +15858,11 @@ object.values@^1.2.1:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
+observable-fns@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/observable-fns/-/observable-fns-0.6.1.tgz#636eae4fdd1132e88c0faf38d33658cc79d87e37"
+ integrity sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg==
+
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
@@ -15871,11 +15991,6 @@ orderedmap@^2.0.0:
resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2"
integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==
-os-tmpdir@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
- integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
-
own-keys@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358"
@@ -15990,7 +16105,7 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
-parse-json@^5.0.0, parse-json@^5.2.0:
+parse-json@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
@@ -16116,11 +16231,6 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-pathe@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a"
- integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==
-
peek-readable@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72"
@@ -17122,11 +17232,6 @@ radix-ui@^1.4.3:
"@radix-ui/react-use-size" "1.1.1"
"@radix-ui/react-visually-hidden" "1.2.3"
-ramda@^0.27.1:
- version "0.27.2"
- resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.2.tgz#84463226f7f36dc33592f6f4ed6374c48306c3f1"
- integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==
-
randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -17831,7 +17936,7 @@ resolve.exports@^2.0.3:
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f"
integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==
-resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2:
+resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.2:
version "1.22.4"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34"
integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==
@@ -17949,11 +18054,6 @@ rtl-detect@^1.0.2:
resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6"
integrity sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==
-run-async@^2.4.0:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
- integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
-
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -17966,13 +18066,6 @@ russian-bad-words@^0.5.0:
resolved "https://registry.yarnpkg.com/russian-bad-words/-/russian-bad-words-0.5.0.tgz#d4abcdc55f7af37606cdbac44bcb9e0bde6c3855"
integrity sha512-euNvEYki6iYYpkNbeudW+lEMMYGEmN7EBwVF8ezlbv0bZoQpVYB7W10cCeUIGV7Ed50sJynLQ0c559q5iI0ejQ==
-rxjs@^6.6.0:
- version "6.6.7"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
- integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
- dependencies:
- tslib "^1.9.0"
-
rxjs@^7.5.2:
version "7.8.1"
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
@@ -18598,12 +18691,10 @@ source-map@^0.7.3:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
-source-map@^0.8.0-beta.0:
- version "0.8.0-beta.0"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11"
- integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==
- dependencies:
- whatwg-url "^7.0.0"
+source-map@^0.7.6:
+ version "0.7.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02"
+ integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==
spdy-transport@^3.0.0:
version "3.0.0"
@@ -19238,21 +19329,35 @@ thread-stream@^2.6.0:
dependencies:
real-require "^0.2.0"
+threads@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/threads/-/threads-1.7.0.tgz#d9e9627bfc1ef22ada3b733c2e7558bbe78e589c"
+ integrity sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ==
+ dependencies:
+ callsites "^3.1.0"
+ debug "^4.2.0"
+ is-observable "^2.1.0"
+ observable-fns "^0.6.1"
+ optionalDependencies:
+ tiny-worker ">= 2"
+
throat@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==
-through@^2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
-
thunky@^1.0.2:
version "1.1.0"
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+"tiny-worker@>= 2":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/tiny-worker/-/tiny-worker-2.3.0.tgz#715ae34304c757a9af573ae9a8e3967177e6011e"
+ integrity sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g==
+ dependencies:
+ esm "^3.2.25"
+
tinyglobby@^0.2.11, tinyglobby@^0.2.14, tinyglobby@^0.2.15:
version "0.2.15"
resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2"
@@ -19285,13 +19390,6 @@ tldts@^6.1.46:
dependencies:
tldts-core "^6.1.46"
-tmp@^0.0.33:
- version "0.0.33"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
- integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
- dependencies:
- os-tmpdir "~1.0.2"
-
tmp@^0.2.4:
version "0.2.5"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8"
@@ -19347,13 +19445,6 @@ toygrad@^2.6.0:
resolved "https://registry.yarnpkg.com/toygrad/-/toygrad-2.6.0.tgz#e814bb7da026db8e08dc7da14c7155f49cdb4d54"
integrity sha512-g4zBmlSbvzOE5FOILxYkAybTSxijKLkj1WoNqVGnbMcWDyj4wWQ+eYSr3ik7XOpIgMq/7eBcPRTJX3DM2E0YMg==
-tr46@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
- integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==
- dependencies:
- punycode "^2.1.0"
-
tr46@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9"
@@ -19405,7 +19496,7 @@ ts-plugin-sort-import-suggestions@^1.0.4:
resolved "https://registry.yarnpkg.com/ts-plugin-sort-import-suggestions/-/ts-plugin-sort-import-suggestions-1.0.4.tgz#d1ed6c235feb8c8bb8b34c625ea75b46e3e62925"
integrity sha512-85n5lm2OQQ+b7aRNK9omU1gmjMNXRsgeLwojm5u4OSY5sVBkAHTcgMQPEeHMNlyyfFW0uXnwgqAU0pNfhD96Bw==
-tslib@^1.8.1, tslib@^1.9.0:
+tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
@@ -19729,11 +19820,6 @@ unplugin@1.0.1:
webpack-sources "^3.2.3"
webpack-virtual-modules "^0.5.0"
-unraw@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/unraw/-/unraw-3.0.0.tgz#73443ed70d2ab09ccbac2b00525602d5991fbbe3"
- integrity sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==
-
unrs-resolver@^1.7.11, unrs-resolver@^1.9.2:
version "1.11.1"
resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.11.1.tgz#be9cd8686c99ef53ecb96df2a473c64d304048a9"
@@ -19996,11 +20082,6 @@ webidl-conversions@^3.0.0:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
-webidl-conversions@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
- integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
-
webidl-conversions@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
@@ -20189,15 +20270,6 @@ whatwg-url@^5.0.0:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
-whatwg-url@^7.0.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
- integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
- dependencies:
- lodash.sortby "^4.7.0"
- tr46 "^1.0.1"
- webidl-conversions "^4.0.2"
-
which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
@@ -20509,7 +20581,7 @@ yaml@2.3.1:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b"
integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
-yaml@^1.10.0, yaml@^1.10.2:
+yaml@^1.10.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==