import { Animated, Pressable, type StyleProp, type ViewStyle } from 'react-native'; import { Image } from '../../components/wui-image'; import { Text } from '../../components/wui-text'; import { useTheme } from '../../hooks/useTheme'; import { IconBox } from '../wui-icon-box'; import styles from './styles'; import useAnimatedValue from '../../hooks/useAnimatedValue'; import { LoadingSpinner } from '../../components/wui-loading-spinner'; const AnimatedPressable = Animated.createAnimatedComponent(Pressable); export interface NetworkButtonProps { children: string; onPress: () => void; imageSrc?: string; imageHeaders?: Record; disabled?: boolean; style?: StyleProp; loading?: boolean; } export function NetworkButton({ imageSrc, imageHeaders, disabled, onPress, style, loading, children }: NetworkButtonProps) { const Theme = useTheme(); const textColor = disabled ? 'fg-300' : 'fg-100'; const { animatedValue, setStartValue, setEndValue } = useAnimatedValue( Theme['gray-glass-005'], Theme['gray-glass-010'] ); const backgroundColor = disabled ? Theme['gray-glass-015'] : animatedValue; return ( {children} ); } function LoaderComponent({ loading }: { loading?: boolean }) { if (!loading) return null; return ; } function ImageComponent({ loading, disabled, imageSrc, imageHeaders, borderColor }: { loading?: boolean; disabled?: boolean; imageSrc?: string; imageHeaders?: Record; borderColor: string; }) { if (loading) return null; const textColor = disabled ? 'fg-300' : 'fg-100'; if (!imageSrc) { return ; } return ( ); }