···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/themes.ts
···11import {atoms} from '#/alf/atoms'
22-import {Palette, Theme} from '#/alf/types'
22+import {type Palette, type Theme} from '#/alf/types'
33import {
44 BLUE_HUE,
55 defaultScale,
+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 {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'
···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-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({
+4-4
src/components/VideoPostCard.tsx
···33import {Image} from 'expo-image'
44import {LinearGradient} from 'expo-linear-gradient'
55import {
66- AppBskyActorDefs,
66+ type AppBskyActorDefs,
77 AppBskyEmbedVideo,
88- AppBskyFeedDefs,
88+ type AppBskyFeedDefs,
99 AppBskyFeedPost,
1010- ModerationDecision,
1010+ type ModerationDecision,
1111} from '@atproto/api'
1212import {msg} from '@lingui/macro'
1313import {useLingui} from '@lingui/react'
···1515import {sanitizeHandle} from '#/lib/strings/handles'
1616import {formatCount} from '#/view/com/util/numeric/format'
1717import {UserAvatar} from '#/view/com/util/UserAvatar'
1818-import {VideoFeedSourceContext} from '#/screens/VideoFeed/types'
1818+import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
1919import {atoms as a, useTheme} from '#/alf'
2020import {BLUE_HUE} from '#/alf/util/colorGeneration'
2121import {select} from '#/alf/util/themeSelector'
+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
+322-278
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···987987msgid "An error occurred while fetching the feed."
988988msgstr ""
989989990990-#: src/components/StarterPack/ProfileStarterPacks.tsx:343
990990+#: src/components/StarterPack/ProfileStarterPacks.tsx:339
991991msgid "An error occurred while generating your starter pack. Want to try again?"
992992msgstr ""
993993···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:232
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···13111311msgstr ""
1312131213131313#: src/components/dialogs/StarterPackDialog.tsx:71
13141314-#: src/components/StarterPack/ProfileStarterPacks.tsx:235
13151315-#: src/components/StarterPack/ProfileStarterPacks.tsx:245
13141314+#: src/components/StarterPack/ProfileStarterPacks.tsx:231
13151315+#: src/components/StarterPack/ProfileStarterPacks.tsx:241
13161316msgid "Before creating a starter pack, you must first verify your email."
13171317msgstr ""
13181318···13701370msgid "Block Account?"
13711371msgstr ""
1372137213731373-#: src/view/screens/ProfileList.tsx:669
13731373+#: src/screens/ProfileList/components/SubscribeMenu.tsx:97
13741374+#: src/screens/ProfileList/components/SubscribeMenu.tsx:100
13741375msgid "Block accounts"
13751376msgstr ""
13761377···13821383msgid "Block and/or delete this conversation"
13831384msgstr ""
1384138513851385-#: src/view/screens/ProfileList.tsx:789
13861386+#: src/screens/ProfileList/components/SubscribeMenu.tsx:125
13861387msgid "Block list"
13871388msgstr ""
13881389···13901391msgid "Block or report"
13911392msgstr ""
1392139313931393-#: src/view/screens/ProfileList.tsx:784
13941394+#: src/screens/ProfileList/components/SubscribeMenu.tsx:120
13941395msgid "Block these accounts?"
13951396msgstr ""
13961397···14251426msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours."
14261427msgstr ""
1427142814281428-#: src/screens/Profile/Sections/Labels.tsx:203
14291429+#: src/screens/Profile/Sections/Labels.tsx:204
14291430msgid "Blocking does not prevent this labeler from placing labels on your account."
14301431msgstr ""
1431143214321432-#: src/view/screens/ProfileList.tsx:786
14331433+#: src/screens/ProfileList/components/SubscribeMenu.tsx:122
14331434msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you."
14341435msgstr ""
14351436···14411442msgid "Blog"
14421443msgstr ""
1443144414451445+#: src/view/com/auth/server-input/index.tsx:136
14461446+#: src/view/com/auth/server-input/index.tsx:137
14471447+msgid "Bluesky"
14481448+msgstr ""
14491449+14441450#: src/screens/PostThread/components/ThreadItemAnchor.tsx:684
14451451msgid "Bluesky cannot confirm the authenticity of the claimed date."
14461452msgstr ""
···14671473msgid "Bluesky Social Terms of Service"
14681474msgstr ""
1469147514701470-#: src/components/StarterPack/ProfileStarterPacks.tsx:310
14761476+#: src/components/StarterPack/ProfileStarterPacks.tsx:306
14711477msgid "Bluesky will choose a set of recommended accounts from people in your network."
14721478msgstr ""
14731479···14951501msgid "Bluesky+ icons"
14961502msgstr ""
1497150314981498-#: src/lib/moderation/useLabelBehaviorDescription.ts:53
15041504+#: src/lib/moderation/useLabelBehaviorDescription.ts:56
14991505msgid "Blur images"
15001506msgstr ""
1501150715021502-#: src/lib/moderation/useLabelBehaviorDescription.ts:51
15081508+#: src/lib/moderation/useLabelBehaviorDescription.ts:54
15031509msgid "Blur images and filter from feeds"
15041510msgstr ""
15051511···17101716msgid "Change password dialog"
17111717msgstr ""
1712171817131713-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:98
17191719+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:100
17141720msgid "Change post language to {suggestedLanguageName}"
17151721msgstr ""
17161722···18171823msgid "Choose Feeds"
18181824msgstr ""
1819182518201820-#: src/components/StarterPack/ProfileStarterPacks.tsx:318
18261826+#: src/components/StarterPack/ProfileStarterPacks.tsx:314
18211827msgid "Choose for me"
18221828msgstr ""
18231829···18741880msgid "Click for information"
18751881msgstr ""
1876188218771877-#: src/view/screens/Support.tsx:41
18831883+#: src/view/screens/Support.tsx:44
18781884msgid "click here"
18791885msgstr ""
18801886···19281934#: src/components/dms/ReportDialog.tsx:395
19291935#: src/components/live/EditLiveDialog.tsx:229
19301936#: src/components/live/EditLiveDialog.tsx:235
19311931-#: src/components/NewskieDialog.tsx:146
19321932-#: src/components/NewskieDialog.tsx:153
19371937+#: src/components/NewskieDialog.tsx:159
19381938+#: src/components/NewskieDialog.tsx:165
19331939#: src/components/Post/Embed/ExternalEmbed/Gif.tsx:197
19341940#: src/components/ProgressGuide/FollowDialog.tsx:379
19351941#: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:118
···19551961msgid "Close alert"
19561962msgstr ""
1957196319581958-#: src/view/com/util/BottomSheetCustomBackdrop.tsx:36
19641964+#: src/view/com/util/BottomSheetCustomBackdrop.tsx:37
19591965msgid "Close bottom drawer"
19601966msgstr ""
19611967···2051205720522058#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:45
20532059#: src/Navigation.tsx:341
20542054-#: src/view/screens/CommunityGuidelines.tsx:34
20602060+#: src/view/screens/CommunityGuidelines.tsx:37
20552061msgid "Community Guidelines"
20562062msgstr ""
20572063···20802086msgid "Compressing video..."
20812087msgstr ""
2082208820832083-#: src/components/moderation/LabelPreference.tsx:88
20892089+#: src/components/moderation/LabelPreference.tsx:87
20842090msgid "Configure content filtering setting for category: {name}"
20852091msgstr ""
2086209220872087-#: src/components/moderation/LabelPreference.tsx:249
20932093+#: src/components/moderation/LabelPreference.tsx:248
20882094msgid "Configured in <0>moderation settings</0>."
20892095msgstr ""
20902096···22802286msgid "Copies build version to clipboard"
22812287msgstr ""
2282228822832283-#: src/components/StarterPack/QrCodeDialog.tsx:182
22892289+#: src/components/StarterPack/QrCodeDialog.tsx:192
22842290msgid "Copy"
22852291msgstr ""
22862292···22932299msgid "Copy at:// URI"
22942300msgstr ""
2295230122962296-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:153
22972297-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:156
23022302+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:152
23032303+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:155
22982304msgid "Copy author DID"
22992305msgstr ""
23002306···23132319msgid "Copy host"
23142320msgstr ""
2315232123162316-#: src/components/StarterPack/ShareDialog.tsx:104
23222322+#: src/components/StarterPack/ShareDialog.tsx:113
23172323#: src/screens/StarterPack/StarterPackScreen.tsx:617
23182324msgid "Copy link"
23192325msgstr ""
2320232623212321-#: src/components/StarterPack/ShareDialog.tsx:111
23272327+#: src/components/StarterPack/ShareDialog.tsx:119
23222328msgid "Copy Link"
23232329msgstr ""
2324233023252325-#: src/view/screens/ProfileList.tsx:513
23312331+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:172
23322332+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:176
23262333msgid "Copy link to list"
23272334msgstr ""
2328233523292336#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:127
23302337#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:130
23312331-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:87
23322332-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:90
23382338+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:86
23392339+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:89
23332340msgid "Copy link to post"
23342341msgstr ""
23352342···23472354msgid "Copy message text"
23482355msgstr ""
2349235623502350-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:144
23512351-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:147
23572357+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:143
23582358+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:146
23522359msgid "Copy post at:// URI"
23532360msgstr ""
23542361···23572364msgid "Copy post text"
23582365msgstr ""
2359236623602360-#: src/components/StarterPack/QrCodeDialog.tsx:176
23672367+#: src/components/StarterPack/QrCodeDialog.tsx:178
23612368msgid "Copy QR code"
23622369msgstr ""
23632370···23682375#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:40
23692376#: src/components/PolicyUpdateOverlay/updates/202508/index.tsx:107
23702377#: src/Navigation.tsx:346
23712371-#: src/view/screens/CopyrightPolicy.tsx:31
23782378+#: src/view/screens/CopyrightPolicy.tsx:34
23722379msgid "Copyright Policy"
23732380msgstr ""
23742381···23932400msgid "Could not load feed"
23942401msgstr ""
2395240223962396-#: src/view/screens/ProfileList.tsx:1029
24032403+#: src/screens/ProfileList/components/ErrorScreen.tsx:26
24042404+#: src/screens/ProfileList/index.tsx:79
24052405+#: src/screens/ProfileList/index.tsx:101
23972406msgid "Could not load list"
23982407msgstr ""
23992408···24172426#. Text on button to create a new starter pack
24182427#: src/components/dialogs/StarterPackDialog.tsx:112
24192428#: src/components/dialogs/StarterPackDialog.tsx:201
24202420-#: src/components/StarterPack/ProfileStarterPacks.tsx:300
24292429+#: src/components/StarterPack/ProfileStarterPacks.tsx:296
24212430msgid "Create"
24222431msgstr ""
2423243224242424-#: src/components/StarterPack/QrCodeDialog.tsx:160
24332433+#: src/components/StarterPack/QrCodeDialog.tsx:163
24252434msgid "Create a QR code for a starter pack"
24262435msgstr ""
2427243624282428-#: src/components/StarterPack/ProfileStarterPacks.tsx:178
24292429-#: src/components/StarterPack/ProfileStarterPacks.tsx:287
24372437+#: src/components/StarterPack/ProfileStarterPacks.tsx:174
24382438+#: src/components/StarterPack/ProfileStarterPacks.tsx:283
24302439#: src/Navigation.tsx:589
24312440msgid "Create a starter pack"
24322441msgstr ""
2433244224342434-#: src/components/StarterPack/ProfileStarterPacks.tsx:274
24432443+#: src/components/StarterPack/ProfileStarterPacks.tsx:270
24352444msgid "Create a starter pack for me"
24362445msgstr ""
24372446···24692478msgid "Create an avatar instead"
24702479msgstr ""
2471248024722472-#: src/components/StarterPack/ProfileStarterPacks.tsx:185
24812481+#: src/components/StarterPack/ProfileStarterPacks.tsx:181
24732482msgid "Create another"
24742483msgstr ""
24752484···24792488msgstr ""
2480248924812490#: src/components/moderation/ReportDialog/index.tsx:585
24822482-#: src/components/ReportDialog/SelectReportOptionView.tsx:99
24912491+#: src/components/ReportDialog/SelectReportOptionView.tsx:102
24832492msgid "Create report for {0}"
24842493msgstr ""
24852494···25622571#: src/components/dms/MessageContextMenu.tsx:185
25632572#: src/components/PostControls/PostMenu/PostMenuItems.tsx:704
25642573#: src/screens/Messages/components/ChatStatusInfo.tsx:55
25742574+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:285
25652575#: src/screens/Settings/AppPasswords.tsx:212
25662576#: src/screens/StarterPack/StarterPackScreen.tsx:599
25672577#: src/screens/StarterPack/StarterPackScreen.tsx:688
25682578#: src/screens/StarterPack/StarterPackScreen.tsx:760
25692569-#: src/view/screens/ProfileList.tsx:768
25702579msgid "Delete"
25712580msgstr ""
25722581···26112620msgid "Delete for me"
26122621msgstr ""
2613262226142614-#: src/view/screens/ProfileList.tsx:556
26232623+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:211
26242624+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:214
26152625msgid "Delete list"
26162626msgstr ""
26172627···26422652msgid "Delete starter pack?"
26432653msgstr ""
2644265426452645-#: src/view/screens/ProfileList.tsx:763
26552655+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:280
26462656msgid "Delete this list?"
26472657msgstr ""
26482658···27312741msgid "Disable subtitles"
27322742msgstr ""
2733274327342734-#: src/lib/moderation/useLabelBehaviorDescription.ts:32
27352735-#: src/lib/moderation/useLabelBehaviorDescription.ts:42
27362736-#: src/lib/moderation/useLabelBehaviorDescription.ts:68
27442744+#: src/lib/moderation/useLabelBehaviorDescription.ts:35
27452745+#: src/lib/moderation/useLabelBehaviorDescription.ts:45
27462746+#: src/lib/moderation/useLabelBehaviorDescription.ts:71
27372747#: src/screens/Messages/Settings.tsx:144
27382748#: src/screens/Messages/Settings.tsx:147
27392749#: src/screens/Moderation/index.tsx:413
···28922902msgid "Download Bluesky"
28932903msgstr ""
2894290428952895-#: src/screens/Settings/components/ExportCarDialog.tsx:79
28962896-#: src/screens/Settings/components/ExportCarDialog.tsx:84
29052905+#: src/screens/Settings/components/ExportCarDialog.tsx:78
29062906+#: src/screens/Settings/components/ExportCarDialog.tsx:83
28972907msgid "Download CAR file"
28982908msgstr ""
28992909···29802990msgid "Edit interests"
29812991msgstr ""
2982299229832983-#: src/view/screens/ProfileList.tsx:544
29932993+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:203
29942994+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:206
29842995msgid "Edit list details"
29852996msgstr ""
29862997···3088309930893100#: src/components/dialogs/Embed.tsx:104
30903101#: src/components/dialogs/Embed.tsx:108
30913091-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:119
30923092-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:124
31023102+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:118
31033103+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:123
30933104msgid "Embed post"
30943105msgstr ""
30953106···31613172msgid "Enabled"
31623173msgstr ""
3163317431643164-#: src/screens/Profile/Sections/Feed.tsx:113
31753175+#: src/screens/Profile/Sections/Feed.tsx:109
31653176msgid "End of feed"
31663177msgstr ""
31673178···34163427msgid "Failed to accept chat"
34173428msgstr ""
3418342934193419-#: src/components/dms/ActionsWrapper.web.tsx:67
34303430+#: src/components/dms/ActionsWrapper.web.tsx:66
34203431#: src/components/dms/MessageContextMenu.tsx:99
34213432msgid "Failed to add emoji reaction"
34223433msgstr ""
···35263537msgid "Failed to pin post"
35273538msgstr ""
3528353935293529-#: src/components/dms/ActionsWrapper.web.tsx:61
35403540+#: src/components/dms/ActionsWrapper.web.tsx:60
35303541#: src/components/dms/MessageContextMenu.tsx:93
35313542msgid "Failed to remove emoji reaction"
35323543msgstr ""
···35743585msgid "Failed to toggle thread mute, please try again"
35753586msgstr ""
3576358735883588+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:111
35893589+msgid "Failed to unpin list"
35903590+msgstr ""
35913591+35773592#: src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx:149
35783593#: src/components/dialogs/EmailDialog/screens/Manage2FA/Enable.tsx:83
35793594msgid "Failed to update email 2FA settings"
···36523667msgstr ""
3653366836543669#: src/Navigation.tsx:574
36703670+#: src/screens/SavedFeeds.tsx:108
36553671#: src/screens/Search/SearchResults.tsx:73
36563672#: src/screens/StarterPack/StarterPackScreen.tsx:190
36573673#: src/view/screens/Feeds.tsx:511
36583674#: src/view/screens/Profile.tsx:230
36593659-#: src/view/screens/SavedFeeds.tsx:104
36603675#: src/view/shell/desktop/LeftNav.tsx:727
36613676#: src/view/shell/Drawer.tsx:530
36623677msgid "Feeds"
36633678msgstr ""
3664367936653665-#: src/view/screens/SavedFeeds.tsx:206
36663666-msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."
36803680+#: src/screens/SavedFeeds.tsx:215
36813681+msgid "Feeds are custom algorithms that users build with a little coding expertise. <0>See this guide</0> for more information."
36673682msgstr ""
3668368336693684#: src/components/FeedCard.tsx:282
36703670-#: src/view/screens/SavedFeeds.tsx:86
36853685+#: src/screens/SavedFeeds.tsx:90
36713686msgctxt "toast"
36723687msgid "Feeds updated!"
36733688msgstr ""
···36843699msgid "File saved successfully!"
36853700msgstr ""
3686370136873687-#: src/lib/moderation/useLabelBehaviorDescription.ts:66
37023702+#: src/lib/moderation/useLabelBehaviorDescription.ts:69
36883703msgid "Filter from feeds"
36893704msgstr ""
36903705···38443859msgid "Followers of @{0} that you know"
38453860msgstr ""
3846386138473847-#: src/screens/Profile/KnownFollowers.tsx:104
38483848-#: src/screens/Profile/KnownFollowers.tsx:121
38623862+#: src/screens/Profile/KnownFollowers.tsx:107
38633863+#: src/screens/Profile/KnownFollowers.tsx:124
38493864msgid "Followers you know"
38503865msgstr ""
38513866···38593874msgid "Following"
38603875msgstr ""
3861387638773877+#: src/screens/SavedFeeds.tsx:410
38623878#: src/view/screens/Feeds.tsx:603
38633863-#: src/view/screens/SavedFeeds.tsx:420
38643879msgctxt "feed-name"
38653880msgid "Following"
38663881msgstr ""
···39693984msgid "From <0/>"
39703985msgstr ""
3971398639723972-#: src/components/StarterPack/ProfileStarterPacks.tsx:307
39873987+#: src/components/StarterPack/ProfileStarterPacks.tsx:303
39733988msgid "Generate a starter pack"
39743989msgstr ""
39753990···40624077#: src/components/moderation/ScreenHider.tsx:163
40634078#: src/screens/Messages/Inbox.tsx:249
40644079#: src/screens/Profile/ProfileFeed/index.tsx:92
40804080+#: src/screens/ProfileList/components/ErrorScreen.tsx:34
40814081+#: src/screens/ProfileList/components/ErrorScreen.tsx:40
40654082#: src/screens/VideoFeed/components/Header.tsx:163
40664083#: src/screens/VideoFeed/index.tsx:1146
40674084#: src/screens/VideoFeed/index.tsx:1150
40684085#: src/view/com/auth/LoggedOut.tsx:72
40694086#: src/view/screens/NotFound.tsx:57
40704070-#: src/view/screens/ProfileList.tsx:1038
40714087msgid "Go back"
40724088msgstr ""
40734089···40784094#: src/screens/Profile/ProfileFeed/index.tsx:97
40794095#: src/screens/StarterPack/StarterPackScreen.tsx:773
40804096#: src/view/screens/NotFound.tsx:56
40814081-#: src/view/screens/ProfileList.tsx:1043
40824097msgid "Go Back"
40834098msgstr ""
4084409940854100#: src/components/dms/ReportDialog.tsx:197
40864086-#: src/components/ReportDialog/SelectReportOptionView.tsx:78
41014101+#: src/components/ReportDialog/SelectReportOptionView.tsx:81
40874102#: src/components/ReportDialog/SubmitView.tsx:110
40884103#: src/screens/Onboarding/Layout.tsx:121
40894104#: src/screens/Onboarding/Layout.tsx:214
···42434258#: src/components/interstitials/Trending.tsx:131
42444259#: src/components/interstitials/TrendingVideos.tsx:138
42454260#: src/components/moderation/ContentHider.tsx:203
42464246-#: src/components/moderation/LabelPreference.tsx:141
42614261+#: src/components/moderation/LabelPreference.tsx:140
42474262#: src/components/moderation/PostHider.tsx:134
42484263#: src/components/PostControls/PostMenu/PostMenuItems.tsx:715
42494249-#: src/lib/moderation/useLabelBehaviorDescription.ts:15
42504250-#: src/lib/moderation/useLabelBehaviorDescription.ts:20
42514251-#: src/lib/moderation/useLabelBehaviorDescription.ts:25
42524252-#: src/lib/moderation/useLabelBehaviorDescription.ts:30
42644264+#: src/lib/moderation/useLabelBehaviorDescription.ts:18
42654265+#: src/lib/moderation/useLabelBehaviorDescription.ts:23
42664266+#: src/lib/moderation/useLabelBehaviorDescription.ts:28
42674267+#: src/lib/moderation/useLabelBehaviorDescription.ts:33
42534268#: src/view/shell/desktop/SidebarTrendingTopics.tsx:111
42544269msgid "Hide"
42554270msgstr ""
···44004415msgid "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."
44014416msgstr ""
4402441744034403-#: src/view/screens/ProfileList.tsx:765
44184418+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:282
44044419msgid "If you delete this list, you won't be able to recover it."
44054420msgstr ""
44064421···44414456msgid "Illegal and Urgent"
44424457msgstr ""
4443445844444444-#: src/view/com/util/images/Gallery.tsx:71
44594459+#: src/view/com/util/images/Gallery.tsx:70
44454460msgid "Image"
44464461msgstr ""
44474462···45874602msgid "Invite codes: 1 available"
45884603msgstr ""
4589460445904590-#: src/components/StarterPack/ShareDialog.tsx:77
46054605+#: src/components/StarterPack/ShareDialog.tsx:81
45914606msgid "Invite people to this starter pack!"
45924607msgstr ""
45934608···46754690msgid "Labels added"
46764691msgstr ""
4677469246784678-#: src/screens/Profile/Sections/Labels.tsx:194
46934693+#: src/screens/Profile/Sections/Labels.tsx:195
46794694msgid "Labels are annotations on users and content. They can be used to hide, warn, and categorize the network."
46804695msgstr ""
46814696···48094824msgid "left to go."
48104825msgstr ""
4811482648124812-#: src/components/StarterPack/ProfileStarterPacks.tsx:323
48274827+#: src/components/StarterPack/ProfileStarterPacks.tsx:319
48134828msgid "Let me choose"
48144829msgstr ""
48154830···48694884msgid "Liked by"
48704885msgstr ""
4871488648724872-#: src/screens/Post/PostLikedBy.tsx:38
48734873-#: src/screens/Profile/ProfileLabelerLikedBy.tsx:29
48744874-#: src/view/screens/ProfileFeedLikedBy.tsx:30
48874887+#: src/screens/Post/PostLikedBy.tsx:41
48884888+#: src/screens/Profile/ProfileLabelerLikedBy.tsx:32
48894889+#: src/view/screens/ProfileFeedLikedBy.tsx:33
48754890msgid "Liked By"
48764891msgstr ""
48774892···49214936msgid "List Avatar"
49224937msgstr ""
4923493849244924-#: src/view/screens/ProfileList.tsx:438
49394939+#: src/screens/ProfileList/components/SubscribeMenu.tsx:50
49254940msgctxt "toast"
49264941msgid "List blocked"
49274942msgstr ""
···49434958msgid "List creator"
49444959msgstr ""
4945496049464946-#: src/view/screens/ProfileList.tsx:485
49614961+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:97
49474962msgctxt "toast"
49484963msgid "List deleted"
49494964msgstr ""
···49524967msgid "List has been hidden"
49534968msgstr ""
4954496949554955-#: src/view/screens/ProfileList.tsx:176
49704970+#: src/screens/ProfileList/index.tsx:172
49564971msgid "List Hidden"
49574972msgstr ""
4958497349594959-#: src/view/screens/ProfileList.tsx:402
49744974+#: src/screens/ProfileList/components/SubscribeMenu.tsx:31
49604975msgctxt "toast"
49614976msgid "List muted"
49624977msgstr ""
···49654980msgid "List Name"
49664981msgstr ""
4967498249684968-#: src/view/screens/ProfileList.tsx:456
49834983+#: src/screens/ProfileList/components/Header.tsx:116
49844984+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:138
49694985msgctxt "toast"
49704986msgid "List unblocked"
49714987msgstr ""
4972498849734973-#: src/view/screens/ProfileList.tsx:420
49894989+#: src/screens/ProfileList/components/Header.tsx:98
49904990+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:120
49744991msgctxt "toast"
49754992msgid "List unmuted"
49764993msgstr ""
···50185035msgstr ""
5019503650205037#: src/screens/Profile/ProfileFeed/index.tsx:224
50215021-#: src/screens/Profile/Sections/Feed.tsx:98
50225022-#: src/view/com/feeds/FeedPage.tsx:162
50235023-#: src/view/screens/ProfileList.tsx:878
50385038+#: src/screens/Profile/Sections/Feed.tsx:94
50395039+#: src/screens/ProfileList/FeedSection.tsx:105
50405040+#: src/view/com/feeds/FeedPage.tsx:169
50245041msgid "Load new posts"
50255042msgstr ""
50265043···50535070msgid "Looks like XXXXX-XXXXX"
50545071msgstr ""
5055507250565056-#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:39
50735073+#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:43
50575074msgid "Looks like you haven't saved any feeds! Use our recommendations or browse more below."
50585075msgstr ""
50595076···50615078msgid "Looks like you unpinned all your feeds. But don't worry, you can add some below 😄"
50625079msgstr ""
5063508050645064-#: src/screens/Feeds/NoFollowingFeed.tsx:37
50815081+#: src/screens/Feeds/NoFollowingFeed.tsx:35
50655082msgid "Looks like you're missing a following feed. <0>Click here to add one.</0>"
50665083msgstr ""
50675084···50695086msgid "Make adjustments to email settings for your account"
50705087msgstr ""
5071508850725072-#: src/components/StarterPack/ProfileStarterPacks.tsx:282
50895089+#: src/components/StarterPack/ProfileStarterPacks.tsx:278
50735090msgid "Make one for me"
50745091msgstr ""
50755092···52435260msgid "Moderation Lists"
52445261msgstr ""
5245526252465246-#: src/components/moderation/LabelPreference.tsx:252
52635263+#: src/components/moderation/LabelPreference.tsx:251
52475264msgid "moderation settings"
52485265msgstr ""
52495266···52705287msgid "More languages..."
52715288msgstr ""
5272528952905290+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:156
52735291#: src/view/com/profile/ProfileMenu.tsx:223
52745292#: src/view/com/profile/ProfileMenu.tsx:229
52755275-#: src/view/screens/ProfileList.tsx:750
52765293msgid "More options"
52775294msgstr ""
5278529552965296+#: src/screens/SavedFeeds.tsx:329
52975297+msgid "Move feed down"
52985298+msgstr ""
52995299+53005300+#: src/screens/SavedFeeds.tsx:320
53015301+msgid "Move feed up"
53025302+msgstr ""
53035303+52795304#: src/screens/Onboarding/state.ts:113
52805305msgid "Movies"
52815306msgstr ""
···52855310msgstr ""
5286531152875312#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx:153
52885288-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:96
53135313+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:95
52895314msgctxt "video"
52905315msgid "Mute"
52915316msgstr ""
···53025327msgid "Mute account"
53035328msgstr ""
5304532953055305-#: src/view/screens/ProfileList.tsx:657
53305330+#: src/screens/ProfileList/components/SubscribeMenu.tsx:89
53315331+#: src/screens/ProfileList/components/SubscribeMenu.tsx:92
53065332msgid "Mute accounts"
53075333msgstr ""
53085334···53155341msgid "Mute in:"
53165342msgstr ""
5317534353185318-#: src/view/screens/ProfileList.tsx:779
53445344+#: src/screens/ProfileList/components/SubscribeMenu.tsx:115
53195345msgid "Mute list"
53205346msgstr ""
5321534753225322-#: src/view/screens/ProfileList.tsx:774
53485348+#: src/screens/ProfileList/components/SubscribeMenu.tsx:110
53235349msgid "Mute these accounts?"
53245350msgstr ""
53255351···53785404msgid "Muted words & tags"
53795405msgstr ""
5380540653815381-#: src/view/screens/ProfileList.tsx:776
54075407+#: src/screens/ProfileList/components/SubscribeMenu.tsx:112
53825408msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them."
53835409msgstr ""
53845410···54385464msgid "Need to report a copyright violation, legal request, or regulatory compliance issue?"
54395465msgstr ""
5440546654415441-#: src/components/ReportDialog/SelectReportOptionView.tsx:128
54675467+#: src/components/ReportDialog/SelectReportOptionView.tsx:131
54425468msgid "Need to report a copyright violation?"
54435469msgstr ""
54445470···55205546msgstr ""
5521554755225548#: src/screens/Profile/ProfileFeed/index.tsx:241
55495549+#: src/screens/ProfileList/index.tsx:246
55505550+#: src/screens/ProfileList/index.tsx:284
55235551#: src/view/screens/Feeds.tsx:552
55245552#: src/view/screens/Notifications.tsx:167
55255553#: src/view/screens/Profile.tsx:510
55265526-#: src/view/screens/ProfileList.tsx:250
55275527-#: src/view/screens/ProfileList.tsx:288
55285554msgid "New post"
55295555msgstr ""
5530555655315531-#: src/view/com/feeds/FeedPage.tsx:173
55575557+#: src/view/com/feeds/FeedPage.tsx:180
55325558msgctxt "action"
55335559msgid "New post"
55345560msgstr ""
···55505576msgid "New starter pack"
55515577msgstr ""
5552557855535553-#: src/components/NewskieDialog.tsx:83
55795579+#: src/components/NewskieDialog.tsx:102
55545580msgid "New user info dialog"
55555581msgstr ""
55565582···56655691msgid "No posts here"
56665692msgstr ""
5667569356685668-#: src/screens/Profile/Sections/Feed.tsx:66
56945694+#: src/screens/Profile/Sections/Feed.tsx:62
56695695msgid "No posts yet."
56705696msgstr ""
56715697···56915717msgid "No results for \"{0}\"."
56925718msgstr ""
5693571956945694-#: src/components/Lists.tsx:190
57205720+#: src/components/Lists.tsx:189
56955721msgid "No results found"
56965722msgstr ""
56975723···57685794msgid "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."
57695795msgstr ""
5770579657715771-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:134
57975797+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:133
57725798msgid "Note: This post is only visible to logged-in users."
57735799msgstr ""
57745800···58395865msgid "Nudity or adult content not labeled as such"
58405866msgstr ""
5841586758425842-#: src/lib/moderation/useLabelBehaviorDescription.ts:11
58685868+#: src/lib/moderation/useLabelBehaviorDescription.ts:14
58435869#: src/screens/Settings/NotificationSettings/index.tsx:291
58445870msgid "Off"
58455871msgstr ""
···59205946msgid "Only image files are supported"
59215947msgstr ""
5922594859235923-#: src/view/com/composer/videos/SubtitleFilePicker.tsx:40
59495949+#: src/view/com/composer/videos/SubtitleFilePicker.tsx:41
59245950msgid "Only WebVTT (.vtt) files are supported"
59255951msgstr ""
5926595259275927-#: src/components/Lists.tsx:95
59535953+#: src/components/Lists.tsx:94
59285954msgid "Oops, something went wrong!"
59295955msgstr ""
5930595659315931-#: src/components/Lists.tsx:174
59325932-#: src/components/StarterPack/ProfileStarterPacks.tsx:332
59335933-#: src/components/StarterPack/ProfileStarterPacks.tsx:341
59575957+#: src/components/Lists.tsx:173
59585958+#: src/components/StarterPack/ProfileStarterPacks.tsx:328
59595959+#: src/components/StarterPack/ProfileStarterPacks.tsx:337
59345960#: src/screens/Settings/AppPasswords.tsx:59
59355961#: src/screens/Settings/components/ChangeHandleDialog.tsx:106
59365962#: src/view/screens/Profile.tsx:125
···59926018msgid "Open pack"
59936019msgstr ""
5994602059955995-#: src/components/PostControls/PostMenu/index.tsx:65
60216021+#: src/components/PostControls/PostMenu/index.tsx:64
59966022msgid "Open post options menu"
59976023msgstr ""
59986024···60016027msgid "Open profile"
60026028msgstr ""
6003602960046004-#: src/components/PostControls/ShareMenu/index.tsx:90
60306030+#: src/components/PostControls/ShareMenu/index.tsx:89
60056031msgid "Open share menu"
60066032msgstr ""
60076033···60856111msgid "Opens list of invite codes"
60866112msgstr ""
6087611360886088-#: src/view/com/util/UserAvatar.tsx:576
61146114+#: src/view/com/util/UserAvatar.tsx:581
60896115msgid "Opens live status dialog"
60906116msgstr ""
60916117···60986124msgstr ""
6099612561006126#: src/view/com/notifications/NotificationFeedItem.tsx:906
61016101-#: src/view/com/util/UserAvatar.tsx:594
61276127+#: src/view/com/util/UserAvatar.tsx:599
61026128msgid "Opens this profile"
61036129msgstr ""
61046130···61616187msgid "Our moderators have reviewed reports and decided to disable your access to chats on Bluesky."
61626188msgstr ""
6163618961646164-#: src/components/Lists.tsx:191
61906190+#: src/components/Lists.tsx:190
61656191#: src/view/screens/NotFound.tsx:47
61666192msgid "Page not found"
61676193msgstr ""
···62056231msgid "Pause video"
62066232msgstr ""
6207623362346234+#: src/screens/ProfileList/index.tsx:166
62086235#: src/screens/Search/SearchResults.tsx:67
62096236#: src/screens/StarterPack/StarterPackScreen.tsx:189
62106210-#: src/view/screens/ProfileList.tsx:170
62116237msgid "People"
62126238msgstr ""
62136239···6247627362486274#: src/screens/Profile/components/ProfileFeedHeader.tsx:523
62496275#: src/screens/Profile/components/ProfileFeedHeader.tsx:530
62766276+#: src/screens/SavedFeeds.tsx:351
62506277msgid "Pin feed"
62516278msgstr ""
62526279···62546281msgid "Pin Feed"
62556282msgstr ""
6256628362576257-#: src/view/screens/ProfileList.tsx:714
62846284+#: src/screens/ProfileList/components/Header.tsx:156
62856285+#: src/screens/ProfileList/components/Header.tsx:163
62586286msgid "Pin to home"
62596287msgstr ""
62606288···62766304msgid "Pinned {0} to Home"
62776305msgstr ""
6278630662796279-#: src/view/screens/SavedFeeds.tsx:131
63076307+#: src/screens/SavedFeeds.tsx:142
62806308msgid "Pinned Feeds"
62816309msgstr ""
6282631062836283-#: src/view/screens/ProfileList.tsx:361
63116311+#: src/screens/ProfileList/components/Header.tsx:74
62846312msgid "Pinned to your feeds"
62856313msgstr ""
62866314···6560658865616589#: src/components/activity-notifications/SubscribeProfileDialog.tsx:250
65626590#: src/components/activity-notifications/SubscribeProfileDialog.tsx:262
65916591+#: src/screens/ProfileList/index.tsx:166
65636592#: src/screens/Settings/NotificationSettings/ActivityNotificationSettings.tsx:213
65646593#: src/screens/StarterPack/StarterPackScreen.tsx:191
65656594#: src/view/screens/Profile.tsx:225
65666566-#: src/view/screens/ProfileList.tsx:170
65676595msgid "Posts"
65686596msgstr ""
65696597···65926620msgstr ""
6593662165946622#: src/components/Error.tsx:60
65956595-#: src/components/Lists.tsx:100
66236623+#: src/components/Lists.tsx:99
65966624#: src/screens/Messages/components/MessageListError.tsx:24
65976625#: src/screens/Signup/BackNextButtons.tsx:47
65986626msgid "Press to retry"
···66416669#: src/Navigation.tsx:331
66426670#: src/screens/Settings/AboutSettings.tsx:92
66436671#: src/screens/Settings/AboutSettings.tsx:95
66446644-#: src/view/screens/PrivacyPolicy.tsx:31
66726672+#: src/view/screens/PrivacyPolicy.tsx:34
66456673#: src/view/shell/Drawer.tsx:704
66466674#: src/view/shell/Drawer.tsx:705
66476675msgid "Privacy Policy"
···67216749msgid "Push, People you follow"
67226750msgstr ""
6723675167246724-#: src/components/StarterPack/QrCodeDialog.tsx:134
67526752+#: src/components/StarterPack/QrCodeDialog.tsx:137
67256753msgid "QR code copied to your clipboard!"
67266754msgstr ""
6727675567286728-#: src/components/StarterPack/QrCodeDialog.tsx:112
67566756+#: src/components/StarterPack/QrCodeDialog.tsx:115
67296757msgid "QR code has been downloaded!"
67306758msgstr ""
6731675967326732-#: src/components/StarterPack/QrCodeDialog.tsx:113
67606760+#: src/components/StarterPack/QrCodeDialog.tsx:116
67336761msgid "QR code saved to your camera roll!"
67346762msgstr ""
67356763···67646792msgstr ""
6765679367666794#: src/lib/hooks/useNotificationHandler.ts:154
67676767-#: src/screens/Post/PostQuotes.tsx:38
67956795+#: src/screens/Post/PostQuotes.tsx:41
67686796#: src/screens/Settings/NotificationSettings/index.tsx:170
67696797#: src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx:41
67706798msgid "Quotes"
···69276955msgid "Remove Banner"
69286956msgstr ""
6929695769306930-#: src/screens/Messages/components/MessageInputEmbed.tsx:209
69586958+#: src/screens/Messages/components/MessageInputEmbed.tsx:212
69316959msgid "Remove embed"
69326960msgstr ""
69336961···6943697169446972#: src/screens/Profile/components/ProfileFeedHeader.tsx:319
69456973#: src/screens/Profile/components/ProfileFeedHeader.tsx:325
69466946-#: src/view/screens/ProfileList.tsx:528
69476947-#: src/view/screens/SavedFeeds.tsx:350
69746974+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:188
69756975+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:191
69766976+#: src/screens/SavedFeeds.tsx:340
69486977msgid "Remove from my feeds"
69496978msgstr ""
69506979···70387067msgstr ""
7039706870407069#: src/screens/Profile/components/ProfileFeedHeader.tsx:122
70707070+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:74
70417071#: src/view/com/posts/FeedShutdownMsg.tsx:44
70427042-#: src/view/screens/ProfileList.tsx:392
70437072msgid "Removed from your feeds"
70447073msgstr ""
70457074···71657194msgid "Report feed"
71667195msgstr ""
7167719671687168-#: src/view/screens/ProfileList.tsx:570
71977197+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:222
71987198+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:225
71697199msgid "Report list"
71707200msgstr ""
71717201···71877217msgid "Report submitted"
71887218msgstr ""
7189721971907190-#: src/components/ReportDialog/SelectReportOptionView.tsx:41
72207220+#: src/components/ReportDialog/SelectReportOptionView.tsx:44
71917221msgid "Report this content"
71927222msgstr ""
7193722371947224#: src/components/moderation/ReportDialog/copy.ts:31
71957195-#: src/components/ReportDialog/SelectReportOptionView.tsx:54
72257225+#: src/components/ReportDialog/SelectReportOptionView.tsx:57
71967226msgid "Report this feed"
71977227msgstr ""
7198722871997229#: src/components/moderation/ReportDialog/copy.ts:25
72007200-#: src/components/ReportDialog/SelectReportOptionView.tsx:51
72307230+#: src/components/ReportDialog/SelectReportOptionView.tsx:54
72017231msgid "Report this list"
72027232msgstr ""
7203723372047234#: src/components/dms/ReportDialog.tsx:61
72057235#: src/components/dms/ReportDialog.tsx:185
72067236#: src/components/moderation/ReportDialog/copy.ts:43
72077207-#: src/components/ReportDialog/SelectReportOptionView.tsx:60
72377237+#: src/components/ReportDialog/SelectReportOptionView.tsx:63
72087238msgid "Report this message"
72097239msgstr ""
7210724072117241#: src/components/moderation/ReportDialog/copy.ts:19
72127212-#: src/components/ReportDialog/SelectReportOptionView.tsx:48
72427242+#: src/components/ReportDialog/SelectReportOptionView.tsx:51
72137243msgid "Report this post"
72147244msgstr ""
7215724572167246#: src/components/moderation/ReportDialog/copy.ts:37
72177217-#: src/components/ReportDialog/SelectReportOptionView.tsx:57
72477247+#: src/components/ReportDialog/SelectReportOptionView.tsx:60
72187248msgid "Report this starter pack"
72197249msgstr ""
7220725072217251#: src/components/moderation/ReportDialog/copy.ts:13
72227222-#: src/components/ReportDialog/SelectReportOptionView.tsx:45
72527252+#: src/components/ReportDialog/SelectReportOptionView.tsx:48
72237253msgid "Report this user"
72247254msgstr ""
72257255···72477277msgid "Repost or quote post"
72487278msgstr ""
7249727972507250-#: src/screens/Post/PostRepostedBy.tsx:38
72807280+#: src/screens/Post/PostRepostedBy.tsx:41
72517281msgid "Reposted By"
72527282msgstr ""
72537283···7352738273537383#: src/components/dms/MessageItem.tsx:322
73547384#: src/components/Error.tsx:65
73557355-#: src/components/Lists.tsx:111
73857385+#: src/components/Lists.tsx:110
73567386#: src/components/moderation/ReportDialog/index.tsx:229
73577387#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoFallback.tsx:55
73587358-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoFallback.tsx:57
73597359-#: src/components/StarterPack/ProfileStarterPacks.tsx:346
73607360-#: src/screens/Login/LoginForm.tsx:348
73617361-#: src/screens/Login/LoginForm.tsx:355
73887388+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoFallback.tsx:58
73897389+#: src/components/StarterPack/ProfileStarterPacks.tsx:342
73907390+#: src/screens/Login/LoginForm.tsx:323
73917391+#: src/screens/Login/LoginForm.tsx:330
73627392#: src/screens/Messages/ChatList.tsx:291
73637393#: src/screens/Messages/components/MessageListError.tsx:25
73647394#: src/screens/Messages/Inbox.tsx:218
···73897419msgstr ""
7390742073917421#: src/screens/Profile/ProfileFeed/index.tsx:93
74227422+#: src/screens/ProfileList/components/ErrorScreen.tsx:35
73927423#: src/screens/Settings/components/ChangeHandleDialog.tsx:569
73937424#: src/screens/VideoFeed/index.tsx:1147
73947425#: src/view/screens/NotFound.tsx:60
73957395-#: src/view/screens/ProfileList.tsx:1039
73967426msgid "Returns to previous page"
73977427msgstr ""
73987428···74057435#: src/components/dialogs/PostInteractionSettingsDialog.tsx:489
74067436#: src/components/live/EditLiveDialog.tsx:216
74077437#: src/components/live/EditLiveDialog.tsx:223
74087408-#: src/components/StarterPack/QrCodeDialog.tsx:192
74387438+#: src/components/StarterPack/QrCodeDialog.tsx:204
74097439#: src/screens/Profile/Header/EditProfileDialog.tsx:238
74107440#: src/screens/Profile/Header/EditProfileDialog.tsx:252
74417441+#: src/screens/SavedFeeds.tsx:120
74117442#: src/screens/Settings/components/ChangeHandleDialog.tsx:267
74127443#: src/view/com/composer/GifAltText.tsx:193
74137444#: src/view/com/composer/GifAltText.tsx:202
···74167447#: src/view/com/composer/photos/ImageAltTextDialog.tsx:152
74177448#: src/view/com/composer/photos/ImageAltTextDialog.tsx:162
74187449#: src/view/com/modals/CreateOrEditList.tsx:315
74197419-#: src/view/screens/SavedFeeds.tsx:117
74207450msgid "Save"
74217451msgstr ""
74227452···7432746274337463#: src/components/activity-notifications/SubscribeProfileDialog.tsx:191
74347464#: src/components/activity-notifications/SubscribeProfileDialog.tsx:200
74357435-#: src/view/screens/SavedFeeds.tsx:113
74367436-#: src/view/screens/SavedFeeds.tsx:117
74657465+#: src/screens/SavedFeeds.tsx:116
74667466+#: src/screens/SavedFeeds.tsx:120
74377467msgid "Save changes"
74387468msgstr ""
7439746974407440-#: src/components/StarterPack/ShareDialog.tsx:131
74417470#: src/components/StarterPack/ShareDialog.tsx:138
74717471+#: src/components/StarterPack/ShareDialog.tsx:144
74427472msgid "Save image"
74437473msgstr ""
74447474···74507480msgid "Save new handle"
74517481msgstr ""
7452748274537453-#: src/components/StarterPack/QrCodeDialog.tsx:186
74837483+#: src/components/StarterPack/QrCodeDialog.tsx:196
74547484msgid "Save QR code"
74557485msgstr ""
74567486···74657495msgid "Saved"
74667496msgstr ""
7467749774687468-#: src/view/screens/SavedFeeds.tsx:172
74987498+#: src/screens/SavedFeeds.tsx:184
74697499msgid "Saved Feeds"
74707500msgstr ""
74717501···74767506msgstr ""
7477750774787508#: src/screens/Profile/components/ProfileFeedHeader.tsx:132
74797479-#: src/view/screens/ProfileList.tsx:372
75097509+#: src/screens/ProfileList/components/Header.tsx:85
74807510msgid "Saved to your feeds"
74817511msgstr ""
74827512···74857515msgstr ""
7486751674877517#: src/components/dms/ChatEmptyPill.tsx:33
74887488-#: src/components/NewskieDialog.tsx:105
75187518+#: src/components/NewskieDialog.tsx:121
74897519#: src/view/com/notifications/NotificationFeedItem.tsx:751
74907520#: src/view/com/notifications/NotificationFeedItem.tsx:776
74917521msgid "Say hello!"
···75047534msgid "Scroll right"
75057535msgstr ""
7506753675077507-#: src/view/screens/ProfileList.tsx:996
75377537+#: src/screens/ProfileList/AboutSection.tsx:130
75087538msgid "Scroll to top"
75097539msgstr ""
75107540···76377667msgid "See more suggested profiles on the Explore page"
76387668msgstr ""
7639766976407640-#: src/view/screens/SavedFeeds.tsx:213
76707670+#: src/screens/SavedFeeds.tsx:220
76417671msgid "See this guide"
76427672msgstr ""
7643767376447644-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/Scrubber.tsx:197
76747674+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/Scrubber.tsx:196
76457675msgid "Seek slider. Use the arrow keys to seek forwards and backwards, and space to play/pause"
76467676msgstr ""
76477677···77417771msgid "Select primary language"
77427772msgstr ""
7743777377447744-#: src/view/com/composer/videos/SubtitleFilePicker.tsx:59
77457745-#: src/view/com/composer/videos/SubtitleFilePicker.tsx:66
77747774+#: src/view/com/composer/videos/SubtitleFilePicker.tsx:60
77757775+#: src/view/com/composer/videos/SubtitleFilePicker.tsx:67
77467776msgid "Select subtitle file (.vtt)"
77477777msgstr ""
77487778···7847787778487878#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:101
78497879#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:107
78507850-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:104
78517851-#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:110
78807880+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:103
78817881+#: src/components/PostControls/ShareMenu/ShareMenuItems.web.tsx:109
78527882msgid "Send via direct message"
78537883msgstr ""
78547884···79447974msgid "Sexually Suggestive"
79457975msgstr ""
7946797679477947-#: src/components/StarterPack/QrCodeDialog.tsx:182
79777977+#: src/components/StarterPack/QrCodeDialog.tsx:192
79487978#: src/screens/Hashtag.tsx:126
79497979#: src/screens/StarterPack/StarterPackScreen.tsx:433
79507980#: src/screens/Topic.tsx:102
79517951-#: src/view/screens/ProfileList.tsx:513
79527981msgid "Share"
79537982msgstr ""
79547983···7976800579778006#: src/components/dialogs/LinkWarning.tsx:96
79788007#: src/components/dialogs/LinkWarning.tsx:104
79797979-#: src/components/StarterPack/ShareDialog.tsx:104
79807980-#: src/components/StarterPack/ShareDialog.tsx:111
80088008+#: src/components/StarterPack/ShareDialog.tsx:113
80098009+#: src/components/StarterPack/ShareDialog.tsx:119
79818010msgid "Share link"
79828011msgstr ""
7983801279847984-#: src/components/StarterPack/ShareDialog.tsx:68
80138013+#: src/components/StarterPack/ShareDialog.tsx:72
79858014msgid "Share link dialog"
79868015msgstr ""
79878016···79908019msgid "Share post at:// URI"
79918020msgstr ""
7992802179937993-#: src/components/StarterPack/ShareDialog.tsx:115
79947994-#: src/components/StarterPack/ShareDialog.tsx:126
80228022+#: src/components/StarterPack/ShareDialog.tsx:123
80238023+#: src/components/StarterPack/ShareDialog.tsx:133
79958024msgid "Share QR code"
79968025msgstr ""
79978026···80038032msgid "Share this starter pack"
80048033msgstr ""
8005803480068006-#: src/components/StarterPack/ShareDialog.tsx:80
80358035+#: src/components/StarterPack/ShareDialog.tsx:84
80078036msgid "Share this starter pack and help people join your community on Bluesky."
80088037msgstr ""
8009803880108039#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:117
80118040#: src/components/PostControls/ShareMenu/ShareMenuItems.tsx:120
80418041+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:172
80428042+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:178
80128043#: src/screens/StarterPack/StarterPackScreen.tsx:611
80138044#: src/screens/StarterPack/StarterPackScreen.tsx:619
80148045#: src/view/com/profile/ProfileMenu.tsx:246
···80258056msgstr ""
8026805780278058#: src/components/moderation/ContentHider.tsx:203
80288028-#: src/components/moderation/LabelPreference.tsx:143
80598059+#: src/components/moderation/LabelPreference.tsx:142
80298060#: src/components/moderation/PostHider.tsx:134
80308061msgid "Show"
80318062msgstr ""
···80428073msgid "Show anyway"
80438074msgstr ""
8044807580458045-#: src/lib/moderation/useLabelBehaviorDescription.ts:27
80468046-#: src/lib/moderation/useLabelBehaviorDescription.ts:63
80768076+#: src/lib/moderation/useLabelBehaviorDescription.ts:30
80778077+#: src/lib/moderation/useLabelBehaviorDescription.ts:66
80478078msgid "Show badge"
80488079msgstr ""
8049808080508050-#: src/lib/moderation/useLabelBehaviorDescription.ts:61
80818081+#: src/lib/moderation/useLabelBehaviorDescription.ts:64
80518082msgid "Show badge and filter from feeds"
80528083msgstr ""
80538084···81148145msgid "Show samples of your saved feeds in your Following feed"
81158146msgstr ""
8116814781178117-#: src/lib/moderation/useLabelBehaviorDescription.ts:58
81488148+#: src/lib/moderation/useLabelBehaviorDescription.ts:61
81188149msgid "Show warning"
81198150msgstr ""
8120815181218121-#: src/lib/moderation/useLabelBehaviorDescription.ts:56
81528152+#: src/lib/moderation/useLabelBehaviorDescription.ts:59
81228153msgid "Show warning and filter from feeds"
81238154msgstr ""
81248155···8293832482948325#: src/components/ReportDialog/index.tsx:54
82958326#: src/screens/Moderation/index.tsx:112
82968296-#: src/screens/Profile/Sections/Labels.tsx:184
83278327+#: src/screens/Profile/Sections/Labels.tsx:185
82978328msgid "Something went wrong, please try again."
82988329msgstr ""
8299833083008300-#: src/components/Lists.tsx:175
83318331+#: src/components/Lists.tsx:174
83018332msgid "Something went wrong!"
83028333msgstr ""
83038334···83618392msgid "Start a new chat"
83628393msgstr ""
8363839483648364-#: src/view/screens/ProfileList.tsx:846
83658365-#: src/view/screens/ProfileList.tsx:967
83958395+#: src/screens/ProfileList/AboutSection.tsx:102
83968396+#: src/screens/ProfileList/FeedSection.tsx:74
83668397msgid "Start adding people"
83678398msgstr ""
8368839983698369-#: src/view/screens/ProfileList.tsx:853
83708370-#: src/view/screens/ProfileList.tsx:974
84008400+#: src/screens/ProfileList/AboutSection.tsx:108
84018401+#: src/screens/ProfileList/FeedSection.tsx:80
83718402msgid "Start adding people!"
83728403msgstr ""
83738404···84038434msgid "Starter Packs"
84048435msgstr ""
8405843684068406-#: src/components/StarterPack/ProfileStarterPacks.tsx:266
84378437+#: src/components/StarterPack/ProfileStarterPacks.tsx:262
84078438msgid "Starter packs let you easily share your favorite feeds and people with your friends."
84088439msgstr ""
84098440···84488479msgid "Submit report"
84498480msgstr ""
8450848184518451-#: src/view/screens/ProfileList.tsx:741
84828482+#: src/screens/ProfileList/components/SubscribeMenu.tsx:81
84528483msgid "Subscribe"
84538484msgstr ""
8454848584558455-#: src/screens/Profile/Sections/Labels.tsx:231
84868486+#: src/screens/Profile/Sections/Labels.tsx:232
84568487msgid "Subscribe to @{0} to use these labels:"
84578488msgstr ""
84588489···84688499msgid "Subscribe to this labeler"
84698500msgstr ""
8470850184718471-#: src/view/screens/ProfileList.tsx:737
85028502+#: src/screens/ProfileList/components/SubscribeMenu.tsx:69
84728503msgid "Subscribe to this list"
84738504msgstr ""
84748505···85118542msgstr ""
8512854385138544#: src/Navigation.tsx:326
85148514-#: src/view/screens/Support.tsx:31
85158545#: src/view/screens/Support.tsx:34
85468546+#: src/view/screens/Support.tsx:37
85168547msgid "Support"
85178548msgstr ""
85188549···86208651#: src/Navigation.tsx:336
86218652#: src/screens/Settings/AboutSettings.tsx:84
86228653#: src/screens/Settings/AboutSettings.tsx:87
86238623-#: src/view/screens/TermsOfService.tsx:31
86548654+#: src/view/screens/TermsOfService.tsx:34
86248655#: src/view/shell/Drawer.tsx:697
86258656#: src/view/shell/Drawer.tsx:699
86268657msgid "Terms of Service"
···87158746msgid "The Bluesky web application"
87168747msgstr ""
8717874887188718-#: src/view/screens/CommunityGuidelines.tsx:38
87498749+#: src/view/screens/CommunityGuidelines.tsx:41
87198750msgid "The Community Guidelines have been moved to <0/>"
87208751msgstr ""
8721875287228722-#: src/view/screens/CopyrightPolicy.tsx:35
87538753+#: src/view/screens/CopyrightPolicy.tsx:38
87238754msgid "The Copyright Policy has been moved to <0/>"
87248755msgstr ""
87258756···87638794msgid "The open social network."
87648795msgstr ""
8765879687668766-#: src/view/screens/PrivacyPolicy.tsx:35
87978797+#: src/view/screens/PrivacyPolicy.tsx:38
87678798msgid "The Privacy Policy has been moved to <0/>"
87688799msgstr ""
87698800···87818812msgid "The starter pack that you are trying to view is invalid. You may delete this starter pack instead."
87828813msgstr ""
8783881487848784-#: src/components/ContextMenu/index.tsx:433
88158815+#: src/components/ContextMenu/index.tsx:434
87858816msgid "The subject of the context menu"
87868817msgstr ""
8787881887888788-#: src/view/screens/Support.tsx:37
88198819+#: src/view/screens/Support.tsx:40
87898820msgid "The support form has been moved. If you need help, please <0/> or visit {HELP_DESK_URL} to get in touch with us."
87908821msgstr ""
8791882287928792-#: src/view/screens/TermsOfService.tsx:35
88238823+#: src/view/screens/TermsOfService.tsx:38
87938824msgid "The Terms of Service have been moved to"
87948825msgstr ""
87958826···88108841msgstr ""
8811884288128843#: src/screens/Profile/components/ProfileFeedHeader.tsx:178
88138813-#: src/view/screens/ProfileList.tsx:375
88148814-#: src/view/screens/ProfileList.tsx:394
88158815-#: src/view/screens/SavedFeeds.tsx:93
88448844+#: src/screens/ProfileList/components/Header.tsx:88
88458845+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:76
88468846+#: src/screens/SavedFeeds.tsx:97
88168847msgid "There was an issue contacting the server"
88178848msgstr ""
88188849···88268857msgstr ""
8827885888288859#: src/screens/Search/Explore.tsx:986
88298829-#: src/view/com/posts/PostFeed.tsx:701
88608860+#: src/view/com/posts/PostFeed.tsx:709
88308861msgid "There was an issue fetching posts. Tap here to try again."
88318862msgstr ""
88328863···88388869msgid "There was an issue fetching your app passwords"
88398870msgstr ""
8840887188418841-#: src/view/com/feeds/ProfileFeedgens.tsx:151
88428842-#: src/view/com/lists/ProfileLists.tsx:150
88728872+#: src/view/com/feeds/ProfileFeedgens.tsx:163
88738873+#: src/view/com/lists/ProfileLists.tsx:161
88438874msgid "There was an issue fetching your lists. Tap here to try again."
88448875msgstr ""
88458876···88838914#: src/screens/List/ListHiddenScreen.tsx:63
88848915#: src/screens/List/ListHiddenScreen.tsx:77
88858916#: src/screens/List/ListHiddenScreen.tsx:99
88868886-#: src/view/screens/ProfileList.tsx:411
88878887-#: src/view/screens/ProfileList.tsx:429
88888888-#: src/view/screens/ProfileList.tsx:447
88898889-#: src/view/screens/ProfileList.tsx:465
89178917+#: src/screens/ProfileList/components/Header.tsx:107
89188918+#: src/screens/ProfileList/components/Header.tsx:125
89198919+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:129
89208920+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:147
89218921+#: src/screens/ProfileList/components/SubscribeMenu.tsx:40
89228922+#: src/screens/ProfileList/components/SubscribeMenu.tsx:59
88908923msgid "There was an issue. Please check your internet connection and try again."
88918924msgstr ""
88928925···89779010msgid "This feature allows users to receive notifications for your new posts and replies. Who do you want to enable this for?"
89789011msgstr ""
8979901289808980-#: src/screens/Settings/components/ExportCarDialog.tsx:96
90139013+#: src/screens/Settings/components/ExportCarDialog.tsx:95
89819014msgid "This feature is in beta. You can read more about repository exports in <0>this blogpost</0>."
89829015msgstr ""
89839016···8999903290009033#: src/components/StarterPack/Main/PostsList.tsx:36
90019034#: src/screens/Profile/ProfileFeed/index.tsx:192
90029002-#: src/view/screens/ProfileList.tsx:843
90359035+#: src/screens/ProfileList/FeedSection.tsx:71
90039036msgid "This feed is empty."
90049037msgstr ""
90059038···90289061msgid "This label was applied by you."
90299062msgstr ""
9030906390319031-#: src/screens/Profile/Sections/Labels.tsx:218
90649064+#: src/screens/Profile/Sections/Labels.tsx:219
90329065msgid "This labeler hasn't declared what labels it publishes, and may not be active."
90339066msgstr ""
90349067···90449077msgid "This list – created by you – contains possible violations of Bluesky's community guidelines in its name or description."
90459078msgstr ""
9046907990479047-#: src/view/screens/ProfileList.tsx:962
90809080+#: src/screens/ProfileList/AboutSection.tsx:98
90489081msgid "This list is empty."
90499082msgstr ""
90509083···91259158msgid "This user is included in the <0>{0}</0> list which you have muted."
91269159msgstr ""
9127916091289128-#: src/components/NewskieDialog.tsx:65
91619161+#: src/components/NewskieDialog.tsx:47
91299162msgid "This user is new here. Press for more info about when they joined."
91309163msgstr ""
91319164···93139346#: src/components/dms/MessagesListBlockedFooter.tsx:119
93149347#: src/screens/Profile/Header/ProfileHeaderStandard.tsx:208
93159348#: src/screens/Profile/Header/ProfileHeaderStandard.tsx:328
93499349+#: src/screens/ProfileList/components/Header.tsx:171
93509350+#: src/screens/ProfileList/components/Header.tsx:178
93169351#: src/view/com/profile/ProfileMenu.tsx:490
93179317-#: src/view/screens/ProfileList.tsx:723
93189352msgid "Unblock"
93199353msgstr ""
93209354···93359369msgid "Unblock Account?"
93369370msgstr ""
9337937193389338-#: src/view/screens/ProfileList.tsx:620
93729372+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:254
93739373+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:257
93399374msgid "Unblock list"
93409375msgstr ""
93419376···93949429msgstr ""
9395943093969431#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerNative.tsx:152
93979397-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:95
94329432+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:94
93989433msgctxt "video"
93999434msgid "Unmute"
94009435msgstr ""
9401943694029402-#: src/view/screens/ProfileList.tsx:730
94379437+#: src/screens/ProfileList/components/Header.tsx:185
94389438+#: src/screens/ProfileList/components/Header.tsx:192
94039439msgid "Unmute"
94049440msgstr ""
94059441···94199455msgid "Unmute conversation"
94209456msgstr ""
9421945794229422-#: src/view/screens/ProfileList.tsx:605
94589458+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:264
94599459+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:267
94239460msgid "Unmute list"
94249461msgstr ""
94259462···94329469msgid "Unmute video"
94339470msgstr ""
9434947194359435-#: src/view/screens/ProfileList.tsx:714
94729472+#: src/screens/ProfileList/components/Header.tsx:156
94739473+#: src/screens/ProfileList/components/Header.tsx:163
94369474msgid "Unpin"
94379475msgstr ""
9438947694399477#: src/screens/Profile/components/ProfileFeedHeader.tsx:523
94409478#: src/screens/Profile/components/ProfileFeedHeader.tsx:530
94799479+#: src/screens/SavedFeeds.tsx:351
94419480msgid "Unpin feed"
94429481msgstr ""
94439482···94559494msgid "Unpin from profile"
94569495msgstr ""
9457949694589458-#: src/view/screens/ProfileList.tsx:585
94979497+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:237
94989498+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:240
94599499msgid "Unpin moderation list"
94609500msgstr ""
94619501···94639503msgid "Unpinned {0} from Home"
94649504msgstr ""
9465950594669466-#: src/view/screens/ProfileList.tsx:362
95069506+#: src/screens/ProfileList/components/Header.tsx:75
94679507msgid "Unpinned from your feeds"
95089508+msgstr ""
95099509+95109510+#: src/screens/ProfileList/components/MoreOptionsMenu.tsx:109
95119511+msgid "Unpinned list"
94689512msgstr ""
9469951394709514#: src/screens/Settings/Settings.tsx:474
···96029646msgid "Use my default browser"
96039647msgstr ""
9604964896059605-#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:53
96499649+#: src/screens/Feeds/NoSavedFeedsOfAnyType.tsx:56
96069650msgid "Use recommended"
96079651msgstr ""
96089652···98299873msgid "Video is playing"
98309874msgstr ""
9831987598329832-#: src/components/Post/Embed/VideoEmbed/index.web.tsx:220
98769876+#: src/components/Post/Embed/VideoEmbed/index.web.tsx:225
98339877msgid "Video not found."
98349878msgstr ""
98359879···98789922msgid "View blocked user's profile"
98799923msgstr ""
9880992498819881-#: src/screens/Settings/components/ExportCarDialog.tsx:100
99259925+#: src/screens/Settings/components/ExportCarDialog.tsx:99
98829926msgid "View blogpost for more details"
98839927msgstr ""
98849928···98869930msgid "View debug entry"
98879931msgstr ""
9888993298899889-#: src/components/ReportDialog/SelectReportOptionView.tsx:137
99339933+#: src/components/ReportDialog/SelectReportOptionView.tsx:140
98909934#: src/screens/VideoFeed/index.tsx:659
98919935#: src/screens/VideoFeed/index.tsx:677
98929936msgid "View details"
98939937msgstr ""
9894993898959895-#: src/components/ReportDialog/SelectReportOptionView.tsx:132
99399939+#: src/components/ReportDialog/SelectReportOptionView.tsx:135
98969940msgid "View details for reporting a copyright violation"
98979941msgstr ""
98989942···99009944msgid "View full thread"
99019945msgstr ""
9902994699039903-#: src/components/moderation/LabelsOnMe.tsx:46
99479947+#: src/components/moderation/LabelsOnMe.tsx:51
99049948msgid "View information about these labels"
99059949msgstr ""
99069950···99239967#: src/components/ProfileHoverCard/index.web.tsx:486
99249968#: src/components/ProfileHoverCard/index.web.tsx:513
99259969#: src/view/com/posts/PostFeedErrorMessage.tsx:179
99269926-#: src/view/com/util/PostMeta.tsx:91
99279927-#: src/view/com/util/PostMeta.tsx:128
99709970+#: src/view/com/util/PostMeta.tsx:90
99719971+#: src/view/com/util/PostMeta.tsx:127
99289972msgid "View profile"
99299973msgstr ""
99309974···995610000msgid "View your default post interaction settings"
995710001msgstr ""
99581000299599959-#: src/view/com/home/HomeHeaderLayout.web.tsx:56
99609960-#: src/view/com/home/HomeHeaderLayoutMobile.tsx:71
1000310003+#: src/view/com/home/HomeHeaderLayout.web.tsx:57
1000410004+#: src/view/com/home/HomeHeaderLayoutMobile.tsx:72
996110005msgid "View your feeds and explore more"
996210006msgstr ""
996310007···999110035msgid "Visit your notification settings"
999210036msgstr ""
99931003799949994-#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:81
1003810038+#: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VolumeControl.tsx:80
999510039msgid "Volume"
999610040msgstr ""
99971004199989998-#: src/components/moderation/LabelPreference.tsx:142
99999999-#: src/lib/moderation/useLabelBehaviorDescription.ts:17
1000010000-#: src/lib/moderation/useLabelBehaviorDescription.ts:22
1004210042+#: src/components/moderation/LabelPreference.tsx:141
1004310043+#: src/lib/moderation/useLabelBehaviorDescription.ts:20
1004410044+#: src/lib/moderation/useLabelBehaviorDescription.ts:25
1000110045msgid "Warn"
1000210046msgstr ""
10003100471000410004-#: src/lib/moderation/useLabelBehaviorDescription.ts:48
1004810048+#: src/lib/moderation/useLabelBehaviorDescription.ts:51
1000510049msgid "Warn content"
1000610050msgstr ""
10007100511000810008-#: src/lib/moderation/useLabelBehaviorDescription.ts:46
1005210052+#: src/lib/moderation/useLabelBehaviorDescription.ts:49
1000910053msgid "Warn content and filter from feeds"
1001010054msgstr ""
1001110055···1013110175msgid "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."
1013210176msgstr ""
10133101771013410134-#: src/view/screens/ProfileList.tsx:117
1017810178+#: src/screens/ProfileList/index.tsx:87
1013510179msgid "We're sorry, but we were unable to resolve this list. If this persists, please contact the list creator, @{handleOrDid}."
1013610180msgstr ""
1013710181···1014710191msgid "We're sorry! The post you are replying to has been deleted."
1014810192msgstr ""
10149101931015010150-#: src/components/Lists.tsx:195
1019410194+#: src/components/Lists.tsx:194
1015110195#: src/view/screens/NotFound.tsx:50
1015210196msgid "We're sorry! We can't find the page you were looking for."
1015310197msgstr ""
···1018010224msgid "Welcome back!"
1018110225msgstr ""
10182102261018310183-#: src/components/NewskieDialog.tsx:103
1022710227+#: src/components/NewskieDialog.tsx:121
1018410228msgid "Welcome, friend!"
1018510229msgstr ""
1018610230···1023310277msgid "Why are you appealing?"
1023410278msgstr ""
10235102791023610236-#: src/components/ReportDialog/SelectReportOptionView.tsx:42
1028010280+#: src/components/ReportDialog/SelectReportOptionView.tsx:45
1023710281msgid "Why should this content be reviewed?"
1023810282msgstr ""
10239102831024010284#: src/components/moderation/ReportDialog/copy.ts:32
1024110241-#: src/components/ReportDialog/SelectReportOptionView.tsx:55
1028510285+#: src/components/ReportDialog/SelectReportOptionView.tsx:58
1024210286msgid "Why should this feed be reviewed?"
1024310287msgstr ""
10244102881024510289#: src/components/moderation/ReportDialog/copy.ts:26
1024610246-#: src/components/ReportDialog/SelectReportOptionView.tsx:52
1029010290+#: src/components/ReportDialog/SelectReportOptionView.tsx:55
1024710291msgid "Why should this list be reviewed?"
1024810292msgstr ""
10249102931025010294#: src/components/moderation/ReportDialog/copy.ts:44
1025110251-#: src/components/ReportDialog/SelectReportOptionView.tsx:61
1029510295+#: src/components/ReportDialog/SelectReportOptionView.tsx:64
1025210296msgid "Why should this message be reviewed?"
1025310297msgstr ""
10254102981025510299#: src/components/moderation/ReportDialog/copy.ts:20
1025610256-#: src/components/ReportDialog/SelectReportOptionView.tsx:49
1030010300+#: src/components/ReportDialog/SelectReportOptionView.tsx:52
1025710301msgid "Why should this post be reviewed?"
1025810302msgstr ""
10259103031026010304#: src/components/moderation/ReportDialog/copy.ts:38
1026110261-#: src/components/ReportDialog/SelectReportOptionView.tsx:58
1030510305+#: src/components/ReportDialog/SelectReportOptionView.tsx:61
1026210306msgid "Why should this starter pack be reviewed?"
1026310307msgstr ""
10264103081026510309#: src/components/moderation/ReportDialog/copy.ts:14
1026610266-#: src/components/ReportDialog/SelectReportOptionView.tsx:46
1031010310+#: src/components/ReportDialog/SelectReportOptionView.tsx:49
1026710311msgid "Why should this user be reviewed?"
1026810312msgstr ""
1026910313···1029510339msgid "www.mylivestream.tv"
1029610340msgstr ""
10297103411029810298-#: src/view/com/composer/select-language/SuggestedLanguage.tsx:100
1034210342+#: src/view/com/composer/select-language/SuggestedLanguage.tsx:102
1029910343msgid "Yes"
1030010344msgstr ""
1030110345···1032410368msgid "Yesterday"
1032510369msgstr ""
10326103701032710327-#: src/components/NewskieDialog.tsx:43
1037110371+#: src/components/NewskieDialog.tsx:91
1032810372msgid "You"
1032910373msgstr ""
1033010374···1044610490msgid "You do not have any followers."
1044710491msgstr ""
10448104921044910449-#: src/screens/Profile/KnownFollowers.tsx:109
1049310493+#: src/screens/Profile/KnownFollowers.tsx:112
1045010494msgid "You don't follow any users who follow @{name}."
1045110495msgstr ""
1045210496···1045810502msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer."
1045910503msgstr ""
10460105041046110461-#: src/view/screens/SavedFeeds.tsx:145
1050510505+#: src/screens/SavedFeeds.tsx:149
1046210506msgid "You don't have any pinned feeds."
1046310507msgstr ""
10464105081046510465-#: src/view/screens/SavedFeeds.tsx:185
1050910509+#: src/screens/SavedFeeds.tsx:191
1046610510msgid "You don't have any saved feeds."
1046710511msgstr ""
1046810512···1050710551msgid "You have no conversations yet. Start one!"
1050810552msgstr ""
10509105531051010510-#: src/view/com/feeds/ProfileFeedgens.tsx:139
1055410554+#: src/view/com/feeds/ProfileFeedgens.tsx:151
1051110555msgid "You have no feeds."
1051210556msgstr ""
10513105571051410558#: src/view/com/lists/MyLists.tsx:81
1051510515-#: src/view/com/lists/ProfileLists.tsx:135
1055910559+#: src/view/com/lists/ProfileLists.tsx:149
1051610560msgid "You have no lists."
1051710561msgstr ""
1051810562···1052810572msgid "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."
1052910573msgstr ""
10530105741053110531-#: src/components/Lists.tsx:58
1057510575+#: src/components/Lists.tsx:57
1053210576msgid "You have reached the end"
1053310577msgstr ""
1053410578···1054010584msgid "You have temporarily reached the limit for video uploads. Please try again later."
1054110585msgstr ""
10542105861054310543-#: src/components/StarterPack/ProfileStarterPacks.tsx:263
1058710587+#: src/components/StarterPack/ProfileStarterPacks.tsx:259
1054410588msgid "You haven't created a starter pack yet!"
1054510589msgstr ""
1054610590···1058110625msgid "You must be at least 13 years old to use Bluesky. Read our <0>Terms of Service</0> for more information."
1058210626msgstr ""
10583106271058410584-#: src/components/StarterPack/ProfileStarterPacks.tsx:334
1062810628+#: src/components/StarterPack/ProfileStarterPacks.tsx:330
1058510629msgid "You must be following at least seven other people to generate a starter pack."
1058610630msgstr ""
1058710631···1059310637msgid "You must complete age assurance in order to access this screen."
1059410638msgstr ""
10595106391059610596-#: src/components/StarterPack/QrCodeDialog.tsx:61
1064010640+#: src/components/StarterPack/QrCodeDialog.tsx:65
1059710641msgid "You must grant access to your photo library to save a QR code"
1059810642msgstr ""
1059910643···1076910813msgid "Your birth date"
1077010814msgstr ""
10771108151077210772-#: src/components/Post/Embed/VideoEmbed/index.web.tsx:224
1081610816+#: src/components/Post/Embed/VideoEmbed/index.web.tsx:229
1077310817msgid "Your browser does not support the video format. Please try a different browser."
1077410818msgstr ""
1077510819
+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'
+2-2
src/screens/Profile/Header/DisplayName.tsx
···11import {View} from 'react-native'
22-import {AppBskyActorDefs, ModerationDecision} from '@atproto/api'
22+import {type AppBskyActorDefs, type ModerationDecision} from '@atproto/api'
3344import {sanitizeDisplayName} from '#/lib/strings/display-names'
55import {sanitizeHandle} from '#/lib/strings/handles'
66-import {Shadow} from '#/state/cache/types'
66+import {type Shadow} from '#/state/cache/types'
77import {atoms as a, useBreakpoints, useTheme} from '#/alf'
88import {Text} from '#/components/Typography'
99
+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'
+2-2
src/screens/Profile/Header/Metrics.tsx
···11import {View} from 'react-native'
22-import {AppBskyActorDefs} from '@atproto/api'
22+import {type AppBskyActorDefs} from '@atproto/api'
33import {msg, plural} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
5566import {makeProfileLink} from '#/lib/routes/links'
77-import {Shadow} from '#/state/cache/types'
77+import {type Shadow} from '#/state/cache/types'
88import {formatCount} from '#/view/com/util/numeric/format'
99import {atoms as a, useTheme} from '#/alf'
1010import {InlineLinkText} from '#/components/Link'
+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 ?? ''
···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}
+1-1
src/state/preferences/index.tsx
···11-import React from 'react'
11+import type React from 'react'
2233import {Provider as AltTextRequiredProvider} from './alt-text-required'
44import {Provider as AutoplayProvider} from './autoplay'
+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/moderation.ts
···33import {IS_TEST_USER} from '#/lib/constants'
44import {configureAdditionalModerationAuthorities} from './additional-moderation-authorities'
55import {readLabelers} from './agent-config'
66-import {SessionAccount} from './types'
66+import {type SessionAccount} from './types'
7788export function configureModerationForGuest() {
99 // This global mutation is *only* OK because this code is only relevant for testing.
+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'
···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'
···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 {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge'
+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'
+3-3
src/view/icons/Logo.tsx
···11import React from 'react'
22-import {StyleSheet, TextProps} from 'react-native'
22+import {StyleSheet, type TextProps} from 'react-native'
33import Svg, {
44 Defs,
55 LinearGradient,
66 Path,
77- PathProps,
77+ type PathProps,
88 Stop,
99- SvgProps,
99+ type SvgProps,
1010} from 'react-native-svg'
1111import {Image} from 'expo-image'
1212
+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
+1-1
src/view/icons/Logotype.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/PrivacyPolicy.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/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'
+4-1
src/view/screens/TermsOfService.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/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'