import React from 'react' import {Pressable, View} from 'react-native' import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming, } from 'react-native-reanimated' import {useSafeAreaInsets} from 'react-native-safe-area-context' import {Trans} from '@lingui/macro' import { ScaleAndFadeIn, ScaleAndFadeOut, } from 'lib/custom-animations/ScaleAndFade' import {useHaptics} from 'lib/haptics' import {isAndroid, isIOS, isWeb} from 'platform/detection' import {atoms as a, useTheme} from '#/alf' import {Text} from '#/components/Typography' const AnimatedPressable = Animated.createAnimatedComponent(Pressable) export function NewMessagesPill({ onPress: onPressInner, }: { onPress: () => void }) { const t = useTheme() const playHaptic = useHaptics() const {bottom: bottomInset} = useSafeAreaInsets() const bottomBarHeight = isIOS ? 42 : isAndroid ? 60 : 0 const bottomOffset = isWeb ? 0 : bottomInset + bottomBarHeight const scale = useSharedValue(1) const onPressIn = React.useCallback(() => { if (isWeb) return scale.value = withTiming(1.075, {duration: 100}) }, [scale]) const onPressOut = React.useCallback(() => { if (isWeb) return scale.value = withTiming(1, {duration: 100}) }, [scale]) const onPress = React.useCallback(() => { runOnJS(playHaptic)() onPressInner?.() }, [onPressInner, playHaptic]) const animatedStyle = useAnimatedStyle(() => ({ transform: [{scale: scale.value}], })) return ( New messages ) }