import React, { useState } from 'react'; import { X, Search, Bitcoin, BarChart3 } from 'lucide-react'; import { marketAPI } from '../utils/api'; const AddHoldingModal = ({ isOpen, onClose, onAdd }) => { const [formData, setFormData] = useState({ symbol: '', name: '', asset_type: 'stock', quantity: '', buy_price: '', buy_date: new Date().toISOString().split('T')[0], notes: '' }); const [searchResults, setSearchResults] = useState([]); const [isSearching, setIsSearching] = useState(false); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(''); const handleSearch = async (query) => { if (query.length < 1) { setSearchResults([]); return; } setIsSearching(true); try { const response = await marketAPI.search(query, formData.asset_type); setSearchResults(response.data.slice(0, 5)); } catch (err) { console.error('Search error:', err); } finally { setIsSearching(false); } }; const selectAsset = (asset) => { setFormData({ ...formData, symbol: asset.symbol, name: asset.name }); setSearchResults([]); }; const handleSubmit = async (e) => { e.preventDefault(); setError(''); if (!formData.symbol || !formData.quantity || !formData.buy_price) { setError('Please fill in all required fields'); return; } setIsSubmitting(true); try { const success = await onAdd({ ...formData, quantity: parseFloat(formData.quantity), buy_price: parseFloat(formData.buy_price), buy_date: new Date(formData.buy_date).toISOString() }); if (success) { onClose(); setFormData({ symbol: '', name: '', asset_type: 'stock', quantity: '', buy_price: '', buy_date: new Date().toISOString().split('T')[0], notes: '' }); } else { setError('Failed to add holding'); } } catch (err) { setError(err.message); } finally { setIsSubmitting(false); } }; if (!isOpen) return null; return (