import React, { useEffect, useRef } from 'react'; import { View, Animated } from 'react-native'; import { useTheme } from '~/features/theme/ThemeProvider'; interface MemoPreviewSkeletonProps { showMargins?: boolean; } /** * Skeleton loader for MemoPreview component * Matches exact MemoPreview structure and dimensions with pulsing animation */ const MemoPreviewSkeleton = ({ showMargins = true }: MemoPreviewSkeletonProps) => { const { colors } = useTheme(); const pulseAnim = useRef(new Animated.Value(0.4)).current; // Theme-aware colors const skeletonColor = colors.skeleton; const backgroundColor = colors.contentBackground; const borderColor = colors.border; // Pulsing animation effect useEffect(() => { const pulse = Animated.loop( Animated.sequence([ Animated.timing(pulseAnim, { toValue: 1, duration: 1000, useNativeDriver: true, }), Animated.timing(pulseAnim, { toValue: 0.4, duration: 1000, useNativeDriver: true, }), ]) ); pulse.start(); return () => pulse.stop(); }, [pulseAnim]); return ( ); }; export default MemoPreviewSkeleton;