// components/library/MyLibrary.tsx import React from 'react'; import { View, FlatList, StyleSheet, Platform } from 'react-native'; import { Feather } from '@expo/vector-icons'; import { useColorScheme } from '@/hooks/useColorScheme'; import { LibraryContent } from '@/types/exercise'; import LibraryContentCard from '@/components/library/LibraryContentCard'; import { spacing } from '@/styles/sharedStyles'; import { ThemedText } from '@/components/ThemedText'; interface MyLibraryProps { savedContent: LibraryContent[]; onContentPress: (content: LibraryContent) => void; onFavoritePress: (content: LibraryContent) => Promise; isLoading?: boolean; isVisible?: boolean; } // components/library/MyLibrary.tsx export default function MyLibrary({ savedContent, onContentPress, onFavoritePress, isVisible = true }: MyLibraryProps) { const { colors } = useColorScheme(); // Don't render anything if not visible if (!isVisible) { return null; } // Separate exercises and workouts const exercises = savedContent.filter(content => content.type === 'exercise'); const workouts = savedContent.filter(content => content.type === 'workout'); const renderSection = (title: string, items: LibraryContent[]) => { if (items.length === 0) return null; return ( {title} ( onContentPress(item)} onFavoritePress={() => onFavoritePress(item)} /> )} keyExtractor={item => item.id} scrollEnabled={false} /> ); }; const EmptyState = () => ( So empty! Add content from Programs or Discover ); if (savedContent.length === 0) { return ; } return ( null} ListHeaderComponent={ <> {exercises.length > 0 && renderSection('Exercises', exercises)} {workouts.length > 0 && renderSection('Workouts', workouts)} } contentContainerStyle={styles.contentContainer} /> ); } const styles = StyleSheet.create({ contentContainer: { paddingHorizontal: spacing.medium, paddingBottom: Platform.OS === 'ios' ? 120 : 100, }, section: { marginBottom: spacing.large, }, sectionTitle: { marginBottom: spacing.medium, }, emptyState: { flex: 1, alignItems: 'center', justifyContent: 'center', paddingVertical: spacing.xl * 2, }, emptyStateTitle: { marginTop: spacing.medium, marginBottom: spacing.small, }, emptyStateText: { textAlign: 'center', maxWidth: '80%', }, hidden: { display: 'none', }, });