diff --git a/src/components/EditPanel.tsx b/src/components/EditPanel.tsx index 2d173b6..dd2f114 100644 --- a/src/components/EditPanel.tsx +++ b/src/components/EditPanel.tsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { ExcelRow, COLUMNS } from '../types'; -import { X, Sparkles, Save, Loader2 } from 'lucide-react'; -import { generateDescription } from '../services/anthropic'; +import { X, Sparkles, Save, Loader2, Languages } from 'lucide-react'; +import { generateGemini } from '../services/gemini'; import { cn } from '../lib/utils'; interface EditPanelProps { @@ -40,31 +40,33 @@ export function EditPanel({ row, rowIndex, onSave, onClose }: EditPanelProps) { let prompt = ''; const baseContext = `Article Name: ${row[COLUMNS.ARTICLE_NAME]}\nArticle Details (EN): ${row[COLUMNS.DETAILS_EN] || 'N/A'}\nArticle Details (DE): ${row[COLUMNS.DETAILS_DE] || 'N/A'}`; - const systemPrompt = "You are a professional copywriter for CRAZE GmbH, a German toy company. Write commercial product descriptions for B2B buyers (retailers, distributors). Use clear, engaging, professional language. Never invent features not mentioned in the source material."; + const systemPrompt = "You are a professional copywriter and expert translator for CRAZE GmbH, a German toy company. You excel at translating product descriptions from German to English, maintaining the commercial and professional tone while ensuring all technical toy details are accurate. Use clear, engaging language."; if (field === 'longDe') { prompt = `Based on the following product details, generate a long commercial description in German. It should be fluent, oriented towards B2B toy buyers, 3-5 paragraphs long. Include features, benefits, and material if available.\n\n${baseContext}`; } else if (field === 'longEn') { if (formData.longDe) { - prompt = `Translate the following German product description into perfect English. Keep the same tone and length.\n\nGerman Description:\n${formData.longDe}`; + prompt = `Translate exactly this German product description into professional English for the toy market. Ensure a natural flow and high-quality vocabulary:\n\n${formData.longDe}`; } else { - prompt = `Based on the following product details, generate a long commercial description in English. It should be fluent, oriented towards B2B toy buyers, 3-5 paragraphs long. Include features, benefits, and material if available.\n\n${baseContext}`; + prompt = `Based on the following product details, generate a long commercial description in English. It should be fluent, oriented towards B2B toy buyers, 3-5 paragraphs long.\n\n${baseContext}`; } } else if (field === 'shortDe') { if (formData.longDe) { - prompt = `Create a short version (2-4 sentences max) of the following German product description. Include only the most relevant info. Use a direct and commercial tone.\n\nGerman Description:\n${formData.longDe}`; + prompt = `Create a short version (2-4 sentences max) of the following German product description:\n\n${formData.longDe}`; } else { - prompt = `Based on the following product details, generate a short commercial description in German (2-4 sentences max). Include only the most relevant info. Use a direct and commercial tone.\n\n${baseContext}`; + prompt = `Based on the following product details, generate a short commercial description in German (2-4 sentences max).\n\n${baseContext}`; } } else if (field === 'shortEn') { if (formData.shortDe) { - prompt = `Translate the following short German product description into perfect English.\n\nGerman Description:\n${formData.shortDe}`; + prompt = `Translate exactly this short German product description into professional English for the toy market:\n\n${formData.shortDe}`; + } else if (formData.longEn) { + prompt = `Create a short version (2-4 sentences max) of the following English product description:\n\n${formData.longEn}`; } else { - prompt = `Based on the following product details, generate a short commercial description in English (2-4 sentences max). Include only the most relevant info. Use a direct and commercial tone.\n\n${baseContext}`; + prompt = `Based on the following product details, generate a short commercial description in English (2-4 sentences max).\n\n${baseContext}`; } } - const generatedText = await generateDescription(prompt, systemPrompt); + const generatedText = await generateGemini(prompt, systemPrompt); setFormData(prev => ({ ...prev, [field]: generatedText.trim() })); } catch (err: any) { setError(err.message || 'An error occurred during generation.'); @@ -86,14 +88,24 @@ export function EditPanel({ row, rowIndex, onSave, onClose }: EditPanelProps) {
- +
+ {((field === 'longEn' && formData.longDe) || + (field === 'shortDe' && formData.longDe) || + (field === 'shortEn' && (formData.shortDe || formData.longEn))) && ( +
+ + Can translate from existing +
+ )} + +