import React from 'react'; import { View, Text, Image, StyleSheet, TouchableOpacity, ActivityIndicator } from 'react-native'; import { FileItem } from '../types'; import { TagChip } from './TagChip'; interface FileCardProps { file: FileItem; onPress?: (file: FileItem) => void; } function formatSize(bytes: number) { if (bytes < 1024) return `${bytes} B`; if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`; return `${(bytes / (1024 * 1024)).toFixed(1)} MB`; } export function FileCard({ file, onPress }: FileCardProps) { const imageUri = file.thumbnailUrl || (file.url && file.mimeType?.startsWith('image/') ? file.url : undefined); return ( onPress?.(file)}> {imageUri && ( )} {file.name} {formatSize(file.size)} {file.ocrText && ( {file.ocrText} )} {file.tags.map((tag) => ( ))} ); } const styles = StyleSheet.create({ container: { backgroundColor: '#fff', borderRadius: 8, padding: 12, marginBottom: 8, shadowColor: '#000', shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.05, shadowRadius: 4, elevation: 2, }, imageContainer: { marginBottom: 8, borderRadius: 4, overflow: 'hidden', }, image: { width: '100%', height: 120, borderRadius: 4, }, header: { flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', marginBottom: 4, }, name: { fontSize: 16, fontWeight: '600', color: '#333', flex: 1, marginRight: 8, }, size: { fontSize: 13, color: '#999', }, preview: { fontSize: 13, color: '#666', marginBottom: 8, lineHeight: 18, }, tags: { flexDirection: 'row', flexWrap: 'wrap', gap: 4, }, });