import {useCallback} from 'react' import {Pressable, View} from 'react-native' import Animated, { useAnimatedStyle, useSharedValue, withTiming, } from 'react-native-reanimated' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {scheduleOnRN} from 'react-native-worklets' import { ScaleAndFadeIn, ScaleAndFadeOut, } from '#/lib/custom-animations/ScaleAndFade' import {useHaptics} from '#/lib/haptics' import {atoms as a, useTheme} from '#/alf' import {ArrowBottom_Stroke2_Corner0_Rounded as ArrowDownIcon} from '#/components/icons/Arrow' import {IS_WEB} from '#/env' const AnimatedPressable = Animated.createAnimatedComponent(Pressable) export function NewMessagesPill({ onPress: onPressInner, }: { onPress: () => void }) { const t = useTheme() const playHaptic = useHaptics() const {bottom: bottomInset} = useSafeAreaInsets() const scale = useSharedValue(1) const onPressIn = useCallback(() => { if (IS_WEB) return scale.set(() => withTiming(1.075, {duration: 100})) }, [scale]) const onPressOut = useCallback(() => { if (IS_WEB) return scale.set(() => withTiming(1, {duration: 100})) }, [scale]) const onPress = useCallback(() => { scheduleOnRN(playHaptic) onPressInner?.() }, [onPressInner, playHaptic]) const animatedStyle = useAnimatedStyle(() => ({ transform: [{scale: scale.get()}], })) return ( ) }