import React, {ComponentProps} from 'react' import {observer} from 'mobx-react-lite' import {Animated, StyleSheet, TouchableWithoutFeedback} from 'react-native' import LinearGradient from 'react-native-linear-gradient' import {gradients} from 'lib/styles' import {useAnimatedValue} from 'lib/hooks/useAnimatedValue' import {useStores} from 'state/index' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {isWeb} from 'platform/detection' export interface FABProps extends ComponentProps { testID?: string icon: JSX.Element } export const FABInner = observer(({testID, icon, ...props}: FABProps) => { const {isTablet} = useWebMediaQueries() const store = useStores() const interp = useAnimatedValue(0) React.useEffect(() => { Animated.timing(interp, { toValue: store.shell.minimalShellMode ? 1 : 0, duration: 100, useNativeDriver: true, isInteraction: false, }).start() }, [interp, store.shell.minimalShellMode]) const transform = isTablet ? undefined : { transform: [{translateY: Animated.multiply(interp, 60)}], } const size = isTablet ? styles.sizeLarge : styles.sizeRegular return ( {icon} ) }) const styles = StyleSheet.create({ sizeRegular: { width: 60, height: 60, borderRadius: 30, }, sizeLarge: { width: 70, height: 70, borderRadius: 35, }, outer: { position: 'absolute', zIndex: 1, right: 24, bottom: 94, }, inner: { justifyContent: 'center', alignItems: 'center', }, })