···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-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
+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-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']
+1-1
src/components/NewskieDialog.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {AppBskyActorDefs, moderateProfile} from '@atproto/api'
33+import {type AppBskyActorDefs, moderateProfile} from '@atproto/api'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66import {differenceInSeconds} from 'date-fns'
+2-2
src/components/Pills.tsx
···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,
+1-1
src/components/ProgressGuide/List.tsx
···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/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 {
+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'
+1-1
src/components/StarterPack/QrCode.tsx
···33// @ts-expect-error missing types
44import QRCode from 'react-native-qrcode-styled'
55import type ViewShot from 'react-native-view-shot'
66-import {AppBskyGraphDefs, AppBskyGraphStarterpack} from '@atproto/api'
66+import {type AppBskyGraphDefs, AppBskyGraphStarterpack} from '@atproto/api'
77import {Trans} from '@lingui/macro'
8899import {isWeb} from '#/platform/detection'
···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
+2-2
src/components/dialogs/MutedWords.tsx
···11import React from 'react'
22import {View} from 'react-native'
33-import {AppBskyActorDefs, sanitizeMutedWordValue} from '@atproto/api'
33+import {type AppBskyActorDefs, sanitizeMutedWordValue} from '@atproto/api'
44import {msg, Trans} from '@lingui/macro'
55import {useLingui} from '@lingui/react'
66···1616 native,
1717 useBreakpoints,
1818 useTheme,
1919- ViewStyleProp,
1919+ type ViewStyleProp,
2020 web,
2121} from '#/alf'
2222import {Button, ButtonIcon, ButtonText} from '#/components/Button'
+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'
+1-1
src/components/forms/SearchInput.tsx
···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
+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/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'
+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'
+3-3
src/lib/api/feed/custom.ts
···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/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) {
+1-1
src/lib/hooks/useSetTitle.ts
···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/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
+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[]
+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'
+1-1
src/screens/Profile/ErrorState.tsx
···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'
+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
+2-2
src/screens/StarterPack/Wizard/StepFeeds.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 {AppBskyFeedDefs, ModerationOpts} from '@atproto/api'
44+import {type AppBskyFeedDefs, type ModerationOpts} from '@atproto/api'
55import {Trans} from '@lingui/macro'
6677import {DISCOVER_FEED_URI} from '#/lib/constants'
+3-3
src/screens/StarterPack/Wizard/StepProfiles.tsx
···11import {useState} from 'react'
22-import {ListRenderItemInfo, View} from 'react-native'
22+import {type ListRenderItemInfo, View} from 'react-native'
33import {KeyboardAwareScrollView} from 'react-native-keyboard-controller'
44-import {AppBskyActorDefs, ModerationOpts} from '@atproto/api'
44+import {type AppBskyActorDefs, type ModerationOpts} from '@atproto/api'
55import {Trans} from '@lingui/macro'
6677import {isNative} from '#/platform/detection'
···1616import {ScreenTransition} from '#/components/StarterPack/Wizard/ScreenTransition'
1717import {WizardProfileCard} from '#/components/StarterPack/Wizard/WizardListCard'
1818import {Text} from '#/components/Typography'
1919-import * as bsky from '#/types/bsky'
1919+import type * as bsky from '#/types/bsky'
20202121function keyExtractor(item: AppBskyActorDefs.ProfileViewBasic) {
2222 return item?.did ?? ''
+4-4
src/screens/VideoFeed/components/Header.tsx
···11import {useCallback} from 'react'
22-import {GestureResponderEvent, View} from 'react-native'
22+import {type GestureResponderEvent, View} from 'react-native'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55import {useNavigation} from '@react-navigation/native'
6677import {HITSLOP_30} from '#/lib/constants'
88-import {NavigationProp} from '#/lib/routes/types'
88+import {type NavigationProp} from '#/lib/routes/types'
99import {sanitizeHandle} from '#/lib/strings/handles'
1010import {useFeedSourceInfoQuery} from '#/state/queries/feed'
1111import {UserAvatar} from '#/view/com/util/UserAvatar'
1212-import {VideoFeedSourceContext} from '#/screens/VideoFeed/types'
1212+import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
1313import {atoms as a, useBreakpoints} from '#/alf'
1414-import {Button, ButtonProps} from '#/components/Button'
1414+import {Button, type ButtonProps} from '#/components/Button'
1515import {ArrowLeft_Stroke2_Corner0_Rounded as ArrowLeft} from '#/components/icons/Arrow'
1616import * as Layout from '#/components/Layout'
1717import {BUTTON_VISUAL_ALIGNMENT_OFFSET} from '#/components/Layout/const'
+1-1
src/screens/VideoFeed/types.ts
···11-import {AuthorFilter} from '#/state/queries/post-feed'
11+import {type AuthorFilter} from '#/state/queries/post-feed'
2233/**
44 * Kind of like `FeedDescriptor` but not
+5-5
src/state/messages/convo/util.ts
···11import {
22- ConvoState,
33- ConvoStateBackgrounded,
44- ConvoStateDisabled,
55- ConvoStateReady,
66- ConvoStateSuspended,
22+ type ConvoState,
33+ type ConvoStateBackgrounded,
44+ type ConvoStateDisabled,
55+ type ConvoStateReady,
66+ type ConvoStateSuspended,
77 ConvoStatus,
88} from './types'
99
+1-1
src/state/messages/events/types.ts
···11-import {BskyAgent, ChatBskyConvoGetLog} from '@atproto/api'
11+import {type BskyAgent, type ChatBskyConvoGetLog} from '@atproto/api'
2233export type MessagesEventBusParams = {
44 agent: BskyAgent
+1-1
src/state/messages/index.tsx
···11-import React from 'react'
11+import type React from 'react'
2233import {CurrentConvoIdProvider} from '#/state/messages/current-convo-id'
44import {MessagesEventBusProvider} from '#/state/messages/events'
+2-2
src/state/persisted/index.web.ts
···44import {logger} from '#/logger'
55import {
66 defaults,
77- Schema,
77+ type Schema,
88 tryParse,
99 tryStringify,
1010} from '#/state/persisted/schema'
1111-import {PersistedApi} from './types'
1111+import {type PersistedApi} from './types'
1212import {normalizeData} from './util'
13131414export type {PersistedAccount, Schema} from '#/state/persisted/schema'
+1-1
src/state/persisted/types.ts
···11-import type {Schema} from './schema'
11+import {type Schema} from './schema'
2233export type PersistedApi = {
44 init(): Promise<void>
+1-1
src/state/persisted/util.ts
···2233import {dedupArray} from '#/lib/functions'
44import {logger} from '#/logger'
55-import {Schema} from '#/state/persisted/schema'
55+import {type Schema} from '#/state/persisted/schema'
6677export function normalizeData(data: Schema) {
88 const next = {...data}
+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
+3-3
src/state/queries/preferences/types.ts
···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')
+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'
+1-1
src/view/com/composer/KeyboardAccessory.tsx
···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
+1-1
src/view/com/composer/photos/SelectGifBtn.tsx
···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
···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,
+3-3
src/view/com/modals/InviteCodes.tsx
···66 View,
77} from 'react-native'
88import {setStringAsync} from 'expo-clipboard'
99-import {ComAtprotoServerDefs} from '@atproto/api'
99+import {type ComAtprotoServerDefs} from '@atproto/api'
1010import {
1111 FontAwesomeIcon,
1212- FontAwesomeIconStyle,
1212+ type FontAwesomeIconStyle,
1313} from '@fortawesome/react-native-fontawesome'
1414import {msg, Trans} from '@lingui/macro'
1515import {useLingui} from '@lingui/react'
···2222import {useInvitesAPI, useInvitesState} from '#/state/invites'
2323import {useModalControls} from '#/state/modals'
2424import {
2525- InviteCodesQueryResponse,
2525+ type InviteCodesQueryResponse,
2626 useInviteCodesQuery,
2727} from '#/state/queries/invites'
2828import {ErrorMessage} from '../util/error/ErrorMessage'
+2-2
src/view/com/modals/UserAddRemoveLists.tsx
···55 useWindowDimensions,
66 View,
77} from 'react-native'
88-import {AppBskyGraphDefs as GraphDefs} from '@atproto/api'
88+import {type AppBskyGraphDefs as GraphDefs} from '@atproto/api'
99import {msg, Trans} from '@lingui/macro'
1010import {useLingui} from '@lingui/react'
1111···1818import {useModalControls} from '#/state/modals'
1919import {
2020 getMembership,
2121- ListMembersip,
2121+ type ListMembersip,
2222 useDangerousListMembershipsQuery,
2323 useListMembershipAddMutation,
2424 useListMembershipRemoveMutation,
+1-1
src/view/com/post-thread/PostLikedBy.tsx
···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'
+1-1
src/view/com/profile/ProfileFollowers.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/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
+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/LoadMoreRetryBtn.tsx
···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'
+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
+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'
+3-3
src/view/com/util/Views.tsx
···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()
+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'
+1-1
src/view/screens/Storybook/ListContained.tsx
···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'