// App.js
import React, { useState } from 'react';
import { View, Text, TextInput, Button, FlatList, StyleSheet } from 'react-native';

const App = () => {
    const [description, setDescription] = useState('');
    const [amount, setAmount] = useState('');
    const [entries, setEntries] = useState([]);

    const addEntry = () => {
        if (description && amount) {
            setEntries([...entries, { id: Math.random().toString(), description, amount: parseFloat(amount) }]);
            setDescription('');
            setAmount('');
        }
    };

    const calculateTotal = () => {
        return entries.reduce((total, entry) => total + entry.amount, 0);
    };

    return (
        <View style={styles.container}>
            <Text style={styles.header}>Expense Tracker</Text>
            <TextInput
                style={styles.input}
                placeholder="Description"
                value={description}
                onChangeText={setDescription}
            />
            <TextInput
                style={styles.input}
                placeholder="Amount"
                keyboardType="numeric"
                value={amount}
                onChangeText={setAmount}
            />
            <Button title="Add Entry" onPress={addEntry} />
            <FlatList
                data={entries}
                renderItem={({ item }) => (
                    <View style={styles.entryItem}>
                        <Text>{item.description}</Text>
                        <Text>${item.amount.toFixed(2)}</Text>
                    </View>
                )}
                keyExtractor={item => item.id}
            />
            <Text style={styles.total}>Total: ${calculateTotal().toFixed(2)}</Text>
        </View>
    );
};

const styles = StyleSheet.create({
    container: {
        flex: 1,
        padding: 20,
        backgroundColor: '#fff',
    },
    header: {
        fontSize: 24,
        marginBottom: 20,
    },
    input: {
        borderBottomWidth: 1,
        marginBottom: 10,
        paddingHorizontal: 10,
        fontSize: 18,
    },
    entryItem: {
        flexDirection: 'row',
        justifyContent: 'space-between',
        paddingVertical: 10,
        borderBottomWidth: 1,
    },
    total: {
        fontSize: 24,
        marginTop: 20,
    },
});

export default App;