import {type StyleProp, View, type ViewStyle} from 'react-native' import {LinearGradient} from 'expo-linear-gradient' import {msg} from '@lingui/core/macro' import {useLingui} from '@lingui/react' import {Trans} from '@lingui/react/macro' import {PressableScale} from '#/lib/custom-animations/PressableScale' import {useHaptics} from '#/lib/haptics' import {useHideBottomBarBorderForScreen} from '#/lib/hooks/useHideBottomBarBorder' import {useEnableSquareButtons} from '#/state/preferences/enable-square-buttons' import {useProfileQuery} from '#/state/queries/profile' import {useSession} from '#/state/session' import {UserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, ios, native, useBreakpoints, useTheme} from '#/alf' import {transparentifyColor} from '#/alf/util/colorGeneration' import {useInteractionState} from '#/components/hooks/useInteractionState' import {Text} from '#/components/Typography' export function ThreadComposePrompt({ onPressCompose, style, }: { onPressCompose: () => void style?: StyleProp }) { const {gtMobile} = useBreakpoints() const t = useTheme() useHideBottomBarBorderForScreen() return ( {!gtMobile && ( )} ) } /** * The "Write your reply" pill. Shared by the sticky thread prompt and the * inline reader-seam prompt so the two stay visually identical. */ export function ThreadComposePromptPill({onPress}: {onPress: () => void}) { const t = useTheme() const {_} = useLingui() const {gtMobile} = useBreakpoints() const {currentAccount} = useSession() const {data: profile} = useProfileQuery({did: currentAccount?.did}) const playHaptic = useHaptics() const enableSquareButtons = useEnableSquareButtons() const { state: hovered, onIn: onHoverIn, onOut: onHoverOut, } = useInteractionState() return ( { onPress() playHaptic('Light') }} onLongPress={ios(() => { onPress() playHaptic('Heavy') })} onHoverIn={onHoverIn} onHoverOut={onHoverOut} style={[ a.flex_row, a.align_center, a.p_sm, a.gap_sm, enableSquareButtons ? a.rounded_sm : a.rounded_full, (!gtMobile || hovered) && t.atoms.bg_contrast_25, native([a.border, t.atoms.border_contrast_low]), a.transition_color, ]}> Write your reply ) }