// components/library/ContentPreviewModal.tsx import React from 'react'; import { View, Modal, ScrollView, TouchableOpacity, StyleSheet } from 'react-native'; import { LibraryContent } from '@/types/exercise'; import { useColorScheme } from '@/hooks/useColorScheme'; import { spacing } from '@/styles/sharedStyles'; import { Feather } from '@expo/vector-icons'; import { ThemedText } from '@/components/ThemedText'; interface ContentPreviewModalProps { isVisible: boolean; content: LibraryContent | null; onClose: () => void; onSave?: () => void; } export default function ContentPreviewModal({ isVisible, content, onClose, onSave }: ContentPreviewModalProps) { const { colors } = useColorScheme(); if (!content) return null; const isExercise = content.type === 'exercise'; const isWorkout = content.type === 'workout'; return ( {/* Header */} {content.title} {onSave && ( )} {/* Author Info */} {content.author?.name || 'Anonymous'} {content.source === 'pow' && ( POW Verified )} {/* Description */} {content.description && ( {content.description} )} {/* Exercise-specific content */} {isExercise && ( Instructions {/* Exercise instructions here */} )} {/* Workout-specific content */} {isWorkout && ( Exercises {/* Workout exercises list here */} )} {/* Tags */} {content.tags.map(tag => ( {tag} ))} ); } const styles = StyleSheet.create({ modalOverlay: { flex: 1, justifyContent: 'flex-end', }, modalContent: { borderTopLeftRadius: 20, borderTopRightRadius: 20, maxHeight: '80%', }, header: { flexDirection: 'row', alignItems: 'center', padding: spacing.medium, borderBottomWidth: 1, }, closeButton: { padding: spacing.small, }, titleContainer: { flex: 1, alignItems: 'center', }, saveButton: { padding: spacing.small, }, content: { padding: spacing.medium, }, authorSection: { flexDirection: 'row', alignItems: 'center', marginBottom: spacing.medium, gap: spacing.small, }, verifiedBadge: { flexDirection: 'row', alignItems: 'center', gap: 4, paddingHorizontal: spacing.small, paddingVertical: 4, borderRadius: 12, }, verifiedText: { fontSize: 12, fontWeight: '500', }, description: { marginBottom: spacing.large, }, section: { marginBottom: spacing.large, }, sectionTitle: { marginBottom: spacing.small, }, tags: { flexDirection: 'row', flexWrap: 'wrap', gap: spacing.small, marginTop: spacing.medium, }, tag: { paddingHorizontal: spacing.small, paddingVertical: 4, borderRadius: 12, }, tagText: { fontSize: 12, fontWeight: '500', }, });