import React, { useState } from 'react'; import type { Product, TargetIndustry } from '../types'; import { EditableCard } from './EditableCard'; import EvidencePopover from './EvidencePopover'; import { fetchProductDetails } from '../services/geminiService'; interface Step1ExtractionProps { products: Product[]; industries: TargetIndustry[]; onProductsChange: (products: Product[]) => void; onIndustriesChange: (industries: TargetIndustry[]) => void; t: any; lang: 'de' | 'en'; } const Step1Extraction: React.FC = ({ products, industries, onProductsChange, onIndustriesChange, t, lang }) => { const [newProductName, setNewProductName] = useState(''); const [newProductUrl, setNewProductUrl] = useState(''); const [isAdding, setIsAdding] = useState(false); const [addError, setAddError] = useState(null); const handleAddProduct = async (e: React.FormEvent) => { e.preventDefault(); if (!newProductName || !newProductUrl) return; setIsAdding(true); setAddError(null); try { const newProduct = await fetchProductDetails(newProductName, newProductUrl, lang); onProductsChange([...products, newProduct]); setNewProductName(''); setNewProductUrl(''); } catch (error) { console.error("Failed to add product:", error); setAddError(t.addProductError); } finally { setIsAdding(false); } }; const inputClasses = "w-full bg-light-primary dark:bg-brand-primary text-light-text dark:text-brand-text border border-light-accent dark:border-brand-accent rounded-lg px-3 py-2 focus:outline-none focus:ring-2 focus:ring-brand-highlight placeholder-light-subtle dark:placeholder-brand-light"; return (

{t.title}

{t.subtitle}

{t.addProductTitle}

setNewProductName(e.target.value)} className={inputClasses} placeholder={t.productNamePlaceholder} required />
setNewProductUrl(e.target.value)} className={inputClasses} placeholder="https://..." required />
{addError &&

{addError}

}
title={t.productsTitle} items={products} onItemsChange={onProductsChange} showAddButton={false} fieldConfigs={[ { key: 'name', label: t.productNameLabel, type: 'text' }, { key: 'purpose', label: t.purposeLabel, type: 'textarea' }, ]} newItemTemplate={{ name: '', purpose: '', evidence: [] }} renderDisplay={(item) => (
{item.name}

{item.purpose}

)} t={t.editableCard} /> title={t.industriesTitle} items={industries} onItemsChange={onIndustriesChange} fieldConfigs={[{ key: 'name', label: t.industryNameLabel, type: 'text' }]} newItemTemplate={{ name: '', evidence: [] }} renderDisplay={(item) => (
{item.name}
)} t={t.editableCard} />
); }; export default Step1Extraction;