import React from 'react'; import {View, Text, StyleSheet, Pressable} from 'react-native'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import {Transaction} from '../types'; import {formatCurrency} from '../utils'; import {useSettingsStore} from '../store'; import {useTheme} from '../theme'; interface TransactionItemProps { transaction: Transaction; onPress?: (transaction: Transaction) => void; } export const TransactionItem: React.FC = ({ transaction, onPress, }) => { const baseCurrency = useSettingsStore(s => s.baseCurrency); const {colors} = useTheme(); const isExpense = transaction.type === 'expense'; return ( onPress?.(transaction)} android_ripple={{color: colors.primary + '12'}}> {transaction.categoryName || 'Uncategorized'} {transaction.paymentMethod} {transaction.note ? ` ยท ${transaction.note}` : ''} {isExpense ? '-' : '+'} {formatCurrency(transaction.amount, baseCurrency)} {new Date(transaction.date).toLocaleDateString('en-IN', { day: 'numeric', month: 'short', })} ); }; const styles = StyleSheet.create({ container: { flexDirection: 'row', alignItems: 'center', paddingVertical: 14, paddingHorizontal: 18, }, iconCircle: { width: 44, height: 44, borderRadius: 4, justifyContent: 'center', alignItems: 'center', }, details: { flex: 1, marginLeft: 12, }, categoryName: { fontSize: 16, fontWeight: '600', }, meta: { fontSize: 13, marginTop: 2, }, amountContainer: { alignItems: 'flex-end', }, amount: { fontSize: 16, fontWeight: '700', }, date: { fontSize: 12, marginTop: 2, }, });