···11-import {useCallback, useRef} from 'react'
11+import {type JSX, useCallback, useRef} from 'react'
22import {Linking} from 'react-native'
33import * as Notifications from 'expo-notifications'
44import {i18n, type MessageDescriptor} from '@lingui/core'
···6464import {PrivacyPolicyScreen} from '#/view/screens/PrivacyPolicy'
6565import {ProfileScreen} from '#/view/screens/Profile'
6666import {ProfileFeedLikedByScreen} from '#/view/screens/ProfileFeedLikedBy'
6767-import {ProfileListScreen} from '#/view/screens/ProfileList'
6868-import {SavedFeeds} from '#/view/screens/SavedFeeds'
6967import {Storybook} from '#/view/screens/Storybook'
7068import {SupportScreen} from '#/view/screens/Support'
7169import {TermsOfServiceScreen} from '#/view/screens/TermsOfService'
···9290import {ProfileFollowsScreen} from '#/screens/Profile/ProfileFollows'
9391import {ProfileLabelerLikedByScreen} from '#/screens/Profile/ProfileLabelerLikedBy'
9492import {ProfileSearchScreen} from '#/screens/Profile/ProfileSearch'
9393+import {ProfileListScreen} from '#/screens/ProfileList'
9494+import {SavedFeeds} from '#/screens/SavedFeeds'
9595import {SearchScreen} from '#/screens/Search'
9696import {AboutSettingsScreen} from '#/screens/Settings/AboutSettings'
9797import {AccessibilitySettingsScreen} from '#/screens/Settings/AccessibilitySettings'
+1-1
src/Splash.tsx
···1515 withTiming,
1616} from 'react-native-reanimated'
1717import {useSafeAreaInsets} from 'react-native-safe-area-context'
1818-import Svg, {Path, SvgProps} from 'react-native-svg'
1818+import Svg, {Path, type SvgProps} from 'react-native-svg'
1919import {Image} from 'expo-image'
2020import * as SplashScreen from 'expo-splash-screen'
2121
+1-1
src/alf/types.ts
···11-import {StyleProp, TextStyle, ViewStyle} from 'react-native'
11+import {type StyleProp, type TextStyle, type ViewStyle} from 'react-native'
2233export type TextStyleProp = {
44 style?: StyleProp<TextStyle>
-1
src/alf/typography.tsx
···33import {type StyleProp, type TextStyle} from 'react-native'
44import {UITextView} from 'react-native-uitextview'
55import createEmojiRegex from 'emoji-regex'
66-import type React from 'react'
7687import {isNative} from '#/platform/detection'
98import {isIOS} from '#/platform/detection'
+1-1
src/alf/util/themeSelector.ts
···11-import {ThemeName} from '#/alf/types'
11+import {type ThemeName} from '#/alf/types'
2233export function select<T>(name: ThemeName, options: Record<ThemeName, T>) {
44 switch (name) {
+2-2
src/alf/util/useColorModeTheme.ts
···11import React from 'react'
22-import {ColorSchemeName, useColorScheme} from 'react-native'
22+import {type ColorSchemeName, useColorScheme} from 'react-native'
3344import {isWeb} from '#/platform/detection'
55import {useThemePrefs} from '#/state/shell'
66import {dark, dim, light} from '#/alf/themes'
77-import {ThemeName} from '#/alf/types'
77+import {type ThemeName} from '#/alf/types'
8899export function useColorModeTheme(): ThemeName {
1010 const theme = useThemeName()
+1-1
src/alf/util/useGutters.ts
···11import React from 'react'
2233-import {Breakpoint, useBreakpoints} from '#/alf/breakpoints'
33+import {type Breakpoint, useBreakpoints} from '#/alf/breakpoints'
44import * as tokens from '#/alf/tokens'
5566type Gutter = 'compact' | 'base' | 'wide' | 0
···55 type ViewStyle,
66} from 'react-native'
77import {type SharedValue} from 'react-native-reanimated'
88-import type React from 'react'
98109import type * as Dialog from '#/components/Dialog'
1110import {
+1-2
src/components/Dialog/types.ts
···55 type StyleProp,
66 type ViewStyle,
77} from 'react-native'
88-import type React from 'react'
98109import {type ViewStyleProp} from '#/alf'
1110import {type BottomSheetViewProps} from '../../../modules/bottom-sheet'
···3433 */
3534export type DialogControlProps = DialogControlRefProps & {
3635 id: string
3737- ref: React.RefObject<DialogControlRefProps>
3636+ ref: React.RefObject<DialogControlRefProps | null>
3837 isOpen?: boolean
3938}
4039
+1-1
src/components/Dialog/utils.ts
···11import React from 'react'
2233-import {DialogControlProps} from '#/components/Dialog/types'
33+import {type DialogControlProps} from '#/components/Dialog/types'
4455export function useAutoOpen(control: DialogControlProps, showTimeout?: number) {
66 React.useEffect(() => {
+2-2
src/components/Fill.tsx
···11-import React from 'react'
21import {View} from 'react-native'
22+import type React from 'react'
3344-import {atoms as a, ViewStyleProp} from '#/alf'
44+import {atoms as a, type ViewStyleProp} from '#/alf'
5566export function Fill({
77 children,
+1-1
src/components/GradientFill.tsx
···11import {LinearGradient} from 'expo-linear-gradient'
2233-import {atoms as a, tokens, ViewStyleProp} from '#/alf'
33+import {atoms as a, type tokens, type ViewStyleProp} from '#/alf'
4455export function GradientFill({
66 gradient,
+4-4
src/components/IconCircle.tsx
···33import {
44 atoms as a,
55 flatten,
66- TextStyleProp,
66+ type TextStyleProp,
77 useTheme,
88- ViewStyleProp,
88+ type ViewStyleProp,
99} from '#/alf'
1010-import {Props} from '#/components/icons/common'
1111-import {Growth_Stroke2_Corner0_Rounded as Growth} from '#/components/icons/Growth'
1010+import {type Props} from '#/components/icons/common'
1111+import {type Growth_Stroke2_Corner0_Rounded as Growth} from '#/components/icons/Growth'
12121313export function IconCircle({
1414 icon: Icon,
+4-4
src/components/LabelingServiceCard/index.tsx
···11-import React from 'react'
21import {View} from 'react-native'
33-import {AppBskyLabelerDefs} from '@atproto/api'
22+import {type AppBskyLabelerDefs} from '@atproto/api'
43import {msg, Plural, Trans} from '@lingui/macro'
54import {useLingui} from '@lingui/react'
55+import type React from 'react'
6677import {getLabelingServiceTitle} from '#/lib/moderation'
88import {sanitizeHandle} from '#/lib/strings/handles'
99import {useLabelerInfoQuery} from '#/state/queries/labeler'
1010import {UserAvatar} from '#/view/com/util/UserAvatar'
1111-import {atoms as a, useTheme, ViewStyleProp} from '#/alf'
1111+import {atoms as a, useTheme, type ViewStyleProp} from '#/alf'
1212import {Flag_Stroke2_Corner0_Rounded as Flag} from '#/components/icons/Flag'
1313-import {Link as InternalLink, LinkProps} from '#/components/Link'
1313+import {Link as InternalLink, type LinkProps} from '#/components/Link'
1414import {RichText} from '#/components/RichText'
1515import {Text} from '#/components/Typography'
1616import {ChevronRight_Stroke2_Corner0_Rounded as ChevronRight} from '../icons/Chevron'
+1-1
src/components/LikedByList.tsx
···11import React from 'react'
22-import {AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
22+import {type AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55
+2-2
src/components/LinearGradientBackground.tsx
···11-import React from 'react'
22-import {StyleProp, ViewStyle} from 'react-native'
11+import {type StyleProp, type ViewStyle} from 'react-native'
32import {LinearGradient} from 'expo-linear-gradient'
33+import type React from 'react'
4455import {gradients} from '#/alf/tokens'
66
-1
src/components/Lists.tsx
···22import {type StyleProp, View, type ViewStyle} from 'react-native'
33import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55-import type React from 'react'
6576import {cleanError} from '#/lib/strings/errors'
87import {CenteredView} from '#/view/com/util/Views'
+1-1
src/components/Loader.tsx
···88} from 'react-native-reanimated'
991010import {atoms as a, flatten, useTheme} from '#/alf'
1111-import {Props, useCommonSVGProps} from '#/components/icons/common'
1111+import {type Props, useCommonSVGProps} from '#/components/icons/common'
1212import {Loader_Stroke2_Corner0_Rounded as Icon} from '#/components/icons/Loader'
13131414export function Loader(props: Props) {
+1-1
src/components/Loader.web.tsx
···11import {View} from 'react-native'
2233import {atoms as a, flatten, useTheme} from '#/alf'
44-import {Props, useCommonSVGProps} from '#/components/icons/common'
44+import {type Props, useCommonSVGProps} from '#/components/icons/common'
55import {Loader_Stroke2_Corner0_Rounded as Icon} from '#/components/icons/Loader'
6677export function Loader(props: Props) {
+2-2
src/components/MediaInsetBorder.tsx
···11-import React from 'react'
11+import type React from 'react'
2233-import {atoms as a, useTheme, ViewStyleProp} from '#/alf'
33+import {atoms as a, useTheme, type ViewStyleProp} from '#/alf'
44import {Fill} from '#/components/Fill'
5566/**
+8-8
src/components/Menu/types.ts
···11-import React from 'react'
21import {
33- AccessibilityProps,
44- AccessibilityRole,
55- GestureResponderEvent,
66- PressableProps,
22+ type AccessibilityProps,
33+ type AccessibilityRole,
44+ type GestureResponderEvent,
55+ type PressableProps,
76} from 'react-native'
77+import type React from 'react'
8899-import {TextStyleProp, ViewStyleProp} from '#/alf'
1010-import * as Dialog from '#/components/Dialog'
1111-import {Props as SVGIconProps} from '#/components/icons/common'
99+import {type TextStyleProp, type ViewStyleProp} from '#/alf'
1010+import type * as Dialog from '#/components/Dialog'
1111+import {type Props as SVGIconProps} from '#/components/icons/common'
12121313export type ContextType = {
1414 control: Dialog.DialogOuterProps['control']
···11import React from 'react'
22import {View} from 'react-native'
33-import {BSKY_LABELER_DID, ModerationCause} from '@atproto/api'
33+import {BSKY_LABELER_DID, type ModerationCause} from '@atproto/api'
44import {Trans} from '@lingui/macro'
5566import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
77import {UserAvatar} from '#/view/com/util/UserAvatar'
88-import {atoms as a, useTheme, ViewStyleProp} from '#/alf'
88+import {atoms as a, useTheme, type ViewStyleProp} from '#/alf'
99import {Button} from '#/components/Button'
1010import {
1111 ModerationDetailsDialog,
···11import {View} from 'react-native'
22import {msg, Trans} from '@lingui/macro'
33import {useLingui} from '@lingui/react'
44-import type React from 'react'
5465import {atoms as a, useTheme} from '#/alf'
76import {Button, ButtonText} from '#/components/Button'
···11import {type SvgProps} from 'react-native-svg'
22-import type React from 'react'
3243import {PressableWithHover} from '#/view/com/util/PressableWithHover'
54import {atoms as a, useTheme, web} from '#/alf'
···22import {View} from 'react-native'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55-import type React from 'react'
6576import {isFirefox, isTouchDevice} from '#/lib/browser'
87import {clamp} from '#/lib/numbers'
···33import Animated, {FadeIn, FadeOut} from 'react-native-reanimated'
44import {msg} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66-import type React from 'react'
7687import {isSafari, isTouchDevice} from '#/lib/browser'
98import {atoms as a} from '#/alf'
···1010import {type AppBskyEmbedVideo} from '@atproto/api'
1111import {msg} from '@lingui/macro'
1212import {useLingui} from '@lingui/react'
1313-import type React from 'react'
14131514import {isFirefox} from '#/lib/browser'
1615import {ErrorBoundary} from '#/view/com/util/ErrorBoundary'
···3837 useActiveVideoWeb()
3938 const [onScreen, setOnScreen] = useState(false)
4039 const [isFullscreen] = useFullscreen()
4141- const lastKnownTime = useRef<number | undefined>()
4040+ const lastKnownTime = useRef<number | undefined>(undefined)
42414342 useEffect(() => {
4443 if (!ref.current) return
-1
src/components/PostControls/PostMenu/index.tsx
···88} from '@atproto/api'
99import {msg} from '@lingui/macro'
1010import {useLingui} from '@lingui/react'
1111-import type React from 'react'
12111312import {type Shadow} from '#/state/cache/post-shadow'
1413import {EventStopper} from '#/view/com/util/EventStopper'
···33import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55import {useNavigation} from '@react-navigation/native'
66-import type React from 'react'
7687import {makeProfileLink} from '#/lib/routes/links'
98import {type NavigationProp} from '#/lib/routes/types'
-1
src/components/PostControls/ShareMenu/index.tsx
···99} from '@atproto/api'
1010import {msg} from '@lingui/macro'
1111import {useLingui} from '@lingui/react'
1212-import type React from 'react'
13121413import {makeProfileLink} from '#/lib/routes/links'
1514import {shareUrl} from '#/lib/sharing'
-2
src/components/ProfileHoverCard/types.ts
···11-import type React from 'react'
22-31import {type ViewStyleProp} from '#/alf'
4253export type ProfileHoverCardProps = ViewStyleProp & {
···11-import {StyleProp, View, ViewStyle} from 'react-native'
11+import {type StyleProp, View, type ViewStyle} from 'react-native'
22import {msg, Trans} from '@lingui/macro'
33import {useLingui} from '@lingui/react'
44
+2-2
src/components/ProgressGuide/Toast.tsx
···1414import {isWeb} from '#/platform/detection'
1515import {atoms as a, useTheme} from '#/alf'
1616import {Portal} from '#/components/Portal'
1717-import {AnimatedCheck, AnimatedCheckRef} from '../anim/AnimatedCheck'
1717+import {AnimatedCheck, type AnimatedCheckRef} from '../anim/AnimatedCheck'
1818import {Text} from '../Typography'
19192020export interface ProgressGuideToastRef {
···3939 const translateY = useSharedValue(0)
4040 const opacity = useSharedValue(0)
4141 const animatedCheckRef = React.useRef<AnimatedCheckRef | null>(null)
4242- const timeoutRef = React.useRef<NodeJS.Timeout | undefined>()
4242+ const timeoutRef = React.useRef<NodeJS.Timeout | undefined>(undefined)
4343 const winDim = useWindowDimensions()
44444545 /**
+2-2
src/components/ReportDialog/SelectLabelerView.tsx
···11import {View} from 'react-native'
22-import {AppBskyLabelerDefs} from '@atproto/api'
22+import {type AppBskyLabelerDefs} from '@atproto/api'
33import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55···99import {Divider} from '#/components/Divider'
1010import * as LabelingServiceCard from '#/components/LabelingServiceCard'
1111import {Text} from '#/components/Typography'
1212-import {ReportDialogProps} from './types'
1212+import {type ReportDialogProps} from './types'
13131414export function SelectLabelerView({
1515 ...props
···11import React from 'react'
22import {View} from 'react-native'
33-import {AppBskyLabelerDefs} from '@atproto/api'
33+import {type AppBskyLabelerDefs} from '@atproto/api'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
6677-import {ReportOption, useReportOptions} from '#/lib/moderation/useReportOptions'
77+import {
88+ type ReportOption,
99+ useReportOptions,
1010+} from '#/lib/moderation/useReportOptions'
811import {Link} from '#/components/Link'
912import {DMCA_LINK} from '#/components/ReportDialog/const'
1013export {useDialogControl as useReportDialogControl} from '#/components/Dialog'
···2326} from '#/components/icons/Chevron'
2427import {SquareArrowTopRight_Stroke2_Corner0_Rounded as SquareArrowTopRight} from '#/components/icons/SquareArrowTopRight'
2528import {Text} from '#/components/Typography'
2626-import {ReportDialogProps} from './types'
2929+import {type ReportDialogProps} from './types'
27302831export function SelectReportOptionView(props: {
2932 params: ReportDialogProps['params']
+3-3
src/components/ReportDialog/SubmitView.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {AppBskyLabelerDefs} from '@atproto/api'
33+import {type AppBskyLabelerDefs} from '@atproto/api'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
6677import {getLabelingServiceTitle} from '#/lib/moderation'
88-import {ReportOption} from '#/lib/moderation/useReportOptions'
88+import {type ReportOption} from '#/lib/moderation/useReportOptions'
99import {isAndroid} from '#/platform/detection'
1010import {useAgent} from '#/state/session'
1111import {CharProgress} from '#/view/com/composer/char-progress/CharProgress'
···1919import {PaperPlane_Stroke2_Corner0_Rounded as SendIcon} from '#/components/icons/PaperPlane'
2020import {Loader} from '#/components/Loader'
2121import {Text} from '#/components/Typography'
2222-import {ReportDialogProps} from './types'
2222+import {type ReportDialogProps} from './types'
23232424export function SubmitView({
2525 params,
+4-4
src/components/ReportDialog/index.tsx
···11import React from 'react'
22import {Pressable, View} from 'react-native'
33-import {ScrollView} from 'react-native-gesture-handler'
33+import {type ScrollView} from 'react-native-gesture-handler'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
6677-import {ReportOption} from '#/lib/moderation/useReportOptions'
77+import {type ReportOption} from '#/lib/moderation/useReportOptions'
88import {useMyLabelersQuery} from '#/state/queries/preferences'
99export {useDialogControl as useReportDialogControl} from '#/components/Dialog'
10101111-import {AppBskyLabelerDefs} from '@atproto/api'
1111+import {type AppBskyLabelerDefs} from '@atproto/api'
12121313import {atoms as a} from '#/alf'
1414import * as Dialog from '#/components/Dialog'
···1818import {SelectLabelerView} from './SelectLabelerView'
1919import {SelectReportOptionView} from './SelectReportOptionView'
2020import {SubmitView} from './SubmitView'
2121-import {ReportDialogProps} from './types'
2121+import {type ReportDialogProps} from './types'
22222323export function ReportDialog(props: ReportDialogProps) {
2424 return (
+1-1
src/components/ReportDialog/types.ts
···11-import * as Dialog from '#/components/Dialog'
11+import type * as Dialog from '#/components/Dialog'
2233export type ReportDialogProps = {
44 control: Dialog.DialogOuterProps['control']
+2-2
src/components/RichTextTag.tsx
···11import React from 'react'
22-import {StyleProp, Text as RNText, TextStyle} from 'react-native'
22+import {type StyleProp, Text as RNText, type TextStyle} from 'react-native'
33import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55import {useNavigation} from '@react-navigation/native'
6677-import {NavigationProp} from '#/lib/routes/types'
77+import {type NavigationProp} from '#/lib/routes/types'
88import {isInvalidHandle} from '#/lib/strings/handles'
99import {isNative, isWeb} from '#/platform/detection'
1010import {
+1-1
src/components/Select/types.ts
···160160 item: T,
161161 index: number,
162162 selectedValue?: string | null,
163163- ) => React.ReactElement
163163+ ) => React.ReactElement<any>
164164 /*
165165 * Extracts the value from an item. Defaults to `item => item.value`
166166 */
+3-3
src/components/StarterPack/Main/PostsList.tsx
···44import {useLingui} from '@lingui/react'
5566import {isNative} from '#/platform/detection'
77-import {FeedDescriptor} from '#/state/queries/post-feed'
77+import {type FeedDescriptor} from '#/state/queries/post-feed'
88import {PostFeed} from '#/view/com/posts/PostFeed'
99import {EmptyState} from '#/view/com/util/EmptyState'
1010-import {ListRef} from '#/view/com/util/List'
1111-import {SectionRef} from '#/screens/Profile/Sections/types'
1010+import {type ListRef} from '#/view/com/util/List'
1111+import {type SectionRef} from '#/screens/Profile/Sections/types'
12121313interface ProfilesListProps {
1414 listUri: string
+10-7
src/components/StarterPack/Main/ProfilesList.tsx
···11import React, {useCallback} from 'react'
22-import {ListRenderItemInfo, View} from 'react-native'
22+import {type ListRenderItemInfo, View} from 'react-native'
33import {
44- AppBskyActorDefs,
55- AppBskyGraphGetList,
44+ type AppBskyActorDefs,
55+ type AppBskyGraphGetList,
66 AtUri,
77- ModerationOpts,
77+ type ModerationOpts,
88} from '@atproto/api'
99-import {InfiniteData, UseInfiniteQueryResult} from '@tanstack/react-query'
99+import {
1010+ type InfiniteData,
1111+ type UseInfiniteQueryResult,
1212+} from '@tanstack/react-query'
10131114import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
1215import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
···1417import {isNative, isWeb} from '#/platform/detection'
1518import {useAllListMembersQuery} from '#/state/queries/list-members'
1619import {useSession} from '#/state/session'
1717-import {List, ListRef} from '#/view/com/util/List'
1818-import {SectionRef} from '#/screens/Profile/Sections/types'
2020+import {List, type ListRef} from '#/view/com/util/List'
2121+import {type SectionRef} from '#/screens/Profile/Sections/types'
1922import {atoms as a, useTheme} from '#/alf'
2023import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
2124import {Default as ProfileCard} from '#/components/ProfileCard'
+11-11
src/components/StarterPack/QrCode.tsx
···11-import React from 'react'
11+import {lazy} from 'react'
22import {View} from 'react-native'
33// @ts-expect-error missing types
44import QRCode from 'react-native-qrcode-styled'
55import type ViewShot from 'react-native-view-shot'
66-import {AppBskyGraphDefs, AppBskyGraphStarterpack} from '@atproto/api'
66+import {type AppBskyGraphDefs, AppBskyGraphStarterpack} from '@atproto/api'
77import {Trans} from '@lingui/macro'
8899import {isWeb} from '#/platform/detection'
···1515import {Text} from '#/components/Typography'
1616import * as bsky from '#/types/bsky'
17171818-const LazyViewShot = React.lazy(
1818+const LazyViewShot = lazy(
1919 // @ts-expect-error dynamic import
2020 () => import('react-native-view-shot/src/index'),
2121)
22222323-interface Props {
2323+export function QrCode({
2424+ starterPack,
2525+ link,
2626+ ref,
2727+}: {
2428 starterPack: AppBskyGraphDefs.StarterPackView
2529 link: string
2626-}
2727-2828-export const QrCode = React.forwardRef<ViewShot, Props>(function QrCode(
2929- {starterPack, link},
3030- ref,
3131-) {
3030+ ref: React.Ref<ViewShot>
3131+}) {
3232 const {record} = starterPack
33333434 if (
···9393 </LinearGradientBackground>
9494 </LazyViewShot>
9595 )
9696-})
9696+}
97979898export function QrCodeInner({link}: {link: string}) {
9999 const t = useTheme()
···11-import React from 'react'
22-import {StyleProp, ViewStyle} from 'react-native'
11+import {type StyleProp, type ViewStyle} from 'react-native'
32import Animated, {
43 FadeIn,
54 FadeOut,
65 SlideInLeft,
76 SlideInRight,
87} from 'react-native-reanimated'
88+import type React from 'react'
991010import {isWeb} from '#/platform/detection'
1111
+1-1
src/components/SubtleWebHover.tsx
···11-import {ViewStyleProp} from '#/alf'
11+import {type ViewStyleProp} from '#/alf'
2233export function SubtleWebHover({}: ViewStyleProp & {hover: boolean}) {
44 return null
+4-4
src/components/TrendingTopics.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {AtUri} from '@atproto/api'
33+import {type AtUri} from '@atproto/api'
44import {msg} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66···1010// import {Hashtag_Stroke2_Corner0_Rounded as Hashtag} from '#/components/icons/Hashtag'
1111// import {CloseQuote_Filled_Stroke2_Corner0_Rounded as Quote} from '#/components/icons/Quote'
1212// import {UserAvatar} from '#/view/com/util/UserAvatar'
1313-import type {TrendingTopic} from '#/state/queries/trending/useTrendingTopics'
1414-import {atoms as a, native, useTheme, ViewStyleProp} from '#/alf'
1313+import {type TrendingTopic} from '#/state/queries/trending/useTrendingTopics'
1414+import {atoms as a, native, useTheme, type ViewStyleProp} from '#/alf'
1515import {StarterPack as StarterPackIcon} from '#/components/icons/StarterPack'
1616-import {Link as InternalLink, LinkProps} from '#/components/Link'
1616+import {Link as InternalLink, type LinkProps} from '#/components/Link'
1717import {Text} from '#/components/Typography'
18181919export function TrendingTopic({
+1-1
src/components/anim/AnimatedCheck.tsx
···88} from 'react-native-reanimated'
99import Svg, {Circle, Path} from 'react-native-svg'
10101111-import {Props, useCommonSVGProps} from '#/components/icons/common'
1111+import {type Props, useCommonSVGProps} from '#/components/icons/common'
12121313const AnimatedPath = Animated.createAnimatedComponent(Path)
1414const AnimatedCircle = Animated.createAnimatedComponent(Circle)
+1-1
src/components/dialogs/Embed.tsx
···11import {memo, useEffect, useMemo, useState} from 'react'
22import {View} from 'react-native'
33-import {AppBskyActorDefs, AppBskyFeedPost, AtUri} from '@atproto/api'
33+import {type AppBskyActorDefs, type AppBskyFeedPost, AtUri} from '@atproto/api'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66
+3-3
src/components/dialogs/EmbedConsent.tsx
···1010} from '#/lib/strings/embed-player'
1111import {useSetExternalEmbedPref} from '#/state/preferences'
1212import {atoms as a, useBreakpoints, useTheme} from '#/alf'
1313+import {Button, ButtonText} from '#/components/Button'
1314import * as Dialog from '#/components/Dialog'
1414-import {Button, ButtonText} from '../Button'
1515-import {Text} from '../Typography'
1515+import {Text} from '#/components/Typography'
16161717export function EmbedConsentDialog({
1818 control,
···4848 }, [control, setExternalEmbedPref, source])
49495050 return (
5151- <Dialog.Outer control={control}>
5151+ <Dialog.Outer control={control} nativeOptions={{preventExpansion: true}}>
5252 <Dialog.Handle />
5353 <Dialog.ScrollableInner
5454 label={_(msg`External Media`)}
···33import {type ChatBskyConvoDefs} from '@atproto/api'
44import {msg} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66-import type React from 'react'
7687import {useConvoActive} from '#/state/messages/convo'
98import {useSession} from '#/state/session'
+2-2
src/components/dms/BlockedByListDialog.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {ModerationCause} from '@atproto/api'
33+import {type ModerationCause} from '@atproto/api'
44import {msg} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
6677import {listUriToHref} from '#/lib/strings/url-helpers'
88import {atoms as a, useTheme} from '#/alf'
99import * as Dialog from '#/components/Dialog'
1010-import {DialogControlProps} from '#/components/Dialog'
1010+import {type DialogControlProps} from '#/components/Dialog'
1111import {InlineLinkText} from '#/components/Link'
1212import * as Prompt from '#/components/Prompt'
1313import {Text} from '#/components/Typography'
+2-2
src/components/dms/LeaveConvoPrompt.tsx
···22import {useLingui} from '@lingui/react'
33import {StackActions, useNavigation} from '@react-navigation/native'
4455-import {NavigationProp} from '#/lib/routes/types'
55+import {type NavigationProp} from '#/lib/routes/types'
66import {isNative} from '#/platform/detection'
77import {useLeaveConvo} from '#/state/queries/messages/leave-conversation'
88import * as Toast from '#/view/com/util/Toast'
99-import {DialogOuterProps} from '#/components/Dialog'
99+import {type DialogOuterProps} from '#/components/Dialog'
1010import * as Prompt from '#/components/Prompt'
11111212export function LeaveConvoPrompt({
+2-2
src/components/dms/MessagesListBlockedFooter.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {ModerationDecision} from '@atproto/api'
33+import {type ModerationDecision} from '@atproto/api'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66···1414import {LeaveConvoPrompt} from '#/components/dms/LeaveConvoPrompt'
1515import {ReportConversationPrompt} from '#/components/dms/ReportConversationPrompt'
1616import {Text} from '#/components/Typography'
1717-import * as bsky from '#/types/bsky'
1717+import type * as bsky from '#/types/bsky'
18181919export function MessagesListBlockedFooter({
2020 recipient: initialRecipient,
+1-1
src/components/dms/ReportConversationPrompt.tsx
···11import {msg} from '@lingui/macro'
22import {useLingui} from '@lingui/react'
3344-import {DialogControlProps} from '#/components/Dialog'
44+import {type DialogControlProps} from '#/components/Dialog'
55import * as Prompt from '#/components/Prompt'
6677export function ReportConversationPrompt({
+2-2
src/components/feeds/PostFeedVideoGridRow.tsx
···22import {AppBskyEmbedVideo} from '@atproto/api'
3344import {logEvent} from '#/lib/statsig/statsig'
55-import {FeedPostSliceItem} from '#/state/queries/post-feed'
66-import {VideoFeedSourceContext} from '#/screens/VideoFeed/types'
55+import {type FeedPostSliceItem} from '#/state/queries/post-feed'
66+import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
77import {atoms as a, useGutters} from '#/alf'
88import * as Grid from '#/components/Grid'
99import {
+2-2
src/components/forms/DateField/index.web.tsx
···11import React from 'react'
22-import {StyleSheet, TextInput, TextInputProps} from 'react-native'
22+import {StyleSheet, type TextInput, type TextInputProps} from 'react-native'
33// @ts-expect-error untyped
44import {unstable_createElement} from 'react-native-web'
5566-import {DateFieldProps} from '#/components/forms/DateField/types'
66+import {type DateFieldProps} from '#/components/forms/DateField/types'
77import {toSimpleDateString} from '#/components/forms/DateField/utils'
88import * as TextField from '#/components/forms/TextField'
99import {CalendarDays_Stroke2_Corner0_Rounded as CalendarDays} from '#/components/icons/CalendarDays'
···11import React from 'react'
22-import {TextInput, View} from 'react-native'
22+import {type TextInput, View} from 'react-native'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55
···11import React from 'react'
22-import {AccessibilityProps, TextStyle, View, ViewStyle} from 'react-native'
22+import {
33+ type AccessibilityProps,
44+ type TextStyle,
55+ View,
66+ type ViewStyle,
77+} from 'react-native'
3849import {atoms as a, native, useTheme} from '#/alf'
510import * as Toggle from '#/components/forms/Toggle'
···712813type ItemProps = Omit<Toggle.ItemProps, 'style' | 'role' | 'children'> &
914 AccessibilityProps & {
1010- children: React.ReactElement
1515+ children: React.ReactElement<any>
1116 testID?: string
1217 }
1318
+3-3
src/components/hooks/useFollowMethods.ts
···22import {msg} from '@lingui/macro'
33import {useLingui} from '@lingui/react'
4455-import {LogEvents} from '#/lib/statsig/statsig'
55+import {type LogEvents} from '#/lib/statsig/statsig'
66import {logger} from '#/logger'
77-import {Shadow} from '#/state/cache/types'
77+import {type Shadow} from '#/state/cache/types'
88import {useProfileFollowMutationQueue} from '#/state/queries/profile'
99import {useRequireAuth} from '#/state/session'
1010import * as Toast from '#/view/com/util/Toast'
1111-import * as bsky from '#/types/bsky'
1111+import type * as bsky from '#/types/bsky'
12121313export function useFollowMethods({
1414 profile,
+1-1
src/components/hooks/useFullscreen.ts
···1414 return () => document.removeEventListener('fullscreenchange', onChange)
1515}
16161717-export function useFullscreen(ref?: React.RefObject<HTMLElement>) {
1717+export function useFullscreen(ref?: React.RefObject<HTMLElement | null>) {
1818 if (!isWeb) throw new Error("'useFullscreen' is a web-only hook")
1919 const isFullscreen = useSyncExternalStore(fullscreenSubscribe, () =>
2020 Boolean(document.fullscreenElement),
+1-1
src/components/icons/TEMPLATE.tsx
···11import React from 'react'
22import Svg, {Path} from 'react-native-svg'
3344-import {Props, useCommonSVGProps} from '#/components/icons/common'
44+import {type Props, useCommonSVGProps} from '#/components/icons/common'
5566export const IconTemplate_Stroke2_Corner0_Rounded = React.forwardRef(
77 function LogoImpl(props: Props, ref) {
···88import {atoms as a, useBreakpoints, useTheme} from '#/alf'
99import {Button, ButtonIcon, ButtonText} from '#/components/Button'
1010import * as Dialog from '#/components/Dialog'
1111-import {DialogControlProps} from '#/components/Dialog'
1111+import {type DialogControlProps} from '#/components/Dialog'
1212import {Divider} from '#/components/Divider'
1313import {ArrowRotateCounterClockwise_Stroke2_Corner0_Rounded as Resend} from '#/components/icons/ArrowRotateCounterClockwise'
1414import {useIntentDialogs} from '#/components/intents/IntentDialogs'
-1
src/components/moderation/LabelPreference.tsx
···55} from '@atproto/api'
66import {msg, Trans} from '@lingui/macro'
77import {useLingui} from '@lingui/react'
88-import type React from 'react'
98109import {useGlobalLabelStrings} from '#/lib/moderation/useGlobalLabelStrings'
1110import {useLabelBehaviorDescription} from '#/lib/moderation/useLabelBehaviorDescription'
+8-3
src/components/moderation/LabelsOnMe.tsx
···11-import {StyleProp, View, ViewStyle} from 'react-native'
22-import {AppBskyFeedDefs, ComAtprotoLabelDefs} from '@atproto/api'
11+import {type StyleProp, View, type ViewStyle} from 'react-native'
22+import {type AppBskyFeedDefs, type ComAtprotoLabelDefs} from '@atproto/api'
33import {msg, Plural, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
5566import {useSession} from '#/state/session'
77import {atoms as a} from '#/alf'
88-import {Button, ButtonIcon, ButtonSize, ButtonText} from '#/components/Button'
88+import {
99+ Button,
1010+ ButtonIcon,
1111+ type ButtonSize,
1212+ ButtonText,
1313+} from '#/components/Button'
914import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
1015import {
1116 LabelsOnMeDialog,
+1-1
src/components/moderation/LabelsOnMeDialog.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {ComAtprotoLabelDefs, ComAtprotoModerationDefs} from '@atproto/api'
33+import {type ComAtprotoLabelDefs, ComAtprotoModerationDefs} from '@atproto/api'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66import {useMutation} from '@tanstack/react-query'
···11import {View} from 'react-native'
22-import {ModerationCause} from '@atproto/api'
22+import {type ModerationCause} from '@atproto/api'
33import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55···1212import {atoms as a, useGutters, useTheme} from '#/alf'
1313import * as Dialog from '#/components/Dialog'
1414import {InlineLinkText} from '#/components/Link'
1515-import {AppModerationCause} from '#/components/Pills'
1515+import {type AppModerationCause} from '#/components/Pills'
1616import {Text} from '#/components/Typography'
17171818export {useDialogControl as useModerationDetailsDialogControl} from '#/components/Dialog'
+2-2
src/components/moderation/PostAlerts.tsx
···11-import {StyleProp, ViewStyle} from 'react-native'
22-import {ModerationCause, ModerationUI} from '@atproto/api'
11+import {type StyleProp, type ViewStyle} from 'react-native'
22+import {type ModerationCause, type ModerationUI} from '@atproto/api'
3344import {getModerationCauseKey, unique} from '#/lib/moderation'
55import * as Pills from '#/components/Pills'
+2-2
src/components/moderation/ProfileHeaderAlerts.tsx
···11-import {StyleProp, ViewStyle} from 'react-native'
22-import {ModerationDecision} from '@atproto/api'
11+import {type StyleProp, type ViewStyle} from 'react-native'
22+import {type ModerationDecision} from '@atproto/api'
3344import {getModerationCauseKey, unique} from '#/lib/moderation'
55import * as Pills from '#/components/Pills'
+5-5
src/components/moderation/ReportDialog/action.ts
···11import {
22- $Typed,
33- ChatBskyConvoDefs,
44- ComAtprotoModerationCreateReport,
22+ type $Typed,
33+ type ChatBskyConvoDefs,
44+ type ComAtprotoModerationCreateReport,
55} from '@atproto/api'
66import {msg} from '@lingui/macro'
77import {useLingui} from '@lingui/react'
···991010import {logger} from '#/logger'
1111import {useAgent} from '#/state/session'
1212-import {ReportState} from './state'
1313-import {ParsedReportSubject} from './types'
1212+import {type ReportState} from './state'
1313+import {type ParsedReportSubject} from './types'
14141515export function useSubmitReportMutation() {
1616 const {_} = useLingui()
+1-1
src/components/moderation/ReportDialog/copy.ts
···22import {msg} from '@lingui/macro'
33import {useLingui} from '@lingui/react'
4455-import {ParsedReportSubject} from './types'
55+import {type ParsedReportSubject} from './types'
6677export function useCopyForSubject(subject: ParsedReportSubject) {
88 const {_} = useLingui()
+2-2
src/components/moderation/ReportDialog/state.ts
···11-import {AppBskyLabelerDefs, ComAtprotoModerationDefs} from '@atproto/api'
11+import {type AppBskyLabelerDefs, ComAtprotoModerationDefs} from '@atproto/api'
2233-import {ReportOption} from './utils/useReportOptions'
33+import {type ReportOption} from './utils/useReportOptions'
4455export type ReportState = {
66 selectedOption?: ReportOption
+6-6
src/components/moderation/ReportDialog/types.ts
···11import {
22- $Typed,
33- AppBskyActorDefs,
44- AppBskyFeedDefs,
55- AppBskyGraphDefs,
66- ChatBskyConvoDefs,
22+ type $Typed,
33+ type AppBskyActorDefs,
44+ type AppBskyFeedDefs,
55+ type AppBskyGraphDefs,
66+ type ChatBskyConvoDefs,
77} from '@atproto/api'
8899-import * as Dialog from '#/components/Dialog'
99+import type * as Dialog from '#/components/Dialog'
10101111export type ReportSubject =
1212 | $Typed<AppBskyActorDefs.ProfileViewBasic>
···66} from '@atproto/api'
7788import {
99- ParsedReportSubject,
1010- ReportSubject,
99+ type ParsedReportSubject,
1010+ type ReportSubject,
1111} from '#/components/moderation/ReportDialog/types'
1212import * as bsky from '#/types/bsky'
1313
+4-4
src/components/moderation/ScreenHider.tsx
···11import React from 'react'
22import {
33- StyleProp,
33+ type StyleProp,
44 TouchableWithoutFeedback,
55 View,
66- ViewStyle,
66+ type ViewStyle,
77} from 'react-native'
88-import {ModerationUI} from '@atproto/api'
88+import {type ModerationUI} from '@atproto/api'
99import {msg, Trans} from '@lingui/macro'
1010import {useLingui} from '@lingui/react'
1111import {useNavigation} from '@react-navigation/native'
12121313import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
1414import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
1515-import {NavigationProp} from '#/lib/routes/types'
1515+import {type NavigationProp} from '#/lib/routes/types'
1616import {CenteredView} from '#/view/com/util/Views'
1717import {atoms as a, useTheme, web} from '#/alf'
1818import {Button, ButtonText} from '#/components/Button'
···11import {
22- AppBskyFeedDefs,
33- AppBskyFeedGetFeed as GetCustomFeed,
22+ type AppBskyFeedDefs,
33+ type AppBskyFeedGetFeed as GetCustomFeed,
44 BskyAgent,
55 jsonStringToLex,
66} from '@atproto/api'
···99 getAppLanguageAsContentLanguage,
1010 getContentLanguages,
1111} from '#/state/preferences/languages'
1212-import {FeedAPI, FeedAPIResponse} from './types'
1212+import {type FeedAPI, type FeedAPIResponse} from './types'
1313import {createBskyTopicsHeader, isBlueskyOwnedFeed} from './utils'
14141515export class CustomFeedAPI implements FeedAPI {
+2-2
src/lib/api/feed/following.ts
···11-import {AppBskyFeedDefs, BskyAgent} from '@atproto/api'
11+import {type AppBskyFeedDefs, type BskyAgent} from '@atproto/api'
2233-import {FeedAPI, FeedAPIResponse} from './types'
33+import {type FeedAPI, type FeedAPIResponse} from './types'
4455export class FollowingFeedAPI implements FeedAPI {
66 agent: BskyAgent
+4-4
src/lib/api/feed/likes.ts
···11import {
22- AppBskyFeedDefs,
33- AppBskyFeedGetActorLikes as GetActorLikes,
44- BskyAgent,
22+ type AppBskyFeedDefs,
33+ type AppBskyFeedGetActorLikes as GetActorLikes,
44+ type BskyAgent,
55} from '@atproto/api'
6677-import {FeedAPI, FeedAPIResponse} from './types'
77+import {type FeedAPI, type FeedAPIResponse} from './types'
8899export class LikesFeedAPI implements FeedAPI {
1010 agent: BskyAgent
+12-4
src/lib/api/feed/merge.ts
···11-import {AppBskyFeedDefs, AppBskyFeedGetTimeline, BskyAgent} from '@atproto/api'
11+import {
22+ type AppBskyFeedDefs,
33+ type AppBskyFeedGetTimeline,
44+ type BskyAgent,
55+} from '@atproto/api'
26import shuffle from 'lodash.shuffle'
3748import {bundleAsync} from '#/lib/async/bundle'
59import {timeout} from '#/lib/async/timeout'
610import {feedUriToHref} from '#/lib/strings/url-helpers'
711import {getContentLanguages} from '#/state/preferences/languages'
88-import {FeedParams} from '#/state/queries/post-feed'
1212+import {type FeedParams} from '#/state/queries/post-feed'
913import {FeedTuner} from '../feed-manip'
1010-import {FeedTunerFn} from '../feed-manip'
1111-import {FeedAPI, FeedAPIResponse, ReasonFeedSource} from './types'
1414+import {type FeedTunerFn} from '../feed-manip'
1515+import {
1616+ type FeedAPI,
1717+ type FeedAPIResponse,
1818+ type ReasonFeedSource,
1919+} from './types'
1220import {createBskyTopicsHeader, isBlueskyOwnedFeed} from './utils'
13211422const REQUEST_WAIT_MS = 500 // 500ms
+1-1
src/lib/api/feed/types.ts
···11-import {AppBskyFeedDefs} from '@atproto/api'
11+import {type AppBskyFeedDefs} from '@atproto/api'
2233export interface FeedAPIResponse {
44 cursor?: string
+1-1
src/lib/api/feed/utils.ts
···2233import {BSKY_FEED_OWNER_DIDS} from '#/lib/constants'
44import {isWeb} from '#/platform/detection'
55-import {UsePreferencesQueryResponse} from '#/state/queries/preferences'
55+import {type UsePreferencesQueryResponse} from '#/state/queries/preferences'
6677let debugTopics = ''
88if (isWeb && typeof window !== 'undefined') {
+1-1
src/lib/api/upload-blob.ts
···11import {copyAsync} from 'expo-file-system'
22-import {BskyAgent, ComAtprotoRepoUploadBlob} from '@atproto/api'
22+import {type BskyAgent, type ComAtprotoRepoUploadBlob} from '@atproto/api'
3344import {safeDeleteAsync} from '#/lib/media/manip'
55
+1-1
src/lib/api/upload-blob.web.ts
···11-import {BskyAgent, ComAtprotoRepoUploadBlob} from '@atproto/api'
11+import {type BskyAgent, type ComAtprotoRepoUploadBlob} from '@atproto/api'
2233/**
44 * @note It is recommended, on web, to use the `file` instance of the file
···11-import {ImageRequireSource} from 'react-native'
11+import {type ImageRequireSource} from 'react-native'
2233// @ts-ignore we need to pretend -prf
44export const DEF_AVATAR: ImageRequireSource = {uri: '/img/default-avatar.png'}
···11-import React from 'react'
11+import type React from 'react'
2233export function GestureActionView({children}: {children: React.ReactNode}) {
44 return children
+6-1
src/lib/custom-animations/PressableScale.tsx
···11-import {Pressable, PressableProps, StyleProp, ViewStyle} from 'react-native'
11+import {
22+ Pressable,
33+ type PressableProps,
44+ type StyleProp,
55+ type ViewStyle,
66+} from 'react-native'
27import Animated, {
38 cancelAnimation,
49 useAnimatedStyle,
+2-2
src/lib/hooks/useAccountSwitcher.ts
···4455import {logger} from '#/logger'
66import {isWeb} from '#/platform/detection'
77-import {SessionAccount, useSessionApi} from '#/state/session'
77+import {type SessionAccount, useSessionApi} from '#/state/session'
88import {useLoggedOutViewControls} from '#/state/shell/logged-out'
99import * as Toast from '#/view/com/util/Toast'
1010import {logEvent} from '../statsig/statsig'
1111-import {LogEvents} from '../statsig/statsig'
1111+import {type LogEvents} from '../statsig/statsig'
12121313export function useAccountSwitcher() {
1414 const [pendingDid, setPendingDid] = useState<string | null>(null)
+1-1
src/lib/hooks/useAnimatedValue.ts
···22import {Animated} from 'react-native'
3344export function useAnimatedValue(initialValue: number) {
55- const lazyRef = React.useRef<Animated.Value>()
55+ const lazyRef = React.useRef<Animated.Value>(undefined)
6677 if (lazyRef.current === undefined) {
88 lazyRef.current = new Animated.Value(initialValue)
+1-1
src/lib/hooks/useGoBack.ts
···11import {StackActions, useNavigation} from '@react-navigation/native'
2233-import {NavigationProp} from '#/lib/routes/types'
33+import {type NavigationProp} from '#/lib/routes/types'
44import {router} from '#/routes'
5566export function useGoBack(onGoBack?: () => unknown) {
···11import {useEffect} from 'react'
22import {useNavigation} from '@react-navigation/native'
3344-import {NavigationProp} from '#/lib/routes/types'
44+import {type NavigationProp} from '#/lib/routes/types'
55import {bskyTitle} from '#/lib/strings/headings'
66import {useUnreadNotifications} from '#/state/queries/notifications/unread'
77
+1-1
src/lib/hooks/useTimeAgo.ts
···11import {useCallback} from 'react'
22-import {I18n} from '@lingui/core'
22+import {type I18n} from '@lingui/core'
33import {defineMessage, msg, plural} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55import {differenceInSeconds} from 'date-fns'
+1-1
src/lib/hooks/useWebScrollRestoration.ts
···11import {useEffect, useMemo, useState} from 'react'
22-import {EventArg, useNavigation} from '@react-navigation/core'
22+import {type EventArg, useNavigation} from '@react-navigation/core'
3344if ('scrollRestoration' in history) {
55 // Tell the brower not to mess with the scroll.
+2-2
src/lib/media/video/compress.web.ts
···11-import {ImagePickerAsset} from 'expo-image-picker'
11+import {type ImagePickerAsset} from 'expo-image-picker'
2233import {VIDEO_MAX_SIZE} from '#/lib/constants'
44import {VideoTooLargeError} from '#/lib/media/video/errors'
55-import {CompressedVideo} from './types'
55+import {type CompressedVideo} from './types'
6677// doesn't actually compress, converts to ArrayBuffer
88export async function compressVideo(
+2-2
src/lib/media/video/upload.shared.ts
···11-import {BskyAgent} from '@atproto/api'
22-import {I18n} from '@lingui/core'
11+import {type BskyAgent} from '@atproto/api'
22+import {type I18n} from '@lingui/core'
33import {msg} from '@lingui/macro'
4455import {VIDEO_SERVICE_DID} from '#/lib/constants'
+3-3
src/lib/media/video/upload.ts
···11import {createUploadTask, FileSystemUploadType} from 'expo-file-system'
22-import {AppBskyVideoDefs, BskyAgent} from '@atproto/api'
33-import {I18n} from '@lingui/core'
22+import {type AppBskyVideoDefs, type BskyAgent} from '@atproto/api'
33+import {type I18n} from '@lingui/core'
44import {msg} from '@lingui/macro'
55import {nanoid} from 'nanoid/non-secure'
6677import {AbortError} from '#/lib/async/cancelable'
88import {ServerError} from '#/lib/media/video/errors'
99-import {CompressedVideo} from '#/lib/media/video/types'
99+import {type CompressedVideo} from '#/lib/media/video/types'
1010import {getServiceAuthToken, getVideoUploadLimits} from './upload.shared'
1111import {createVideoEndpointUrl, mimeToExt} from './util'
1212
+4-4
src/lib/media/video/upload.web.ts
···11-import {AppBskyVideoDefs} from '@atproto/api'
22-import {BskyAgent} from '@atproto/api'
33-import {I18n} from '@lingui/core'
11+import {type AppBskyVideoDefs} from '@atproto/api'
22+import {type BskyAgent} from '@atproto/api'
33+import {type I18n} from '@lingui/core'
44import {msg} from '@lingui/macro'
55import {nanoid} from 'nanoid/non-secure'
6677import {AbortError} from '#/lib/async/cancelable'
88import {ServerError} from '#/lib/media/video/errors'
99-import {CompressedVideo} from '#/lib/media/video/types'
99+import {type CompressedVideo} from '#/lib/media/video/types'
1010import {getServiceAuthToken, getVideoUploadLimits} from './upload.shared'
1111import {createVideoEndpointUrl, mimeToExt} from './util'
1212
+1-1
src/lib/media/video/util.ts
···11import {AtpAgent} from '@atproto/api'
2233-import {SupportedMimeTypes, VIDEO_SERVICE} from '#/lib/constants'
33+import {type SupportedMimeTypes, VIDEO_SERVICE} from '#/lib/constants'
4455export const createVideoEndpointUrl = (
66 route: string,
+1-1
src/lib/merge-refs.ts
···1313 * returns a ref callback function that can be used to merge multiple refs into a single ref.
1414 */
1515export function mergeRefs<T = any>(
1616- refs: Array<React.MutableRefObject<T> | React.LegacyRef<T>>,
1616+ refs: Array<React.MutableRefObject<T> | React.Ref<T>>,
1717): React.RefCallback<T> {
1818 return value => {
1919 refs.forEach(ref => {
+1-1
src/lib/moderation/blocked-and-muted.ts
···11-import * as bsky from '#/types/bsky'
11+import type * as bsky from '#/types/bsky'
2233export function isBlockedOrBlocking(profile: bsky.profile.AnyProfileView) {
44 return profile.viewer?.blockedBy || profile.viewer?.blocking
+4-1
src/lib/moderation/useLabelBehaviorDescription.ts
···11-import {InterpretedLabelValueDefinition, LabelPreference} from '@atproto/api'
11+import {
22+ type InterpretedLabelValueDefinition,
33+ type LabelPreference,
44+} from '@atproto/api'
25import {msg} from '@lingui/macro'
36import {useLingui} from '@lingui/react'
47
+4-4
src/lib/moderation/useLabelInfo.ts
···11import {
22- AppBskyLabelerDefs,
33- ComAtprotoLabelDefs,
44- InterpretedLabelValueDefinition,
22+ type AppBskyLabelerDefs,
33+ type ComAtprotoLabelDefs,
44+ type InterpretedLabelValueDefinition,
55 interpretLabelValueDefinition,
66 LABELS,
77} from '@atproto/api'
···99import * as bcp47Match from 'bcp-47-match'
10101111import {
1212- GlobalLabelStrings,
1212+ type GlobalLabelStrings,
1313 useGlobalLabelStrings,
1414} from '#/lib/moderation/useGlobalLabelStrings'
1515import {useLabelDefinitions} from '#/state/preferences'
+4-3
src/lib/react-query.tsx
···11-import React, {useRef, useState} from 'react'
22-import {AppState, AppStateStatus} from 'react-native'
11+import {useRef, useState} from 'react'
22+import {AppState, type AppStateStatus} from 'react-native'
33import AsyncStorage from '@react-native-async-storage/async-storage'
44import {createAsyncStoragePersister} from '@tanstack/query-async-storage-persister'
55import {focusManager, onlineManager, QueryClient} from '@tanstack/react-query'
66import {
77 PersistQueryClientProvider,
88- PersistQueryClientProviderProps,
88+ type PersistQueryClientProviderProps,
99} from '@tanstack/react-query-persist-client'
1010+import type React from 'react'
10111112import {isNative} from '#/platform/detection'
1213import {listenNetworkConfirmed, listenNetworkLost} from '#/state/events'
+2-2
src/lib/routes/helpers.ts
···11-import {NavigationProp} from '@react-navigation/native'
11+import {type NavigationProp} from '@react-navigation/native'
2233-import {RouteParams, State} from './types'
33+import {type RouteParams, type State} from './types'
4455export function getRootNavigation<T extends {}>(
66 nav: NavigationProp<T>,
+1-1
src/lib/strings/display-names.ts
···11-import {ModerationUI} from '@atproto/api'
11+import {type ModerationUI} from '@atproto/api'
2233// \u2705 = ✅
44// \u2713 = ✓
+1-1
src/lib/strings/rich-text-helpers.ts
···11-import {AppBskyRichtextFacet, RichText} from '@atproto/api'
11+import {AppBskyRichtextFacet, type RichText} from '@atproto/api'
2233import {linkRequiresWarning} from './url-helpers'
44
+1-1
src/lib/strings/rich-text-manip.ts
···11-import {AppBskyRichtextFacet, RichText, UnicodeString} from '@atproto/api'
11+import {AppBskyRichtextFacet, type RichText, UnicodeString} from '@atproto/api'
2233import {toShortUrl} from './url-helpers'
44
+1-1
src/lib/strings/time.ts
···11-import {I18n} from '@lingui/core'
11+import {type I18n} from '@lingui/core'
2233export function niceDate(i18n: I18n, date: number | string | Date) {
44 const d = new Date(date)
+1-1
src/lib/themes.ts
···44import {darkPalette, dimPalette, lightPalette} from '#/alf/themes'
55import {fontWeight} from '#/alf/tokens'
66import {colors} from './styles'
77-import type {Theme} from './ThemeContext'
77+import {type Theme} from './ThemeContext'
8899export const defaultTheme: Theme = {
1010 colorScheme: 'light',
+1-1
src/locale/deviceLocales.ts
···11-import {getLocales as defaultGetLocales, Locale} from 'expo-localization'
11+import {getLocales as defaultGetLocales, type Locale} from 'expo-localization'
2233import {dedupArray} from '#/lib/functions'
44
+1-1
src/locale/i18nProvider.tsx
···11-import React from 'react'
21import {i18n} from '@lingui/core'
32import {I18nProvider as DefaultI18nProvider} from '@lingui/react'
33+import type React from 'react'
4455import {useLocaleLanguage} from './i18n'
66
+285-246
src/locale/locales/en/messages.po
···3030msgid "{0, plural, one {# day} other {# days}}"
3131msgstr ""
32323333-#: src/screens/Profile/ProfileFollowers.tsx:40
3333+#: src/screens/Profile/ProfileFollowers.tsx:43
3434msgid "{0, plural, one {# follower} other {# followers}}"
3535msgstr ""
36363737-#: src/screens/Profile/ProfileFollows.tsx:40
3737+#: src/screens/Profile/ProfileFollows.tsx:43
3838msgid "{0, plural, one {# following} other {# following}}"
3939msgstr ""
4040···4242msgid "{0, plural, one {# hour} other {# hours}}"
4343msgstr ""
44444545-#: src/components/moderation/LabelsOnMe.tsx:53
4545+#: src/components/moderation/LabelsOnMe.tsx:58
4646msgid "{0, plural, one {# label has} other {# labels have}} been placed on this account"
4747msgstr ""
48484949-#: src/components/moderation/LabelsOnMe.tsx:62
4949+#: src/components/moderation/LabelsOnMe.tsx:67
5050msgid "{0, plural, one {# label has} other {# labels have}} been placed on this content"
5151msgstr ""
52525353-#: src/screens/Post/PostLikedBy.tsx:41
5353+#: src/screens/Post/PostLikedBy.tsx:44
5454msgid "{0, plural, one {# like} other {# likes}}"
5555msgstr ""
5656···6262msgid "{0, plural, one {# month} other {# months}}"
6363msgstr ""
64646565-#: src/screens/Post/PostQuotes.tsx:41
6565+#: src/screens/Post/PostQuotes.tsx:44
6666msgid "{0, plural, one {# quote} other {# quotes}}"
6767msgstr ""
68686969-#: src/screens/Post/PostRepostedBy.tsx:41
6969+#: src/screens/Post/PostRepostedBy.tsx:44
7070msgid "{0, plural, one {# repost} other {# reposts}}"
7171msgstr ""
7272···158158msgid "{0} joined this week"
159159msgstr ""
160160161161-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/Scrubber.tsx:204
161161+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/Scrubber.tsx:203
162162msgid "{0} of {1}"
163163msgstr ""
164164···183183msgid "{0}, a list by {1}"
184184msgstr ""
185185186186-#: src/view/com/util/UserAvatar.tsx:572
187187-#: src/view/com/util/UserAvatar.tsx:590
186186+#: src/view/com/util/UserAvatar.tsx:577
187187+#: src/view/com/util/UserAvatar.tsx:595
188188msgid "{0}'s avatar"
189189msgstr ""
190190···422422msgid "{notificationCount, plural, one {# unread item} other {# unread items}}"
423423msgstr ""
424424425425-#: src/components/NewskieDialog.tsx:116
425425+#: src/components/NewskieDialog.tsx:131
426426msgid "{profileName} joined Bluesky {0} ago"
427427msgstr ""
428428429429-#: src/components/NewskieDialog.tsx:111
429429+#: src/components/NewskieDialog.tsx:126
430430msgid "{profileName} joined Bluesky using a starter pack {0} ago"
431431msgstr ""
432432···677677msgid "Add a temporary live status to your profile. When someone clicks on your avatar, they’ll see information about your live event."
678678msgstr ""
679679680680-#: src/view/screens/ProfileList.tsx:924
681681-#: src/view/screens/ProfileList.tsx:942
680680+#: src/screens/ProfileList/AboutSection.tsx:62
681681+#: src/screens/ProfileList/AboutSection.tsx:80
682682msgid "Add a user to this list"
683683msgstr ""
684684···748748msgid "Add muted words and tags"
749749msgstr ""
750750751751-#: src/view/screens/ProfileList.tsx:932
752752-#: src/view/screens/ProfileList.tsx:950
751751+#: src/screens/ProfileList/AboutSection.tsx:70
752752+#: src/screens/ProfileList/AboutSection.tsx:88
753753msgid "Add people"
754754msgstr ""
755755···769769msgid "Add some feeds to your starter pack!"
770770msgstr ""
771771772772-#: src/screens/Feeds/NoFollowingFeed.tsx:41
772772+#: src/screens/Feeds/NoFollowingFeed.tsx:39
773773msgid "Add the default feed of only people you follow"
774774msgstr ""
775775···832832msgid "Adult content can only be enabled via the Web at <0>bsky.app</0>."
833833msgstr ""
834834835835-#: src/components/moderation/LabelPreference.tsx:247
835835+#: src/components/moderation/LabelPreference.tsx:246
836836msgid "Adult content is disabled."
837837msgstr ""
838838···995995msgid "An error occurred while loading the video. Please try again later."
996996msgstr ""
997997998998-#: src/components/Post/Embed/VideoEmbed/index.web.tsx:227
998998+#: src/components/Post/Embed/VideoEmbed/index.web.tsx:226
999999msgid "An error occurred while loading the video. Please try again."
10001000msgstr ""
1001100110021002-#: src/components/StarterPack/QrCodeDialog.tsx:72
10021002+#: src/components/StarterPack/QrCodeDialog.tsx:75
10031003msgid "An error occurred while saving the QR code!"
10041004msgstr ""
10051005···11731173msgid "Appearance"
11741174msgstr ""
1175117511761176-#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:47
11761176+#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:51
11771177#: src/screens/Home/NoFeedsPinned.tsx:93
11781178msgid "Apply default recommended feeds"
11791179msgstr ""
···12321232msgid "Are you sure?"
12331233msgstr ""
1234123412351235-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:87
12351235+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:89
12361236msgid "Are you writing in <0>{suggestedLanguageName}</0>?"
12371237msgstr ""
12381238···13661366msgid "Block Account?"
13671367msgstr ""
1368136813691369-#: src/view/screens/ProfileList.tsx:669
13691369+#: src/screens/ProfileList/components/SubscribeMenu.tsx:97
13701370+#: src/screens/ProfileList/components/SubscribeMenu.tsx:100
13701371msgid "Block accounts"
13711372msgstr ""
13721373···13781379msgid "Block and/or delete this conversation"
13791380msgstr ""
1380138113811381-#: src/view/screens/ProfileList.tsx:789
13821382+#: src/screens/ProfileList/components/SubscribeMenu.tsx:125
13821383msgid "Block list"
13831384msgstr ""
13841385···13861387msgid "Block or report"
13871388msgstr ""
1388138913891389-#: src/view/screens/ProfileList.tsx:784
13901390+#: src/screens/ProfileList/components/SubscribeMenu.tsx:120
13901391msgid "Block these accounts?"
13911392msgstr ""
13921393···14251426msgid "Blocking does not prevent this labeler from placing labels on your account."
14261427msgstr ""
1427142814281428-#: src/view/screens/ProfileList.tsx:786
14291429+#: src/screens/ProfileList/components/SubscribeMenu.tsx:122
14291430msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
14301431msgstr ""
14311432···14961497msgid "Bluesky+ icons"
14971498msgstr ""
1498149914991499-#: src/lib/moderation/useLabelBehaviorDescription.ts:53
15001500+#: src/lib/moderation/useLabelBehaviorDescription.ts:56
15001501msgid "Blur images"
15011502msgstr ""
1502150315031503-#: src/lib/moderation/useLabelBehaviorDescription.ts:51
15041504+#: src/lib/moderation/useLabelBehaviorDescription.ts:54
15041505msgid "Blur images and filter from feeds"
15051506msgstr ""
15061507···17111712msgid "Change password dialog"
17121713msgstr ""
1713171417141714-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:98
17151715+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:100
17151716msgid "Change post language to {suggestedLanguageName}"
17161717msgstr ""
17171718···18751876msgid "Click for information"
18761877msgstr ""
1877187818781878-#: src/view/screens/Support.tsx:41
18791879+#: src/view/screens/Support.tsx:44
18791880msgid "click here"
18801881msgstr ""
18811882···19291930#: src/components/dms/ReportDialog.tsx:395
19301931#: src/components/live/EditLiveDialog.tsx:229
19311932#: src/components/live/EditLiveDialog.tsx:235
19321932-#: src/components/NewskieDialog.tsx:146
19331933-#: src/components/NewskieDialog.tsx:153
19331933+#: src/components/NewskieDialog.tsx:159
19341934+#: src/components/NewskieDialog.tsx:165
19341935#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:197
19351936#: src/components/ProgressGuide/FollowDialog.tsx:379
19361937#: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:118
···19561957msgid "Close alert"
19571958msgstr ""
1958195919591959-#: src/view/com/util/BottomSheetCustomBackdrop.tsx:36
19601960+#: src/view/com/util/BottomSheetCustomBackdrop.tsx:37
19601961msgid "Close bottom drawer"
19611962msgstr ""
19621963···2052205320532054#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:45
20542055#: src/Navigation.tsx:341
20552055-#: src/view/screens/CommunityGuidelines.tsx:34
20562056+#: src/view/screens/CommunityGuidelines.tsx:37
20562057msgid "Community Guidelines"
20572058msgstr ""
20582059···20812082msgid "Compressing video..."
20822083msgstr ""
2083208420842084-#: src/components/moderation/LabelPreference.tsx:88
20852085+#: src/components/moderation/LabelPreference.tsx:87
20852086msgid "Configure content filtering setting for category: {name}"
20862087msgstr ""
2087208820882088-#: src/components/moderation/LabelPreference.tsx:249
20892089+#: src/components/moderation/LabelPreference.tsx:248
20892090msgid "Configured in <0>moderation settings</0>."
20902091msgstr ""
20912092···22812282msgid "Copies build version to clipboard"
22822283msgstr ""
2283228422842284-#: src/components/StarterPack/QrCodeDialog.tsx:182
22852285+#: src/components/StarterPack/QrCodeDialog.tsx:192
22852286msgid "Copy"
22862287msgstr ""
22872288···22942295msgid "Copy at:// URI"
22952296msgstr ""
2296229722972297-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:153
22982298-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:156
22982298+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:152
22992299+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:155
22992300msgid "Copy author DID"
23002301msgstr ""
23012302···23142315msgid "Copy host"
23152316msgstr ""
2316231723172317-#: src/components/StarterPack/ShareDialog.tsx:104
23182318+#: src/components/StarterPack/ShareDialog.tsx:113
23182319#: src/screens/StarterPack/StarterPackScreen.tsx:617
23192320msgid "Copy link"
23202321msgstr ""
2321232223222322-#: src/components/StarterPack/ShareDialog.tsx:111
23232323+#: src/components/StarterPack/ShareDialog.tsx:119
23232324msgid "Copy Link"
23242325msgstr ""
2325232623262326-#: src/view/screens/ProfileList.tsx:513
23272327+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:172
23282328+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:176
23272329msgid "Copy link to list"
23282330msgstr ""
2329233123302332#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:127
23312333#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:130
23322332-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:87
23332333-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:90
23342334+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:86
23352335+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:89
23342336msgid "Copy link to post"
23352337msgstr ""
23362338···23482350msgid "Copy message text"
23492351msgstr ""
2350235223512351-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:144
23522352-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:147
23532353+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:143
23542354+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:146
23532355msgid "Copy post at:// URI"
23542356msgstr ""
23552357···23582360msgid "Copy post text"
23592361msgstr ""
2360236223612361-#: src/components/StarterPack/QrCodeDialog.tsx:176
23632363+#: src/components/StarterPack/QrCodeDialog.tsx:178
23622364msgid "Copy QR code"
23632365msgstr ""
23642366···23692371#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:40
23702372#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:107
23712373#: src/Navigation.tsx:346
23722372-#: src/view/screens/CopyrightPolicy.tsx:31
23742374+#: src/view/screens/CopyrightPolicy.tsx:34
23732375msgid "Copyright Policy"
23742376msgstr ""
23752377···23942396msgid "Could not load feed"
23952397msgstr ""
2396239823972397-#: src/view/screens/ProfileList.tsx:1029
23992399+#: src/screens/ProfileList/components/ErrorScreen.tsx:26
24002400+#: src/screens/ProfileList/index.tsx:79
24012401+#: src/screens/ProfileList/index.tsx:101
23982402msgid "Could not load list"
23992403msgstr ""
24002404···24222426msgid "Create"
24232427msgstr ""
2424242824252425-#: src/components/StarterPack/QrCodeDialog.tsx:160
24292429+#: src/components/StarterPack/QrCodeDialog.tsx:163
24262430msgid "Create a QR code for a starter pack"
24272431msgstr ""
24282432···24802484msgstr ""
2481248524822486#: src/components/moderation/ReportDialog/index.tsx:585
24832483-#: src/components/ReportDialog/SelectReportOptionView.tsx:99
24872487+#: src/components/ReportDialog/SelectReportOptionView.tsx:102
24842488msgid "Create report for {0}"
24852489msgstr ""
24862490···25682572#: src/components/dms/MessageContextMenu.tsx:185
25692573#: src/components/PostControls/PostMenu/PostMenuItems.tsx:704
25702574#: src/screens/Messages/components/ChatStatusInfo.tsx:55
25752575+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:285
25712576#: src/screens/Settings/AppPasswords.tsx:212
25722577#: src/screens/StarterPack/StarterPackScreen.tsx:599
25732578#: src/screens/StarterPack/StarterPackScreen.tsx:688
25742579#: src/screens/StarterPack/StarterPackScreen.tsx:760
25752575-#: src/view/screens/ProfileList.tsx:768
25762580msgid "Delete"
25772581msgstr ""
25782582···26172621msgid "Delete for me"
26182622msgstr ""
2619262326202620-#: src/view/screens/ProfileList.tsx:556
26242624+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:211
26252625+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:214
26212626msgid "Delete list"
26222627msgstr ""
26232628···26482653msgid "Delete starter pack?"
26492654msgstr ""
2650265526512651-#: src/view/screens/ProfileList.tsx:763
26562656+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:280
26522657msgid "Delete this list?"
26532658msgstr ""
26542659···27372742msgid "Disable subtitles"
27382743msgstr ""
2739274427402740-#: src/lib/moderation/useLabelBehaviorDescription.ts:32
27412741-#: src/lib/moderation/useLabelBehaviorDescription.ts:42
27422742-#: src/lib/moderation/useLabelBehaviorDescription.ts:68
27452745+#: src/lib/moderation/useLabelBehaviorDescription.ts:35
27462746+#: src/lib/moderation/useLabelBehaviorDescription.ts:45
27472747+#: src/lib/moderation/useLabelBehaviorDescription.ts:71
27432748#: src/screens/Messages/Settings.tsx:144
27442749#: src/screens/Messages/Settings.tsx:147
27452750#: src/screens/Moderation/index.tsx:413
···28982903msgid "Download Bluesky"
28992904msgstr ""
2900290529012901-#: src/screens/Settings/components/ExportCarDialog.tsx:79
29022902-#: src/screens/Settings/components/ExportCarDialog.tsx:84
29062906+#: src/screens/Settings/components/ExportCarDialog.tsx:78
29072907+#: src/screens/Settings/components/ExportCarDialog.tsx:83
29032908msgid "Download CAR file"
29042909msgstr ""
29052910···29862991msgid "Edit interests"
29872992msgstr ""
2988299329892989-#: src/view/screens/ProfileList.tsx:544
29942994+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:203
29952995+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:206
29902996msgid "Edit list details"
29912997msgstr ""
29922998···3094310030953101#: src/components/dialogs/Embed.tsx:104
30963102#: src/components/dialogs/Embed.tsx:108
30973097-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:119
30983098-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:124
31033103+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:118
31043104+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:123
30993105msgid "Embed post"
31003106msgstr ""
31013107···34223428msgid "Failed to accept chat"
34233429msgstr ""
3424343034253425-#: src/components/dms/ActionsWrapper.web.tsx:67
34313431+#: src/components/dms/ActionsWrapper.web.tsx:66
34263432#: src/components/dms/MessageContextMenu.tsx:99
34273433msgid "Failed to add emoji reaction"
34283434msgstr ""
···35323538msgid "Failed to pin post"
35333539msgstr ""
3534354035353535-#: src/components/dms/ActionsWrapper.web.tsx:61
35413541+#: src/components/dms/ActionsWrapper.web.tsx:60
35363542#: src/components/dms/MessageContextMenu.tsx:93
35373543msgid "Failed to remove emoji reaction"
35383544msgstr ""
···3578358435793585#: src/components/PostControls/PostMenu/PostMenuItems.tsx:219
35803586msgid "Failed to toggle thread mute, please try again"
35873587+msgstr ""
35883588+35893589+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:111
35903590+msgid "Failed to unpin list"
35813591msgstr ""
3582359235833593#: src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx:149
···36583668msgstr ""
3659366936603670#: src/Navigation.tsx:574
36713671+#: src/screens/SavedFeeds.tsx:108
36613672#: src/screens/Search/SearchResults.tsx:73
36623673#: src/screens/StarterPack/StarterPackScreen.tsx:190
36633674#: src/view/screens/Feeds.tsx:511
36643675#: src/view/screens/Profile.tsx:230
36653665-#: src/view/screens/SavedFeeds.tsx:104
36663676#: src/view/shell/desktop/LeftNav.tsx:727
36673677#: src/view/shell/Drawer.tsx:530
36683678msgid "Feeds"
36693679msgstr ""
3670368036713671-#: src/view/screens/SavedFeeds.tsx:206
36723672-msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
36813681+#: src/screens/SavedFeeds.tsx:215
36823682+msgid "Feeds are custom algorithms that users build with a little coding expertise. <0>See this guide</0> for more information."
36733683msgstr ""
3674368436753685#: src/components/FeedCard.tsx:282
36763676-#: src/view/screens/SavedFeeds.tsx:86
36863686+#: src/screens/SavedFeeds.tsx:90
36773687msgctxt "toast"
36783688msgid "Feeds updated!"
36793689msgstr ""
···36903700msgid "File saved successfully!"
36913701msgstr ""
3692370236933693-#: src/lib/moderation/useLabelBehaviorDescription.ts:66
37033703+#: src/lib/moderation/useLabelBehaviorDescription.ts:69
36943704msgid "Filter from feeds"
36953705msgstr ""
36963706···38503860msgid "Followers of @{0} that you know"
38513861msgstr ""
3852386238533853-#: src/screens/Profile/KnownFollowers.tsx:104
38543854-#: src/screens/Profile/KnownFollowers.tsx:121
38633863+#: src/screens/Profile/KnownFollowers.tsx:107
38643864+#: src/screens/Profile/KnownFollowers.tsx:124
38553865msgid "Followers you know"
38563866msgstr ""
38573867···38653875msgid "Following"
38663876msgstr ""
3867387738783878+#: src/screens/SavedFeeds.tsx:410
38683879#: src/view/screens/Feeds.tsx:603
38693869-#: src/view/screens/SavedFeeds.tsx:420
38703880msgctxt "feed-name"
38713881msgid "Following"
38723882msgstr ""
···40684078#: src/components/moderation/ScreenHider.tsx:163
40694079#: src/screens/Messages/Inbox.tsx:249
40704080#: src/screens/Profile/ProfileFeed/index.tsx:92
40814081+#: src/screens/ProfileList/components/ErrorScreen.tsx:34
40824082+#: src/screens/ProfileList/components/ErrorScreen.tsx:40
40714083#: src/screens/VideoFeed/components/Header.tsx:163
40724084#: src/screens/VideoFeed/index.tsx:1146
40734085#: src/screens/VideoFeed/index.tsx:1150
40744086#: src/view/com/auth/LoggedOut.tsx:72
40754087#: src/view/screens/NotFound.tsx:57
40764076-#: src/view/screens/ProfileList.tsx:1038
40774088msgid "Go back"
40784089msgstr ""
40794090···40844095#: src/screens/Profile/ProfileFeed/index.tsx:97
40854096#: src/screens/StarterPack/StarterPackScreen.tsx:773
40864097#: src/view/screens/NotFound.tsx:56
40874087-#: src/view/screens/ProfileList.tsx:1043
40884098msgid "Go Back"
40894099msgstr ""
4090410040914101#: src/components/dms/ReportDialog.tsx:197
40924092-#: src/components/ReportDialog/SelectReportOptionView.tsx:78
41024102+#: src/components/ReportDialog/SelectReportOptionView.tsx:81
40934103#: src/components/ReportDialog/SubmitView.tsx:110
40944104#: src/screens/Onboarding/Layout.tsx:121
40954105#: src/screens/Onboarding/Layout.tsx:214
···42494259#: src/components/interstitials/Trending.tsx:131
42504260#: src/components/interstitials/TrendingVideos.tsx:138
42514261#: src/components/moderation/ContentHider.tsx:203
42524252-#: src/components/moderation/LabelPreference.tsx:141
42624262+#: src/components/moderation/LabelPreference.tsx:140
42534263#: src/components/moderation/PostHider.tsx:134
42544264#: src/components/PostControls/PostMenu/PostMenuItems.tsx:715
42554255-#: src/lib/moderation/useLabelBehaviorDescription.ts:15
42564256-#: src/lib/moderation/useLabelBehaviorDescription.ts:20
42574257-#: src/lib/moderation/useLabelBehaviorDescription.ts:25
42584258-#: src/lib/moderation/useLabelBehaviorDescription.ts:30
42654265+#: src/lib/moderation/useLabelBehaviorDescription.ts:18
42664266+#: src/lib/moderation/useLabelBehaviorDescription.ts:23
42674267+#: src/lib/moderation/useLabelBehaviorDescription.ts:28
42684268+#: src/lib/moderation/useLabelBehaviorDescription.ts:33
42594269#: src/view/shell/desktop/SidebarTrendingTopics.tsx:111
42604270msgid "Hide"
42614271msgstr ""
···44064416msgid "If you are not yet an adult according to the laws of your country, your parent or legal guardian must read these Terms on your behalf."
44074417msgstr ""
4408441844094409-#: src/view/screens/ProfileList.tsx:765
44194419+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:282
44104420msgid "If you delete this list, you won't be able to recover it."
44114421msgstr ""
44124422···44474457msgid "Illegal and Urgent"
44484458msgstr ""
4449445944504450-#: src/view/com/util/images/Gallery.tsx:71
44604460+#: src/view/com/util/images/Gallery.tsx:70
44514461msgid "Image"
44524462msgstr ""
44534463···45934603msgid "Invite codes: 1 available"
45944604msgstr ""
4595460545964596-#: src/components/StarterPack/ShareDialog.tsx:77
46064606+#: src/components/StarterPack/ShareDialog.tsx:81
45974607msgid "Invite people to this starter pack!"
45984608msgstr ""
45994609···48754885msgid "Liked by"
48764886msgstr ""
4877488748784878-#: src/screens/Post/PostLikedBy.tsx:38
48794879-#: src/screens/Profile/ProfileLabelerLikedBy.tsx:29
48804880-#: src/view/screens/ProfileFeedLikedBy.tsx:30
48884888+#: src/screens/Post/PostLikedBy.tsx:41
48894889+#: src/screens/Profile/ProfileLabelerLikedBy.tsx:32
48904890+#: src/view/screens/ProfileFeedLikedBy.tsx:33
48814891msgid "Liked By"
48824892msgstr ""
48834893···49274937msgid "List Avatar"
49284938msgstr ""
4929493949304930-#: src/view/screens/ProfileList.tsx:438
49404940+#: src/screens/ProfileList/components/SubscribeMenu.tsx:50
49314941msgctxt "toast"
49324942msgid "List blocked"
49334943msgstr ""
···49494959msgid "List creator"
49504960msgstr ""
4951496149524952-#: src/view/screens/ProfileList.tsx:485
49624962+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:97
49534963msgctxt "toast"
49544964msgid "List deleted"
49554965msgstr ""
···49584968msgid "List has been hidden"
49594969msgstr ""
4960497049614961-#: src/view/screens/ProfileList.tsx:176
49714971+#: src/screens/ProfileList/index.tsx:172
49624972msgid "List Hidden"
49634973msgstr ""
4964497449654965-#: src/view/screens/ProfileList.tsx:402
49754975+#: src/screens/ProfileList/components/SubscribeMenu.tsx:31
49664976msgctxt "toast"
49674977msgid "List muted"
49684978msgstr ""
···49714981msgid "List Name"
49724982msgstr ""
4973498349744974-#: src/view/screens/ProfileList.tsx:456
49844984+#: src/screens/ProfileList/components/Header.tsx:116
49854985+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:138
49754986msgctxt "toast"
49764987msgid "List unblocked"
49774988msgstr ""
4978498949794979-#: src/view/screens/ProfileList.tsx:420
49904990+#: src/screens/ProfileList/components/Header.tsx:98
49914991+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:120
49804992msgctxt "toast"
49814993msgid "List unmuted"
49824994msgstr ""
···5025503750265038#: src/screens/Profile/ProfileFeed/index.tsx:224
50275039#: src/screens/Profile/Sections/Feed.tsx:98
50285028-#: src/view/com/feeds/FeedPage.tsx:162
50295029-#: src/view/screens/ProfileList.tsx:878
50405040+#: src/screens/ProfileList/FeedSection.tsx:105
50415041+#: src/view/com/feeds/FeedPage.tsx:169
50305042msgid "Load new posts"
50315043msgstr ""
50325044···50595071msgid "Looks like XXXXX-XXXXX"
50605072msgstr ""
5061507350625062-#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:39
50745074+#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:43
50635075msgid "Looks like you haven't saved any feeds! Use our recommendations or browse more below."
50645076msgstr ""
50655077···50675079msgid "Looks like you unpinned all your feeds. But don't worry, you can add some below 😄"
50685080msgstr ""
5069508150705070-#: src/screens/Feeds/NoFollowingFeed.tsx:37
50825082+#: src/screens/Feeds/NoFollowingFeed.tsx:35
50715083msgid "Looks like you're missing a following feed. <0>Click here to add one.</0>"
50725084msgstr ""
50735085···52495261msgid "Moderation Lists"
52505262msgstr ""
5251526352525252-#: src/components/moderation/LabelPreference.tsx:252
52645264+#: src/components/moderation/LabelPreference.tsx:251
52535265msgid "moderation settings"
52545266msgstr ""
52555267···52765288msgid "More languages..."
52775289msgstr ""
5278529052915291+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:156
52795292#: src/view/com/profile/ProfileMenu.tsx:223
52805293#: src/view/com/profile/ProfileMenu.tsx:229
52815281-#: src/view/screens/ProfileList.tsx:750
52825294msgid "More options"
52835295msgstr ""
5284529652975297+#: src/screens/SavedFeeds.tsx:329
52985298+msgid "Move feed down"
52995299+msgstr ""
53005300+53015301+#: src/screens/SavedFeeds.tsx:320
53025302+msgid "Move feed up"
53035303+msgstr ""
53045304+52855305#: src/screens/Onboarding/state.ts:113
52865306msgid "Movies"
52875307msgstr ""
···52915311msgstr ""
5292531252935313#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx:153
52945294-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:96
53145314+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:95
52955315msgctxt "video"
52965316msgid "Mute"
52975317msgstr ""
···53085328msgid "Mute account"
53095329msgstr ""
5310533053115311-#: src/view/screens/ProfileList.tsx:657
53315331+#: src/screens/ProfileList/components/SubscribeMenu.tsx:89
53325332+#: src/screens/ProfileList/components/SubscribeMenu.tsx:92
53125333msgid "Mute accounts"
53135334msgstr ""
53145335···53215342msgid "Mute in:"
53225343msgstr ""
5323534453245324-#: src/view/screens/ProfileList.tsx:779
53455345+#: src/screens/ProfileList/components/SubscribeMenu.tsx:115
53255346msgid "Mute list"
53265347msgstr ""
5327534853285328-#: src/view/screens/ProfileList.tsx:774
53495349+#: src/screens/ProfileList/components/SubscribeMenu.tsx:110
53295350msgid "Mute these accounts?"
53305351msgstr ""
53315352···53845405msgid "Muted words & tags"
53855406msgstr ""
5386540753875387-#: src/view/screens/ProfileList.tsx:776
54085408+#: src/screens/ProfileList/components/SubscribeMenu.tsx:112
53885409msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
53895410msgstr ""
53905411···54445465msgid "Need to report a copyright violation, legal request, or regulatory compliance issue?"
54455466msgstr ""
5446546754475447-#: src/components/ReportDialog/SelectReportOptionView.tsx:128
54685468+#: src/components/ReportDialog/SelectReportOptionView.tsx:131
54485469msgid "Need to report a copyright violation?"
54495470msgstr ""
54505471···55265547msgstr ""
5527554855285549#: src/screens/Profile/ProfileFeed/index.tsx:241
55505550+#: src/screens/ProfileList/index.tsx:246
55515551+#: src/screens/ProfileList/index.tsx:284
55295552#: src/view/screens/Feeds.tsx:552
55305553#: src/view/screens/Notifications.tsx:167
55315554#: src/view/screens/Profile.tsx:510
55325532-#: src/view/screens/ProfileList.tsx:250
55335533-#: src/view/screens/ProfileList.tsx:288
55345555msgid "New post"
55355556msgstr ""
5536555755375537-#: src/view/com/feeds/FeedPage.tsx:173
55585558+#: src/view/com/feeds/FeedPage.tsx:180
55385559msgctxt "action"
55395560msgid "New post"
55405561msgstr ""
···55565577msgid "New starter pack"
55575578msgstr ""
5558557955595559-#: src/components/NewskieDialog.tsx:83
55805580+#: src/components/NewskieDialog.tsx:102
55605581msgid "New user info dialog"
55615582msgstr ""
55625583···56975718msgid "No results for \"{0}\"."
56985719msgstr ""
5699572057005700-#: src/components/Lists.tsx:190
57215721+#: src/components/Lists.tsx:189
57015722msgid "No results found"
57025723msgstr ""
57035724···57745795msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites."
57755796msgstr ""
5776579757775777-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:134
57985798+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:133
57785799msgid "Note: This post is only visible to logged-in users."
57795800msgstr ""
57805801···58455866msgid "Nudity or adult content not labeled as such"
58465867msgstr ""
5847586858485848-#: src/lib/moderation/useLabelBehaviorDescription.ts:11
58695869+#: src/lib/moderation/useLabelBehaviorDescription.ts:14
58495870#: src/screens/Settings/NotificationSettings/index.tsx:291
58505871msgid "Off"
58515872msgstr ""
···59265947msgid "Only image files are supported"
59275948msgstr ""
5928594959295929-#: src/view/com/composer/videos/SubtitleFilePicker.tsx:40
59505950+#: src/view/com/composer/videos/SubtitleFilePicker.tsx:41
59305951msgid "Only WebVTT (.vtt) files are supported"
59315952msgstr ""
5932595359335933-#: src/components/Lists.tsx:95
59545954+#: src/components/Lists.tsx:94
59345955msgid "Oops, something went wrong!"
59355956msgstr ""
5936595759375937-#: src/components/Lists.tsx:174
59585958+#: src/components/Lists.tsx:173
59385959#: src/components/StarterPack/ProfileStarterPacks.tsx:332
59395960#: src/components/StarterPack/ProfileStarterPacks.tsx:341
59405961#: src/screens/Settings/AppPasswords.tsx:59
···59986019msgid "Open pack"
59996020msgstr ""
6000602160016001-#: src/components/PostControls/PostMenu/index.tsx:65
60226022+#: src/components/PostControls/PostMenu/index.tsx:64
60026023msgid "Open post options menu"
60036024msgstr ""
60046025···60076028msgid "Open profile"
60086029msgstr ""
6009603060106010-#: src/components/PostControls/ShareMenu/index.tsx:90
60316031+#: src/components/PostControls/ShareMenu/index.tsx:89
60116032msgid "Open share menu"
60126033msgstr ""
60136034···60916112msgid "Opens list of invite codes"
60926113msgstr ""
6093611460946094-#: src/view/com/util/UserAvatar.tsx:576
61156115+#: src/view/com/util/UserAvatar.tsx:581
60956116msgid "Opens live status dialog"
60966117msgstr ""
60976118···61046125msgstr ""
6105612661066127#: src/view/com/notifications/NotificationFeedItem.tsx:906
61076107-#: src/view/com/util/UserAvatar.tsx:594
61286128+#: src/view/com/util/UserAvatar.tsx:599
61086129msgid "Opens this profile"
61096130msgstr ""
61106131···61676188msgid "Our moderators have reviewed reports and decided to disable your access to chats on Bluesky."
61686189msgstr ""
6169619061706170-#: src/components/Lists.tsx:191
61916191+#: src/components/Lists.tsx:190
61716192#: src/view/screens/NotFound.tsx:47
61726193msgid "Page not found"
61736194msgstr ""
···62116232msgid "Pause video"
62126233msgstr ""
6213623462356235+#: src/screens/ProfileList/index.tsx:166
62146236#: src/screens/Search/SearchResults.tsx:67
62156237#: src/screens/StarterPack/StarterPackScreen.tsx:189
62166216-#: src/view/screens/ProfileList.tsx:170
62176238msgid "People"
62186239msgstr ""
62196240···6253627462546275#: src/screens/Profile/components/ProfileFeedHeader.tsx:523
62556276#: src/screens/Profile/components/ProfileFeedHeader.tsx:530
62776277+#: src/screens/SavedFeeds.tsx:351
62566278msgid "Pin feed"
62576279msgstr ""
62586280···62606282msgid "Pin Feed"
62616283msgstr ""
6262628462636263-#: src/view/screens/ProfileList.tsx:714
62856285+#: src/screens/ProfileList/components/Header.tsx:156
62866286+#: src/screens/ProfileList/components/Header.tsx:163
62646287msgid "Pin to home"
62656288msgstr ""
62666289···62826305msgid "Pinned {0} to Home"
62836306msgstr ""
6284630762856285-#: src/view/screens/SavedFeeds.tsx:131
63086308+#: src/screens/SavedFeeds.tsx:142
62866309msgid "Pinned Feeds"
62876310msgstr ""
6288631162896289-#: src/view/screens/ProfileList.tsx:361
63126312+#: src/screens/ProfileList/components/Header.tsx:74
62906313msgid "Pinned to your feeds"
62916314msgstr ""
62926315···6562658565636586#: src/components/activity-notifications/SubscribeProfileDialog.tsx:250
65646587#: src/components/activity-notifications/SubscribeProfileDialog.tsx:262
65886588+#: src/screens/ProfileList/index.tsx:166
65656589#: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:213
65666590#: src/screens/StarterPack/StarterPackScreen.tsx:191
65676591#: src/view/screens/Profile.tsx:225
65686568-#: src/view/screens/ProfileList.tsx:170
65696592msgid "Posts"
65706593msgstr ""
65716594···65946617msgstr ""
6595661865966619#: src/components/Error.tsx:60
65976597-#: src/components/Lists.tsx:100
66206620+#: src/components/Lists.tsx:99
65986621#: src/screens/Messages/components/MessageListError.tsx:24
65996622#: src/screens/Signup/BackNextButtons.tsx:47
66006623msgid "Press to retry"
···66436666#: src/Navigation.tsx:331
66446667#: src/screens/Settings/AboutSettings.tsx:92
66456668#: src/screens/Settings/AboutSettings.tsx:95
66466646-#: src/view/screens/PrivacyPolicy.tsx:31
66696669+#: src/view/screens/PrivacyPolicy.tsx:34
66476670#: src/view/shell/Drawer.tsx:704
66486671#: src/view/shell/Drawer.tsx:705
66496672msgid "Privacy Policy"
···67236746msgid "Push, People you follow"
67246747msgstr ""
6725674867266726-#: src/components/StarterPack/QrCodeDialog.tsx:134
67496749+#: src/components/StarterPack/QrCodeDialog.tsx:137
67276750msgid "QR code copied to your clipboard!"
67286751msgstr ""
6729675267306730-#: src/components/StarterPack/QrCodeDialog.tsx:112
67536753+#: src/components/StarterPack/QrCodeDialog.tsx:115
67316754msgid "QR code has been downloaded!"
67326755msgstr ""
6733675667346734-#: src/components/StarterPack/QrCodeDialog.tsx:113
67576757+#: src/components/StarterPack/QrCodeDialog.tsx:116
67356758msgid "QR code saved to your camera roll!"
67366759msgstr ""
67376760···67666789msgstr ""
6767679067686791#: src/lib/hooks/useNotificationHandler.ts:154
67696769-#: src/screens/Post/PostQuotes.tsx:38
67926792+#: src/screens/Post/PostQuotes.tsx:41
67706793#: src/screens/Settings/NotificationSettings/index.tsx:170
67716794#: src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx:41
67726795msgid "Quotes"
···69296952msgid "Remove Banner"
69306953msgstr ""
6931695469326932-#: src/screens/Messages/components/MessageInputEmbed.tsx:209
69556955+#: src/screens/Messages/components/MessageInputEmbed.tsx:212
69336956msgid "Remove embed"
69346957msgstr ""
69356958···6945696869466969#: src/screens/Profile/components/ProfileFeedHeader.tsx:319
69476970#: src/screens/Profile/components/ProfileFeedHeader.tsx:325
69486948-#: src/view/screens/ProfileList.tsx:528
69496949-#: src/view/screens/SavedFeeds.tsx:350
69716971+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:188
69726972+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:191
69736973+#: src/screens/SavedFeeds.tsx:340
69506974msgid "Remove from my feeds"
69516975msgstr ""
69526976···70407064msgstr ""
7041706570427066#: src/screens/Profile/components/ProfileFeedHeader.tsx:122
70677067+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:74
70437068#: src/view/com/posts/FeedShutdownMsg.tsx:44
70447044-#: src/view/screens/ProfileList.tsx:392
70457069msgid "Removed from your feeds"
70467070msgstr ""
70477071···71677191msgid "Report feed"
71687192msgstr ""
7169719371707170-#: src/view/screens/ProfileList.tsx:570
71947194+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:222
71957195+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:225
71717196msgid "Report list"
71727197msgstr ""
71737198···71897214msgid "Report submitted"
71907215msgstr ""
7191721671927192-#: src/components/ReportDialog/SelectReportOptionView.tsx:41
72177217+#: src/components/ReportDialog/SelectReportOptionView.tsx:44
71937218msgid "Report this content"
71947219msgstr ""
7195722071967221#: src/components/moderation/ReportDialog/copy.ts:31
71977197-#: src/components/ReportDialog/SelectReportOptionView.tsx:54
72227222+#: src/components/ReportDialog/SelectReportOptionView.tsx:57
71987223msgid "Report this feed"
71997224msgstr ""
7200722572017226#: src/components/moderation/ReportDialog/copy.ts:25
72027202-#: src/components/ReportDialog/SelectReportOptionView.tsx:51
72277227+#: src/components/ReportDialog/SelectReportOptionView.tsx:54
72037228msgid "Report this list"
72047229msgstr ""
7205723072067231#: src/components/dms/ReportDialog.tsx:61
72077232#: src/components/dms/ReportDialog.tsx:185
72087233#: src/components/moderation/ReportDialog/copy.ts:43
72097209-#: src/components/ReportDialog/SelectReportOptionView.tsx:60
72347234+#: src/components/ReportDialog/SelectReportOptionView.tsx:63
72107235msgid "Report this message"
72117236msgstr ""
7212723772137238#: src/components/moderation/ReportDialog/copy.ts:19
72147214-#: src/components/ReportDialog/SelectReportOptionView.tsx:48
72397239+#: src/components/ReportDialog/SelectReportOptionView.tsx:51
72157240msgid "Report this post"
72167241msgstr ""
7217724272187243#: src/components/moderation/ReportDialog/copy.ts:37
72197219-#: src/components/ReportDialog/SelectReportOptionView.tsx:57
72447244+#: src/components/ReportDialog/SelectReportOptionView.tsx:60
72207245msgid "Report this starter pack"
72217246msgstr ""
7222724772237248#: src/components/moderation/ReportDialog/copy.ts:13
72247224-#: src/components/ReportDialog/SelectReportOptionView.tsx:45
72497249+#: src/components/ReportDialog/SelectReportOptionView.tsx:48
72257250msgid "Report this user"
72267251msgstr ""
72277252···72497274msgid "Repost or quote post"
72507275msgstr ""
7251727672527252-#: src/screens/Post/PostRepostedBy.tsx:38
72777277+#: src/screens/Post/PostRepostedBy.tsx:41
72537278msgid "Reposted By"
72547279msgstr ""
72557280···7354737973557380#: src/components/dms/MessageItem.tsx:322
73567381#: src/components/Error.tsx:65
73577357-#: src/components/Lists.tsx:111
73827382+#: src/components/Lists.tsx:110
73587383#: src/components/moderation/ReportDialog/index.tsx:229
73597359-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoFallback.tsx:55
73607360-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoFallback.tsx:57
73847384+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoFallback.tsx:54
73857385+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoFallback.tsx:56
73617386#: src/components/StarterPack/ProfileStarterPacks.tsx:346
73627387#: src/screens/Login/LoginForm.tsx:323
73637388#: src/screens/Login/LoginForm.tsx:330
···73917416msgstr ""
7392741773937418#: src/screens/Profile/ProfileFeed/index.tsx:93
74197419+#: src/screens/ProfileList/components/ErrorScreen.tsx:35
73947420#: src/screens/Settings/components/ChangeHandleDialog.tsx:569
73957421#: src/screens/VideoFeed/index.tsx:1147
73967422#: src/view/screens/NotFound.tsx:60
73977397-#: src/view/screens/ProfileList.tsx:1039
73987423msgid "Returns to previous page"
73997424msgstr ""
74007425···74077432#: src/components/dialogs/PostInteractionSettingsDialog.tsx:489
74087433#: src/components/live/EditLiveDialog.tsx:216
74097434#: src/components/live/EditLiveDialog.tsx:223
74107410-#: src/components/StarterPack/QrCodeDialog.tsx:192
74357435+#: src/components/StarterPack/QrCodeDialog.tsx:204
74117436#: src/screens/Profile/Header/EditProfileDialog.tsx:238
74127437#: src/screens/Profile/Header/EditProfileDialog.tsx:252
74387438+#: src/screens/SavedFeeds.tsx:120
74137439#: src/screens/Settings/components/ChangeHandleDialog.tsx:267
74147440#: src/view/com/composer/GifAltText.tsx:193
74157441#: src/view/com/composer/GifAltText.tsx:202
···74187444#: src/view/com/composer/photos/ImageAltTextDialog.tsx:152
74197445#: src/view/com/composer/photos/ImageAltTextDialog.tsx:162
74207446#: src/view/com/modals/CreateOrEditList.tsx:315
74217421-#: src/view/screens/SavedFeeds.tsx:117
74227447msgid "Save"
74237448msgstr ""
74247449···7434745974357460#: src/components/activity-notifications/SubscribeProfileDialog.tsx:191
74367461#: src/components/activity-notifications/SubscribeProfileDialog.tsx:200
74377437-#: src/view/screens/SavedFeeds.tsx:113
74387438-#: src/view/screens/SavedFeeds.tsx:117
74627462+#: src/screens/SavedFeeds.tsx:116
74637463+#: src/screens/SavedFeeds.tsx:120
74397464msgid "Save changes"
74407465msgstr ""
7441746674427442-#: src/components/StarterPack/ShareDialog.tsx:131
74437467#: src/components/StarterPack/ShareDialog.tsx:138
74687468+#: src/components/StarterPack/ShareDialog.tsx:144
74447469msgid "Save image"
74457470msgstr ""
74467471···74527477msgid "Save new handle"
74537478msgstr ""
7454747974557455-#: src/components/StarterPack/QrCodeDialog.tsx:186
74807480+#: src/components/StarterPack/QrCodeDialog.tsx:196
74567481msgid "Save QR code"
74577482msgstr ""
74587483···74677492msgid "Saved"
74687493msgstr ""
7469749474707470-#: src/view/screens/SavedFeeds.tsx:172
74957495+#: src/screens/SavedFeeds.tsx:184
74717496msgid "Saved Feeds"
74727497msgstr ""
74737498···74787503msgstr ""
7479750474807505#: src/screens/Profile/components/ProfileFeedHeader.tsx:132
74817481-#: src/view/screens/ProfileList.tsx:372
75067506+#: src/screens/ProfileList/components/Header.tsx:85
74827507msgid "Saved to your feeds"
74837508msgstr ""
74847509···74877512msgstr ""
7488751374897514#: src/components/dms/ChatEmptyPill.tsx:33
74907490-#: src/components/NewskieDialog.tsx:105
75157515+#: src/components/NewskieDialog.tsx:121
74917516#: src/view/com/notifications/NotificationFeedItem.tsx:751
74927517#: src/view/com/notifications/NotificationFeedItem.tsx:776
74937518msgid "Say hello!"
···75067531msgid "Scroll right"
75077532msgstr ""
7508753375097509-#: src/view/screens/ProfileList.tsx:996
75347534+#: src/screens/ProfileList/AboutSection.tsx:130
75107535msgid "Scroll to top"
75117536msgstr ""
75127537···76397664msgid "See more suggested profiles on the Explore page"
76407665msgstr ""
7641766676427642-#: src/view/screens/SavedFeeds.tsx:213
76677667+#: src/screens/SavedFeeds.tsx:220
76437668msgid "See this guide"
76447669msgstr ""
7645767076467646-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/Scrubber.tsx:197
76717671+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/Scrubber.tsx:196
76477672msgid "Seek slider. Use the arrow keys to seek forwards and backwards, and space to play/pause"
76487673msgstr ""
76497674···77437768msgid "Select primary language"
77447769msgstr ""
7745777077467746-#: src/view/com/composer/videos/SubtitleFilePicker.tsx:59
77477747-#: src/view/com/composer/videos/SubtitleFilePicker.tsx:66
77717771+#: src/view/com/composer/videos/SubtitleFilePicker.tsx:60
77727772+#: src/view/com/composer/videos/SubtitleFilePicker.tsx:67
77487773msgid "Select subtitle file (.vtt)"
77497774msgstr ""
77507775···7849787478507875#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:101
78517876#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:107
78527852-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:104
78537853-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:110
78777877+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:103
78787878+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:109
78547879msgid "Send via direct message"
78557880msgstr ""
78567881···79467971msgid "Sexually Suggestive"
79477972msgstr ""
7948797379497949-#: src/components/StarterPack/QrCodeDialog.tsx:182
79747974+#: src/components/StarterPack/QrCodeDialog.tsx:192
79507975#: src/screens/Hashtag.tsx:126
79517976#: src/screens/StarterPack/StarterPackScreen.tsx:433
79527977#: src/screens/Topic.tsx:102
79537953-#: src/view/screens/ProfileList.tsx:513
79547978msgid "Share"
79557979msgstr ""
79567980···7978800279798003#: src/components/dialogs/LinkWarning.tsx:96
79808004#: src/components/dialogs/LinkWarning.tsx:104
79817981-#: src/components/StarterPack/ShareDialog.tsx:104
79827982-#: src/components/StarterPack/ShareDialog.tsx:111
80058005+#: src/components/StarterPack/ShareDialog.tsx:113
80068006+#: src/components/StarterPack/ShareDialog.tsx:119
79838007msgid "Share link"
79848008msgstr ""
7985800979867986-#: src/components/StarterPack/ShareDialog.tsx:68
80108010+#: src/components/StarterPack/ShareDialog.tsx:72
79878011msgid "Share link dialog"
79888012msgstr ""
79898013···79928016msgid "Share post at:// URI"
79938017msgstr ""
7994801879957995-#: src/components/StarterPack/ShareDialog.tsx:115
79967996-#: src/components/StarterPack/ShareDialog.tsx:126
80198019+#: src/components/StarterPack/ShareDialog.tsx:123
80208020+#: src/components/StarterPack/ShareDialog.tsx:133
79978021msgid "Share QR code"
79988022msgstr ""
79998023···80058029msgid "Share this starter pack"
80068030msgstr ""
8007803180088008-#: src/components/StarterPack/ShareDialog.tsx:80
80328032+#: src/components/StarterPack/ShareDialog.tsx:84
80098033msgid "Share this starter pack and help people join your community on Bluesky."
80108034msgstr ""
8011803580128036#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:117
80138037#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:120
80388038+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:172
80398039+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:178
80148040#: src/screens/StarterPack/StarterPackScreen.tsx:611
80158041#: src/screens/StarterPack/StarterPackScreen.tsx:619
80168042#: src/view/com/profile/ProfileMenu.tsx:246
···80278053msgstr ""
8028805480298055#: src/components/moderation/ContentHider.tsx:203
80308030-#: src/components/moderation/LabelPreference.tsx:143
80568056+#: src/components/moderation/LabelPreference.tsx:142
80318057#: src/components/moderation/PostHider.tsx:134
80328058msgid "Show"
80338059msgstr ""
···80448070msgid "Show anyway"
80458071msgstr ""
8046807280478047-#: src/lib/moderation/useLabelBehaviorDescription.ts:27
80488048-#: src/lib/moderation/useLabelBehaviorDescription.ts:63
80738073+#: src/lib/moderation/useLabelBehaviorDescription.ts:30
80748074+#: src/lib/moderation/useLabelBehaviorDescription.ts:66
80498075msgid "Show badge"
80508076msgstr ""
8051807780528052-#: src/lib/moderation/useLabelBehaviorDescription.ts:61
80788078+#: src/lib/moderation/useLabelBehaviorDescription.ts:64
80538079msgid "Show badge and filter from feeds"
80548080msgstr ""
80558081···81168142msgid "Show samples of your saved feeds in your Following feed"
81178143msgstr ""
8118814481198119-#: src/lib/moderation/useLabelBehaviorDescription.ts:58
81458145+#: src/lib/moderation/useLabelBehaviorDescription.ts:61
81208146msgid "Show warning"
81218147msgstr ""
8122814881238123-#: src/lib/moderation/useLabelBehaviorDescription.ts:56
81498149+#: src/lib/moderation/useLabelBehaviorDescription.ts:59
81248150msgid "Show warning and filter from feeds"
81258151msgstr ""
81268152···82998325msgid "Something went wrong, please try again."
83008326msgstr ""
8301832783028302-#: src/components/Lists.tsx:175
83288328+#: src/components/Lists.tsx:174
83038329msgid "Something went wrong!"
83048330msgstr ""
83058331···83638389msgid "Start a new chat"
83648390msgstr ""
8365839183668366-#: src/view/screens/ProfileList.tsx:846
83678367-#: src/view/screens/ProfileList.tsx:967
83928392+#: src/screens/ProfileList/AboutSection.tsx:102
83938393+#: src/screens/ProfileList/FeedSection.tsx:74
83688394msgid "Start adding people"
83698395msgstr ""
8370839683718371-#: src/view/screens/ProfileList.tsx:853
83728372-#: src/view/screens/ProfileList.tsx:974
83978397+#: src/screens/ProfileList/AboutSection.tsx:108
83988398+#: src/screens/ProfileList/FeedSection.tsx:80
83738399msgid "Start adding people!"
83748400msgstr ""
83758401···84508476msgid "Submit report"
84518477msgstr ""
8452847884538453-#: src/view/screens/ProfileList.tsx:741
84798479+#: src/screens/ProfileList/components/SubscribeMenu.tsx:81
84548480msgid "Subscribe"
84558481msgstr ""
84568482···84708496msgid "Subscribe to this labeler"
84718497msgstr ""
8472849884738473-#: src/view/screens/ProfileList.tsx:737
84998499+#: src/screens/ProfileList/components/SubscribeMenu.tsx:69
84748500msgid "Subscribe to this list"
84758501msgstr ""
84768502···85138539msgstr ""
8514854085158541#: src/Navigation.tsx:326
85168516-#: src/view/screens/Support.tsx:31
85178542#: src/view/screens/Support.tsx:34
85438543+#: src/view/screens/Support.tsx:37
85188544msgid "Support"
85198545msgstr ""
85208546···86228648#: src/Navigation.tsx:336
86238649#: src/screens/Settings/AboutSettings.tsx:84
86248650#: src/screens/Settings/AboutSettings.tsx:87
86258625-#: src/view/screens/TermsOfService.tsx:31
86518651+#: src/view/screens/TermsOfService.tsx:34
86268652#: src/view/shell/Drawer.tsx:697
86278653#: src/view/shell/Drawer.tsx:699
86288654msgid "Terms of Service"
···87178743msgid "The Bluesky web application"
87188744msgstr ""
8719874587208720-#: src/view/screens/CommunityGuidelines.tsx:38
87468746+#: src/view/screens/CommunityGuidelines.tsx:41
87218747msgid "The Community Guidelines have been moved to <0/>"
87228748msgstr ""
8723874987248724-#: src/view/screens/CopyrightPolicy.tsx:35
87508750+#: src/view/screens/CopyrightPolicy.tsx:38
87258751msgid "The Copyright Policy has been moved to <0/>"
87268752msgstr ""
87278753···87658791msgid "The open social network."
87668792msgstr ""
8767879387688768-#: src/view/screens/PrivacyPolicy.tsx:35
87948794+#: src/view/screens/PrivacyPolicy.tsx:38
87698795msgid "The Privacy Policy has been moved to <0/>"
87708796msgstr ""
87718797···87838809msgid "The starter pack that you are trying to view is invalid. You may delete this starter pack instead."
87848810msgstr ""
8785881187868786-#: src/components/ContextMenu/index.tsx:433
88128812+#: src/components/ContextMenu/index.tsx:434
87878813msgid "The subject of the context menu"
87888814msgstr ""
8789881587908790-#: src/view/screens/Support.tsx:37
88168816+#: src/view/screens/Support.tsx:40
87918817msgid "The support form has been moved. If you need help, please <0/> or visit {HELP_DESK_URL} to get in touch with us."
87928818msgstr ""
8793881987948794-#: src/view/screens/TermsOfService.tsx:35
88208820+#: src/view/screens/TermsOfService.tsx:38
87958821msgid "The Terms of Service have been moved to"
87968822msgstr ""
87978823···88128838msgstr ""
8813883988148840#: src/screens/Profile/components/ProfileFeedHeader.tsx:178
88158815-#: src/view/screens/ProfileList.tsx:375
88168816-#: src/view/screens/ProfileList.tsx:394
88178817-#: src/view/screens/SavedFeeds.tsx:93
88418841+#: src/screens/ProfileList/components/Header.tsx:88
88428842+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:76
88438843+#: src/screens/SavedFeeds.tsx:97
88188844msgid "There was an issue contacting the server"
88198845msgstr ""
88208846···88288854msgstr ""
8829885588308856#: src/screens/Search/Explore.tsx:986
88318831-#: src/view/com/posts/PostFeed.tsx:701
88578857+#: src/view/com/posts/PostFeed.tsx:709
88328858msgid "There was an issue fetching posts. Tap here to try again."
88338859msgstr ""
88348860···88858911#: src/screens/List/ListHiddenScreen.tsx:63
88868912#: src/screens/List/ListHiddenScreen.tsx:77
88878913#: src/screens/List/ListHiddenScreen.tsx:99
88888888-#: src/view/screens/ProfileList.tsx:411
88898889-#: src/view/screens/ProfileList.tsx:429
88908890-#: src/view/screens/ProfileList.tsx:447
88918891-#: src/view/screens/ProfileList.tsx:465
89148914+#: src/screens/ProfileList/components/Header.tsx:107
89158915+#: src/screens/ProfileList/components/Header.tsx:125
89168916+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:129
89178917+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:147
89188918+#: src/screens/ProfileList/components/SubscribeMenu.tsx:40
89198919+#: src/screens/ProfileList/components/SubscribeMenu.tsx:59
88928920msgid "There was an issue. Please check your internet connection and try again."
88938921msgstr ""
88948922···89799007msgid "This feature allows users to receive notifications for your new posts and replies. Who do you want to enable this for?"
89809008msgstr ""
8981900989828982-#: src/screens/Settings/components/ExportCarDialog.tsx:96
90109010+#: src/screens/Settings/components/ExportCarDialog.tsx:95
89839011msgid "This feature is in beta. You can read more about repository exports in <0>this blogpost</0>."
89849012msgstr ""
89859013···9001902990029030#: src/components/StarterPack/Main/PostsList.tsx:36
90039031#: src/screens/Profile/ProfileFeed/index.tsx:192
90049004-#: src/view/screens/ProfileList.tsx:843
90329032+#: src/screens/ProfileList/FeedSection.tsx:71
90059033msgid "This feed is empty."
90069034msgstr ""
90079035···90469074msgid "This list – created by you – contains possible violations of Bluesky's community guidelines in its name or description."
90479075msgstr ""
9048907690499049-#: src/view/screens/ProfileList.tsx:962
90779077+#: src/screens/ProfileList/AboutSection.tsx:98
90509078msgid "This list is empty."
90519079msgstr ""
90529080···91279155msgid "This user is included in the <0>{0}</0> list which you have muted."
91289156msgstr ""
9129915791309130-#: src/components/NewskieDialog.tsx:65
91589158+#: src/components/NewskieDialog.tsx:47
91319159msgid "This user is new here. Press for more info about when they joined."
91329160msgstr ""
91339161···93159343#: src/components/dms/MessagesListBlockedFooter.tsx:119
93169344#: src/screens/Profile/Header/ProfileHeaderStandard.tsx:208
93179345#: src/screens/Profile/Header/ProfileHeaderStandard.tsx:328
93469346+#: src/screens/ProfileList/components/Header.tsx:171
93479347+#: src/screens/ProfileList/components/Header.tsx:178
93189348#: src/view/com/profile/ProfileMenu.tsx:490
93199319-#: src/view/screens/ProfileList.tsx:723
93209349msgid "Unblock"
93219350msgstr ""
93229351···93379366msgid "Unblock Account?"
93389367msgstr ""
9339936893409340-#: src/view/screens/ProfileList.tsx:620
93699369+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:254
93709370+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:257
93419371msgid "Unblock list"
93429372msgstr ""
93439373···93969426msgstr ""
9397942793989428#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx:152
93999399-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:95
94299429+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:94
94009430msgctxt "video"
94019431msgid "Unmute"
94029432msgstr ""
9403943394049404-#: src/view/screens/ProfileList.tsx:730
94349434+#: src/screens/ProfileList/components/Header.tsx:185
94359435+#: src/screens/ProfileList/components/Header.tsx:192
94059436msgid "Unmute"
94069437msgstr ""
94079438···94219452msgid "Unmute conversation"
94229453msgstr ""
9423945494249424-#: src/view/screens/ProfileList.tsx:605
94559455+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:264
94569456+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:267
94259457msgid "Unmute list"
94269458msgstr ""
94279459···94349466msgid "Unmute video"
94359467msgstr ""
9436946894379437-#: src/view/screens/ProfileList.tsx:714
94699469+#: src/screens/ProfileList/components/Header.tsx:156
94709470+#: src/screens/ProfileList/components/Header.tsx:163
94389471msgid "Unpin"
94399472msgstr ""
9440947394419474#: src/screens/Profile/components/ProfileFeedHeader.tsx:523
94429475#: src/screens/Profile/components/ProfileFeedHeader.tsx:530
94769476+#: src/screens/SavedFeeds.tsx:351
94439477msgid "Unpin feed"
94449478msgstr ""
94459479···94579491msgid "Unpin from profile"
94589492msgstr ""
9459949394609460-#: src/view/screens/ProfileList.tsx:585
94949494+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:237
94959495+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:240
94619496msgid "Unpin moderation list"
94629497msgstr ""
94639498···94659500msgid "Unpinned {0} from Home"
94669501msgstr ""
9467950294689468-#: src/view/screens/ProfileList.tsx:362
95039503+#: src/screens/ProfileList/components/Header.tsx:75
94699504msgid "Unpinned from your feeds"
95059505+msgstr ""
95069506+95079507+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:109
95089508+msgid "Unpinned list"
94709509msgstr ""
9471951094729511#: src/screens/Settings/Settings.tsx:474
···96049643msgid "Use my default browser"
96059644msgstr ""
9606964596079607-#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:53
96469646+#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:56
96089647msgid "Use recommended"
96099648msgstr ""
96109649···98319870msgid "Video is playing"
98329871msgstr ""
9833987298349834-#: src/components/Post/Embed/VideoEmbed/index.web.tsx:220
98739873+#: src/components/Post/Embed/VideoEmbed/index.web.tsx:219
98359874msgid "Video not found."
98369875msgstr ""
98379876···98809919msgid "View blocked user's profile"
98819920msgstr ""
9882992198839883-#: src/screens/Settings/components/ExportCarDialog.tsx:100
99229922+#: src/screens/Settings/components/ExportCarDialog.tsx:99
98849923msgid "View blogpost for more details"
98859924msgstr ""
98869925···98889927msgid "View debug entry"
98899928msgstr ""
9890992998919891-#: src/components/ReportDialog/SelectReportOptionView.tsx:137
99309930+#: src/components/ReportDialog/SelectReportOptionView.tsx:140
98929931#: src/screens/VideoFeed/index.tsx:659
98939932#: src/screens/VideoFeed/index.tsx:677
98949933msgid "View details"
98959934msgstr ""
9896993598979897-#: src/components/ReportDialog/SelectReportOptionView.tsx:132
99369936+#: src/components/ReportDialog/SelectReportOptionView.tsx:135
98989937msgid "View details for reporting a copyright violation"
98999938msgstr ""
99009939···99029941msgid "View full thread"
99039942msgstr ""
9904994399059905-#: src/components/moderation/LabelsOnMe.tsx:46
99449944+#: src/components/moderation/LabelsOnMe.tsx:51
99069945msgid "View information about these labels"
99079946msgstr ""
99089947···99259964#: src/components/ProfileHoverCard/index.web.tsx:486
99269965#: src/components/ProfileHoverCard/index.web.tsx:513
99279966#: src/view/com/posts/PostFeedErrorMessage.tsx:179
99289928-#: src/view/com/util/PostMeta.tsx:91
99299929-#: src/view/com/util/PostMeta.tsx:128
99679967+#: src/view/com/util/PostMeta.tsx:90
99689968+#: src/view/com/util/PostMeta.tsx:127
99309969msgid "View profile"
99319970msgstr ""
99329971···99589997msgid "View your default post interaction settings"
99599998msgstr ""
9960999999619961-#: src/view/com/home/HomeHeaderLayout.web.tsx:56
99629962-#: src/view/com/home/HomeHeaderLayoutMobile.tsx:71
1000010000+#: src/view/com/home/HomeHeaderLayout.web.tsx:57
1000110001+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:72
996310002msgid "View your feeds and explore more"
996410003msgstr ""
996510004···999310032msgid "Visit your notification settings"
999410033msgstr ""
99951003499969996-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:81
1003510035+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:80
999710036msgid "Volume"
999810037msgstr ""
9999100381000010000-#: src/components/moderation/LabelPreference.tsx:142
1000110001-#: src/lib/moderation/useLabelBehaviorDescription.ts:17
1000210002-#: src/lib/moderation/useLabelBehaviorDescription.ts:22
1003910039+#: src/components/moderation/LabelPreference.tsx:141
1004010040+#: src/lib/moderation/useLabelBehaviorDescription.ts:20
1004110041+#: src/lib/moderation/useLabelBehaviorDescription.ts:25
1000310042msgid "Warn"
1000410043msgstr ""
10005100441000610006-#: src/lib/moderation/useLabelBehaviorDescription.ts:48
1004510045+#: src/lib/moderation/useLabelBehaviorDescription.ts:51
1000710046msgid "Warn content"
1000810047msgstr ""
10009100481001010010-#: src/lib/moderation/useLabelBehaviorDescription.ts:46
1004910049+#: src/lib/moderation/useLabelBehaviorDescription.ts:49
1001110050msgid "Warn content and filter from feeds"
1001210051msgstr ""
1001310052···1013310172msgid "We're sorry, but based on your device's location, you are currently located in a region where we cannot provide access at this time."
1013410173msgstr ""
10135101741013610136-#: src/view/screens/ProfileList.tsx:117
1017510175+#: src/screens/ProfileList/index.tsx:87
1013710176msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
1013810177msgstr ""
1013910178···1014910188msgid "We're sorry! The post you are replying to has been deleted."
1015010189msgstr ""
10151101901015210152-#: src/components/Lists.tsx:195
1019110191+#: src/components/Lists.tsx:194
1015310192#: src/view/screens/NotFound.tsx:50
1015410193msgid "We're sorry! We can't find the page you were looking for."
1015510194msgstr ""
···1018210221msgid "Welcome back!"
1018310222msgstr ""
10184102231018510185-#: src/components/NewskieDialog.tsx:103
1022410224+#: src/components/NewskieDialog.tsx:121
1018610225msgid "Welcome, friend!"
1018710226msgstr ""
1018810227···1023510274msgid "Why are you appealing?"
1023610275msgstr ""
10237102761023810238-#: src/components/ReportDialog/SelectReportOptionView.tsx:42
1027710277+#: src/components/ReportDialog/SelectReportOptionView.tsx:45
1023910278msgid "Why should this content be reviewed?"
1024010279msgstr ""
10241102801024210281#: src/components/moderation/ReportDialog/copy.ts:32
1024310243-#: src/components/ReportDialog/SelectReportOptionView.tsx:55
1028210282+#: src/components/ReportDialog/SelectReportOptionView.tsx:58
1024410283msgid "Why should this feed be reviewed?"
1024510284msgstr ""
10246102851024710286#: src/components/moderation/ReportDialog/copy.ts:26
1024810248-#: src/components/ReportDialog/SelectReportOptionView.tsx:52
1028710287+#: src/components/ReportDialog/SelectReportOptionView.tsx:55
1024910288msgid "Why should this list be reviewed?"
1025010289msgstr ""
10251102901025210291#: src/components/moderation/ReportDialog/copy.ts:44
1025310253-#: src/components/ReportDialog/SelectReportOptionView.tsx:61
1029210292+#: src/components/ReportDialog/SelectReportOptionView.tsx:64
1025410293msgid "Why should this message be reviewed?"
1025510294msgstr ""
10256102951025710296#: src/components/moderation/ReportDialog/copy.ts:20
1025810258-#: src/components/ReportDialog/SelectReportOptionView.tsx:49
1029710297+#: src/components/ReportDialog/SelectReportOptionView.tsx:52
1025910298msgid "Why should this post be reviewed?"
1026010299msgstr ""
10261103001026210301#: src/components/moderation/ReportDialog/copy.ts:38
1026310263-#: src/components/ReportDialog/SelectReportOptionView.tsx:58
1030210302+#: src/components/ReportDialog/SelectReportOptionView.tsx:61
1026410303msgid "Why should this starter pack be reviewed?"
1026510304msgstr ""
10266103051026710306#: src/components/moderation/ReportDialog/copy.ts:14
1026810268-#: src/components/ReportDialog/SelectReportOptionView.tsx:46
1030710307+#: src/components/ReportDialog/SelectReportOptionView.tsx:49
1026910308msgid "Why should this user be reviewed?"
1027010309msgstr ""
1027110310···1029710336msgid "www.mylivestream.tv"
1029810337msgstr ""
10299103381030010300-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:100
1033910339+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:102
1030110340msgid "Yes"
1030210341msgstr ""
1030310342···1032610365msgid "Yesterday"
1032710366msgstr ""
10328103671032910329-#: src/components/NewskieDialog.tsx:43
1036810368+#: src/components/NewskieDialog.tsx:91
1033010369msgid "You"
1033110370msgstr ""
1033210371···1044810487msgid "You do not have any followers."
1044910488msgstr ""
10450104891045110451-#: src/screens/Profile/KnownFollowers.tsx:109
1049010490+#: src/screens/Profile/KnownFollowers.tsx:112
1045210491msgid "You don't follow any users who follow @{name}."
1045310492msgstr ""
1045410493···1046010499msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer."
1046110500msgstr ""
10462105011046310463-#: src/view/screens/SavedFeeds.tsx:145
1050210502+#: src/screens/SavedFeeds.tsx:149
1046410503msgid "You don't have any pinned feeds."
1046510504msgstr ""
10466105051046710467-#: src/view/screens/SavedFeeds.tsx:185
1050610506+#: src/screens/SavedFeeds.tsx:191
1046810507msgid "You don't have any saved feeds."
1046910508msgstr ""
1047010509···1053010569msgid "You have not muted any accounts yet. To mute an account, go to their profile and select \"Mute account\" from the menu on their account."
1053110570msgstr ""
10532105711053310533-#: src/components/Lists.tsx:58
1057210572+#: src/components/Lists.tsx:57
1053410573msgid "You have reached the end"
1053510574msgstr ""
1053610575···1059510634msgid "You must complete age assurance in order to access this screen."
1059610635msgstr ""
10597106361059810598-#: src/components/StarterPack/QrCodeDialog.tsx:61
1063710637+#: src/components/StarterPack/QrCodeDialog.tsx:65
1059910638msgid "You must grant access to your photo library to save a QR code"
1060010639msgstr ""
1060110640···1077110810msgid "Your birth date"
1077210811msgstr ""
10773108121077410774-#: src/components/Post/Embed/VideoEmbed/index.web.tsx:224
1081310813+#: src/components/Post/Embed/VideoEmbed/index.web.tsx:223
1077510814msgid "Your browser does not support the video format. Please try a different browser."
1077610815msgstr ""
1077710816
+1-1
src/logger/__tests__/logDump.test.ts
···11import {expect, test} from '@jest/globals'
2233-import {add, ConsoleTransportEntry, getEntries} from '#/logger/logDump'
33+import {add, type ConsoleTransportEntry, getEntries} from '#/logger/logDump'
44import {LogContext, LogLevel} from '#/logger/types'
5566test('works', () => {
+1-1
src/logger/logDump.ts
···11-import type {LogContext, LogLevel, Metadata} from '#/logger/types'
11+import {type LogContext, type LogLevel, type Metadata} from '#/logger/types'
2233export type ConsoleTransportEntry = {
44 id: string
+1-1
src/logger/transports/bitdrift.ts
···11import {debug, error, info, warn} from '#/logger/bitdrift/lib'
22-import {LogLevel, Transport} from '#/logger/types'
22+import {LogLevel, type Transport} from '#/logger/types'
33import {prepareMetadata} from '#/logger/util'
4455const logFunctions = {
+1-1
src/logger/transports/console.ts
···11import format from 'date-fns/format'
2233-import {LogLevel, Transport} from '#/logger/types'
33+import {LogLevel, type Transport} from '#/logger/types'
44import {prepareMetadata} from '#/logger/util'
55import {isWeb} from '#/platform/detection'
66
+1-1
src/logger/util.ts
···11-import {LogLevel, Metadata, Serializable} from '#/logger/types'
11+import {LogLevel, type Metadata, type Serializable} from '#/logger/types'
2233export const enabledLogLevels: {
44 [key in LogLevel]: LogLevel[]
-49
src/platform/polyfills.ts
···11import 'react-native-url-polyfill/auto'
22import 'fast-text-encoding'
33export {}
44-55-/**
66-https://github.com/MaxArt2501/base64-js
77-The MIT License (MIT)
88-Copyright (c) 2014 MaxArt2501
99- */
1010-1111-const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
1212-// Regular expression to check formal correctness of base64 encoded strings
1313-const b64re =
1414- /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/
1515-1616-globalThis.atob = (str: string): string => {
1717- // atob can work with strings with whitespaces, even inside the encoded part,
1818- // but only \t, \n, \f, \r and ' ', which can be stripped.
1919- str = String(str).replace(/[\t\n\f\r ]+/g, '')
2020- if (!b64re.test(str)) {
2121- throw new TypeError(
2222- "Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.",
2323- )
2424- }
2525-2626- // Adding the padding if missing, for simplicity
2727- str += '=='.slice(2 - (str.length & 3))
2828- var bitmap,
2929- result = '',
3030- r1,
3131- r2,
3232- i = 0
3333- for (; i < str.length; ) {
3434- bitmap =
3535- (b64.indexOf(str.charAt(i++)) << 18) |
3636- (b64.indexOf(str.charAt(i++)) << 12) |
3737- ((r1 = b64.indexOf(str.charAt(i++))) << 6) |
3838- (r2 = b64.indexOf(str.charAt(i++)))
3939-4040- result +=
4141- r1 === 64
4242- ? String.fromCharCode((bitmap >> 16) & 255)
4343- : r2 === 64
4444- ? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)
4545- : String.fromCharCode(
4646- (bitmap >> 16) & 255,
4747- (bitmap >> 8) & 255,
4848- bitmap & 255,
4949- )
5050- }
5151- return result
5252-}
+16-18
src/screens/Feeds/NoFollowingFeed.tsx
···11-import React from 'react'
22-import {View} from 'react-native'
11+import {type GestureResponderEvent, View} from 'react-native'
32import {msg, Trans} from '@lingui/macro'
43import {useLingui} from '@lingui/react'
54···98import {InlineLinkText} from '#/components/Link'
109import {Text} from '#/components/Typography'
11101212-export function NoFollowingFeed() {
1111+export function NoFollowingFeed({onAddFeed}: {onAddFeed?: () => void}) {
1312 const t = useTheme()
1413 const {_} = useLingui()
1514 const {mutateAsync: addSavedFeeds} = useAddSavedFeedsMutation()
16151717- const addRecommendedFeeds = React.useCallback(
1818- (e: any) => {
1919- e.preventDefault()
1616+ const addRecommendedFeeds = (e: GestureResponderEvent) => {
1717+ e.preventDefault()
20182121- addSavedFeeds([
2222- {
2323- ...TIMELINE_SAVED_FEED,
2424- pinned: true,
2525- },
2626- ])
1919+ addSavedFeeds([
2020+ {
2121+ ...TIMELINE_SAVED_FEED,
2222+ pinned: true,
2323+ },
2424+ ])
27252828- // prevent navigation
2929- return false
3030- },
3131- [addSavedFeeds],
3232- )
2626+ onAddFeed?.()
2727+2828+ // prevent navigation
2929+ return false as const
3030+ }
33313432 return (
3533 <View style={[a.flex_row, a.flex_wrap, a.align_center, a.py_md, a.px_lg]}>
···3735 <Trans>
3836 Looks like you're missing a following feed.{' '}
3937 <InlineLinkText
4040- to="/"
3838+ to="#"
4139 label={_(msg`Add the default feed of only people you follow`)}
4240 onPress={addRecommendedFeeds}
4341 style={[a.leading_snug]}>
+10-7
src/screens/Feeds/NoSavedFeedsOfAnyType.tsx
···11-import React from 'react'
21import {View} from 'react-native'
32import {TID} from '@atproto/common-web'
43import {msg, Trans} from '@lingui/macro'
···1615 * feeds if pressed. It should only be presented to the user if they actually
1716 * have no other feeds saved.
1817 */
1919-export function NoSavedFeedsOfAnyType() {
1818+export function NoSavedFeedsOfAnyType({
1919+ onAddRecommendedFeeds,
2020+}: {
2121+ onAddRecommendedFeeds?: () => void
2222+}) {
2023 const t = useTheme()
2124 const {_} = useLingui()
2225 const {isPending, mutateAsync: overwriteSavedFeeds} =
2326 useOverwriteSavedFeedsMutation()
24272525- const addRecommendedFeeds = React.useCallback(async () => {
2828+ const addRecommendedFeeds = async () => {
2929+ onAddRecommendedFeeds?.()
2630 await overwriteSavedFeeds(
2731 RECOMMENDED_SAVED_FEEDS.map(f => ({
2832 ...f,
2933 id: TID.nextStr(),
3034 })),
3135 )
3232- }, [overwriteSavedFeeds])
3636+ }
33373438 return (
3539 <View
···4650 disabled={isPending}
4751 label={_(msg`Apply default recommended feeds`)}
4852 size="small"
4949- variant="solid"
5050- color="primary"
5353+ color="primary_subtle"
5154 onPress={addRecommendedFeeds}>
5252- <ButtonIcon icon={Plus} position="left" />
5555+ <ButtonIcon icon={Plus} />
5356 <ButtonText>{_(msg`Use recommended`)}</ButtonText>
5457 </Button>
5558 </View>
+1-1
src/screens/Home/NoFeedsPinned.tsx
···6677import {DISCOVER_SAVED_FEED, TIMELINE_SAVED_FEED} from '#/lib/constants'
88import {useOverwriteSavedFeedsMutation} from '#/state/queries/preferences'
99-import {UsePreferencesQueryResponse} from '#/state/queries/preferences'
99+import {type UsePreferencesQueryResponse} from '#/state/queries/preferences'
1010import {CenteredView} from '#/view/com/util/Views'
1111import {atoms as a} from '#/alf'
1212import {Button, ButtonIcon, ButtonText} from '#/components/Button'
+1-1
src/screens/List/ListHiddenScreen.tsx
···1111import {RQKEY_ROOT as listQueryRoot} from '#/state/queries/list'
1212import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list'
1313import {
1414- UsePreferencesQueryResponse,
1414+ type UsePreferencesQueryResponse,
1515 useRemoveFeedMutation,
1616} from '#/state/queries/preferences'
1717import {useSession} from '#/state/session'
+1-1
src/screens/Login/ChooseAccountForm.tsx
···5566import {logEvent} from '#/lib/statsig/statsig'
77import {logger} from '#/logger'
88-import {SessionAccount, useSession, useSessionApi} from '#/state/session'
88+import {type SessionAccount, useSession, useSessionApi} from '#/state/session'
99import {useLoggedOutViewControls} from '#/state/shell/logged-out'
1010import * as Toast from '#/view/com/util/Toast'
1111import {atoms as a} from '#/alf'
+1-1
src/screens/Login/FormContainer.tsx
···11-import React from 'react'
21import {type StyleProp, View, type ViewStyle} from 'react-native'
22+import type React from 'react'
3344import {atoms as a, useBreakpoints, useTheme} from '#/alf'
55import {Text} from '#/components/Typography'
+2-2
src/screens/Login/ScreenTransition.tsx
···11-import React from 'react'
22-import {StyleProp, ViewStyle} from 'react-native'
11+import {type StyleProp, type ViewStyle} from 'react-native'
32import Animated, {FadeInRight, FadeOutLeft} from 'react-native-reanimated'
33+import type React from 'react'
4455export function ScreenTransition({
66 style,
···33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
5566-import {ActiveConvoStates} from '#/state/messages/convo'
66+import {type ActiveConvoStates} from '#/state/messages/convo'
77import {useModerationOpts} from '#/state/preferences/moderation-opts'
88import {useSession} from '#/state/session'
99import {atoms as a, useTheme} from '#/alf'
···99} from '@atproto/api'
1010import {msg} from '@lingui/macro'
1111import {useLingui} from '@lingui/react'
1212-import {RouteProp, useNavigation, useRoute} from '@react-navigation/native'
1212+import {type RouteProp, useNavigation, useRoute} from '@react-navigation/native'
13131414import {makeProfileLink} from '#/lib/routes/links'
1515-import {CommonNavigatorParams, NavigationProp} from '#/lib/routes/types'
1515+import {
1616+ type CommonNavigatorParams,
1717+ type NavigationProp,
1818+} from '#/lib/routes/types'
1619import {
1720 convertBskyAppUrlIfNeeded,
1821 isBskyPostUrl,
···33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
5566-import {ConvoItem, ConvoItemError} from '#/state/messages/convo/types'
66+import {type ConvoItem, ConvoItemError} from '#/state/messages/convo/types'
77import {atoms as a, useTheme} from '#/alf'
88import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
99import {InlineLinkText} from '#/components/Link'
···11import React from 'react'
22-import {TextStyle, View, ViewStyle} from 'react-native'
22+import {type TextStyle, View, type ViewStyle} from 'react-native'
3344import {capitalize} from '#/lib/strings/capitalize'
55import {useInterestsDisplayNames} from '#/screens/Onboarding/state'
···11import React from 'react'
22import {View} from 'react-native'
3344-import {Avatar} from '#/screens/Onboarding/StepProfile/index'
44+import {type Avatar} from '#/screens/Onboarding/StepProfile/index'
55import {atoms as a, useTheme} from '#/alf'
6677export function AvatarCreatorCircle({
···33import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
5566-import {Avatar} from '#/screens/Onboarding/StepProfile/index'
66+import {type Avatar} from '#/screens/Onboarding/StepProfile/index'
77import {
88- AvatarColor,
88+ type AvatarColor,
99 avatarColors,
1010 emojiItems,
1111- EmojiName,
1111+ type EmojiName,
1212 emojiNames,
1313} from '#/screens/Onboarding/StepProfile/types'
1414import {atoms as a, useTheme} from '#/alf'
+4-1
src/screens/Post/PostLikedBy.tsx
···22import {Plural, Trans} from '@lingui/macro'
33import {useFocusEffect} from '@react-navigation/native'
4455-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
55+import {
66+ type CommonNavigatorParams,
77+ type NativeStackScreenProps,
88+} from '#/lib/routes/types'
69import {makeRecordUri} from '#/lib/strings/url-helpers'
710import {usePostThreadQuery} from '#/state/queries/post-thread'
811import {useSetMinimalShellMode} from '#/state/shell'
+4-1
src/screens/Post/PostQuotes.tsx
···22import {Plural, Trans} from '@lingui/macro'
33import {useFocusEffect} from '@react-navigation/native'
4455-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
55+import {
66+ type CommonNavigatorParams,
77+ type NativeStackScreenProps,
88+} from '#/lib/routes/types'
69import {makeRecordUri} from '#/lib/strings/url-helpers'
710import {usePostThreadQuery} from '#/state/queries/post-thread'
811import {useSetMinimalShellMode} from '#/state/shell'
+4-1
src/screens/Post/PostRepostedBy.tsx
···22import {Plural, Trans} from '@lingui/macro'
33import {useFocusEffect} from '@react-navigation/native'
4455-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
55+import {
66+ type CommonNavigatorParams,
77+ type NativeStackScreenProps,
88+} from '#/lib/routes/types'
69import {makeRecordUri} from '#/lib/strings/url-helpers'
710import {usePostThreadQuery} from '#/state/queries/post-thread'
811import {useSetMinimalShellMode} from '#/state/shell'
···44import {useLingui} from '@lingui/react'
55import {useNavigation} from '@react-navigation/native'
6677-import {NavigationProp} from '#/lib/routes/types'
77+import {type NavigationProp} from '#/lib/routes/types'
88import {atoms as a, useTheme} from '#/alf'
99import {Button, ButtonText} from '#/components/Button'
1010import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
+3-3
src/screens/Profile/Header/GrowableAvatar.tsx
···11-import React from 'react'
22-import {StyleProp, View, ViewStyle} from 'react-native'
11+import {type StyleProp, View, type ViewStyle} from 'react-native'
32import Animated, {
43 Extrapolation,
54 interpolate,
66- SharedValue,
55+ type SharedValue,
76 useAnimatedStyle,
87} from 'react-native-reanimated'
88+import type React from 'react'
991010import {isIOS} from '#/platform/detection'
1111import {usePagerHeaderContext} from '#/view/com/pager/PagerHeaderContext'
+3-2
src/screens/Profile/Header/GrowableBanner.tsx
···11-import React, {useEffect, useState} from 'react'
11+import {useEffect, useState} from 'react'
22import {View} from 'react-native'
33import {ActivityIndicator} from 'react-native'
44import Animated, {
55 Extrapolation,
66 interpolate,
77 runOnJS,
88- SharedValue,
88+ type SharedValue,
99 useAnimatedProps,
1010 useAnimatedReaction,
1111 useAnimatedStyle,
···1313import {useSafeAreaInsets} from 'react-native-safe-area-context'
1414import {BlurView} from 'expo-blur'
1515import {useIsFetching} from '@tanstack/react-query'
1616+import type React from 'react'
16171718import {isIOS} from '#/platform/detection'
1819import {RQKEY_ROOT as STARTERPACK_RQKEY_ROOT} from '#/state/queries/actor-starter-packs'
+4-1
src/screens/Profile/Header/StatusBarShadow.tsx
···11-import Animated, {SharedValue, useAnimatedStyle} from 'react-native-reanimated'
11+import Animated, {
22+ type SharedValue,
33+ useAnimatedStyle,
44+} from 'react-native-reanimated'
25import {useSafeAreaInsets} from 'react-native-safe-area-context'
36import {LinearGradient} from 'expo-linear-gradient'
47
+5-5
src/screens/Profile/Header/index.tsx
···11import React, {memo, useState} from 'react'
22-import {LayoutChangeEvent, StyleSheet, View} from 'react-native'
22+import {type LayoutChangeEvent, StyleSheet, View} from 'react-native'
33import Animated, {
44 runOnJS,
55 useAnimatedReaction,
···88} from 'react-native-reanimated'
99import {useSafeAreaInsets} from 'react-native-safe-area-context'
1010import {
1111- AppBskyActorDefs,
1212- AppBskyLabelerDefs,
1313- ModerationOpts,
1414- RichText as RichTextAPI,
1111+ type AppBskyActorDefs,
1212+ type AppBskyLabelerDefs,
1313+ type ModerationOpts,
1414+ type RichText as RichTextAPI,
1515} from '@atproto/api'
1616import {useIsFocused} from '@react-navigation/native'
1717
+5-2
src/screens/Profile/KnownFollowers.tsx
···11import React from 'react'
22-import {AppBskyActorDefs} from '@atproto/api'
22+import {type AppBskyActorDefs} from '@atproto/api'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55import {useFocusEffect} from '@react-navigation/native'
6677import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
88-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
88+import {
99+ type CommonNavigatorParams,
1010+ type NativeStackScreenProps,
1111+} from '#/lib/routes/types'
912import {cleanError} from '#/lib/strings/errors'
1013import {logger} from '#/logger'
1114import {useProfileKnownFollowersQuery} from '#/state/queries/known-followers'
+4-1
src/screens/Profile/ProfileFollowers.tsx
···22import {Plural} from '@lingui/macro'
33import {useFocusEffect} from '@react-navigation/native'
4455-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
55+import {
66+ type CommonNavigatorParams,
77+ type NativeStackScreenProps,
88+} from '#/lib/routes/types'
69import {sanitizeDisplayName} from '#/lib/strings/display-names'
710import {useProfileQuery} from '#/state/queries/profile'
811import {useResolveDidQuery} from '#/state/queries/resolve-uri'
+4-1
src/screens/Profile/ProfileFollows.tsx
···22import {Plural} from '@lingui/macro'
33import {useFocusEffect} from '@react-navigation/native'
4455-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
55+import {
66+ type CommonNavigatorParams,
77+ type NativeStackScreenProps,
88+} from '#/lib/routes/types'
69import {sanitizeDisplayName} from '#/lib/strings/display-names'
710import {useProfileQuery} from '#/state/queries/profile'
811import {useResolveDidQuery} from '#/state/queries/resolve-uri'
+4-1
src/screens/Profile/ProfileLabelerLikedBy.tsx
···33import {useLingui} from '@lingui/react'
44import {useFocusEffect} from '@react-navigation/native'
5566-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
66+import {
77+ type CommonNavigatorParams,
88+ type NativeStackScreenProps,
99+} from '#/lib/routes/types'
710import {makeRecordUri} from '#/lib/strings/url-helpers'
811import {useSetMinimalShellMode} from '#/state/shell'
912import {ViewHeader} from '#/view/com/util/ViewHeader'
···11import {Image} from 'expo-image'
2233-import {AppIconSet} from '#/screens/Settings/AppIconSettings/types'
33+import {type AppIconSet} from '#/screens/Settings/AppIconSettings/types'
44import {atoms as a, platform, useTheme} from '#/alf'
5566export function AppIconImage({
···88 SlideInRight,
99 SlideOutLeft,
1010} from 'react-native-reanimated'
1111-import {ComAtprotoServerCreateAppPassword} from '@atproto/api'
1111+import {type ComAtprotoServerCreateAppPassword} from '@atproto/api'
1212import {msg, Trans} from '@lingui/macro'
1313import {useLingui} from '@lingui/react'
1414import {useMutation} from '@tanstack/react-query'
+2-2
src/screens/Settings/components/CopyButton.tsx
···11import {useCallback, useEffect, useState} from 'react'
22-import {GestureResponderEvent, View} from 'react-native'
22+import {type GestureResponderEvent, View} from 'react-native'
33import Animated, {
44 FadeOutUp,
55 useReducedMotion,
···99import {Trans} from '@lingui/macro'
10101111import {atoms as a, useTheme} from '#/alf'
1212-import {Button, ButtonProps} from '#/components/Button'
1212+import {Button, type ButtonProps} from '#/components/Button'
1313import {Text} from '#/components/Typography'
14141515export function CopyButton({
···77import {useAgent, useSessionApi} from '#/state/session'
88import {atoms as a, useBreakpoints, useTheme} from '#/alf'
99import {Button, ButtonIcon, ButtonText} from '#/components/Button'
1010-import {DialogOuterProps} from '#/components/Dialog'
1010+import {type DialogOuterProps} from '#/components/Dialog'
1111import {Divider} from '#/components/Divider'
1212import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
1313import {Loader} from '#/components/Loader'
···11-import React from 'react'
11+import {useCallback, useState} from 'react'
22import {View} from 'react-native'
33import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
···1818export function ExportCarDialog({
1919 control,
2020}: {
2121- control: Dialog.DialogOuterProps['control']
2121+ control: Dialog.DialogControlProps
2222}) {
2323 const {_} = useLingui()
2424 const t = useTheme()
2525 const agent = useAgent()
2626- const [loading, setLoading] = React.useState(false)
2626+ const [loading, setLoading] = useState(false)
27272828- const download = React.useCallback(async () => {
2828+ const download = useCallback(async () => {
2929 if (!agent.session) {
3030 return // shouldnt ever happen
3131 }
···5252 }, [_, control, agent])
53535454 return (
5555- <Dialog.Outer control={control}>
5555+ <Dialog.Outer control={control} nativeOptions={{preventExpansion: true}}>
5656 <Dialog.Handle />
5757 <Dialog.ScrollableInner
5858 accessibilityDescribedBy="dialog-description"
···6363 </Text>
6464 <Text
6565 nativeID="dialog-description"
6666- style={[a.text_sm, a.leading_normal, t.atoms.text_contrast_high]}>
6666+ style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_high]}>
6767 <Trans>
6868 Your account repository, containing all public data records, can
6969 be downloaded as a "CAR" file. This file does not include media
···7373 </Text>
74747575 <Button
7676- variant="solid"
7776 color="primary"
7877 size="large"
7978 label={_(msg`Download CAR file`)}
+1-1
src/screens/Settings/components/PwiOptOut.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {$Typed, ComAtprotoLabelDefs} from '@atproto/api'
33+import {type $Typed, ComAtprotoLabelDefs} from '@atproto/api'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66
···11import {useState} from 'react'
22-import {ListRenderItemInfo, View} from 'react-native'
22+import {type ListRenderItemInfo, View} from 'react-native'
33import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
44-import {AppBskyFeedDefs, ModerationOpts} from '@atproto/api'
44+import {type AppBskyFeedDefs, type ModerationOpts} from '@atproto/api'
55import {Trans} from '@lingui/macro'
6677import {DISCOVER_FEED_URI} from '#/lib/constants'
+3-3
src/screens/StarterPack/Wizard/StepProfiles.tsx
···11import {useState} from 'react'
22-import {ListRenderItemInfo, View} from 'react-native'
22+import {type ListRenderItemInfo, View} from 'react-native'
33import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
44-import {AppBskyActorDefs, ModerationOpts} from '@atproto/api'
44+import {type AppBskyActorDefs, type ModerationOpts} from '@atproto/api'
55import {Trans} from '@lingui/macro'
6677import {isNative} from '#/platform/detection'
···1616import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition'
1717import {WizardProfileCard} from '#/components/StarterPack/Wizard/WizardListCard'
1818import {Text} from '#/components/Typography'
1919-import * as bsky from '#/types/bsky'
1919+import type * as bsky from '#/types/bsky'
20202121function keyExtractor(item: AppBskyActorDefs.ProfileViewBasic) {
2222 return item?.did ?? ''
+4-4
src/screens/VideoFeed/components/Header.tsx
···11import {useCallback} from 'react'
22-import {GestureResponderEvent, View} from 'react-native'
22+import {type GestureResponderEvent, View} from 'react-native'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55import {useNavigation} from '@react-navigation/native'
6677import {HITSLOP_30} from '#/lib/constants'
88-import {NavigationProp} from '#/lib/routes/types'
88+import {type NavigationProp} from '#/lib/routes/types'
99import {sanitizeHandle} from '#/lib/strings/handles'
1010import {useFeedSourceInfoQuery} from '#/state/queries/feed'
1111import {UserAvatar} from '#/view/com/util/UserAvatar'
1212-import {VideoFeedSourceContext} from '#/screens/VideoFeed/types'
1212+import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
1313import {atoms as a, useBreakpoints} from '#/alf'
1414-import {Button, ButtonProps} from '#/components/Button'
1414+import {Button, type ButtonProps} from '#/components/Button'
1515import {ArrowLeft_Stroke2_Corner0_Rounded as ArrowLeft} from '#/components/icons/Arrow'
1616import * as Layout from '#/components/Layout'
1717import {BUTTON_VISUAL_ALIGNMENT_OFFSET} from '#/components/Layout/const'
+1-1
src/screens/VideoFeed/types.ts
···11-import {AuthorFilter} from '#/state/queries/post-feed'
11+import {type AuthorFilter} from '#/state/queries/post-feed'
2233/**
44 * Kind of like `FeedDescriptor` but not
+5-5
src/state/messages/convo/util.ts
···11import {
22- ConvoState,
33- ConvoStateBackgrounded,
44- ConvoStateDisabled,
55- ConvoStateReady,
66- ConvoStateSuspended,
22+ type ConvoState,
33+ type ConvoStateBackgrounded,
44+ type ConvoStateDisabled,
55+ type ConvoStateReady,
66+ type ConvoStateSuspended,
77 ConvoStatus,
88} from './types'
99
+1-1
src/state/messages/events/types.ts
···11-import {BskyAgent, ChatBskyConvoGetLog} from '@atproto/api'
11+import {type BskyAgent, type ChatBskyConvoGetLog} from '@atproto/api'
2233export type MessagesEventBusParams = {
44 agent: BskyAgent
+1-1
src/state/messages/index.tsx
···11-import React from 'react'
11+import type React from 'react'
2233import {CurrentConvoIdProvider} from '#/state/messages/current-convo-id'
44import {MessagesEventBusProvider} from '#/state/messages/events'
+2-2
src/state/persisted/index.web.ts
···44import {logger} from '#/logger'
55import {
66 defaults,
77- Schema,
77+ type Schema,
88 tryParse,
99 tryStringify,
1010} from '#/state/persisted/schema'
1111-import {PersistedApi} from './types'
1111+import {type PersistedApi} from './types'
1212import {normalizeData} from './util'
13131414export type {PersistedAccount, Schema} from '#/state/persisted/schema'
+1-1
src/state/persisted/types.ts
···11-import type {Schema} from './schema'
11+import {type Schema} from './schema'
2233export type PersistedApi = {
44 init(): Promise<void>
+1-1
src/state/persisted/util.ts
···2233import {dedupArray} from '#/lib/functions'
44import {logger} from '#/logger'
55-import {Schema} from '#/state/persisted/schema'
55+import {type Schema} from '#/state/persisted/schema'
6677export function normalizeData(data: Schema) {
88 const next = {...data}
+5-1
src/state/queries/actor-autocomplete.ts
···11import React from 'react'
22-import {AppBskyActorDefs, moderateProfile, ModerationOpts} from '@atproto/api'
22+import {
33+ type AppBskyActorDefs,
44+ moderateProfile,
55+ type ModerationOpts,
66+} from '@atproto/api'
37import {keepPreviousData, useQuery, useQueryClient} from '@tanstack/react-query'
4859import {isJustAMute, moduiContainsHideableOffense} from '#/lib/moderation'
+1-1
src/state/queries/app-passwords.ts
···11-import {ComAtprotoServerCreateAppPassword} from '@atproto/api'
11+import {type ComAtprotoServerCreateAppPassword} from '@atproto/api'
22import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
3344import {STALE} from '#/state/queries'
+1-1
src/state/queries/invites.ts
···11-import {ComAtprotoServerDefs} from '@atproto/api'
11+import {type ComAtprotoServerDefs} from '@atproto/api'
22import {useQuery} from '@tanstack/react-query'
3344import {cleanError} from '#/lib/strings/errors'
+7-4
src/state/queries/known-followers.ts
···11-import {AppBskyActorDefs, AppBskyGraphGetKnownFollowers} from '@atproto/api'
21import {
33- InfiniteData,
44- QueryClient,
55- QueryKey,
22+ type AppBskyActorDefs,
33+ type AppBskyGraphGetKnownFollowers,
44+} from '@atproto/api'
55+import {
66+ type InfiniteData,
77+ type QueryClient,
88+ type QueryKey,
69 useInfiniteQuery,
710} from '@tanstack/react-query'
811
+4-4
src/state/queries/my-blocked-accounts.ts
···11-import {AppBskyActorDefs, AppBskyGraphGetBlocks} from '@atproto/api'
11+import {type AppBskyActorDefs, type AppBskyGraphGetBlocks} from '@atproto/api'
22import {
33- InfiniteData,
44- QueryClient,
55- QueryKey,
33+ type InfiniteData,
44+ type QueryClient,
55+ type QueryKey,
66 useInfiniteQuery,
77} from '@tanstack/react-query'
88
+2-2
src/state/queries/my-lists.ts
···11-import {AppBskyGraphDefs} from '@atproto/api'
22-import {QueryClient, useQuery} from '@tanstack/react-query'
11+import {type AppBskyGraphDefs} from '@atproto/api'
22+import {type QueryClient, useQuery} from '@tanstack/react-query'
3344import {accumulate} from '#/lib/async/accumulate'
55import {STALE} from '#/state/queries'
+4-4
src/state/queries/my-muted-accounts.ts
···11-import {AppBskyActorDefs, AppBskyGraphGetMutes} from '@atproto/api'
11+import {type AppBskyActorDefs, type AppBskyGraphGetMutes} from '@atproto/api'
22import {
33- InfiniteData,
44- QueryClient,
55- QueryKey,
33+ type InfiniteData,
44+ type QueryClient,
55+ type QueryKey,
66 useInfiniteQuery,
77} from '@tanstack/react-query'
88
+1-1
src/state/queries/nuxs/types.ts
···11-import {AppBskyActorDefs} from '@atproto/api'
11+import {type AppBskyActorDefs} from '@atproto/api'
2233export type Data = Record<string, unknown> | undefined
44
+3-3
src/state/queries/nuxs/util.ts
···11-import {AppBskyActorDefs, nuxSchema} from '@atproto/api'
11+import {type AppBskyActorDefs, nuxSchema} from '@atproto/api'
2233import {
44- AppNux,
55- Nux,
44+ type AppNux,
55+ type Nux,
66 nuxNames,
77 NuxSchemas,
88} from '#/state/queries/nuxs/definitions'
+1-1
src/state/queries/post-interaction-settings.ts
···11-import {AppBskyActorDefs} from '@atproto/api'
11+import {type AppBskyActorDefs} from '@atproto/api'
22import {useMutation, useQueryClient} from '@tanstack/react-query'
3344import {preferencesQueryKey} from '#/state/queries/preferences'
+4-4
src/state/queries/post-liked-by.ts
···11-import {AppBskyActorDefs, AppBskyFeedGetLikes} from '@atproto/api'
11+import {type AppBskyActorDefs, type AppBskyFeedGetLikes} from '@atproto/api'
22import {
33- InfiniteData,
44- QueryClient,
55- QueryKey,
33+ type InfiniteData,
44+ type QueryClient,
55+ type QueryKey,
66 useInfiniteQuery,
77} from '@tanstack/react-query'
88
+6-6
src/state/queries/post-quotes.ts
···11import {
22- AppBskyActorDefs,
22+ type AppBskyActorDefs,
33 AppBskyEmbedRecord,
44- AppBskyFeedDefs,
55- AppBskyFeedGetQuotes,
44+ type AppBskyFeedDefs,
55+ type AppBskyFeedGetQuotes,
66 AtUri,
77} from '@atproto/api'
88import {
99- InfiniteData,
1010- QueryClient,
1111- QueryKey,
99+ type InfiniteData,
1010+ type QueryClient,
1111+ type QueryKey,
1212 useInfiniteQuery,
1313} from '@tanstack/react-query'
1414
+7-4
src/state/queries/post-reposted-by.ts
···11-import {AppBskyActorDefs, AppBskyFeedGetRepostedBy} from '@atproto/api'
21import {
33- InfiniteData,
44- QueryClient,
55- QueryKey,
22+ type AppBskyActorDefs,
33+ type AppBskyFeedGetRepostedBy,
44+} from '@atproto/api'
55+import {
66+ type InfiniteData,
77+ type QueryClient,
88+ type QueryKey,
69 useInfiniteQuery,
710} from '@tanstack/react-query'
811
···11import {
22- BskyFeedViewPreference,
33- BskyPreferences,
44- BskyThreadViewPreference,
22+ type BskyFeedViewPreference,
33+ type BskyPreferences,
44+ type BskyThreadViewPreference,
55} from '@atproto/api'
6677export type UsePreferencesQueryResponse = Omit<
+9-2
src/state/queries/profile-feedgens.ts
···11-import {AppBskyFeedGetActorFeeds, moderateFeedGenerator} from '@atproto/api'
22-import {InfiniteData, QueryKey, useInfiniteQuery} from '@tanstack/react-query'
11+import {
22+ type AppBskyFeedGetActorFeeds,
33+ moderateFeedGenerator,
44+} from '@atproto/api'
55+import {
66+ type InfiniteData,
77+ type QueryKey,
88+ useInfiniteQuery,
99+} from '@tanstack/react-query'
310411import {useAgent} from '#/state/session'
512import {useModerationOpts} from '../preferences/moderation-opts'
+7-4
src/state/queries/profile-followers.ts
···11-import {AppBskyActorDefs, AppBskyGraphGetFollowers} from '@atproto/api'
21import {
33- InfiniteData,
44- QueryClient,
55- QueryKey,
22+ type AppBskyActorDefs,
33+ type AppBskyGraphGetFollowers,
44+} from '@atproto/api'
55+import {
66+ type InfiniteData,
77+ type QueryClient,
88+ type QueryKey,
69 useInfiniteQuery,
710} from '@tanstack/react-query'
811
+4-4
src/state/queries/profile-follows.ts
···11-import {AppBskyActorDefs, AppBskyGraphGetFollows} from '@atproto/api'
11+import {type AppBskyActorDefs, type AppBskyGraphGetFollows} from '@atproto/api'
22import {
33- InfiniteData,
44- QueryClient,
55- QueryKey,
33+ type InfiniteData,
44+ type QueryClient,
55+ type QueryKey,
66 useInfiniteQuery,
77} from '@tanstack/react-query'
88
+6-2
src/state/queries/profile-lists.ts
···11-import {AppBskyGraphGetLists, moderateUserList} from '@atproto/api'
22-import {InfiniteData, QueryKey, useInfiniteQuery} from '@tanstack/react-query'
11+import {type AppBskyGraphGetLists, moderateUserList} from '@atproto/api'
22+import {
33+ type InfiniteData,
44+ type QueryKey,
55+ useInfiniteQuery,
66+} from '@tanstack/react-query'
3748import {useAgent} from '#/state/session'
59import {useModerationOpts} from '../preferences/moderation-opts'
+4-4
src/state/queries/resolve-link.ts
···11-import {QueryClient, useQuery} from '@tanstack/react-query'
11+import {type QueryClient, useQuery} from '@tanstack/react-query'
2233import {STALE} from '#/state/queries/index'
44import {useAgent} from '../session'
···99const RQKEY_GIF_ROOT = 'resolve-gif'
1010export const RQKEY_GIF = (url: string) => [RQKEY_GIF_ROOT, url]
11111212-import {BskyAgent} from '@atproto/api'
1212+import {type BskyAgent} from '@atproto/api'
13131414-import {ResolvedLink, resolveGif, resolveLink} from '#/lib/api/resolve'
1515-import {Gif} from './tenor'
1414+import {type ResolvedLink, resolveGif, resolveLink} from '#/lib/api/resolve'
1515+import {type Gif} from './tenor'
16161717export function useResolveLinkQuery(url: string) {
1818 const agent = useAgent()
+5-1
src/state/queries/resolve-uri.ts
···11import {AtUri} from '@atproto/api'
22-import {QueryClient, useQuery, UseQueryResult} from '@tanstack/react-query'
22+import {
33+ type QueryClient,
44+ useQuery,
55+ type UseQueryResult,
66+} from '@tanstack/react-query'
3748import {STALE} from '#/state/queries'
59import {useAgent} from '#/state/session'
+6-6
src/state/queries/search-posts.ts
···11import React from 'react'
22import {
33- AppBskyActorDefs,
44- AppBskyFeedDefs,
55- AppBskyFeedSearchPosts,
33+ type AppBskyActorDefs,
44+ type AppBskyFeedDefs,
55+ type AppBskyFeedSearchPosts,
66 AtUri,
77 moderatePost,
88} from '@atproto/api'
99import {
1010- InfiniteData,
1111- QueryClient,
1212- QueryKey,
1010+ type InfiniteData,
1111+ type QueryClient,
1212+ type QueryKey,
1313 useInfiniteQuery,
1414} from '@tanstack/react-query'
1515
+6-2
src/state/queries/suggested-feeds.ts
···11-import {AppBskyFeedGetSuggestedFeeds} from '@atproto/api'
22-import {InfiniteData, QueryKey, useInfiniteQuery} from '@tanstack/react-query'
11+import {type AppBskyFeedGetSuggestedFeeds} from '@atproto/api'
22+import {
33+ type InfiniteData,
44+ type QueryKey,
55+ useInfiniteQuery,
66+} from '@tanstack/react-query'
3748import {STALE} from '#/state/queries'
59import {useAgent} from '#/state/session'
+3-3
src/state/queries/threadgate/index.ts
···11import {
22 AppBskyFeedDefs,
33- AppBskyFeedGetPostThread,
33+ type AppBskyFeedGetPostThread,
44 AppBskyFeedThreadgate,
55 AtUri,
66- BskyAgent,
66+ type BskyAgent,
77} from '@atproto/api'
88import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
99···1111import {until} from '#/lib/async/until'
1212import {STALE} from '#/state/queries'
1313import {RQKEY_ROOT as postThreadQueryKeyRoot} from '#/state/queries/post-thread'
1414-import {ThreadgateAllowUISetting} from '#/state/queries/threadgate/types'
1414+import {type ThreadgateAllowUISetting} from '#/state/queries/threadgate/types'
1515import {
1616 createThreadgateRecord,
1717 mergeThreadgateRecords,
+2-2
src/state/queries/threadgate/util.ts
···11-import {AppBskyFeedDefs, AppBskyFeedThreadgate} from '@atproto/api'
11+import {type AppBskyFeedDefs, AppBskyFeedThreadgate} from '@atproto/api'
2233-import {ThreadgateAllowUISetting} from '#/state/queries/threadgate/types'
33+import {type ThreadgateAllowUISetting} from '#/state/queries/threadgate/types'
44import * as bsky from '#/types/bsky'
5566export function threadgateViewToAllowUISetting(
+2-2
src/state/queries/unstable-profile-cache.ts
···11import {useCallback} from 'react'
22-import {QueryClient, useQueryClient} from '@tanstack/react-query'
22+import {type QueryClient, useQueryClient} from '@tanstack/react-query'
3344-import * as bsky from '#/types/bsky'
44+import type * as bsky from '#/types/bsky'
5566const unstableProfileViewCacheQueryKeyRoot = 'unstableProfileViewCache'
77export const unstableProfileViewCacheQueryKey = (didOrHandle: string) => [
+8-4
src/state/queries/util.ts
···11import {
22- AppBskyActorDefs,
22+ type AppBskyActorDefs,
33 AppBskyEmbedRecord,
44 AppBskyEmbedRecordWithMedia,
55- AppBskyFeedDefs,
55+ type AppBskyFeedDefs,
66 AppBskyFeedPost,
77- AtUri,
77+ type AtUri,
88} from '@atproto/api'
99-import {InfiniteData, QueryClient, QueryKey} from '@tanstack/react-query'
99+import {
1010+ type InfiniteData,
1111+ type QueryClient,
1212+ type QueryKey,
1313+} from '@tanstack/react-query'
10141115import * as bsky from '#/types/bsky'
1216
+1-1
src/state/session/__tests__/session-test.ts
···22import {describe, expect, it, jest} from '@jest/globals'
3344import {agentToSessionAccountOrThrow} from '../agent'
55-import {Action, getInitialState, reducer, State} from '../reducer'
55+import {type Action, getInitialState, reducer, type State} from '../reducer'
6677jest.mock('jwt-decode', () => ({
88 jwtDecode(_token: string) {
+1-1
src/state/session/util.ts
···33import {hasProp} from '#/lib/type-guards'
44import {logger} from '#/logger'
55import * as persisted from '#/state/persisted'
66-import {SessionAccount} from './types'
66+import {type SessionAccount} from './types'
7788export function readLastActiveAccount() {
99 const {currentAccount, accounts} = persisted.get('session')
-2
src/state/shell/index.tsx
···11-import type React from 'react'
22-31import {Provider as ColorModeProvider} from './color-mode'
42import {Provider as DrawerOpenProvider} from './drawer-open'
53import {Provider as DrawerSwipableProvider} from './drawer-swipe-disabled'
+1-1
src/state/shell/reminders.ts
···11import {simpleAreDatesEqual} from '#/lib/strings/time'
22import {logger} from '#/logger'
33import * as persisted from '#/state/persisted'
44-import {SessionAccount} from '../session'
44+import {type SessionAccount} from '../session'
55import {isOnboardingActive} from './onboarding'
6677export function shouldRequestEmailConfirmation(account: SessionAccount) {
+1-1
src/types/bsky/index.ts
···11-import {ValidationResult} from '@atproto/lexicon'
11+import {type ValidationResult} from '@atproto/lexicon'
2233export * as post from '#/types/bsky/post'
44export * as profile from '#/types/bsky/profile'
···11-import React from 'react'
21import {View} from 'react-native'
22+import type React from 'react'
3344import {MAX_ALT_TEXT} from '#/lib/constants'
55import {CharProgress} from '#/view/com/composer/char-progress/CharProgress'
···11-import React from 'react'
21import {View} from 'react-native'
32import {KeyboardStickyView} from 'react-native-keyboard-controller'
43import {useSafeAreaInsets} from 'react-native-safe-area-context'
44+import type React from 'react'
5566import {isWeb} from '#/platform/detection'
77import {atoms as a, useTheme} from '#/alf'
···11-import {StyleProp, TextStyle, View, ViewStyle} from 'react-native'
11+import {
22+ type StyleProp,
33+ type TextStyle,
44+ View,
55+ type ViewStyle,
66+} from 'react-native'
27// @ts-ignore no type definition -prf
38import ProgressCircle from 'react-native-progress/Circle'
49// @ts-ignore no type definition -prf
-2
src/view/com/composer/photos/EditImageDialog.tsx
···11-import type React from 'react'
22-31import {type ComposerImage} from '#/state/gallery'
42import type * as Dialog from '#/components/Dialog'
53
···44import {useLingui} from '@lingui/react'
5566import {logEvent} from '#/lib/statsig/statsig'
77-import {Gif} from '#/state/queries/tenor'
77+import {type Gif} from '#/state/queries/tenor'
88import {atoms as a, useTheme} from '#/alf'
99import {Button} from '#/components/Button'
1010import {GifSelectDialog} from '#/components/dialogs/GifSelect'
···11-import {AppBskyRichtextFacet, RichText} from '@atproto/api'
11+import {type AppBskyRichtextFacet, type RichText} from '@atproto/api'
2233export type LinkFacetMatch = {
44 rt: RichText
···16161717import {URL_REGEX} from '@atproto/api'
1818import {Mark} from '@tiptap/core'
1919-import {Node as ProsemirrorNode} from '@tiptap/pm/model'
1919+import {type Node as ProsemirrorNode} from '@tiptap/pm/model'
2020import {Plugin, PluginKey} from '@tiptap/pm/state'
2121import {Decoration, DecorationSet} from '@tiptap/pm/view'
2222
···16161717import {TAG_REGEX, TRAILING_PUNCTUATION_REGEX} from '@atproto/api'
1818import {Mark} from '@tiptap/core'
1919-import {Node as ProsemirrorNode} from '@tiptap/pm/model'
1919+import {type Node as ProsemirrorNode} from '@tiptap/pm/model'
2020import {Plugin, PluginKey} from '@tiptap/pm/state'
2121import {Decoration, DecorationSet} from '@tiptap/pm/view'
2222
···11-import {Keyboard, StyleProp, ViewStyle} from 'react-native'
22-import {AnimatedStyle} from 'react-native-reanimated'
33-import {AppBskyFeedPostgate} from '@atproto/api'
11+import {Keyboard, type StyleProp, type ViewStyle} from 'react-native'
22+import {type AnimatedStyle} from 'react-native-reanimated'
33+import {type AppBskyFeedPostgate} from '@atproto/api'
44import {msg} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
6677import {isNative} from '#/platform/detection'
88-import {ThreadgateAllowUISetting} from '#/state/queries/threadgate'
88+import {type ThreadgateAllowUISetting} from '#/state/queries/threadgate'
99import {native} from '#/alf'
1010import {Button, ButtonIcon, ButtonText} from '#/components/Button'
1111import * as Dialog from '#/components/Dialog'
···11-import React, {useRef} from 'react'
11+import {useRef} from 'react'
22import {View} from 'react-native'
33import {msg, Trans} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55+import type React from 'react'
5667import {logger} from '#/logger'
78import * as Toast from '#/view/com/util/Toast'
+2-2
src/view/com/composer/videos/VideoPreview.web.tsx
···11import {View} from 'react-native'
22-import {ImagePickerAsset} from 'expo-image-picker'
22+import {type ImagePickerAsset} from 'expo-image-picker'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
5566-import {CompressedVideo} from '#/lib/media/video/types'
66+import {type CompressedVideo} from '#/lib/media/video/types'
77import {clamp} from '#/lib/numbers'
88import {useAutoplayDisabled} from '#/state/preferences'
99import {ExternalEmbedRemoveBtn} from '#/view/com/composer/ExternalEmbedRemoveBtn'
···11import {View} from 'react-native'
22// @ts-expect-error no type definition
33import ProgressPie from 'react-native-progress/Pie'
44-import {ImagePickerAsset} from 'expo-image-picker'
44+import {type ImagePickerAsset} from 'expo-image-picker'
5566import {clamp} from '#/lib/numbers'
77import {isWeb} from '#/platform/detection'
+1-1
src/view/com/composer/videos/pickVideo.web.ts
···11-import {ImagePickerAsset, ImagePickerResult} from 'expo-image-picker'
11+import {type ImagePickerAsset, type ImagePickerResult} from 'expo-image-picker'
2233import {SUPPORTED_MIME_TYPES} from '#/lib/constants'
44
+8-1
src/view/com/feeds/FeedPage.tsx
···11-import {useCallback, useEffect, useMemo, useRef, useState} from 'react'
11+import {
22+ type JSX,
33+ useCallback,
44+ useEffect,
55+ useMemo,
66+ useRef,
77+ useState,
88+} from 'react'
29import {View} from 'react-native'
310import {type AppBskyActorDefs, AppBskyFeedDefs} from '@atproto/api'
411import {msg} from '@lingui/macro'
+2-1
src/view/com/home/HomeHeaderLayout.web.tsx
···11-import React from 'react'
11+import {type JSX} from 'react'
22import {View} from 'react-native'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55+import type React from 'react'
5667import {useKawaiiMode} from '#/state/preferences/kawaii'
78import {useSession} from '#/state/session'
+1
src/view/com/home/HomeHeaderLayoutMobile.tsx
···11+import {type JSX} from 'react'
12import {View} from 'react-native'
23import Animated from 'react-native-reanimated'
34import {msg} from '@lingui/macro'
···66 *
77 */
8899-import {TransformsStyle} from 'react-native'
1010-import {MeasuredDimensions} from 'react-native-reanimated'
99+import {type TransformsStyle} from 'react-native'
1010+import {type MeasuredDimensions} from 'react-native-reanimated'
11111212export type Dimensions = {
1313 width: number
···55 * LICENSE file in the root directory of this source tree.
66 *
77 */
88-import {StyleSheet, TouchableOpacity, ViewStyle} from 'react-native'
88+import {StyleSheet, TouchableOpacity, type ViewStyle} from 'react-native'
99import {SafeAreaView} from 'react-native-safe-area-context'
1010import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
1111import {msg} from '@lingui/macro'
···2233import React from 'react'
44import {View} from 'react-native'
55-import {PanGesture} from 'react-native-gesture-handler'
66-import {SharedValue} from 'react-native-reanimated'
55+import {type PanGesture} from 'react-native-gesture-handler'
66+import {type SharedValue} from 'react-native-reanimated'
7788-import {Dimensions} from '#/lib/media/types'
88+import {type Dimensions} from '#/lib/media/types'
99import {
1010- Dimensions as ImageDimensions,
1111- ImageSource,
1212- Transform,
1010+ type Dimensions as ImageDimensions,
1111+ type ImageSource,
1212+ type Transform,
1313} from '../../@types'
14141515type Props = {
+1-1
src/view/com/lightbox/ImageViewing/transforms.ts
···11-import type {Position} from './@types'
11+import {type Position} from './@types'
2233export type TransformMatrix = [
44 number,
+1-1
src/view/com/lists/ListMembers.tsx
···11-import React, {useCallback} from 'react'
11+import React, {type JSX, useCallback} from 'react'
22import {
33 Dimensions,
44 type GestureResponderEvent,
+5-5
src/view/com/lists/MyLists.tsx
···11-import React from 'react'
11+import React, {type JSX} from 'react'
22import {
33 ActivityIndicator,
44 FlatList as RNFlatList,
55 RefreshControl,
66- StyleProp,
66+ type StyleProp,
77 View,
88- ViewStyle,
88+ type ViewStyle,
99} from 'react-native'
1010-import {AppBskyGraphDefs as GraphDefs} from '@atproto/api'
1010+import {type AppBskyGraphDefs as GraphDefs} from '@atproto/api'
1111import {msg} from '@lingui/macro'
1212import {useLingui} from '@lingui/react'
1313···1616import {s} from '#/lib/styles'
1717import {logger} from '#/logger'
1818import {useModerationOpts} from '#/state/preferences/moderation-opts'
1919-import {MyListsFilter, useMyListsQuery} from '#/state/queries/my-lists'
1919+import {type MyListsFilter, useMyListsQuery} from '#/state/queries/my-lists'
2020import {atoms as a, useTheme} from '#/alf'
2121import {BulletList_Stroke2_Corner0_Rounded as ListIcon} from '#/components/icons/BulletList'
2222import * as ListCard from '#/components/ListCard'
+3-3
src/view/com/modals/InviteCodes.tsx
···66 View,
77} from 'react-native'
88import {setStringAsync} from 'expo-clipboard'
99-import {ComAtprotoServerDefs} from '@atproto/api'
99+import {type ComAtprotoServerDefs} from '@atproto/api'
1010import {
1111 FontAwesomeIcon,
1212- FontAwesomeIconStyle,
1212+ type FontAwesomeIconStyle,
1313} from '@fortawesome/react-native-fontawesome'
1414import {msg, Trans} from '@lingui/macro'
1515import {useLingui} from '@lingui/react'
···2222import {useInvitesAPI, useInvitesState} from '#/state/invites'
2323import {useModalControls} from '#/state/modals'
2424import {
2525- InviteCodesQueryResponse,
2525+ type InviteCodesQueryResponse,
2626 useInviteCodesQuery,
2727} from '#/state/queries/invites'
2828import {ErrorMessage} from '../util/error/ErrorMessage'
+2-2
src/view/com/modals/UserAddRemoveLists.tsx
···55 useWindowDimensions,
66 View,
77} from 'react-native'
88-import {AppBskyGraphDefs as GraphDefs} from '@atproto/api'
88+import {type AppBskyGraphDefs as GraphDefs} from '@atproto/api'
99import {msg, Trans} from '@lingui/macro'
1010import {useLingui} from '@lingui/react'
1111···1818import {useModalControls} from '#/state/modals'
1919import {
2020 getMembership,
2121- ListMembersip,
2121+ type ListMembersip,
2222 useDangerousListMembershipsQuery,
2323 useListMembershipAddMutation,
2424 useListMembershipRemoveMutation,
···11-import {memo, useCallback, useEffect, useRef, useState} from 'react'
11+import {type JSX, memo, useCallback, useEffect, useRef, useState} from 'react'
22import {
33 type LayoutChangeEvent,
44 type NativeScrollEvent,
+8-3
src/view/com/pager/PagerWithHeader.web.tsx
···11import * as React from 'react'
22-import {ScrollView, View} from 'react-native'
22+import {type JSX} from 'react'
33+import {type ScrollView, View} from 'react-native'
34import {useAnimatedRef} from 'react-native-reanimated'
4555-import {Pager, PagerRef, RenderTabBarFnProps} from '#/view/com/pager/Pager'
66+import {
77+ Pager,
88+ type PagerRef,
99+ type RenderTabBarFnProps,
1010+} from '#/view/com/pager/Pager'
611import {atoms as a, web} from '#/alf'
712import * as Layout from '#/components/Layout'
88-import {ListMethods} from '../util/List'
1313+import {type ListMethods} from '../util/List'
914import {TabBar} from './TabBar'
10151116export interface PagerWithHeaderChildParams {
···11import {useCallback, useMemo, useState} from 'react'
22-import {AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
22+import {type AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55
+2-2
src/view/com/post-thread/PostQuotes.tsx
···11import {useCallback, useState} from 'react'
22import {
33- AppBskyFeedDefs,
33+ type AppBskyFeedDefs,
44 AppBskyFeedPost,
55 moderatePost,
66- ModerationDecision,
66+ type ModerationDecision,
77} from '@atproto/api'
88import {msg} from '@lingui/macro'
99import {useLingui} from '@lingui/react'
+1-1
src/view/com/post-thread/PostRepostedBy.tsx
···11import {useCallback, useMemo, useState} from 'react'
22-import {AppBskyActorDefs as ActorDefs} from '@atproto/api'
22+import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55
+2-2
src/view/com/posts/CustomFeedEmptyState.tsx
···22import {StyleSheet, View} from 'react-native'
33import {
44 FontAwesomeIcon,
55- FontAwesomeIconStyle,
55+ type FontAwesomeIconStyle,
66} from '@fortawesome/react-native-fontawesome'
77import {Trans} from '@lingui/macro'
88import {useNavigation} from '@react-navigation/native'
991010import {usePalette} from '#/lib/hooks/usePalette'
1111import {MagnifyingGlassIcon} from '#/lib/icons'
1212-import {NavigationProp} from '#/lib/routes/types'
1212+import {type NavigationProp} from '#/lib/routes/types'
1313import {s} from '#/lib/styles'
1414import {isWeb} from '#/platform/detection'
1515import {Button} from '../util/forms/Button'
+2-2
src/view/com/posts/FollowingEmptyState.tsx
···22import {StyleSheet, View} from 'react-native'
33import {
44 FontAwesomeIcon,
55- FontAwesomeIconStyle,
55+ type FontAwesomeIconStyle,
66} from '@fortawesome/react-native-fontawesome'
77import {Trans} from '@lingui/macro'
88import {useNavigation} from '@react-navigation/native'
991010import {usePalette} from '#/lib/hooks/usePalette'
1111import {MagnifyingGlassIcon} from '#/lib/icons'
1212-import {NavigationProp} from '#/lib/routes/types'
1212+import {type NavigationProp} from '#/lib/routes/types'
1313import {s} from '#/lib/styles'
1414import {isWeb} from '#/platform/detection'
1515import {Button} from '../util/forms/Button'
+2-2
src/view/com/posts/FollowingEndOfFeed.tsx
···22import {Dimensions, StyleSheet, View} from 'react-native'
33import {
44 FontAwesomeIcon,
55- FontAwesomeIconStyle,
55+ type FontAwesomeIconStyle,
66} from '@fortawesome/react-native-fontawesome'
77import {Trans} from '@lingui/macro'
88import {useNavigation} from '@react-navigation/native'
991010import {usePalette} from '#/lib/hooks/usePalette'
1111-import {NavigationProp} from '#/lib/routes/types'
1111+import {type NavigationProp} from '#/lib/routes/types'
1212import {s} from '#/lib/styles'
1313import {isWeb} from '#/platform/detection'
1414import {Button} from '../util/forms/Button'
···11import React from 'react'
22-import {AppBskyActorDefs as ActorDefs} from '@atproto/api'
22+import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55
+1-1
src/view/com/profile/ProfileFollows.tsx
···11import React from 'react'
22-import {AppBskyActorDefs as ActorDefs} from '@atproto/api'
22+import {type AppBskyActorDefs as ActorDefs} from '@atproto/api'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55
+1-1
src/view/com/util/Alert.web.tsx
···11-import {AlertButton, AlertStatic} from 'react-native'
11+import {type AlertButton, type AlertStatic} from 'react-native'
2233class WebAlert implements Pick<AlertStatic, 'alert'> {
44 public alert(title: string, message?: string, buttons?: AlertButton[]): void {
+3-2
src/view/com/util/BottomSheetCustomBackdrop.tsx
···11-import React, {useMemo} from 'react'
11+import {useMemo} from 'react'
22import {TouchableWithoutFeedback} from 'react-native'
33import Animated, {
44 Extrapolation,
55 interpolate,
66 useAnimatedStyle,
77} from 'react-native-reanimated'
88-import {BottomSheetBackdropProps} from '@discord/bottom-sheet/src'
88+import {type BottomSheetBackdropProps} from '@discord/bottom-sheet/src'
99import {msg} from '@lingui/macro'
1010import {useLingui} from '@lingui/react'
1111+import type React from 'react'
11121213export function createCustomBackdrop(
1314 onClose?: (() => void) | undefined,
+3-3
src/view/com/util/EmptyState.tsx
···11-import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native'
22-import {IconProp} from '@fortawesome/fontawesome-svg-core'
11+import {type StyleProp, StyleSheet, View, type ViewStyle} from 'react-native'
22+import {type IconProp} from '@fortawesome/fontawesome-svg-core'
33import {
44 FontAwesomeIcon,
55- FontAwesomeIconStyle,
55+ type FontAwesomeIconStyle,
66} from '@fortawesome/react-native-fontawesome'
7788import {usePalette} from '#/lib/hooks/usePalette'
+2-2
src/view/com/util/EmptyStateWithButton.tsx
···11import {StyleSheet, View} from 'react-native'
22-import {IconProp} from '@fortawesome/fontawesome-svg-core'
22+import {type IconProp} from '@fortawesome/fontawesome-svg-core'
33import {
44 FontAwesomeIcon,
55- FontAwesomeIconStyle,
55+ type FontAwesomeIconStyle,
66} from '@fortawesome/react-native-fontawesome'
7788import {usePalette} from '#/lib/hooks/usePalette'
+2-2
src/view/com/util/ErrorBoundary.tsx
···11-import {Component, ErrorInfo, ReactNode} from 'react'
22-import {StyleProp, ViewStyle} from 'react-native'
11+import {Component, type ErrorInfo, type ReactNode} from 'react'
22+import {type StyleProp, type ViewStyle} from 'react-native'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55
-1
src/view/com/util/EventStopper.tsx
···11import {View, type ViewStyle} from 'react-native'
22-import type React from 'react'
3243/**
54 * This utility function captures events and stops
+2-2
src/view/com/util/FeedInfoText.tsx
···11-import {StyleProp, StyleSheet, TextStyle} from 'react-native'
11+import {type StyleProp, StyleSheet, type TextStyle} from 'react-native'
2233import {sanitizeDisplayName} from '#/lib/strings/display-names'
44-import {TypographyVariant} from '#/lib/ThemeContext'
44+import {type TypographyVariant} from '#/lib/ThemeContext'
55import {useFeedSourceInfoQuery} from '#/state/queries/feed'
66import {TextLinkOnWebOnly} from './Link'
77import {LoadingPlaceholder} from './LoadingPlaceholder'
+1-1
src/view/com/util/Link.tsx
···11-import {memo, useCallback, useMemo} from 'react'
11+import {type JSX, memo, useCallback, useMemo} from 'react'
22import {
33 type GestureResponderEvent,
44 Platform,
···11import {StyleSheet} from 'react-native'
22import {
33 FontAwesomeIcon,
44- FontAwesomeIconStyle,
44+ type FontAwesomeIconStyle,
55} from '@fortawesome/react-native-fontawesome'
6677import {usePalette} from '#/lib/hooks/usePalette'
-17
src/view/com/util/LoadingScreen.tsx
···11-import {ActivityIndicator, View} from 'react-native'
22-33-import {s} from '#/lib/styles'
44-import * as Layout from '#/components/Layout'
55-66-/**
77- * @deprecated use Layout compoenents directly
88- */
99-export function LoadingScreen() {
1010- return (
1111- <Layout.Content>
1212- <View style={s.p20}>
1313- <ActivityIndicator size="large" />
1414- </View>
1515- </Layout.Content>
1616- )
1717-}
+1-1
src/view/com/util/MainScrollProvider.tsx
···11import React, {useCallback, useEffect} from 'react'
22-import {NativeScrollEvent} from 'react-native'
22+import {type NativeScrollEvent} from 'react-native'
33import {interpolate, useSharedValue, withSpring} from 'react-native-reanimated'
44import EventEmitter from 'eventemitter3'
55
-1
src/view/com/util/PostMeta.tsx
···44import {msg} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66import {useQueryClient} from '@tanstack/react-query'
77-import type React from 'react'
8798import {useActorStatus} from '#/lib/actor-status'
109import {makeProfileLink} from '#/lib/routes/links'
+8-3
src/view/com/util/PressableWithHover.tsx
···11-import {forwardRef, PropsWithChildren} from 'react'
22-import {Pressable, PressableProps, StyleProp, ViewStyle} from 'react-native'
33-import {View} from 'react-native'
11+import {forwardRef, type PropsWithChildren} from 'react'
22+import {
33+ Pressable,
44+ type PressableProps,
55+ type StyleProp,
66+ type ViewStyle,
77+} from 'react-native'
88+import {type View} from 'react-native'
49510import {addStyle} from '#/lib/styles'
611import {useInteractionState} from '#/components/hooks/useInteractionState'
+2-2
src/view/com/util/TimeElapsed.tsx
···11-import React from 'react'
22-import {I18n} from '@lingui/core'
11+import React, {type JSX} from 'react'
22+import {type I18n} from '@lingui/core'
33import {useLingui} from '@lingui/react'
4455import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo'
···11import {forwardRef} from 'react'
22-import {FlatListComponent} from 'react-native'
33-import {View, ViewProps} from 'react-native'
22+import {type FlatListComponent} from 'react-native'
33+import {View, type ViewProps} from 'react-native'
44import Animated from 'react-native-reanimated'
55-import {FlatListPropsWithLayout} from 'react-native-reanimated'
55+import {type FlatListPropsWithLayout} from 'react-native-reanimated'
6677// If you explode these into functions, don't forget to forwardRef!
88
+1-1
src/view/com/util/WebAuxClickWrapper.tsx
···11-import React from 'react'
21import {Platform} from 'react-native'
22+import type React from 'react'
3344const onMouseUp = (e: React.MouseEvent & {target: HTMLElement}) => {
55 // Only handle whenever it is the middle button
+3-3
src/view/com/util/error/ErrorMessage.tsx
···11import {
22- StyleProp,
22+ type StyleProp,
33 StyleSheet,
44 TouchableOpacity,
55 View,
66- ViewStyle,
66+ type ViewStyle,
77} from 'react-native'
88import {
99 FontAwesomeIcon,
1010- FontAwesomeIconStyle,
1010+ type FontAwesomeIconStyle,
1111} from '@fortawesome/react-native-fontawesome'
1212import {msg} from '@lingui/macro'
1313import {useLingui} from '@lingui/react'
+1-1
src/view/com/util/error/ErrorScreen.tsx
···11import {View} from 'react-native'
22import {
33 FontAwesomeIcon,
44- FontAwesomeIconStyle,
44+ type FontAwesomeIconStyle,
55} from '@fortawesome/react-native-fontawesome'
66import {msg, Trans} from '@lingui/macro'
77import {useLingui} from '@lingui/react'
+1-1
src/view/com/util/fab/FAB.web.tsx
···11import {View} from 'react-native'
2233import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
44-import {FABInner, FABProps} from './FABInner'
44+import {FABInner, type FABProps} from './FABInner'
5566export const FAB = (_opts: FABProps) => {
77 const {isDesktop} = useWebMediaQueries()
+12-5
src/view/com/util/fab/FABInner.tsx
···11-import {ComponentProps} from 'react'
22-import {StyleSheet, TouchableWithoutFeedback} from 'react-native'
11+import {type ComponentProps, type JSX} from 'react'
22+import {
33+ type Pressable,
44+ type StyleProp,
55+ StyleSheet,
66+ type ViewStyle,
77+} from 'react-native'
38import Animated from 'react-native-reanimated'
49import {useSafeAreaInsets} from 'react-native-safe-area-context'
510import {LinearGradient} from 'expo-linear-gradient'
···1217import {gradients} from '#/lib/styles'
1318import {isWeb} from '#/platform/detection'
1419import {ios} from '#/alf'
2020+import {atoms as a} from '#/alf'
15211616-export interface FABProps
1717- extends ComponentProps<typeof TouchableWithoutFeedback> {
2222+export interface FABProps extends ComponentProps<typeof Pressable> {
1823 testID?: string
1924 icon: JSX.Element
2525+ style?: StyleProp<ViewStyle>
2026}
21272222-export function FABInner({testID, icon, onPress, ...props}: FABProps) {
2828+export function FABInner({testID, icon, onPress, style, ...props}: FABProps) {
2329 const insets = useSafeAreaInsets()
2430 const {isMobile, isTablet} = useWebMediaQueries()
2531 const playHaptic = useHaptics()
···5157 playHaptic('Heavy')
5258 })}
5359 targetScale={0.9}
6060+ style={[a.rounded_full, style]}
5461 {...props}>
5562 <LinearGradient
5663 colors={[gradients.blueLight.start, gradients.blueLight.end]}
···44import {type AppBskyEmbedImages} from '@atproto/api'
55import {msg} from '@lingui/macro'
66import {useLingui} from '@lingui/react'
77-import type React from 'react'
8798import {type Dimensions} from '#/lib/media/types'
109import {
+1-1
src/view/com/util/images/Image.tsx
···11-import {Image, ImageProps, ImageSource} from 'expo-image'
11+import {Image, type ImageProps, type ImageSource} from 'expo-image'
2233interface HighPriorityImageProps extends ImageProps {
44 source: ImageSource
+1-1
src/view/com/util/layouts/LoggedOutLayout.tsx
···11-import React from 'react'
21import {ScrollView, StyleSheet, View} from 'react-native'
22+import type React from 'react'
3344import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle'
55import {useIsKeyboardVisible} from '#/lib/hooks/useIsKeyboardVisible'
+1-1
src/view/icons/Logomark.tsx
···11-import Svg, {Path, PathProps, SvgProps} from 'react-native-svg'
11+import Svg, {Path, type PathProps, type SvgProps} from 'react-native-svg'
2233import {usePalette} from '#/lib/hooks/usePalette'
44
+4-1
src/view/screens/CommunityGuidelines.tsx
···55import {useFocusEffect} from '@react-navigation/native'
6677import {usePalette} from '#/lib/hooks/usePalette'
88-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
88+import {
99+ type CommonNavigatorParams,
1010+ type NativeStackScreenProps,
1111+} from '#/lib/routes/types'
912import {s} from '#/lib/styles'
1013import {useSetMinimalShellMode} from '#/state/shell'
1114import {TextLink} from '#/view/com/util/Link'
+4-1
src/view/screens/CopyrightPolicy.tsx
···55import {useFocusEffect} from '@react-navigation/native'
6677import {usePalette} from '#/lib/hooks/usePalette'
88-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
88+import {
99+ type CommonNavigatorParams,
1010+ type NativeStackScreenProps,
1111+} from '#/lib/routes/types'
912import {s} from '#/lib/styles'
1013import {useSetMinimalShellMode} from '#/state/shell'
1114import {TextLink} from '#/view/com/util/Link'
+1-1
src/view/screens/NotFound.tsx
···99} from '@react-navigation/native'
10101111import {usePalette} from '#/lib/hooks/usePalette'
1212-import {NavigationProp} from '#/lib/routes/types'
1212+import {type NavigationProp} from '#/lib/routes/types'
1313import {s} from '#/lib/styles'
1414import {useSetMinimalShellMode} from '#/state/shell'
1515import {Button} from '#/view/com/util/forms/Button'
+4-1
src/view/screens/ProfileFeedLikedBy.tsx
···33import {useLingui} from '@lingui/react'
44import {useFocusEffect} from '@react-navigation/native'
5566-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
66+import {
77+ type CommonNavigatorParams,
88+ type NativeStackScreenProps,
99+} from '#/lib/routes/types'
710import {makeRecordUri} from '#/lib/strings/url-helpers'
811import {useSetMinimalShellMode} from '#/state/shell'
912import {PostLikedBy as PostLikedByComponent} from '#/view/com/post-thread/PostLikedBy'
···22import {View} from 'react-native'
3344import {ScrollProvider} from '#/lib/ScrollContext'
55-import {List, ListMethods} from '#/view/com/util/List'
55+import {List, type ListMethods} from '#/view/com/util/List'
66import {Button, ButtonText} from '#/components/Button'
77import * as Toggle from '#/components/forms/Toggle'
88import {Text} from '#/components/Typography'
+4-1
src/view/screens/Support.tsx
···5566import {HELP_DESK_URL} from '#/lib/constants'
77import {usePalette} from '#/lib/hooks/usePalette'
88-import {CommonNavigatorParams, NativeStackScreenProps} from '#/lib/routes/types'
88+import {
99+ type CommonNavigatorParams,
1010+ type NativeStackScreenProps,
1111+} from '#/lib/routes/types'
912import {s} from '#/lib/styles'
1013import {useSetMinimalShellMode} from '#/state/shell'
1114import {TextLink} from '#/view/com/util/Link'
+1-1
src/view/shell/Drawer.tsx
···11-import React, {type ComponentProps} from 'react'
11+import React, {type ComponentProps, type JSX} from 'react'
22import {Linking, ScrollView, TouchableOpacity, View} from 'react-native'
33import {useSafeAreaInsets} from 'react-native-safe-area-context'
44import {msg, Plural, plural, Trans} from '@lingui/macro'
+1-1
src/view/shell/bottom-bar/BottomBar.tsx
···11-import {useCallback} from 'react'
11+import {type JSX, useCallback} from 'react'
22import {type GestureResponderEvent, View} from 'react-native'
33import Animated from 'react-native-reanimated'
44import {useSafeAreaInsets} from 'react-native-safe-area-context'