import React, { useState } from 'react'; import { InfluencerPersona } from '../types'; import { User, Plus, Save, Trash2, Smartphone, Sparkles, ChevronRight } from 'lucide-react'; interface PersonaManagerProps { savedPersonas: InfluencerPersona[]; activePersona: InfluencerPersona | null; onUpdatePersonas: (personas: InfluencerPersona[]) => void; onSelectPersona: (persona: InfluencerPersona) => void; onGeneratePlan: (campaignInput: string) => void; isAnalyzing: boolean; } const PersonaManager: React.FC = ({ savedPersonas, activePersona, onUpdatePersonas, onSelectPersona, onGeneratePlan, isAnalyzing }) => { const [isEditing, setIsEditing] = useState(false); const [form, setForm] = useState({ id: '', name: '', gender: '', age: '', appearance: '', style: '', traits: '' }); const [campaignInput, setCampaignInput] = useState(''); const handleCreate = () => { const newPersona: InfluencerPersona = { id: Date.now().toString(), name: '妍妍', gender: '女性', age: '20', appearance: '綁著高馬尾,清新的韓國女生臉孔,大眼睛,身高170公分,身材結實勻稱,像是專業的網球選手', style: '穿著時尚的運動套裝 (Athletic Wear) 與緊身瑜珈褲 (Leggings),搭配白色運動鞋,展現健康活力', traits: '活潑、充滿能量、喜歡戶外運動、陽光笑容' }; setForm(newPersona); setIsEditing(true); onSelectPersona(newPersona); // Temporarily select for preview }; const handleEdit = (persona: InfluencerPersona) => { setForm(persona); setIsEditing(true); onSelectPersona(persona); }; const handleSave = () => { let newPersonas = [...savedPersonas]; const index = newPersonas.findIndex(p => p.id === form.id); if (index >= 0) { newPersonas[index] = form; } else { newPersonas.push(form); } onUpdatePersonas(newPersonas); onSelectPersona(form); setIsEditing(false); }; const handleDelete = (id: string, e: React.MouseEvent) => { e.stopPropagation(); if(confirm('確定要刪除此人設嗎?')) { const newPersonas = savedPersonas.filter(p => p.id !== id); onUpdatePersonas(newPersonas); if (activePersona?.id === id) { onSelectPersona(null as any); setIsEditing(false); } } }; return (
{/* LEFT: List */}

網紅名單

{savedPersonas.length === 0 && (
尚無人設檔案。
點擊「+」新增。
)} {savedPersonas.map(p => (
{ setIsEditing(false); onSelectPersona(p); }} className={`p-4 rounded-xl cursor-pointer border transition-all ${activePersona?.id === p.id ? 'bg-cyan-500/10 border-cyan-500/50' : 'bg-white/5 border-transparent hover:border-white/20'}`} >
{p.name}
{p.appearance}
))}
{/* RIGHT: Detail / Edit */}
{isEditing ? ( // EDIT MODE

編輯人設檔案

setForm({...form, name: e.target.value})} className="glass-input w-full rounded-lg p-2" />
setForm({...form, gender: e.target.value})} className="glass-input w-full rounded-lg p-2" placeholder="女性" /> setForm({...form, age: e.target.value})} className="glass-input w-full rounded-lg p-2" placeholder="20" />