···11import React, {useImperativeHandle} from 'react'
22import {
33 FlatList,
44- FlatListProps,
55- StyleProp,
44+ type FlatListProps,
55+ type StyleProp,
66 TouchableWithoutFeedback,
77 View,
88- ViewStyle,
88+ type ViewStyle,
99} from 'react-native'
1010import {msg} from '@lingui/macro'
1111import {useLingui} from '@lingui/react'
1212-import {DismissableLayer} from '@radix-ui/react-dismissable-layer'
1313-import {useFocusGuards} from '@radix-ui/react-focus-guards'
1414-import {FocusScope} from '@radix-ui/react-focus-scope'
1212+import {DismissableLayer, FocusGuards, FocusScope} from 'radix-ui/internal'
1513import {RemoveScrollBar} from 'react-remove-scroll-bar'
16141715import {logger} from '#/logger'
···2119import {Button, ButtonIcon} from '#/components/Button'
2220import {Context} from '#/components/Dialog/context'
2321import {
2424- DialogControlProps,
2525- DialogInnerProps,
2626- DialogOuterProps,
2222+ type DialogControlProps,
2323+ type DialogInnerProps,
2424+ type DialogOuterProps,
2725} from '#/components/Dialog/types'
2826import {TimesLarge_Stroke2_Corner0_Rounded as X} from '#/components/icons/Times'
2927import {Portal} from '#/components/Portal'
···162160 const {close} = React.useContext(Context)
163161 const {gtMobile} = useBreakpoints()
164162 const {reduceMotionEnabled} = useA11y()
165165- useFocusGuards()
163163+ FocusGuards.useFocusGuards()
166164 return (
167167- <FocusScope loop asChild trapped>
165165+ <FocusScope.FocusScope loop asChild trapped>
168166 <View
169167 role="dialog"
170168 aria-role="dialog"
···191189 !reduceMotionEnabled && a.zoom_fade_in,
192190 style,
193191 ])}>
194194- <DismissableLayer
192192+ <DismissableLayer.DismissableLayer
195193 onInteractOutside={preventDefault}
196194 onFocusOutside={preventDefault}
197195 onDismiss={close}
···200198 <View style={[gtMobile ? a.p_2xl : a.p_xl, contentContainerStyle]}>
201199 {children}
202200 </View>
203203- </DismissableLayer>
201201+ </DismissableLayer.DismissableLayer>
204202 </View>
205205- </FocusScope>
203203+ </FocusScope.FocusScope>
206204 )
207205}
208206
+10-10
src/components/Menu/index.web.tsx
···11import React from 'react'
22-import {Pressable, StyleProp, View, ViewStyle} from 'react-native'
22+import {Pressable, type StyleProp, View, type ViewStyle} from 'react-native'
33import {msg} from '@lingui/macro'
44import {useLingui} from '@lingui/react'
55-import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
55+import {DropdownMenu} from 'radix-ui'
6677import {useA11y} from '#/state/a11y'
88import {atoms as a, flatten, useTheme, web} from '#/alf'
99-import * as Dialog from '#/components/Dialog'
99+import type * as Dialog from '#/components/Dialog'
1010import {useInteractionState} from '#/components/hooks/useInteractionState'
1111import {
1212 Context,
···1515 useMenuItemContext,
1616} from '#/components/Menu/context'
1717import {
1818- ContextType,
1919- GroupProps,
2020- ItemIconProps,
2121- ItemProps,
2222- ItemTextProps,
2323- RadixPassThroughTriggerProps,
2424- TriggerProps,
1818+ type ContextType,
1919+ type GroupProps,
2020+ type ItemIconProps,
2121+ type ItemProps,
2222+ type ItemTextProps,
2323+ type RadixPassThroughTriggerProps,
2424+ type TriggerProps,
2525} from '#/components/Menu/types'
2626import {Portal} from '#/components/Portal'
2727import {Text} from '#/components/Typography'
+2-2
src/components/dms/EmojiReactionPicker.web.tsx
···44import EmojiPicker from '@emoji-mart/react'
55import {msg} from '@lingui/macro'
66import {useLingui} from '@lingui/react'
77-import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
77+import {DropdownMenu} from 'radix-ui'
8899import {useSession} from '#/state/session'
1010-import {type Emoji} from '#/view/com/composer/text-input/web/EmojiPicker.web'
1010+import {type Emoji} from '#/view/com/composer/text-input/web/EmojiPicker'
1111import {useWebPreloadEmoji} from '#/view/com/composer/text-input/web/useWebPreloadEmoji'
1212import {atoms as a, flatten, useTheme} from '#/alf'
1313import {DotGrid_Stroke2_Corner0_Rounded as DotGridIcon} from '#/components/icons/DotGrid'
+1-1
src/screens/Messages/components/MessageInput.tsx
···2424 useMessageDraft,
2525 useSaveMessageDraft,
2626} from '#/state/messages/message-drafts'
2727-import {type EmojiPickerPosition} from '#/view/com/composer/text-input/web/EmojiPicker.web'
2727+import {type EmojiPickerPosition} from '#/view/com/composer/text-input/web/EmojiPicker'
2828import * as Toast from '#/view/com/util/Toast'
2929import {android, atoms as a, useTheme} from '#/alf'
3030import {useSharedInputStyles} from '#/components/forms/TextField'
···1515} from '#/state/messages/message-drafts'
1616import {textInputWebEmitter} from '#/view/com/composer/text-input/textInputWebEmitter'
1717import {
1818- Emoji,
1919- EmojiPickerPosition,
2020-} from '#/view/com/composer/text-input/web/EmojiPicker.web'
1818+ type Emoji,
1919+ type EmojiPickerPosition,
2020+} from '#/view/com/composer/text-input/web/EmojiPicker'
2121import * as Toast from '#/view/com/util/Toast'
2222import {atoms as a, useTheme} from '#/alf'
2323import {Button} from '#/components/Button'
+13-9
src/screens/Messages/components/MessagesList.tsx
···11import {useCallback, useEffect, useRef, useState} from 'react'
22-import {LayoutChangeEvent, View} from 'react-native'
22+import {type LayoutChangeEvent, View} from 'react-native'
33import {useKeyboardHandler} from 'react-native-keyboard-controller'
44import Animated, {
55 runOnJS,
···88 useAnimatedStyle,
99 useSharedValue,
1010} from 'react-native-reanimated'
1111-import {ReanimatedScrollEvent} from 'react-native-reanimated/lib/typescript/hook/commonTypes'
1111+import {type ReanimatedScrollEvent} from 'react-native-reanimated/lib/typescript/hook/commonTypes'
1212import {
1313- $Typed,
1414- AppBskyEmbedRecord,
1313+ type $Typed,
1414+ type AppBskyEmbedRecord,
1515 AppBskyRichtextFacet,
1616 RichText,
1717} from '@atproto/api'
···2626import {isNative} from '#/platform/detection'
2727import {isWeb} from '#/platform/detection'
2828import {
2929- ActiveConvoStates,
2929+ type ActiveConvoStates,
3030 isConvoActive,
3131 useConvoActive,
3232} from '#/state/messages/convo'
3333-import {ConvoItem, ConvoState, ConvoStatus} from '#/state/messages/convo/types'
3333+import {
3434+ type ConvoItem,
3535+ type ConvoState,
3636+ ConvoStatus,
3737+} from '#/state/messages/convo/types'
3438import {useGetPost} from '#/state/queries/post'
3539import {useAgent} from '#/state/session'
3640import {useShellLayout} from '#/state/shell/shell-layout'
3741import {
3842 EmojiPicker,
3939- EmojiPickerState,
4040-} from '#/view/com/composer/text-input/web/EmojiPicker.web'
4141-import {List, ListMethods} from '#/view/com/util/List'
4343+ type EmojiPickerState,
4444+} from '#/view/com/composer/text-input/web/EmojiPicker'
4545+import {List, type ListMethods} from '#/view/com/util/List'
4246import {ChatDisabled} from '#/screens/Messages/components/ChatDisabled'
4347import {MessageInput} from '#/screens/Messages/components/MessageInput'
4448import {MessageListError} from '#/screens/Messages/components/MessageListError'
+4-4
src/state/shell/composer/index.tsx
···11import React from 'react'
22import {
33- AppBskyActorDefs,
44- AppBskyFeedDefs,
55- ModerationDecision,
33+ type AppBskyActorDefs,
44+ type AppBskyFeedDefs,
55+ type ModerationDecision,
66} from '@atproto/api'
77import {msg} from '@lingui/macro'
88import {useLingui} from '@lingui/react'
···1212import {postUriToRelativePath, toBskyAppUrl} from '#/lib/strings/url-helpers'
1313import {purgeTemporaryImageFiles} from '#/state/gallery'
1414import {precacheResolveLinkQuery} from '#/state/queries/resolve-link'
1515-import type {EmojiPickerPosition} from '#/view/com/composer/text-input/web/EmojiPicker.web'
1515+import {type EmojiPickerPosition} from '#/view/com/composer/text-input/web/EmojiPicker'
1616import * as Toast from '#/view/com/util/Toast'
17171818export interface ComposerOptsPostRef {
···1212import {Text as TiptapText} from '@tiptap/extension-text'
1313import {generateJSON} from '@tiptap/html'
1414import {Fragment, Node, Slice} from '@tiptap/pm/model'
1515-import {EditorContent, JSONContent, useEditor} from '@tiptap/react'
1515+import {EditorContent, type JSONContent, useEditor} from '@tiptap/react'
16161717import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle'
1818import {usePalette} from '#/lib/hooks/usePalette'
1919import {blobToDataUri, isUriImage} from '#/lib/media/util'
2020import {useActorAutocompleteFn} from '#/state/queries/actor-autocomplete'
2121import {
2222- LinkFacetMatch,
2222+ type LinkFacetMatch,
2323 suggestLinkCardUri,
2424} from '#/view/com/composer/text-input/text-input-util'
2525import {textInputWebEmitter} from '#/view/com/composer/text-input/textInputWebEmitter'
···2828import {Portal} from '#/components/Portal'
2929import {Text} from '../../util/text/Text'
3030import {createSuggestion} from './web/Autocomplete'
3131-import {Emoji} from './web/EmojiPicker.web'
3131+import {type Emoji} from './web/EmojiPicker'
3232import {LinkDecorator} from './web/LinkDecorator'
3333import {TagDecorator} from './web/TagDecorator'
3434
···11import React from 'react'
22-import {Pressable, StyleSheet, Text, View, ViewStyle} from 'react-native'
33-import {IconProp} from '@fortawesome/fontawesome-svg-core'
22+import {
33+ Pressable,
44+ StyleSheet,
55+ Text,
66+ type View,
77+ type ViewStyle,
88+} from 'react-native'
99+import {type IconProp} from '@fortawesome/fontawesome-svg-core'
410import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
55-import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
66-import {MenuItemCommonProps} from 'zeego/lib/typescript/menu'
1111+import {DropdownMenu} from 'radix-ui'
1212+import {type MenuItemCommonProps} from 'zeego/lib/typescript/menu'
713814import {HITSLOP_10} from '#/lib/constants'
915import {usePalette} from '#/lib/hooks/usePalette'
+10-12
src/view/shell/Composer.web.tsx
···11import React from 'react'
22import {StyleSheet, View} from 'react-native'
33-import {DismissableLayer} from '@radix-ui/react-dismissable-layer'
44-import {useFocusGuards} from '@radix-ui/react-focus-guards'
55-import {FocusScope} from '@radix-ui/react-focus-scope'
33+import {DismissableLayer, FocusGuards, FocusScope} from 'radix-ui/internal'
64import {RemoveScrollBar} from 'react-remove-scroll-bar'
7586import {useA11y} from '#/state/a11y'
97import {useModals} from '#/state/modals'
1010-import {ComposerOpts, useComposerState} from '#/state/shell/composer'
88+import {type ComposerOpts, useComposerState} from '#/state/shell/composer'
119import {
1210 EmojiPicker,
1313- EmojiPickerPosition,
1414- EmojiPickerState,
1515-} from '#/view/com/composer/text-input/web/EmojiPicker.web'
1111+ type EmojiPickerPosition,
1212+ type EmojiPickerState,
1313+} from '#/view/com/composer/text-input/web/EmojiPicker'
1614import {atoms as a, flatten, useBreakpoints, useTheme} from '#/alf'
1715import {ComposePost, useComposerCancelRef} from '../com/composer/Composer'
1816···6664 }))
6765 }, [])
68666969- useFocusGuards()
6767+ FocusGuards.useFocusGuards()
70687169 return (
7272- <FocusScope loop trapped asChild>
7373- <DismissableLayer
7070+ <FocusScope.FocusScope loop trapped asChild>
7171+ <DismissableLayer.DismissableLayer
7472 role="dialog"
7573 aria-modal
7674 style={flatten([
···114112 />
115113 </View>
116114 <EmojiPicker state={pickerState} close={onClosePicker} />
117117- </DismissableLayer>
118118- </FocusScope>
115115+ </DismissableLayer.DismissableLayer>
116116+ </FocusScope.FocusScope>
119117 )
120118}
121119