import React from 'react'; import { View, Text, StyleSheet, TouchableOpacity } from 'react-native'; import { Ionicons } from '@expo/vector-icons'; import { ColorPalette } from '../types'; import { useColors } from '../constants/Colors'; import { SafeImage } from './SafeImage'; interface PlantCardProps { plant: { name: string; botanicalName?: string; imageUri: string; careInfo: { waterIntervalDays: number; }; }; width: number; onPress: () => void; t: any; isDark: boolean; colorPalette: ColorPalette; } export const PlantCard: React.FC = ({ plant, width, onPress, t, isDark, colorPalette, }) => { const colors = useColors(isDark, colorPalette); const isUrgent = plant.careInfo?.waterIntervalDays <= 1; const wateringText = plant.careInfo?.waterIntervalDays ? (isUrgent ? t.waterToday : t.inXDays.replace('{0}', plant.careInfo.waterIntervalDays.toString())) : t.showDetails; // Default for lexicon entries return ( {/* Badge */} {wateringText} {/* Content */} {plant.name} {plant.botanicalName} ); }; const styles = StyleSheet.create({ container: { aspectRatio: 0.8, borderRadius: 18, overflow: 'hidden', shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1, shadowRadius: 6, elevation: 4, }, image: { width: '100%', height: '100%', resizeMode: 'cover' }, gradient: { ...StyleSheet.absoluteFillObject, opacity: 0.8, }, badge: { position: 'absolute', top: 10, left: 10, flexDirection: 'row', alignItems: 'center', gap: 4, paddingHorizontal: 8, paddingVertical: 4, borderRadius: 12, }, badgeText: { fontSize: 9, fontWeight: '700' }, content: { position: 'absolute', bottom: 14, left: 10, right: 10 }, name: { fontSize: 16, fontWeight: '700' }, botanical: { fontSize: 11 }, });