import React, { useState } from 'react'; import { View, Text, StyleSheet, TouchableOpacity, } from 'react-native'; import { MaterialIcons } from '@expo/vector-icons'; import { Image } from 'expo-image'; import Animated, { Layout, Easing, FadeIn, } from 'react-native-reanimated'; import { useTheme } from '../../contexts/ThemeContext'; interface MetadataDetailsProps { metadata: any; imdbId: string | null; type: 'movie' | 'series'; renderRatings?: () => React.ReactNode; } const MetadataDetails: React.FC = ({ metadata, imdbId, type, renderRatings, }) => { const { currentTheme } = useTheme(); const [isFullDescriptionOpen, setIsFullDescriptionOpen] = useState(false); return ( <> {/* Meta Info */} {metadata.year && ( {metadata.year} )} {metadata.runtime && ( {metadata.runtime} )} {metadata.certification && ( {metadata.certification} )} {metadata.imdbRating && ( {metadata.imdbRating} )} {/* Ratings Section */} {renderRatings && renderRatings()} {/* Creator/Director Info */} {metadata.directors && metadata.directors.length > 0 && ( Director{metadata.directors.length > 1 ? 's' : ''}: {metadata.directors.join(', ')} )} {metadata.creators && metadata.creators.length > 0 && ( Creator{metadata.creators.length > 1 ? 's' : ''}: {metadata.creators.join(', ')} )} {/* Description */} {metadata.description && ( setIsFullDescriptionOpen(!isFullDescriptionOpen)} activeOpacity={0.7} > {metadata.description} {isFullDescriptionOpen ? 'Show Less' : 'Show More'} )} ); }; const styles = StyleSheet.create({ metaInfo: { flexDirection: 'row', alignItems: 'center', gap: 12, paddingHorizontal: 16, marginBottom: 12, }, metaText: { fontSize: 15, fontWeight: '700', letterSpacing: 0.3, textTransform: 'uppercase', opacity: 0.9, }, ratingContainer: { flexDirection: 'row', alignItems: 'center', }, imdbLogo: { width: 35, height: 18, marginRight: 4, }, ratingText: { fontWeight: '700', fontSize: 15, letterSpacing: 0.3, }, creatorContainer: { marginBottom: 2, paddingHorizontal: 16, }, creatorSection: { flexDirection: 'row', alignItems: 'center', marginBottom: 4, height: 20 }, creatorLabel: { fontSize: 14, fontWeight: '600', marginRight: 8, lineHeight: 20 }, creatorText: { fontSize: 14, flex: 1, lineHeight: 20 }, descriptionContainer: { marginBottom: 16, paddingHorizontal: 16, }, description: { fontSize: 15, lineHeight: 24, }, showMoreButton: { flexDirection: 'row', alignItems: 'center', marginTop: 8, paddingVertical: 4, }, showMoreText: { fontSize: 14, marginRight: 4, }, }); export default React.memo(MetadataDetails);